|
26 | 26 | import org.bson.codecs.MapCodec;
|
27 | 27 | import org.bson.codecs.configuration.CodecConfigurationException;
|
28 | 28 | import org.bson.codecs.configuration.CodecRegistry;
|
| 29 | +import org.bson.codecs.pojo.entities.AbstractInterfaceModel; |
29 | 30 | import org.bson.codecs.pojo.entities.AsymmetricalCreatorModel;
|
30 | 31 | import org.bson.codecs.pojo.entities.AsymmetricalIgnoreModel;
|
31 | 32 | import org.bson.codecs.pojo.entities.AsymmetricalModel;
|
| 33 | +import org.bson.codecs.pojo.entities.ConcreteAndNestedAbstractInterfaceModel; |
32 | 34 | import org.bson.codecs.pojo.entities.ConcreteCollectionsModel;
|
| 35 | +import org.bson.codecs.pojo.entities.ConcreteStandAloneAbstractInterfaceModel; |
33 | 36 | import org.bson.codecs.pojo.entities.ConstructorNotPublicModel;
|
34 | 37 | import org.bson.codecs.pojo.entities.ConventionModel;
|
35 | 38 | import org.bson.codecs.pojo.entities.ConverterModel;
|
36 | 39 | import org.bson.codecs.pojo.entities.CustomPropertyCodecOptionalModel;
|
37 | 40 | import org.bson.codecs.pojo.entities.GenericTreeModel;
|
| 41 | +import org.bson.codecs.pojo.entities.InterfaceBasedModel; |
38 | 42 | import org.bson.codecs.pojo.entities.InvalidCollectionModel;
|
39 | 43 | import org.bson.codecs.pojo.entities.InvalidGetterAndSetterModel;
|
40 | 44 | import org.bson.codecs.pojo.entities.InvalidMapModel;
|
|
77 | 81 |
|
78 | 82 | import static java.lang.String.format;
|
79 | 83 | import static java.util.Arrays.asList;
|
| 84 | +import static java.util.Collections.singletonList; |
80 | 85 | import static org.bson.codecs.configuration.CodecRegistries.fromCodecs;
|
81 | 86 | import static org.bson.codecs.configuration.CodecRegistries.fromProviders;
|
82 | 87 | import static org.bson.codecs.configuration.CodecRegistries.fromRegistries;
|
@@ -253,6 +258,23 @@ public void testUseGettersForSettersConvention() {
|
253 | 258 | roundTrip(builder, new MapGetterMutableModel(Collections.singletonMap("a", 3)), "{mapField: {a: 3}}");
|
254 | 259 | }
|
255 | 260 |
|
| 261 | + @Test |
| 262 | + public void testWithWildcardListField() { |
| 263 | + ClassModel<InterfaceBasedModel> interfaceBasedModelClassModel = |
| 264 | + ClassModel.builder(InterfaceBasedModel.class).enableDiscriminator(true).build(); |
| 265 | + PojoCodecProvider.Builder builder = PojoCodecProvider.builder().automatic(true) |
| 266 | + .register(interfaceBasedModelClassModel) |
| 267 | + .register(AbstractInterfaceModel.class, ConcreteStandAloneAbstractInterfaceModel.class, |
| 268 | + ConcreteAndNestedAbstractInterfaceModel.class); |
| 269 | + |
| 270 | + roundTrip(builder, |
| 271 | + new ConcreteAndNestedAbstractInterfaceModel("A", |
| 272 | + singletonList(new ConcreteStandAloneAbstractInterfaceModel("B"))), |
| 273 | + "{'_t': 'org.bson.codecs.pojo.entities.ConcreteAndNestedAbstractInterfaceModel', 'name': 'A', " |
| 274 | + + " 'wildcardList': [{'_t': 'org.bson.codecs.pojo.entities.ConcreteStandAloneAbstractInterfaceModel', " |
| 275 | + + "'name': 'B'}]}"); |
| 276 | + } |
| 277 | + |
256 | 278 | @Test(expected = CodecConfigurationException.class)
|
257 | 279 | public void testUseGettersForSettersConventionInvalidTypeForCollection() {
|
258 | 280 | PojoCodecProvider.Builder builder = getPojoCodecProviderBuilder(CollectionsGetterMutableModel.class)
|
|
0 commit comments