|
12 | 12 |
|
13 | 13 | package org.eclipse.yasson.defaultmapping.generics; |
14 | 14 |
|
| 15 | +import static org.eclipse.yasson.Jsonbs.defaultJsonb; |
| 16 | +import static org.junit.jupiter.api.Assertions.assertEquals; |
| 17 | +import static org.junit.jupiter.api.Assertions.assertThrows; |
| 18 | +import static org.junit.jupiter.api.Assertions.assertTrue; |
| 19 | + |
| 20 | +import java.lang.reflect.Field; |
15 | 21 | import java.lang.reflect.Type; |
16 | | -import java.lang.reflect.WildcardType; |
17 | 22 | import java.math.BigDecimal; |
18 | 23 | import java.text.ParseException; |
19 | 24 | import java.text.SimpleDateFormat; |
20 | 25 | import java.util.ArrayList; |
21 | 26 | import java.util.Arrays; |
| 27 | +import java.util.Collection; |
22 | 28 | import java.util.HashMap; |
23 | 29 | import java.util.HashSet; |
24 | 30 | import java.util.LinkedList; |
|
30 | 36 | import jakarta.json.bind.Jsonb; |
31 | 37 | import jakarta.json.bind.JsonbBuilder; |
32 | 38 | import jakarta.json.bind.JsonbConfig; |
33 | | -import java.lang.reflect.Field; |
34 | | -import java.util.Collection; |
35 | 39 | import org.eclipse.yasson.TestTypeToken; |
36 | 40 | import org.eclipse.yasson.adapters.model.GenericBox; |
37 | 41 | import org.eclipse.yasson.defaultmapping.generics.model.AnotherGenericTestClass; |
|
48 | 52 | import org.eclipse.yasson.defaultmapping.generics.model.GenericArrayClass; |
49 | 53 | import org.eclipse.yasson.defaultmapping.generics.model.GenericTestClass; |
50 | 54 | import org.eclipse.yasson.defaultmapping.generics.model.GenericWithUnboundedWildcardClass; |
| 55 | +import org.eclipse.yasson.defaultmapping.generics.model.LowerBoundTypeVariableWithCollectionAttributeClass; |
51 | 56 | import org.eclipse.yasson.defaultmapping.generics.model.MultiLevelExtendedGenericTestClass; |
52 | 57 | import org.eclipse.yasson.defaultmapping.generics.model.MultipleBoundsContainer; |
53 | 58 | import org.eclipse.yasson.defaultmapping.generics.model.MyCyclicGenericClass; |
54 | 59 | import org.eclipse.yasson.defaultmapping.generics.model.PropagatedGenericClass; |
55 | 60 | import org.eclipse.yasson.defaultmapping.generics.model.Shape; |
56 | 61 | import org.eclipse.yasson.defaultmapping.generics.model.StaticCreatorContainer; |
| 62 | +import org.eclipse.yasson.defaultmapping.generics.model.TreeContainer; |
| 63 | +import org.eclipse.yasson.defaultmapping.generics.model.TreeElement; |
57 | 64 | import org.eclipse.yasson.defaultmapping.generics.model.WildCardClass; |
58 | 65 | import org.eclipse.yasson.defaultmapping.generics.model.WildcardMultipleBoundsClass; |
59 | 66 | import org.eclipse.yasson.serializers.model.Box; |
60 | 67 | import org.eclipse.yasson.serializers.model.Crate; |
61 | 68 | import org.junit.jupiter.api.Test; |
62 | 69 |
|
63 | | -import static org.eclipse.yasson.Jsonbs.defaultJsonb; |
64 | | -import org.eclipse.yasson.defaultmapping.generics.model.LowerBoundTypeVariableWithCollectionAttributeClass; |
65 | | -import static org.junit.jupiter.api.Assertions.assertEquals; |
66 | | -import static org.junit.jupiter.api.Assertions.assertThrows; |
67 | | -import static org.junit.jupiter.api.Assertions.assertTrue; |
68 | | - |
69 | 70 | /** |
70 | 71 | * This class contains JSONB default mapping generics tests. |
71 | 72 | * |
@@ -513,6 +514,18 @@ public void wildcardCollectionContainer() { |
513 | 514 | final CollectionContainer result = defaultJsonb.fromJson(expectedJson, CollectionContainer.class); |
514 | 515 | assertEquals(collectionContainer, result); |
515 | 516 | } |
| 517 | + |
| 518 | + @Test |
| 519 | + public void genericUpperBoundContainer() { |
| 520 | + final String expectedJson = "{\"tree\":{\"children\":[{\"children\":[],\"name\":\"child\"}],\"name\":\"parent\"}}"; |
| 521 | + final TreeContainer<TreeElement> container = new TreeContainer<>(); |
| 522 | + final TreeElement parent = new TreeElement("parent"); |
| 523 | + parent.setChildren(List.of(new TreeElement("child"))); |
| 524 | + container.setTree(parent); |
| 525 | + |
| 526 | + assertEquals(expectedJson, defaultJsonb.toJson(container)); |
| 527 | + |
| 528 | + } |
516 | 529 |
|
517 | 530 | public interface FunctionalInterface<T> { |
518 | 531 | T getValue(); |
|
0 commit comments