Skip to content

Commit

Permalink
tmp
Browse files Browse the repository at this point in the history
Signed-off-by: David Kral <[email protected]>
  • Loading branch information
Verdent committed Jan 10, 2025
1 parent 4bfe71d commit 7025192
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 17 deletions.
25 changes: 13 additions & 12 deletions common/common/src/main/java/io/helidon/common/GenericType.java
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,8 @@ public class GenericType<T> implements Type {
public static <N> GenericType<N> create(Type genericType) throws IllegalArgumentException {
Objects.requireNonNull(genericType);

return new GenericType<>(genericType, GenericTypeUtil.rawClass(genericType));
Type type = genericType instanceof GenericType<?> genType ? genType.type : genericType;
return new GenericType<>(type, GenericTypeUtil.rawClass(type));
}

/**
Expand All @@ -116,8 +117,8 @@ public static <N> GenericType<N> create(N object) {
return GenericType.<N>create(object.getClass());
}

public static Builder builder() {
return new Builder();
public static <N> Builder<N> builder1() {
return new Builder<>();
}

private GenericType(Type type, Class<?> rawType) {
Expand Down Expand Up @@ -216,13 +217,13 @@ public String toString() {
return type.toString();
}

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

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

@Override
public GenericType<?> build() {
public GenericType<T> build() {
if (baseType == null) {
throw new IllegalStateException("Base type has to be set");
}
Expand All @@ -234,23 +235,23 @@ public GenericType<?> build() {
return new GenericType<>(parameterizedType, baseType);
}

public Builder baseType(Class<?> baseType) {
public Builder<T> baseType(Class<? extends T> baseType) {
this.baseType = baseType;
return this;
}

public Builder genericParameters(List<GenericType<?>> genericParameters) {
public Builder<T> genericParameters(List<GenericType<?>> genericParameters) {
this.genericParameters = genericParameters;
return this;
}

public Builder addGenericParameter(GenericType<?> genericParameter) {
public Builder<T> addGenericParameter(GenericType<?> genericParameter) {
this.genericParameters.add(genericParameter);
return this;
}

public Builder addGenericParameter(Consumer<Builder> consumer) {
Builder builder = new Builder();
public Builder<T> addGenericParameter(Consumer<Builder<T>> consumer) {
Builder<T> builder = new Builder<T>();
consumer.accept(builder);
this.genericParameters.add(builder.build());
return this;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ private static Consumer<Constructor.Builder> constructComplexGenericType(Constru
constructor.addContent(TypeNames.GENERIC_TYPE)
.addContent("<?> " + variableName + " = ")
.addContent(TypeNames.GENERIC_TYPE)
.addContentLine(".builder()")
.addContentLine(".builder1()")
.increaseContentPadding()
.increaseContentPadding()
.addContent(".baseType(").addContent(typeName.genericTypeName()).addContentLine(".class)");
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package io.helidon.json.tests;

import io.helidon.json.binding.Json;

@Json.AsJson
public class ClassUsingClassWithGenerics {

public ClassWithGenerics<Integer> test;

}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ public class ClassWithGenerics<T> {
private T field;
private List<T> collection = new ArrayList<>();
private List<List<T>> collection2 = new ArrayList<>();
public ClassWithGenerics<T> test;
private List<? extends SimpleClass> collection23 = new ArrayList<>();
//widlcard
//upper/lower bounds
Expand Down
14 changes: 10 additions & 4 deletions json/tests/src/main/java/io/helidon/json/tests/Main.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,18 @@ public class Main {

public static void main(String[] args) {

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

// SimpleRecord record = new SimpleRecord("testValue", List.of(1, 2, 3), 1);

ClassUsingClassWithGenerics deserialize = JsonBinding.deserialize("{\"test\":{\"collection\":[1,2,3]}}",
ClassUsingClassWithGenerics.class);

System.out.println();

}

}

0 comments on commit 7025192

Please sign in to comment.