X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fnetconf-util%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Futil%2Fmessages%2FNetconfMessageUtil.java;h=354d74016d48f170321bfca9e9d5886a5a03b851;hb=refs%2Fchanges%2F13%2F23413%2F26;hp=61b23202c3a134c27d975279e2f29f7d7eefefa0;hpb=87eeb0d62755bf5d6bcfd07d40dd8e0ab86c155e;p=controller.git diff --git a/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/messages/NetconfMessageUtil.java b/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/messages/NetconfMessageUtil.java index 61b23202c3..354d74016d 100644 --- a/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/messages/NetconfMessageUtil.java +++ b/opendaylight/netconf/netconf-util/src/main/java/org/opendaylight/controller/netconf/util/messages/NetconfMessageUtil.java @@ -9,14 +9,16 @@ package org.opendaylight.controller.netconf.util.messages; import com.google.common.base.Function; +import com.google.common.base.Optional; import com.google.common.collect.Collections2; import java.util.Collection; import java.util.List; import javax.annotation.Nonnull; +import org.opendaylight.controller.config.util.xml.DocumentedException; +import org.opendaylight.controller.config.util.xml.XmlElement; import org.opendaylight.controller.netconf.api.NetconfDocumentedException; import org.opendaylight.controller.netconf.api.NetconfMessage; import org.opendaylight.controller.netconf.api.xml.XmlNetconfConstants; -import org.opendaylight.controller.netconf.util.xml.XmlElement; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Document; @@ -39,7 +41,11 @@ public final class NetconfMessageUtil { if(xmlElement.getChildElements().size() != 1) { return false; } - return xmlElement.getOnlyChildElement().getName().equals(XmlNetconfConstants.OK); + try { + return xmlElement.getOnlyChildElement().getName().equals(XmlNetconfConstants.OK); + } catch (DocumentedException e) { + throw new NetconfDocumentedException(e); + } } public static boolean isErrorMessage(NetconfMessage message) throws NetconfDocumentedException { @@ -54,14 +60,22 @@ public final class NetconfMessageUtil { if(xmlElement.getChildElements().size() != 1) { return false; } - return xmlElement.getOnlyChildElement().getName().equals(XmlNetconfConstants.RPC_ERROR); + try { + return xmlElement.getOnlyChildElement().getName().equals(DocumentedException.RPC_ERROR); + } catch (DocumentedException e) { + throw new NetconfDocumentedException(e); + } } public static Collection extractCapabilitiesFromHello(Document doc) throws NetconfDocumentedException { XmlElement responseElement = XmlElement.fromDomDocument(doc); - XmlElement capabilitiesElement = responseElement - .getOnlyChildElementWithSameNamespace(XmlNetconfConstants.CAPABILITIES); - List caps = capabilitiesElement.getChildElements(XmlNetconfConstants.CAPABILITY); + // Extract child element from with or without(fallback) the same namespace + Optional capabilitiesElement = responseElement + .getOnlyChildElementWithSameNamespaceOptionally(XmlNetconfConstants.CAPABILITIES) + .or(responseElement + .getOnlyChildElementOptionally(XmlNetconfConstants.CAPABILITIES)); + + List caps = capabilitiesElement.get().getChildElements(XmlNetconfConstants.CAPABILITY); return Collections2.transform(caps, new Function() { @Override @@ -69,7 +83,7 @@ public final class NetconfMessageUtil { // Trim possible leading/tailing whitespace try { return input.getTextContent().trim(); - } catch (NetconfDocumentedException e) { + } catch (DocumentedException e) { LOG.trace("Error fetching input text content",e); return null; }