Trim down TypeDefinitionAwareCodec 53/53653/2
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 22 Mar 2017 07:29:37 +0000 (08:29 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 23 Mar 2017 09:26:57 +0000 (10:26 +0100)
Storing an Optional runs contrary to its usual role and wastes
memory. We can simply calculate the optional and have a nullable
internal field, saving ~16 bytes per codec instance.

Change-Id: I184fbd8f390bf5703b3342a6dd09de599c236554
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/codec/TypeDefinitionAwareCodec.java

index 578b50891bf2fff614265b294662374ff040c5c9..ef0bb525798d443e1456688a6eab7d3cc5ecae6a 100644 (file)
@@ -22,22 +22,22 @@ import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition;
 
 public abstract class TypeDefinitionAwareCodec<J, T extends TypeDefinition<T>> implements DataStringCodec<J> {
-    private final Optional<T> typeDefinition;
     private final Class<J> inputClass;
-
-    @Override
-    public Class<J> getInputClass() {
-        return inputClass;
-    }
+    private final T typeDefinition;
 
     protected TypeDefinitionAwareCodec(final Optional<T> typeDefinition, final Class<J> outputClass) {
         Preconditions.checkArgument(outputClass != null, "Output class must be specified.");
-        this.typeDefinition = typeDefinition;
+        this.typeDefinition = typeDefinition.orNull();
         this.inputClass = outputClass;
     }
 
+    @Override
+    public Class<J> getInputClass() {
+        return inputClass;
+    }
+
     public Optional<T> getTypeDefinition() {
-        return typeDefinition;
+        return Optional.fromNullable(typeDefinition);
     }
 
     @SuppressWarnings({ "rawtypes", "unchecked" })