Bug 9092: revert to org.json temporarily 49/62849/1
authorStephen Kitt <skitt@redhat.com>
Thu, 7 Sep 2017 09:05:48 +0000 (11:05 +0200)
committerStephen Kitt <skitt@redhat.com>
Thu, 7 Sep 2017 14:53:08 +0000 (14:53 +0000)
This patch reverts to org.json to convert the XML notification to JSON
in ListenerAdapter. The appropriate fix (coming later) is to serialize
the notification to JSON directly, without going through XML, but in
the mean time this unblocks the release.

Change-Id: I184ea21c49c255fa26fa1eaa57bc3f4548764118
Signed-off-by: Stephen Kitt <skitt@redhat.com>
restconf/sal-rest-connector/pom.xml
restconf/sal-rest-connector/src/main/java/org/opendaylight/netconf/sal/streams/listeners/ListenerAdapter.java

index 2c85dd0c3fcb12fdee7815938065eed52e28836c..e6e2b2405bfbf9bf84ea45583d1586cab561ea38 100644 (file)
       <groupId>com.fasterxml.jackson.dataformat</groupId>
       <artifactId>jackson-dataformat-xml</artifactId>
     </dependency>
+    <dependency>
+      <groupId>org.json</groupId>
+      <artifactId>json</artifactId>
+    </dependency>
     <dependency>
       <groupId>ch.qos.logback</groupId>
       <artifactId>logback-classic</artifactId>
index 832aaf24814bb8d16e27a77c9638ddd825116a1b..44f6a06924f7a98088eb7450e30b146868da2b65 100644 (file)
@@ -7,16 +7,14 @@
  */
 package org.opendaylight.netconf.sal.streams.listeners;
 
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.dataformat.xml.XmlMapper;
 import com.google.common.base.Preconditions;
-import com.google.common.base.Throwables;
 import java.io.IOException;
 import java.util.Map;
 import java.util.Map.Entry;
 import java.util.Set;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.transform.dom.DOMResult;
+import org.json.XML;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;
 import org.opendaylight.controller.md.sal.dom.api.DOMDataChangeListener;
 import org.opendaylight.netconf.sal.restconf.impl.ControllerContext;
@@ -118,13 +116,7 @@ public class ListenerAdapter extends AbstractCommonSubscriber implements DOMData
     private void prepareAndPostData(final String xml) {
         final Event event = new Event(EventType.NOTIFY);
         if (this.outputType.equals(NotificationOutputType.JSON)) {
-            try {
-                JsonNode node = new XmlMapper().readTree(xml.getBytes());
-                event.setData(node.toString());
-            } catch (IOException e) {
-                LOG.error("Error parsing XML {}", xml, e);
-                Throwables.propagate(e);
-            }
+            event.setData(XML.toJSONObject(xml).toString());
         } else {
             event.setData(xml);
         }