Expand StatementNamespace
[mdsal.git] / binding / mdsal-binding-generator / src / main / java / org / opendaylight / mdsal / binding / generator / impl / reactor / ContainerGenerator.java
index 8e905ea9382fe1561922a106d589be31ee7ad43e..e7c80f5b5fc526c2a6f9642f3932fb0ce9878834 100644 (file)
@@ -10,11 +10,17 @@ package org.opendaylight.mdsal.binding.generator.impl.reactor;
 import java.util.List;
 import org.opendaylight.mdsal.binding.generator.impl.rt.DefaultContainerRuntimeType;
 import org.opendaylight.mdsal.binding.model.api.GeneratedType;
+import org.opendaylight.mdsal.binding.model.api.MethodSignature.ValueMechanics;
+import org.opendaylight.mdsal.binding.model.api.Type;
 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilder;
+import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilderBase;
+import org.opendaylight.mdsal.binding.model.api.type.builder.MethodSignatureBuilder;
 import org.opendaylight.mdsal.binding.runtime.api.AugmentRuntimeType;
 import org.opendaylight.mdsal.binding.runtime.api.ContainerRuntimeType;
 import org.opendaylight.mdsal.binding.runtime.api.RuntimeType;
+import org.opendaylight.mdsal.binding.spec.naming.BindingMapping;
 import org.opendaylight.yangtools.yang.model.api.stmt.ContainerEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.PresenceEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.util.SchemaInferenceStack;
 
 /**
@@ -25,9 +31,14 @@ final class ContainerGenerator extends CompositeSchemaTreeGenerator<ContainerEff
         super(statement, parent);
     }
 
+    @Override
+    StatementNamespace namespace() {
+        return StatementNamespace.CONTAINER;
+    }
+
     @Override
     void pushToInference(final SchemaInferenceStack dataTree) {
-        dataTree.enterDataTree(statement().getIdentifier());
+        dataTree.enterDataTree(statement().argument());
     }
 
     @Override
@@ -62,4 +73,18 @@ final class ContainerGenerator extends CompositeSchemaTreeGenerator<ContainerEff
             }
         };
     }
+
+    @Override
+    MethodSignatureBuilder constructGetter(final GeneratedTypeBuilderBase<?> builder, final Type returnType) {
+        final MethodSignatureBuilder ret = super.constructGetter(builder, returnType)
+                .setMechanics(ValueMechanics.NORMAL);
+        if (statement().findFirstEffectiveSubstatement(PresenceEffectiveStatement.class).isEmpty()) {
+            final MethodSignatureBuilder nonnull = builder
+                    .addMethod(BindingMapping.getNonnullMethodName(localName().getLocalName()))
+                    .setReturnType(returnType)
+                    .setDefault(false);
+            annotateDeprecatedIfNecessary(nonnull);
+        }
+        return ret;
+    }
 }