Skip to content

Commit 9752479

Browse files
authored
fix: range version conflict (#442)
1 parent fa0d156 commit 9752479

File tree

12 files changed

+186
-191
lines changed

12 files changed

+186
-191
lines changed

arex-agent-bootstrap/src/main/java/io/arex/agent/bootstrap/util/StringUtil.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -640,4 +640,21 @@ public static String substringBefore(final String str, final String separator) {
640640
}
641641
return str.substring(0, pos);
642642
}
643+
644+
/**
645+
* if not contains separator, return str
646+
*/
647+
public static String substringAfter(final String str, final String separator) {
648+
if (isEmpty(str)) {
649+
return str;
650+
}
651+
if (separator == null) {
652+
return EMPTY;
653+
}
654+
final int pos = str.indexOf(separator);
655+
if (pos == INDEX_NOT_FOUND) {
656+
return str;
657+
}
658+
return str.substring(pos + separator.length());
659+
}
643660
}

arex-agent-bootstrap/src/test/java/io/arex/agent/bootstrap/util/StringUtilTest.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -371,4 +371,16 @@ void substringBefore() {
371371
assertEquals("mock", StringUtil.substringBefore("mock", "cd"));
372372
assertEquals("mo", StringUtil.substringBefore("mock", "c"));
373373
}
374+
375+
@Test
376+
void subStringAfter() {
377+
assertEquals(null, StringUtil.substringAfter(null, null));
378+
assertEquals("", StringUtil.substringAfter("", null));
379+
assertEquals("", StringUtil.substringAfter("", ""));
380+
assertEquals("mock", StringUtil.substringAfter("mock", ""));
381+
assertEquals("", StringUtil.substringAfter("mock", null));
382+
assertEquals("ck", StringUtil.substringAfter("mock", "o"));
383+
assertEquals("k", StringUtil.substringAfter("mock", "c"));
384+
assertEquals("mock", StringUtil.substringAfter("mock", "cd"));
385+
}
374386
}

arex-instrumentation-foundation/pom.xml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,9 +121,6 @@
121121
<pattern>com.google</pattern>
122122
<shadedPattern>shaded.com.google</shadedPattern>
123123
<excludes>
124-
<exclude>com.google.common.collect.Range</exclude>
125-
<exclude>com.google.common.collect.RangeGwtSerializationDependencies</exclude>
126-
<exclude>com.google.common.collect.BoundType</exclude>
127124
<exclude>com.google.protobuf.**</exclude>
128125
</excludes>
129126
</relocation>

arex-instrumentation-foundation/src/main/java/io/arex/foundation/serializer/gson/GsonSerializer.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import com.google.auto.service.AutoService;
44

5-
import com.google.common.collect.Range;
65
import io.arex.foundation.serializer.gson.adapter.FastUtilAdapterFactory;
76
import io.arex.agent.bootstrap.util.StringUtil;
87
import com.google.gson.Gson;
@@ -73,8 +72,6 @@ public GsonSerializer() {
7372
.registerTypeAdapter(Class.class, new ClassAdapter.Deserializer())
7473
.registerTypeAdapter(OffsetDateTime.class, new OffsetDateTimeAdapter.Serializer())
7574
.registerTypeAdapter(OffsetDateTime.class, new OffsetDateTimeAdapter.Deserializer())
76-
.registerTypeAdapter(Range.class, new GuavaRangeAdapter.Serializer())
77-
.registerTypeAdapter(Range.class, new GuavaRangeAdapter.Deserializer())
7875
.registerTypeHierarchyAdapter(TimeZone.class, new TimeZoneAdapter.Serializer())
7976
.registerTypeAdapter(TimeZone.class, new TimeZoneAdapter.Deserializer())
8077
.registerTypeAdapterFactory(new FastUtilAdapterFactory())

arex-instrumentation-foundation/src/main/java/io/arex/foundation/serializer/gson/adapter/CustomTypeAdapterFactory.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.google.gson.TypeAdapter;
55
import com.google.gson.TypeAdapterFactory;
66
import com.google.gson.reflect.TypeToken;
7+
import io.arex.foundation.serializer.util.GuavaRangeManager;
78
import io.arex.inst.runtime.util.TypeUtil;
89

910
public class CustomTypeAdapterFactory {
@@ -32,6 +33,9 @@ public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
3233
if (TypeUtil.isJodaDateTime(typeName)) {
3334
return (TypeAdapter<T>) new DateTimeAdapter.Serializer();
3435
}
36+
if (GuavaRangeManager.isGuavaRange(typeName)) {
37+
return (TypeAdapter<T>) new GuavaRangeAdapter();
38+
}
3539
return null;
3640
}
3741
}
Original file line numberDiff line numberDiff line change
@@ -1,69 +1,27 @@
11
package io.arex.foundation.serializer.gson.adapter;
22

3-
import com.google.common.collect.BoundType;
4-
import com.google.common.collect.Range;
5-
import com.google.gson.JsonDeserializationContext;
6-
import com.google.gson.JsonDeserializer;
7-
import com.google.gson.JsonElement;
8-
import com.google.gson.JsonObject;
9-
import com.google.gson.JsonParseException;
10-
import com.google.gson.JsonSerializationContext;
11-
import com.google.gson.JsonSerializer;
12-
import io.arex.inst.runtime.util.TypeUtil;
13-
14-
import java.lang.reflect.Type;
15-
16-
import static io.arex.foundation.serializer.util.GuavaRangeManager.*;
17-
18-
public class GuavaRangeAdapter {
19-
private GuavaRangeAdapter() {
20-
}
21-
22-
public static class Serializer implements JsonSerializer<Range> {
23-
24-
@Override
25-
public JsonElement serialize(Range range, Type type, JsonSerializationContext context) {
26-
JsonObject jsonObject = new JsonObject();
27-
28-
if (range.hasLowerBound()) {
29-
jsonObject.add(LOWER_BOUND_TYPE, context.serialize(range.lowerBoundType()));
30-
jsonObject.add(LOWER_BOUND, context.serialize(range.lowerEndpoint()));
31-
jsonObject.addProperty(LOWER_BOUND_VALUE_TYPE, TypeUtil.getName(range.lowerEndpoint()));
32-
} else {
33-
jsonObject.add(LOWER_BOUND_TYPE, context.serialize(BoundType.OPEN));
34-
}
35-
36-
if (range.hasUpperBound()) {
37-
jsonObject.add(UPPER_BOUND_TYPE, context.serialize(range.upperBoundType()));
38-
jsonObject.add(UPPER_BOUND, context.serialize(range.upperEndpoint()));
39-
jsonObject.addProperty(UPPER_BOUND_VALUE_TYPE, TypeUtil.getName(range.upperEndpoint()));
40-
} else {
41-
jsonObject.add(UPPER_BOUND_TYPE, context.serialize(BoundType.OPEN));
42-
}
43-
return jsonObject;
3+
import com.google.gson.TypeAdapter;
4+
import com.google.gson.stream.JsonReader;
5+
import com.google.gson.stream.JsonWriter;
6+
import io.arex.foundation.serializer.jackson.JacksonSerializerWithType;
7+
import io.arex.foundation.serializer.util.GuavaRangeManager;
8+
import io.arex.inst.runtime.log.LogManager;
9+
10+
import java.io.IOException;
11+
12+
public class GuavaRangeAdapter extends TypeAdapter {
13+
14+
@Override
15+
public void write(JsonWriter out, Object value) throws IOException {
16+
try {
17+
out.value(JacksonSerializerWithType.INSTANCE.serialize(value));
18+
} catch (Throwable e) {
19+
LogManager.warn("rang.gson.serialize", e);
4420
}
4521
}
4622

47-
public static class Deserializer implements JsonDeserializer<Range> {
48-
@Override
49-
public Range deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
50-
final JsonObject jsonObject = json.getAsJsonObject();
51-
final JsonElement lowerBoundTypeJsonElement = jsonObject.get(LOWER_BOUND_TYPE);
52-
final JsonElement upperBoundTypeJsonElement = jsonObject.get(UPPER_BOUND_TYPE);
53-
54-
final BoundType lowerBoundType = context.deserialize(lowerBoundTypeJsonElement, BoundType.class);
55-
final JsonElement lowerBoundJsonElement = jsonObject.get(LOWER_BOUND);
56-
final Comparable<?> lowerBound =
57-
lowerBoundJsonElement == null ? null : context.deserialize(lowerBoundJsonElement,
58-
TypeUtil.forName(jsonObject.get(LOWER_BOUND_VALUE_TYPE).getAsString()));
59-
60-
final BoundType upperBoundType = context.deserialize(upperBoundTypeJsonElement, BoundType.class);
61-
final JsonElement upperBoundJsonElement = jsonObject.get(UPPER_BOUND);
62-
final Comparable<?> upperBound =
63-
upperBoundJsonElement == null ? null : context.deserialize(upperBoundJsonElement,
64-
TypeUtil.forName(jsonObject.get(UPPER_BOUND_VALUE_TYPE).getAsString()));
65-
66-
return restoreRange(lowerBound, lowerBoundType, upperBound, upperBoundType);
67-
}
23+
@Override
24+
public Object read(JsonReader in) throws IOException {
25+
return GuavaRangeManager.restoreRange(in.nextString());
6826
}
6927
}

arex-instrumentation-foundation/src/main/java/io/arex/foundation/serializer/jackson/JacksonSerializer.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,12 @@
1313
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator;
1414
import com.fasterxml.jackson.databind.module.SimpleModule;
1515
import com.google.auto.service.AutoService;
16-
import com.google.common.collect.Range;
1716
import io.arex.agent.bootstrap.util.StringUtil;
1817
import io.arex.foundation.serializer.gson.adapter.FastUtilAdapterFactory;
1918
import io.arex.foundation.serializer.jackson.adapter.CalendarAdapter;
2019
import io.arex.foundation.serializer.jackson.adapter.CustomBeanModifier;
2120
import io.arex.foundation.serializer.jackson.adapter.DateAdapter;
2221
import io.arex.foundation.serializer.jackson.adapter.GregorianCalendarAdapter;
23-
import io.arex.foundation.serializer.jackson.adapter.GuavaRangeAdapter;
2422
import io.arex.foundation.serializer.jackson.adapter.InstantAdapter;
2523
import io.arex.foundation.serializer.jackson.adapter.JacksonExclusion;
2624
import io.arex.foundation.serializer.jackson.adapter.LocalDateAdapter;
@@ -202,7 +200,6 @@ private void customTimeFormatSerializer(SimpleModule module) {
202200
module.addSerializer(Date.class, dateSerializer);
203201
module.addSerializer(Instant.class, new InstantAdapter.Serializer());
204202
module.addSerializer(OffsetDateTime.class, new OffsetDateTimeAdapter.Serializer());
205-
module.addSerializer(Range.class, new GuavaRangeAdapter.Serializer());
206203
}
207204

208205
private void customTimeFormatDeserializer(SimpleModule module) {
@@ -216,7 +213,6 @@ private void customTimeFormatDeserializer(SimpleModule module) {
216213
module.addDeserializer(Date.class, new DateAdapter.Deserializer());
217214
module.addDeserializer(Instant.class, new InstantAdapter.Deserializer());
218215
module.addDeserializer(OffsetDateTime.class, new OffsetDateTimeAdapter.Deserializer());
219-
module.addDeserializer(Range.class, new GuavaRangeAdapter.Deserializer());
220216
module.addDeserializer(java.sql.Date.class, new SqlDateAdapter.Deserializer());
221217
module.addDeserializer(Time.class, new SqlTimeAdapter.Deserializer());
222218
}

arex-instrumentation-foundation/src/main/java/io/arex/foundation/serializer/jackson/JacksonSerializerWithType.java

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package io.arex.foundation.serializer.jackson;
22

3+
import com.fasterxml.jackson.annotation.JsonAutoDetect;
34
import com.fasterxml.jackson.core.JsonGenerator;
45
import com.fasterxml.jackson.core.json.JsonReadFeature;
56
import com.fasterxml.jackson.databind.DeserializationFeature;
@@ -8,17 +9,12 @@
89
import com.fasterxml.jackson.databind.SerializationFeature;
910
import com.fasterxml.jackson.databind.module.SimpleModule;
1011
import com.google.auto.service.AutoService;
11-
import com.google.common.collect.Range;
1212
import io.arex.agent.bootstrap.util.StringUtil;
1313
import io.arex.foundation.serializer.jackson.adapter.CalendarAdapter;
14+
import io.arex.foundation.serializer.jackson.adapter.CustomBeanModifier;
1415
import io.arex.foundation.serializer.jackson.adapter.DateAdapter;
15-
import io.arex.foundation.serializer.jackson.adapter.DateTimeAdapter;
1616
import io.arex.foundation.serializer.jackson.adapter.GregorianCalendarAdapter;
17-
import io.arex.foundation.serializer.jackson.adapter.GuavaRangeAdapter;
1817
import io.arex.foundation.serializer.jackson.adapter.InstantAdapter;
19-
import io.arex.foundation.serializer.jackson.adapter.JodaLocalDateAdapter;
20-
import io.arex.foundation.serializer.jackson.adapter.JodaLocalDateTimeAdapter;
21-
import io.arex.foundation.serializer.jackson.adapter.JodaLocalTimeAdapter;
2218
import io.arex.foundation.serializer.jackson.adapter.LocalDateAdapter;
2319
import io.arex.foundation.serializer.jackson.adapter.LocalDateTimeAdapter;
2420
import io.arex.foundation.serializer.jackson.adapter.LocalTimeAdapter;
@@ -29,7 +25,6 @@
2925
import io.arex.foundation.serializer.jackson.adapter.XMLGregorianCalendarAdapter;
3026
import io.arex.inst.runtime.log.LogManager;
3127
import io.arex.inst.runtime.serializer.StringSerializable;
32-
import org.joda.time.DateTime;
3328

3429
import javax.xml.datatype.XMLGregorianCalendar;
3530
import java.lang.reflect.Type;
@@ -57,6 +52,8 @@ public String name() {
5752

5853
public JacksonSerializerWithType() {
5954
configMapper();
55+
MODULE.setSerializers(new CustomBeanModifier.BasicSerializers());
56+
MODULE.setDeserializers(new CustomBeanModifier.BasicDeserializers());
6057
customTimeFormatSerializer(MODULE);
6158
customTimeFormatDeserializer(MODULE);
6259
mapper.registerModule(MODULE);
@@ -72,18 +69,18 @@ private void configMapper() {
7269
mapper.configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL, true);
7370
// serializer with type info
7471
mapper.activateDefaultTyping(mapper.getPolymorphicTypeValidator(), ObjectMapper.DefaultTyping.NON_FINAL);
72+
mapper.setVisibility(mapper.getSerializationConfig().getDefaultVisibilityChecker()
73+
.withFieldVisibility(JsonAutoDetect.Visibility.ANY)
74+
.withGetterVisibility(JsonAutoDetect.Visibility.NONE)
75+
.withSetterVisibility(JsonAutoDetect.Visibility.NONE));
7576
}
7677

7778
private void customTimeFormatSerializer(SimpleModule module) {
7879
DateAdapter.Serializer dateSerializer = new DateAdapter.Serializer();
7980
CalendarAdapter.Serializer calendarSerializer = new CalendarAdapter.Serializer();
80-
module.addSerializer(DateTime.class, new DateTimeAdapter.Serializer());
8181
module.addSerializer(LocalDateTime.class, new LocalDateTimeAdapter.Serializer());
8282
module.addSerializer(LocalDate.class, new LocalDateAdapter.Serializer());
8383
module.addSerializer(LocalTime.class, new LocalTimeAdapter.Serializer());
84-
module.addSerializer(org.joda.time.LocalDateTime.class, new JodaLocalDateTimeAdapter.Serializer());
85-
module.addSerializer(org.joda.time.LocalDate.class, new JodaLocalDateAdapter.Serializer());
86-
module.addSerializer(org.joda.time.LocalTime.class, new JodaLocalTimeAdapter.Serializer());
8784
module.addSerializer(Calendar.class, calendarSerializer);
8885
module.addSerializer(GregorianCalendar.class, calendarSerializer);
8986
module.addSerializer(Timestamp.class, dateSerializer);
@@ -92,25 +89,19 @@ private void customTimeFormatSerializer(SimpleModule module) {
9289
module.addSerializer(Date.class, dateSerializer);
9390
module.addSerializer(Instant.class, new InstantAdapter.Serializer());
9491
module.addSerializer(OffsetDateTime.class, new OffsetDateTimeAdapter.Serializer());
95-
module.addSerializer(Range.class, new GuavaRangeAdapter.Serializer());
9692
}
9793

9894
private void customTimeFormatDeserializer(SimpleModule module) {
99-
module.addDeserializer(DateTime.class, new DateTimeAdapter.Deserializer());
10095
module.addDeserializer(LocalDateTime.class, new LocalDateTimeAdapter.Deserializer());
10196
module.addDeserializer(LocalDate.class, new LocalDateAdapter.Deserializer());
10297
module.addDeserializer(LocalTime.class, new LocalTimeAdapter.Deserializer());
103-
module.addDeserializer(org.joda.time.LocalDateTime.class, new JodaLocalDateTimeAdapter.Deserializer());
104-
module.addDeserializer(org.joda.time.LocalDate.class, new JodaLocalDateAdapter.Deserializer());
105-
module.addDeserializer(org.joda.time.LocalTime.class, new JodaLocalTimeAdapter.Deserializer());
10698
module.addDeserializer(Calendar.class, new CalendarAdapter.Deserializer());
10799
module.addDeserializer(GregorianCalendar.class, new GregorianCalendarAdapter.Deserializer());
108100
module.addDeserializer(Timestamp.class, new TimestampAdapter.Deserializer());
109101
module.addDeserializer(XMLGregorianCalendar.class, new XMLGregorianCalendarAdapter.Deserializer());
110102
module.addDeserializer(Date.class, new DateAdapter.Deserializer());
111103
module.addDeserializer(Instant.class, new InstantAdapter.Deserializer());
112104
module.addDeserializer(OffsetDateTime.class, new OffsetDateTimeAdapter.Deserializer());
113-
module.addDeserializer(Range.class, new GuavaRangeAdapter.Deserializer());
114105
module.addDeserializer(java.sql.Date.class, new SqlDateAdapter.Deserializer());
115106
module.addDeserializer(Time.class, new SqlTimeAdapter.Deserializer());
116107
}

0 commit comments

Comments
 (0)