Skip to content

Commit 2c597b3

Browse files
committed
tmp
Signed-off-by: David Kral <[email protected]>
1 parent 6c73301 commit 2c597b3

File tree

9 files changed

+36
-14
lines changed

9 files changed

+36
-14
lines changed

builder/codegen/src/main/java/io/helidon/builder/codegen/TypeHandlerOptional.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,11 @@ void setters(InnerClass.Builder classBuilder,
188188
it.addContent("<");
189189
Iterator<TypeName> iterator = finalBuilderType.typeArguments().iterator();
190190
while (iterator.hasNext()) {
191-
it.addContent(iterator.next());
191+
TypeName next = iterator.next();
192+
if (next.wildcard()) {
193+
next = TypeNames.OBJECT;
194+
}
195+
it.addContent(next);
192196
if (iterator.hasNext()) {
193197
it.addContent(", ");
194198
}

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ public static <N> GenericType<N> create(N object) {
117117
return GenericType.<N>create(object.getClass());
118118
}
119119

120-
public static <N> Builder<N> builder1() {
120+
public static <N> Builder<N> builder() {
121121
return new Builder<>();
122122
}
123123

@@ -217,8 +217,7 @@ public String toString() {
217217
return type.toString();
218218
}
219219

220-
// public static final class Builder<T> implements io.helidon.common.Builder<Builder<T>, GenericType<T>> {
221-
public static final class Builder<T> {
220+
public static final class Builder<T> implements io.helidon.common.Builder<Builder<T>, GenericType<T>> {
222221

223222
private Class<? extends T> baseType;
224223
private List<GenericType<?>> genericParameters = new ArrayList<>();

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44

55
public interface JsonBindingFactory<T> {
66

7+
// ConfigurableJsonDeserializer<T> createDeserializer(JsonBinding jsonBinding, Type type);
8+
// ConfigurableJsonSerializer<T> createSerializer(JsonBinding jsonBinding, Type type);
9+
710
JsonDeserializer<T> createDeserializer(JsonBinding jsonBinding, Type type);
811
JsonSerializer<T> createSerializer(JsonBinding jsonBinding, Type type);
912

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,23 @@
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+
38
/**
49
* TODO javadoc
510
*/
611
public interface TypedJsonConverter<T> extends TypedJsonSerializer<T>, TypedJsonDeserializer<T> {
712

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.");
21+
}
22+
823
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ final class IntegerConverter implements TypedJsonConverter<Integer> {
1515

1616
private static final GenericType<Integer> TYPE = GenericType.create(Integer.class);
1717

18-
@Override
19-
public GenericType<Integer> type() {
20-
return TYPE;
21-
}
18+
// @Override
19+
// public GenericType<Integer> type() {
20+
// return TYPE;
21+
// }
2222

2323
@Override
2424
public void toJson(Generator generator, Integer instance) {

json/binding/src/main/java/module-info.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
requires helidon.json.parser;
44
requires io.helidon.common.config;
55
requires io.helidon.service.registry;
6+
requires jdk.jdi;
67

78
exports io.helidon.json.binding;
89
exports io.helidon.json.binding.converters;

json/codegen/src/main/java/io/helidon/json/codegen/JsonConverterGenerator.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -197,10 +197,9 @@ private static Consumer<Constructor.Builder> constructComplexGenericType(Constru
197197
}
198198
}
199199
String variableName = "genericType" + counter.count++;
200-
constructor.addContent(TypeNames.GENERIC_TYPE)
201-
.addContent("<?> " + variableName + " = ")
200+
constructor.addContent("var " + variableName + " = ")
202201
.addContent(TypeNames.GENERIC_TYPE)
203-
.addContentLine(".builder1()")
202+
.addContent(".<").addContent(TypeNames.OBJECT).addContentLine(">builder()")
204203
.increaseContentPadding()
205204
.increaseContentPadding()
206205
.addContent(".baseType(").addContent(typeName.genericTypeName()).addContentLine(".class)");

json/tests/src/main/java/io/helidon/json/tests/ClassWithGenerics.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ public class ClassWithGenerics<T> {
1111
private T field;
1212
private List<T> collection = new ArrayList<>();
1313
private List<List<T>> collection2 = new ArrayList<>();
14-
public ClassWithGenerics<T> test;
14+
// public ClassWithGenerics<T> test;
1515
private List<? extends SimpleClass> collection23 = new ArrayList<>();
1616
//widlcard
1717
//upper/lower bounds

json/tests/src/main/java/io/helidon/json/tests/Main.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,9 @@ public class Main {
99

1010
public static void main(String[] args) {
1111

12-
// GenericType<List<String>> genericType = new GenericType<>() { };
13-
//// SimpleClass deserialize = JsonBinding.deserialize("{\"name\":\"value\"}", SimpleClass.class);
12+
GenericType<List<String>> genericType = new GenericType<>() { };
13+
GenericType<List<String>> genericType2 = new GenericType<>() { };
14+
// SimpleClass deserialize = JsonBinding.deserialize("{\"name\":\"value\"}", SimpleClass.class);
1415
// SimpleRecord record = JsonBinding.deserialize("{\"ints\":[1,2,3]}", SimpleRecord.class);
1516
// System.out.println();
1617

0 commit comments

Comments
 (0)