From 656cfbb9c53c707fbb035bb334c24f8f8882062c Mon Sep 17 00:00:00 2001 From: Maros Marsalek Date: Wed, 10 Dec 2014 17:14:49 +0100 Subject: [PATCH 1/1] Add better error reporting to ConfigSnapshot parser Change-Id: I69e37e3f53e44201a3703aaf15d0bb9d3111813b Signed-off-by: Maros Marsalek --- .../file/xml/model/ConfigSnapshot.java | 1 + .../file/xml/model/SnapshotHandler.java | 3 ++ .../storage/file/xml/model/ConfigTest.java | 12 +++++ .../src/test/resources/illegalSnapshot.xml | 46 +++++++++++++++++++ 4 files changed, 62 insertions(+) create mode 100644 opendaylight/config/config-persister-file-xml-adapter/src/test/java/org/opendaylight/controller/config/persist/storage/file/xml/model/ConfigTest.java create mode 100644 opendaylight/config/config-persister-file-xml-adapter/src/test/resources/illegalSnapshot.xml diff --git a/opendaylight/config/config-persister-file-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/file/xml/model/ConfigSnapshot.java b/opendaylight/config/config-persister-file-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/file/xml/model/ConfigSnapshot.java index 4f050640c5..589a644f3d 100644 --- a/opendaylight/config/config-persister-file-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/file/xml/model/ConfigSnapshot.java +++ b/opendaylight/config/config-persister-file-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/file/xml/model/ConfigSnapshot.java @@ -36,6 +36,7 @@ public class ConfigSnapshot { return new ConfigSnapshot(cfg.getConfigSnapshot(), cfg.getCapabilities()); } + @XmlAnyElement(SnapshotHandler.class) public String getConfigSnapshot() { return configSnapshot; diff --git a/opendaylight/config/config-persister-file-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/file/xml/model/SnapshotHandler.java b/opendaylight/config/config-persister-file-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/file/xml/model/SnapshotHandler.java index 8214b36970..dacc35b83e 100644 --- a/opendaylight/config/config-persister-file-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/file/xml/model/SnapshotHandler.java +++ b/opendaylight/config/config-persister-file-xml-adapter/src/main/java/org/opendaylight/controller/config/persist/storage/file/xml/model/SnapshotHandler.java @@ -7,6 +7,7 @@ */ package org.opendaylight.controller.config.persist.storage.file.xml.model; +import com.google.common.base.Preconditions; import java.io.StringReader; import java.io.StringWriter; import javax.xml.bind.ValidationEventHandler; @@ -31,6 +32,8 @@ class SnapshotHandler implements DomHandler { String xml = rt.getWriter().toString(); int beginIndex = xml.indexOf(START_TAG) + START_TAG.length(); int endIndex = xml.indexOf(END_TAG); + Preconditions.checkArgument(beginIndex != -1 && endIndex != -1, + "Unknown element present in config snapshot(expected only configuration): %s", xml); return xml.substring(beginIndex, endIndex); } diff --git a/opendaylight/config/config-persister-file-xml-adapter/src/test/java/org/opendaylight/controller/config/persist/storage/file/xml/model/ConfigTest.java b/opendaylight/config/config-persister-file-xml-adapter/src/test/java/org/opendaylight/controller/config/persist/storage/file/xml/model/ConfigTest.java new file mode 100644 index 0000000000..23b7abee39 --- /dev/null +++ b/opendaylight/config/config-persister-file-xml-adapter/src/test/java/org/opendaylight/controller/config/persist/storage/file/xml/model/ConfigTest.java @@ -0,0 +1,12 @@ +package org.opendaylight.controller.config.persist.storage.file.xml.model; + +import java.io.File; +import org.junit.Test; + +public class ConfigTest { + + @Test(expected = IllegalArgumentException.class) + public void testFromXml() throws Exception { + Config.fromXml(new File(getClass().getResource("/illegalSnapshot.xml").getFile())); + } +} \ No newline at end of file diff --git a/opendaylight/config/config-persister-file-xml-adapter/src/test/resources/illegalSnapshot.xml b/opendaylight/config/config-persister-file-xml-adapter/src/test/resources/illegalSnapshot.xml new file mode 100644 index 0000000000..f3fd13a36d --- /dev/null +++ b/opendaylight/config/config-persister-file-xml-adapter/src/test/resources/illegalSnapshot.xml @@ -0,0 +1,46 @@ + + + + + + + + + + prefix:clustering-service-provider + + clustering-service-provider + + + binding:binding-rpc-registry + binding-rpc-broker + + + + + + + + + + + prefix:clustering-service-change-registry + + openflow-role-change-registry + /modules/module[type='clustering-service-provider'][name='clustering-service-provider'] + + + + + + urn:opendaylight:params:xml:ns:yang:controller:config:clustering-service-provider?module=clustering-service-provider&revision=2014-11-19 + + + + \ No newline at end of file -- 2.36.6