Use QName.withModule() 25/70825/1
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 12 Mar 2018 10:53:51 +0000 (11:53 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 12 Apr 2018 08:17:23 +0000 (10:17 +0200)
There are multiple places where we are creating a well-known QName
with a new namespace. Use QName.withModule() so we do not end up
checking localName over and over.

Change-Id: I932bf3762bfb6ae201e6b309f8a7d95887b99b00
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit c88bb5b55f973303e4a6b04aced3ad10fdd1b96d)
(cherry picked from commit e080cfc1837938054765ee7325ae2d1dd09b6319)

binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/BindingDOMRpcImplementationAdapter.java
binding/mdsal-binding-dom-adapter/src/main/java/org/opendaylight/mdsal/binding/dom/adapter/RpcServiceAdapter.java
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/impl/DataObjectCodecContext.java
binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/BindingGeneratorImpl.java
binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/BindingSchemaContextUtils.java
binding/yang-binding/src/main/java/org/opendaylight/yangtools/yang/binding/util/BindingReflections.java

index 5ebf65632fb4a0f56331c93d26ee837536471aa8..0196575a6bc99cd0d23c9969ecfe4a8ee2f837e6 100644 (file)
@@ -30,6 +30,7 @@ import org.opendaylight.yangtools.yang.binding.util.BindingReflections;
 import org.opendaylight.yangtools.yang.binding.util.RpcServiceInvoker;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.RpcResult;
+import org.opendaylight.yangtools.yang.common.YangConstants;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
@@ -63,7 +64,7 @@ public class BindingDOMRpcImplementationAdapter implements DOMRpcImplementation
 
         this.codec = Preconditions.checkNotNull(codec);
         this.delegate = Preconditions.checkNotNull(delegate);
-        inputQname = QName.create(BindingReflections.getQNameModule(type), "input").intern();
+        inputQname = YangConstants.operationInputQName(BindingReflections.getQNameModule(type)).intern();
     }
 
     @Nonnull
index eab94df1993fcdd69cf32a87aea8039616afac45..115f3f585d03c9f400e4d0fe48aad87ae8a7918b 100644 (file)
@@ -32,6 +32,7 @@ import org.opendaylight.yangtools.yang.binding.util.BindingReflections;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
+import org.opendaylight.yangtools.yang.common.YangConstants;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
@@ -42,7 +43,6 @@ import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 
 class RpcServiceAdapter implements InvocationHandler {
-
     private final ImmutableMap<Method, RpcInvocationStrategy> rpcNames;
     private final Class<? extends RpcService> type;
     private final BindingToNormalizedNodeCodec codec;
@@ -158,7 +158,8 @@ class RpcServiceAdapter implements InvocationHandler {
                 final NormalizedNode<?, ?> domData = input.getResult();
                 final DataObject bindingResult;
                 if (domData != null) {
-                    final SchemaPath rpcOutput = rpc.createChild(QName.create(rpc.getLastComponent(), "output"));
+                    final SchemaPath rpcOutput = rpc.createChild(YangConstants.operationOutputQName(
+                        rpc.getLastComponent().getModule()));
                     bindingResult = codec.fromNormalizedNodeRpcData(rpcOutput, (ContainerNode) domData);
                 } else {
                     bindingResult = null;
index d635e28983cff95a113ea8dd0cb4d0d5f1f9ccff..af6fa37020785247cec0dedc2251d81471d4314a 100644 (file)
@@ -234,7 +234,7 @@ abstract class DataObjectCodecContext<D extends DataObject,T extends DataNodeCon
             }
         } else {
             // We are looking for instantiation via uses in other module
-            final QName instantiedName = QName.create(namespace(), origDef.getQName().getLocalName());
+            final QName instantiedName = origDef.getQName().withModule(namespace());
             final DataSchemaNode potential = getSchema().getDataChildByName(instantiedName);
             // We check if it is really instantiated from same
             // definition as class was derived
index 5e716c95549ef48105e71234016fc72b4780776f..cde891625551330480d9c99db312bfba46bdcce4 100644 (file)
@@ -920,7 +920,7 @@ public class BindingGeneratorImpl implements BindingGenerator {
         SchemaNode result = targetGrouping;
         for (final QName node : targetPath.getPathFromRoot()) {
             if (result instanceof DataNodeContainer) {
-                final QName resultNode = QName.create(result.getQName().getModule(), node.getLocalName());
+                final QName resultNode = node.withModule(result.getQName().getModule());
                 result = ((DataNodeContainer) result).getDataChildByName(resultNode);
             } else if (result instanceof ChoiceSchemaNode) {
                 result = ((ChoiceSchemaNode) result).getCaseNodeByName(node.getLocalName());
index 68c2dd18d6c4a3dee5ca2d6be2568e6caf54d3e5..497d98a965e4aac59d36eced0164be404b34b80e 100644 (file)
@@ -73,7 +73,7 @@ public final class BindingSchemaContextUtils {
             if(ChildOf.class.isAssignableFrom(currentArg.getType()) && BindingReflections.isAugmentationChild(currentArg.getType())) {
                 currentQName = BindingReflections.findQName(currentArg.getType());
             } else {
-                currentQName = QName.create(currentQName, BindingReflections.findQName(currentArg.getType()).getLocalName());
+                currentQName = BindingReflections.findQName(currentArg.getType()).withModule(currentQName.getModule());
             }
             Optional<DataNodeContainer> potential = findDataNodeContainer(currentContainer.get(), currentQName);
             if (potential.isPresent()) {
index b38e753536f54258474579ac0e1b0beb802b9a90..c2d46feba9e2bb65b490fb87948f6c26a5cf21cc 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.yangtools.yang.binding.util;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkState;
+
 import com.google.common.base.Optional;
 import com.google.common.cache.CacheBuilder;
 import com.google.common.cache.CacheLoader;
@@ -45,6 +46,7 @@ import org.opendaylight.yangtools.yang.binding.YangModelBindingProvider;
 import org.opendaylight.yangtools.yang.binding.YangModuleInfo;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.YangConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -554,10 +556,10 @@ public class BindingReflections {
                 } else if (isRpcType(key)) {
                     final String className = key.getSimpleName();
                     if (className.endsWith(BindingMapping.RPC_OUTPUT_SUFFIX)) {
-                        return QName.create(module, "output").intern();
-                    } else {
-                        return QName.create(module, "input").intern();
+                        return YangConstants.operationOutputQName(module.getModule()).intern();
                     }
+
+                    return YangConstants.operationInputQName(module.getModule()).intern();
                 }
                 /*
                  * Fallback for Binding types which do not have QNAME field
@@ -567,7 +569,6 @@ public class BindingReflections {
                 throw new IllegalArgumentException("Supplied class " + key + "is not derived from YANG.");
             }
         }
-
     }
 
     /**