Add lazily-instantiated lists
[mdsal.git] / binding / mdsal-binding-dom-codec / src / main / java / org / opendaylight / mdsal / binding / dom / codec / impl / DataObjectCodecContext.java
index 82e1ce591382cd480a251d1939e10266c02894b2..b1083ffa0b01c0b67baf46a07b61c58a8996dc76 100644 (file)
@@ -87,6 +87,7 @@ public abstract class DataObjectCodecContext<D extends DataObject, T extends Dat
     private final ImmutableMap<Class<?>, DataContainerCodecPrototype<?>> byStreamClass;
     private final ImmutableMap<Class<?>, DataContainerCodecPrototype<?>> byBindingArgClass;
     private final ImmutableMap<AugmentationIdentifier, Type> possibleAugmentations;
+    private final @NonNull Class<? extends CodecDataObject<?>> generatedClass;
     private final MethodHandle proxyConstructor;
 
     // FIXME: the presence of these two volatile fields may be preventing us from being able to improve
@@ -158,7 +159,6 @@ public abstract class DataObjectCodecContext<D extends DataObject, T extends Dat
         this.byBindingArgClass = byStreamClassBuilder.equals(byBindingArgClassBuilder) ? this.byStreamClass
                 : ImmutableMap.copyOf(byBindingArgClassBuilder);
 
-        final Class<? extends CodecDataObject<?>> generatedClass;
         if (Augmentable.class.isAssignableFrom(bindingClass)) {
             this.possibleAugmentations = factory().getRuntimeContext().getAvailableAugmentationTypes(getSchema());
             generatedClass = CodecDataObjectGenerator.generateAugmentable(prototype.getFactory().getLoader(),
@@ -541,6 +541,10 @@ public abstract class DataObjectCodecContext<D extends DataObject, T extends Dat
         return map;
     }
 
+    final @NonNull Class<? extends CodecDataObject<?>> generatedClass() {
+        return generatedClass;
+    }
+
     @Override
     public InstanceIdentifier.PathArgument deserializePathArgument(final YangInstanceIdentifier.PathArgument arg) {
         checkArgument(getDomPathArgument().equals(arg));