Fixed serialization of InstanceIdentifier's which contains Augmentation in path.
[controller.git] / opendaylight / md-sal / sal-binding-broker / src / main / java / org / opendaylight / controller / sal / binding / impl / util / YangSchemaUtils.java
index b7a21cb022aa59011f6a66314d772e5e867fd911..1426089360ef2bd3c8e0530341e0b66cff8ee81f 100644 (file)
@@ -4,11 +4,16 @@ import java.util.List;
 
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
+import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
 
 import com.google.common.base.Preconditions;
 
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+
 public class YangSchemaUtils {
 
     public static final String AUGMENT_IDENTIFIER = "augment-identifier";
@@ -41,4 +46,25 @@ public class YangSchemaUtils {
         }
         return null;
     }
+
+
+    public static TypeDefinition<?> findTypeDefinition(SchemaContext context, SchemaPath path) {
+        List<QName> arguments = path.getPath();
+        QName first = arguments.get(0);
+        QName typeQName = arguments.get(arguments.size() -1);
+        DataNodeContainer previous = context.findModuleByNamespaceAndRevision(first.getNamespace(), first.getRevision());
+        if(previous == null) {
+            return null;
+        }
+        Preconditions.checkArgument(arguments.size() == 1);
+        for (QName qName : arguments) {
+            //previous.getDataChildByName(qName);
+        }
+        for(TypeDefinition<?> typedef : previous.getTypeDefinitions()) {
+            if(typedef.getQName().equals(typeQName)) {
+                return typedef;
+            }
+        }
+        return null;
+    }
 }