BUG-865: remove String-based getDataChildByName()
[controller.git] / opendaylight / md-sal / sal-dom-broker / src / main / java / org / opendaylight / controller / sal / dom / broker / util / YangSchemaUtils.java
index 7f6918f2a1e7d7fbf89d8533f4b2719da9d6093c..ad759a797644dcb69d256191be894b141cad9266 100644 (file)
@@ -7,17 +7,22 @@
  */
 package org.opendaylight.controller.sal.dom.broker.util;
 
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Preconditions.checkState;
+
+import com.google.common.base.Function;
+import com.google.common.collect.FluentIterable;
 
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
 
 import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.PathArgument;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
 import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
-import org.opendaylight.yangtools.yang.model.api.ChoiceNode;
+import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
@@ -32,17 +37,12 @@ import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.UsesNode;
 
-import static com.google.common.base.Preconditions.*;
-
-import com.google.common.base.Function;
-import com.google.common.collect.FluentIterable;
-
-public class YangSchemaUtils {
+public final class YangSchemaUtils {
 
     private static final Function<PathArgument, QName> QNAME_FROM_PATH_ARGUMENT = new Function<PathArgument, QName>(){
-        
+
         @Override
-        public QName apply(PathArgument input) {
+        public QName apply(final PathArgument input) {
             if(input == null) {
                 return null;
             }
@@ -50,29 +50,28 @@ public class YangSchemaUtils {
         }
     };
 
-    private  YangSchemaUtils() {
+    private YangSchemaUtils() {
         throw new UnsupportedOperationException("Utility class.");
     }
-    
-    
-    public static DataSchemaNode getSchemaNode(SchemaContext schema,InstanceIdentifier path) {
+
+    public static DataSchemaNode getSchemaNode(final SchemaContext schema,final YangInstanceIdentifier path) {
         checkArgument(schema != null,"YANG Schema must not be null.");
         checkArgument(path != null,"Path must not be null.");
-        return getSchemaNode(schema, FluentIterable.from(path.getPath()).transform(QNAME_FROM_PATH_ARGUMENT));
+        return getSchemaNode(schema, FluentIterable.from(path.getPathArguments()).transform(QNAME_FROM_PATH_ARGUMENT));
     }
-    
-    public static DataSchemaNode getSchemaNode(SchemaContext schema,Iterable<QName> path) {
+
+    public static DataSchemaNode getSchemaNode(final SchemaContext schema,final Iterable<QName> path) {
         checkArgument(schema != null,"YANG Schema must not be null.");
         checkArgument(path != null,"Path must not be null.");
         if(!path.iterator().hasNext()){
             return toRootDataNode(schema);
         }
-        
+
         QName firstNode = path.iterator().next();
         DataNodeContainer previous = schema.findModuleByNamespaceAndRevision(firstNode.getNamespace(),
                 firstNode.getRevision());
         Iterator<QName> iterator = path.iterator();
-        
+
         while (iterator.hasNext()) {
             checkArgument(previous!= null, "Supplied path does not resolve into valid schema node.");
             QName arg = iterator.next();
@@ -92,11 +91,10 @@ public class YangSchemaUtils {
         return (DataSchemaNode) previous;
     }
 
-    private static DataSchemaNode searchInChoices(DataNodeContainer node, QName arg) {
-        Set<DataSchemaNode> children = node.getChildNodes();
-        for (DataSchemaNode child : children) {
-            if (child instanceof ChoiceNode) {
-                ChoiceNode choiceNode = (ChoiceNode) child;
+    private static DataSchemaNode searchInChoices(final DataNodeContainer node, final QName arg) {
+        for (DataSchemaNode child : node.getChildNodes()) {
+            if (child instanceof ChoiceSchemaNode) {
+                ChoiceSchemaNode choiceNode = (ChoiceSchemaNode) child;
                 DataSchemaNode potential = searchInCases(choiceNode, arg);
                 if (potential != null) {
                     return potential;
@@ -106,7 +104,7 @@ public class YangSchemaUtils {
         return null;
     }
 
-    private static DataSchemaNode searchInCases(ChoiceNode choiceNode, QName arg) {
+    private static DataSchemaNode searchInCases(final ChoiceSchemaNode choiceNode, final QName arg) {
         Set<ChoiceCaseNode> cases = choiceNode.getCases();
         for (ChoiceCaseNode caseNode : cases) {
             DataSchemaNode node = caseNode.getDataChildByName(arg);
@@ -117,124 +115,118 @@ public class YangSchemaUtils {
         return null;
     }
 
-    private static ContainerSchemaNode toRootDataNode(SchemaContext schema) {
+    private static ContainerSchemaNode toRootDataNode(final SchemaContext schema) {
         return new NetconfDataRootNode(schema);
     }
 
     private static final class NetconfDataRootNode implements ContainerSchemaNode {
-    
-        public NetconfDataRootNode(SchemaContext schema) {
+
+        public NetconfDataRootNode(final SchemaContext schema) {
             // TODO Auto-generated constructor stub
         }
-    
+
         @Override
         public Set<TypeDefinition<?>> getTypeDefinitions() {
             // TODO Auto-generated method stub
             return null;
         }
-    
+
         @Override
         public Set<DataSchemaNode> getChildNodes() {
             // TODO Auto-generated method stub
             return null;
         }
-    
+
         @Override
         public Set<GroupingDefinition> getGroupings() {
             // TODO Auto-generated method stub
             return null;
         }
-    
-        @Override
-        public DataSchemaNode getDataChildByName(QName name) {
-            // TODO Auto-generated method stub
-            return null;
-        }
-    
+
         @Override
-        public DataSchemaNode getDataChildByName(String name) {
+        public DataSchemaNode getDataChildByName(final QName name) {
             // TODO Auto-generated method stub
             return null;
         }
-    
+
         @Override
         public Set<UsesNode> getUses() {
             // TODO Auto-generated method stub
             return null;
         }
-    
+
         @Override
         public Set<AugmentationSchema> getAvailableAugmentations() {
             // TODO Auto-generated method stub
             return null;
         }
-    
+
         @Override
         public boolean isAugmenting() {
             // TODO Auto-generated method stub
             return false;
         }
-    
+
         @Override
         public boolean isAddedByUses() {
             // TODO Auto-generated method stub
             return false;
         }
-    
+
         @Override
         public boolean isConfiguration() {
             // TODO Auto-generated method stub
             return false;
         }
-    
+
         @Override
         public ConstraintDefinition getConstraints() {
             // TODO Auto-generated method stub
             return null;
         }
-    
+
         @Override
         public QName getQName() {
             // TODO Auto-generated method stub
             return null;
         }
-    
+
         @Override
         public SchemaPath getPath() {
             // TODO Auto-generated method stub
             return null;
         }
-    
+
         @Override
         public String getDescription() {
             // TODO Auto-generated method stub
             return null;
         }
-    
+
         @Override
         public String getReference() {
             // TODO Auto-generated method stub
             return null;
         }
-    
+
         @Override
         public Status getStatus() {
             // TODO Auto-generated method stub
             return null;
         }
-    
+
         @Override
         public List<UnknownSchemaNode> getUnknownSchemaNodes() {
             // TODO Auto-generated method stub
             return null;
         }
-    
+
         @Override
         public boolean isPresenceContainer() {
             // TODO Auto-generated method stub
             return false;
         }
-    
+
     }
 
 }