X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-rest-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Frest%2Fimpl%2FXmlReader.java;h=1d6ca15f3c86986d97044b12de645343166226d6;hb=b5fcde5020da05b4447d2efd994f3538a7401094;hp=171805a1798a872ff7f42b821f3201dced670b9f;hpb=2c4a9be1a89caa93f4f2697401771dcb0fa67c5a;p=controller.git diff --git a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/XmlReader.java b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/XmlReader.java index 171805a179..1d6ca15f3c 100644 --- a/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/XmlReader.java +++ b/opendaylight/md-sal/sal-rest-connector/src/main/java/org/opendaylight/controller/sal/rest/impl/XmlReader.java @@ -14,14 +14,13 @@ import java.io.IOException; import java.io.InputStream; import java.net.URI; import java.util.Stack; - import javax.xml.stream.XMLEventReader; import javax.xml.stream.XMLInputFactory; +import javax.xml.stream.XMLStreamConstants; import javax.xml.stream.XMLStreamException; import javax.xml.stream.events.Characters; import javax.xml.stream.events.StartElement; import javax.xml.stream.events.XMLEvent; - import org.opendaylight.controller.sal.restconf.impl.CompositeNodeWrapper; import org.opendaylight.controller.sal.restconf.impl.EmptyNodeWrapper; import org.opendaylight.controller.sal.restconf.impl.IdentityValuesDTO; @@ -131,17 +130,9 @@ public class XmlReader { private boolean isSimpleNodeEvent(final XMLEvent event) throws XMLStreamException { checkArgument(event != null, "XML Event cannot be NULL!"); if (event.isStartElement()) { - if (eventReader.hasNext()) { - final XMLEvent innerEvent; - innerEvent = eventReader.peek(); - if (innerEvent.isCharacters()) { - final Characters chars = innerEvent.asCharacters(); - if (!chars.isWhiteSpace()) { - return true; - } - } else if (innerEvent.isEndElement()) { - return true; - } + XMLEvent innerEvent = skipCommentsAndWhitespace(); + if ( innerEvent != null && (innerEvent.isCharacters() || innerEvent.isEndElement())) { + return true; } } return false; @@ -150,16 +141,8 @@ public class XmlReader { private boolean isCompositeNodeEvent(final XMLEvent event) throws XMLStreamException { checkArgument(event != null, "XML Event cannot be NULL!"); if (event.isStartElement()) { - if (eventReader.hasNext()) { - XMLEvent innerEvent; - innerEvent = eventReader.peek(); - if (innerEvent.isCharacters()) { - Characters chars = innerEvent.asCharacters(); - if (chars.isWhiteSpace()) { - eventReader.nextEvent(); - innerEvent = eventReader.peek(); - } - } + XMLEvent innerEvent = skipCommentsAndWhitespace(); + if( innerEvent != null ) { if (innerEvent.isStartElement()) { return true; } @@ -168,6 +151,26 @@ public class XmlReader { return false; } + private XMLEvent skipCommentsAndWhitespace() throws XMLStreamException { + while( eventReader.hasNext() ) { + XMLEvent event = eventReader.peek(); + if( event.getEventType() == XMLStreamConstants.COMMENT ) { + eventReader.nextEvent(); + continue; + } + + if( event.isCharacters() ) { + Characters chars = event.asCharacters(); + if( chars.isWhiteSpace() ) { + eventReader.nextEvent(); + continue; + } + } + return event; + } + return null; + } + private CompositeNodeWrapper resolveCompositeNodeFromStartElement(final StartElement startElement) { checkArgument(startElement != null, "Start Element cannot be NULL!"); return new CompositeNodeWrapper(getNamespaceFor(startElement), getLocalNameFor(startElement));