Update MRI projects for Aluminium
[netconf.git] / netconf / mdsal-netconf-connector / src / main / java / org / opendaylight / netconf / mdsal / connector / ops / get / FilterContentValidator.java
index d104fddb96cdb86f18a76c3c80e901d768655a0b..0ec329012ebb72008a192edfe0ee8860ccee168a 100644 (file)
@@ -9,7 +9,6 @@ package org.opendaylight.netconf.mdsal.connector.ops.get;
 
 import static org.opendaylight.yangtools.yang.data.util.ParserStreamUtils.findSchemaNodeByNameAndNamespace;
 
-import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -20,11 +19,12 @@ import java.util.Deque;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Optional;
 import javax.xml.namespace.NamespaceContext;
 import javax.xml.stream.XMLStreamWriter;
-import org.opendaylight.controller.config.util.xml.DocumentedException;
-import org.opendaylight.controller.config.util.xml.MissingNameSpaceException;
-import org.opendaylight.controller.config.util.xml.XmlElement;
+import org.opendaylight.netconf.api.DocumentedException;
+import org.opendaylight.netconf.api.xml.MissingNameSpaceException;
+import org.opendaylight.netconf.api.xml.XmlElement;
 import org.opendaylight.netconf.mdsal.connector.CurrentSchemaContext;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
@@ -37,7 +37,9 @@ import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.w3c.dom.Document;
@@ -92,8 +94,7 @@ public class FilterContentValidator {
      */
     private DataSchemaNode getRootDataSchemaNode(final Module module, final URI nameSpace, final String name)
             throws DocumentedException {
-        final Collection<DataSchemaNode> childNodes = module.getChildNodes();
-        for (final DataSchemaNode childNode : childNodes) {
+        for (final DataSchemaNode childNode : module.getChildNodes()) {
             final QName qName = childNode.getQName();
             if (qName.getNamespace().equals(nameSpace) && qName.getLocalName().equals(name)) {
                 return childNode;
@@ -206,18 +207,18 @@ public class FilterContentValidator {
                 if (listKey instanceof IdentityrefTypeDefinition) {
                     keys.put(qualifiedName, keyValue.get());
                 } else {
-                    if (listKey.getType() instanceof IdentityrefTypeDefinition) {
+                    final TypeDefinition<? extends TypeDefinition<?>> keyType = listKey.getType();
+                    if (keyType instanceof IdentityrefTypeDefinition || keyType instanceof LeafrefTypeDefinition) {
                         final Document document = filterContent.getDomElement().getOwnerDocument();
                         final NamespaceContext nsContext = new UniversalNamespaceContextImpl(document, false);
                         final XmlCodecFactory xmlCodecFactory =
                                 XmlCodecFactory.create(schemaContext.getCurrentContext());
-                        final TypeAwareCodec<?, NamespaceContext, XMLStreamWriter> identityrefTypeCodec =
+                        final TypeAwareCodec<?, NamespaceContext, XMLStreamWriter> typeCodec =
                                 xmlCodecFactory.codecFor(listKey);
-                        final QName deserializedKey =
-                                (QName) identityrefTypeCodec.parseValue(nsContext, keyValue.get());
-                        keys.put(qualifiedName, deserializedKey);
+                        final Object deserializedKeyValue = typeCodec.parseValue(nsContext, keyValue.get());
+                        keys.put(qualifiedName, deserializedKeyValue);
                     } else {
-                        final Object deserializedKey = TypeDefinitionAwareCodec.from(listKey.getType())
+                        final Object deserializedKey = TypeDefinitionAwareCodec.from(keyType)
                                 .deserialize(keyValue.get());
                         keys.put(qualifiedName, deserializedKey);
                     }