Skip to content

Commit 946f87d

Browse files
committed
test nested and 3 params
1 parent 9a2c4e5 commit 946f87d

File tree

4 files changed

+14
-14
lines changed

4 files changed

+14
-14
lines changed

blackbox-test/src/main/java/org/example/customer/generics/MyGenericHolder.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@ public class MyGenericHolder<T> {
99
String author;
1010
T document;
1111

12+
@Json
13+
public record MyGenericHolderRecord<T,T2,T3>(T title, T2 author, T3 document) {}
14+
1215
public String getTitle() {
1316
return title;
1417
}

blackbox-test/src/main/java/org/example/customer/generics/MyGenericHolderRecord.java

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

blackbox-test/src/test/java/org/example/customer/generics/MyGenericHolderRecordTest.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import java.util.LinkedHashMap;
66

77
import org.example.customer.Address;
8+
import org.example.customer.generics.MyGenericHolder.MyGenericHolderRecord;
89
import org.junit.jupiter.api.Test;
910

1011
import io.avaje.jsonb.JsonType;
@@ -15,7 +16,7 @@ class MyGenericHolderRecordTest {
1516

1617
Jsonb jsonb = Jsonb.builder().build();
1718

18-
private static MyGenericHolderRecord<Address> createTestData() {
19+
private static MyGenericHolderRecord<String, String, Address> createTestData() {
1920
return new MyGenericHolderRecord<>("hello", "art", new Address(90L, "one"));
2021
}
2122

@@ -51,8 +52,10 @@ void toJson_withGenericParam() {
5152
final var bean = createTestData();
5253

5354
final var jsonb = Jsonb.builder().build();
54-
final JsonType<MyGenericHolderRecord<Address>> type =
55-
jsonb.type(Types.newParameterizedType(MyGenericHolderRecord.class, Address.class));
55+
final JsonType<MyGenericHolderRecord<String, String, Address>> type =
56+
jsonb.type(
57+
Types.newParameterizedType(
58+
MyGenericHolderRecord.class, String.class, String.class, Address.class));
5659

5760
final var asJson = type.toJson(bean);
5861
assertThat(asJson)

jsonb/src/main/java/io/avaje/jsonb/core/Util.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -286,13 +286,13 @@ static final class ParameterizedTypeImpl implements ParameterizedType {
286286

287287
public ParameterizedTypeImpl(Type ownerType, Type rawType, Type... typeArguments) {
288288
// Require an owner type if the raw type needs it.
289-
if (rawType instanceof Class<?>) {
289+
if (ownerType != null && rawType instanceof Class<?>) {
290290
Class<?> enclosingClass = ((Class<?>) rawType).getEnclosingClass();
291-
if (ownerType != null) {
292-
if (enclosingClass == null || Util.rawType(ownerType) != enclosingClass) {
293-
throw new IllegalArgumentException(
291+
292+
if (enclosingClass == null || Util.rawType(ownerType) != enclosingClass) {
293+
throw new IllegalArgumentException(
294294
"unexpected owner type for " + rawType + ": " + ownerType);
295-
}
295+
296296
} else if (enclosingClass != null) {
297297
throw new IllegalArgumentException("unexpected owner type for " + rawType + ": null");
298298
}

0 commit comments

Comments
 (0)