Propagate @Nonnull and @Nullable annotations
[yangtools.git] / yang / yang-model-api / src / main / java / org / opendaylight / yangtools / yang / model / api / Rfc6020Mapping.java
index fca62d4850b4a702126c52cba75b38efdb184260..f1c25fcbe2da37ef8832a076b61751335f4c1f53 100644 (file)
@@ -14,6 +14,7 @@ import javax.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.YangConstants;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
 import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ArgumentStatement;
@@ -81,6 +82,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.WhenStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.YangVersionStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.YinElementStatement;
 
+
 @Beta
 public enum Rfc6020Mapping implements StatementDefinition {
     ANYXML(AnyxmlStatement.class, "anyxml", "name"),
@@ -150,36 +152,44 @@ public enum Rfc6020Mapping implements StatementDefinition {
     YIN_ELEMENT(YinElementStatement.class, "yin-element", "value");
 
     private final Class<? extends DeclaredStatement<?>> type;
+    private final Class<? extends EffectiveStatement<?,?>> effectiveType;
     private final QName name;
     private final QName argument;
     private final boolean yinElement;
 
-    private Rfc6020Mapping(Class<? extends DeclaredStatement<?>> clz, final String nameStr) {
+    Rfc6020Mapping(Class<? extends DeclaredStatement<?>> clz, final String nameStr) {
         type = Preconditions.checkNotNull(clz);
+        //FIXME: fill up effective type correctly
+        effectiveType = null;
         name = yinQName(nameStr);
         argument = null;
         yinElement = false;
     }
 
-    private Rfc6020Mapping(Class<? extends DeclaredStatement<?>> clz, final String nameStr, final String argumentStr) {
+    Rfc6020Mapping(Class<? extends DeclaredStatement<?>> clz, final String nameStr, final String argumentStr) {
         type = Preconditions.checkNotNull(clz);
+        //FIXME: fill up effective type correctly
+        effectiveType = null;
         name = yinQName(nameStr);
         argument = yinQName(argumentStr);
         this.yinElement = false;
     }
 
-    private Rfc6020Mapping(Class<? extends DeclaredStatement<?>> clz, final String nameStr, final String argumentStr,
+    Rfc6020Mapping(Class<? extends DeclaredStatement<?>> clz, final String nameStr, final String argumentStr,
             final boolean yinElement) {
         type = Preconditions.checkNotNull(clz);
+        //FIXME: fill up effective type correctly
+        effectiveType = null;
         name = yinQName(nameStr);
         argument = yinQName(argumentStr);
         this.yinElement = yinElement;
     }
 
     @Nonnull private static QName yinQName(String nameStr) {
-        return QName.cachedReference(QName.create(YangConstants.RFC6020_YIN_MODULE, nameStr));
+        return QName.create(YangConstants.RFC6020_YIN_MODULE, nameStr).intern();
     }
 
+    @Nonnull
     @Override
     public QName getStatementName() {
         return name;
@@ -195,12 +205,13 @@ public enum Rfc6020Mapping implements StatementDefinition {
         return type;
     }
 
+    @Nonnull
     @Override
-    public Class<? extends DeclaredStatement<?>> getEffectiveRepresentationClass() {
-        // FIXME: Add support once these interfaces are defined.
-        throw new UnsupportedOperationException("Not defined yet.");
+    public Class<? extends EffectiveStatement<?,?>> getEffectiveRepresentationClass() {
+        return effectiveType;
     }
 
+    @Override
     public boolean isArgumentYinElement() {
         return yinElement;
     }