Fixed bug in Data store where multiple readers could overwrite
[controller.git] / opendaylight / md-sal / sal-binding-broker / src / main / java / org / opendaylight / controller / sal / binding / impl / util / YangSchemaUtils.java
diff --git a/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/util/YangSchemaUtils.java b/opendaylight/md-sal/sal-binding-broker/src/main/java/org/opendaylight/controller/sal/binding/impl/util/YangSchemaUtils.java
new file mode 100644 (file)
index 0000000..b7a21cb
--- /dev/null
@@ -0,0 +1,44 @@
+package org.opendaylight.controller.sal.binding.impl.util;
+
+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.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
+
+import com.google.common.base.Preconditions;
+
+public class YangSchemaUtils {
+
+    public static final String AUGMENT_IDENTIFIER = "augment-identifier";
+
+
+    public YangSchemaUtils() {
+        throw new UnsupportedOperationException("Helper class. Instantiation is prohibited");
+    }
+
+
+    public static QName getAugmentationQName(AugmentationSchema augmentation) {
+        Preconditions.checkNotNull(augmentation, "Augmentation must not be null.");
+        QName identifier = getAugmentationIdentifier(augmentation);
+        if(identifier != null) {
+            return identifier;
+        }
+        for(DataSchemaNode child : augmentation.getChildNodes()) {
+            // FIXME: Return true name
+            return QName.create(child.getQName(), "foo_augment");
+        }
+        // FIXME: Allways return a qname with module namespace.
+        return null;
+    }
+
+    public static QName getAugmentationIdentifier(AugmentationSchema augmentation) {
+        for(UnknownSchemaNode extension : augmentation.getUnknownSchemaNodes()) {
+            if(AUGMENT_IDENTIFIER.equals(extension.getNodeType().getLocalName())) {
+                return extension.getQName();
+            }
+        }
+        return null;
+    }
+}