Skip to content

Commit aa58798

Browse files
committed
API changes and cleanup 2
Signed-off-by: David Kral <[email protected]>
1 parent 6e7393f commit aa58798

File tree

25 files changed

+129
-69
lines changed

25 files changed

+129
-69
lines changed

common/common/src/main/java/io/helidon/common/GenericType.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -222,8 +222,8 @@ public String toString() {
222222

223223
public static final class Builder<T> implements io.helidon.common.Builder<Builder<T>, GenericType<T>> {
224224

225-
private Class<? extends T> baseType;
226-
private List<Type> genericParameters = new ArrayList<>();
225+
private Class<?> baseType;
226+
private final List<Type> genericParameters = new ArrayList<>();
227227

228228
public GenericType<T> build() {
229229
if (baseType == null) {
@@ -237,7 +237,7 @@ public GenericType<T> build() {
237237
return new GenericType<>(parameterizedType, baseType);
238238
}
239239

240-
public Builder<T> baseType(Class<? extends T> baseType) {
240+
public Builder<T> baseType(Class<?> baseType) {
241241
this.baseType = baseType;
242242
return this;
243243
}

json/binding/src/main/java/io/helidon/json/binding/JsonBinding.java

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,18 +22,14 @@ static JsonBindingConfig.Builder builder() {
2222

2323
static JsonBinding create(JsonBindingConfig config) {
2424
JsonBindingImpl jsonBinding = new JsonBindingImpl(config);
25-
Set<JsonConfigurable> processed = new HashSet<>();
2625
for (TypedJsonSerializer<?> serializer : config.serializers()) {
27-
if (serializer instanceof JsonConfigurable configurable) {
28-
configurable.configure(jsonBinding);
29-
processed.add(configurable);
30-
}
26+
serializer.configure(jsonBinding);
3127
}
3228
for (TypedJsonDeserializer<?> deserializer : config.deserializers()) {
33-
if (deserializer instanceof JsonConfigurable configurable
34-
&& !processed.contains(deserializer)) {
35-
configurable.configure(jsonBinding);
29+
if (config.serializers().contains(deserializer)) {
30+
continue;
3631
}
32+
deserializer.configure(jsonBinding);
3733
}
3834
return jsonBinding;
3935
}

json/binding/src/main/java/io/helidon/json/binding/JsonBindingFactory.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
public interface JsonBindingFactory<T> {
66

7-
BindingFactoryDeserializer<T> createDeserializer(Type type);
8-
BindingFactorySerializer<T> createSerializer(Type type);
7+
BindingFactoryDeserializer<T> createDeserializer(Type type);
8+
BindingFactorySerializer<T> createSerializer(Type type);
99

1010
}

json/binding/src/main/java/io/helidon/json/binding/JsonBindingImpl.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -242,7 +242,7 @@ public <T> JsonDeserializer<T> getDeserializer(Type type) {
242242
public <T> JsonDeserializer<T> getDeserializer(Type type, JsonContext jsonContext) {
243243
return switch (type) {
244244
case Class<?> clazz -> (JsonDeserializer<T>) getDeserializer(clazz, jsonContext);
245-
case GenericType<?> genericType -> getDeserializer(genericType, jsonContext);
245+
case GenericType<?> genericType -> (JsonDeserializer<T>) getDeserializer(genericType, jsonContext);
246246
case null, default -> getDeserializer(GenericType.create(type), jsonContext);
247247
};
248248
}
@@ -347,7 +347,7 @@ public <T> JsonSerializer<T> getSerializer(Type type) {
347347
public <T> JsonSerializer<T> getSerializer(Type type, JsonContext jsonContext) {
348348
return switch (type) {
349349
case Class<?> clazz -> (JsonSerializer<T>) getSerializer(clazz);
350-
case GenericType<?> genericType -> getSerializer(genericType);
350+
case GenericType<?> genericType -> (JsonSerializer<T>) getSerializer(genericType);
351351
case null, default -> getSerializer(GenericType.create(type));
352352
};
353353
}

json/binding/src/main/java/io/helidon/json/binding/JsonConfigurable.java

Lines changed: 0 additions & 7 deletions
This file was deleted.

json/binding/src/main/java/io/helidon/json/binding/JsonConverter.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,7 @@
55
*/
66
public interface JsonConverter<T> extends JsonDeserializer<T>, JsonSerializer<T> {
77

8+
default void configure(JsonBindingConfigurator jsonBindingConfigurator) {
9+
}
10+
811
}

json/binding/src/main/java/io/helidon/json/binding/JsonDeserializer.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,7 @@ default T deserializeNull() {
1010
return null;
1111
}
1212

13+
default void configure(JsonBindingConfigurator jsonBindingConfigurator) {
14+
}
15+
1316
}

json/binding/src/main/java/io/helidon/json/binding/JsonSerializer.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,7 @@ default void serializeNull(Generator generator) {
1010
generator.writeNull();
1111
}
1212

13+
default void configure(JsonBindingConfigurator jsonBindingConfigurator) {
14+
}
15+
1316
}
Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,11 @@
11
package io.helidon.json.binding;
22

3-
import java.lang.reflect.ParameterizedType;
4-
import java.lang.reflect.Type;
5-
6-
import io.helidon.common.GenericType;
7-
83
/**
94
* TODO javadoc
105
*/
116
public interface TypedJsonConverter<T> extends TypedJsonSerializer<T>, TypedJsonDeserializer<T> {
127

13-
default GenericType<T> type() {
14-
for (Type type : getClass().getGenericInterfaces()) {
15-
if (type instanceof ParameterizedType parameterizedType
16-
&& parameterizedType.getRawType().equals(TypedJsonConverter.class)) {
17-
return GenericType.create(parameterizedType.getActualTypeArguments()[0]);
18-
}
19-
}
20-
throw new IllegalStateException("This should never be reached.");
8+
default void configure(JsonBindingConfigurator jsonBindingConfigurator) {
219
}
2210

2311
}

json/binding/src/main/java/io/helidon/json/binding/converters/BooleanArrayConverter.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package io.helidon.json.binding.converters;
22

3+
import io.helidon.common.GenericType;
34
import io.helidon.common.Weight;
45
import io.helidon.common.Weighted;
56
import io.helidon.json.binding.Deserializers;
67
import io.helidon.json.binding.JsonBindingConfigurator;
7-
import io.helidon.json.binding.JsonConfigurable;
88
import io.helidon.json.binding.JsonDeserializer;
99
import io.helidon.json.binding.JsonSerializer;
1010
import io.helidon.json.binding.TypedJsonConverter;
@@ -15,7 +15,9 @@
1515

1616
@Service.PerLookup
1717
@Weight(Weighted.DEFAULT_WEIGHT - 10)
18-
class BooleanArrayConverter implements TypedJsonConverter<boolean[]>, JsonConfigurable {
18+
class BooleanArrayConverter implements TypedJsonConverter<boolean[]> {
19+
20+
private static final GenericType<boolean[]> TYPE = GenericType.create(boolean[].class);
1921

2022
private final boolean[] emptyArray = new boolean[0];
2123
private JsonDeserializer<Boolean> deserializer;
@@ -77,4 +79,9 @@ public void configure(JsonBindingConfigurator jsonBindingConfigurator) {
7779
deserializer = jsonBindingConfigurator.getDeserializer(boolean.class);
7880
serializer = jsonBindingConfigurator.getSerializer(boolean.class);
7981
}
82+
83+
@Override
84+
public GenericType<boolean[]> type() {
85+
return TYPE;
86+
}
8087
}

0 commit comments

Comments
 (0)