Fix augmentation node lookup 37/64237/2
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 13 Oct 2017 09:00:03 +0000 (11:00 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Fri, 13 Oct 2017 09:03:51 +0000 (11:03 +0200)
This fixes an issue where we erroneously checked instanceof
against optional rather than its content -- which is obviously
wrong.

Change-Id: I1b60d35c5ca85444fd7f6595606e82f72f06f1d4
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/restconf/impl/RestconfImpl.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/rests/utils/CreateStreamUtil.java

index 818e76844e13d3dea86bb2ef92e88346335aa83a..090e861eef50587d3204f373a3e1b130fed985f8 100644 (file)
@@ -1347,13 +1347,17 @@ public class RestconfImpl implements RestconfService {
      */
     private static <T> T parseEnumTypeParameter(final ContainerNode value, final Class<T> classDescriptor,
             final String paramName) {
-        final Optional<DataContainerChild<? extends PathArgument, ?>> augNode =
-                value.getChild(SAL_REMOTE_AUG_IDENTIFIER);
-        if (!augNode.isPresent() && !(augNode instanceof AugmentationNode)) {
+        final Optional<DataContainerChild<? extends PathArgument, ?>> optAugNode = value.getChild(
+            SAL_REMOTE_AUG_IDENTIFIER);
+        if (!optAugNode.isPresent()) {
             return null;
         }
-        final Optional<DataContainerChild<? extends PathArgument, ?>> enumNode = ((AugmentationNode) augNode.get())
-                .getChild(new NodeIdentifier(QName.create(SAL_REMOTE_AUGMENT, paramName)));
+        final DataContainerChild<? extends PathArgument, ?> augNode = optAugNode.get();
+        if (!(augNode instanceof AugmentationNode)) {
+            return null;
+        }
+        final Optional<DataContainerChild<? extends PathArgument, ?>> enumNode = ((AugmentationNode) augNode).getChild(
+            new NodeIdentifier(QName.create(SAL_REMOTE_AUGMENT, paramName)));
         if (!enumNode.isPresent()) {
             return null;
         }
index 34590365027f8e4db925e665dce26fc89554817d..3986598cffaa8c76e064f66b1c4018eda320ffde 100644 (file)
@@ -149,14 +149,17 @@ public final class CreateStreamUtil {
     }
 
     private static <T> T parseEnum(final ContainerNode data, final Class<T> clazz, final String paramName) {
-        final Optional<DataContainerChild<? extends PathArgument, ?>> augNode = data
-                .getChild(RestconfStreamsConstants.SAL_REMOTE_AUG_IDENTIFIER);
-        if (!augNode.isPresent() && !(augNode instanceof AugmentationNode)) {
+        final Optional<DataContainerChild<? extends PathArgument, ?>> optAugNode = data.getChild(
+            RestconfStreamsConstants.SAL_REMOTE_AUG_IDENTIFIER);
+        if (!optAugNode.isPresent()) {
             return null;
         }
-        final Optional<DataContainerChild<? extends PathArgument, ?>> enumNode =
-                ((AugmentationNode) augNode.get()).getChild(
-                        new NodeIdentifier(QName.create(RestconfStreamsConstants.SAL_REMOTE_AUGMENT, paramName)));
+        final DataContainerChild<? extends PathArgument, ?> augNode = optAugNode.get();
+        if (!(augNode instanceof AugmentationNode)) {
+            return null;
+        }
+        final Optional<DataContainerChild<? extends PathArgument, ?>> enumNode = ((AugmentationNode) augNode).getChild(
+            new NodeIdentifier(QName.create(RestconfStreamsConstants.SAL_REMOTE_AUGMENT, paramName)));
         if (!enumNode.isPresent()) {
             return null;
         }