Clean up revision formatting 94/53194/1
authorRobert Varga <rovarga@cisco.com>
Sun, 12 Mar 2017 10:41:10 +0000 (11:41 +0100)
committerRobert Varga <rovarga@cisco.com>
Sun, 12 Mar 2017 10:41:47 +0000 (11:41 +0100)
Remove open-coded revision formats and use cached formatted
revisions where available.

Change-Id: I0f41f3f449cb0fd1abab11ef5e93adb636c19b8b
Signed-off-by: Robert Varga <rovarga@cisco.com>
21 files changed:
netconf/mdsal-netconf-connector/src/main/java/org/opendaylight/netconf/mdsal/connector/MdsalNetconfOperationServiceFactory.java
netconf/mdsal-netconf-yang-library/src/main/java/org/opendaylight/netconf/mdsal/yang/library/SchemaServiceToMdsalWriter.java
netconf/netconf-topology-singleton/src/main/java/org/opendaylight/netconf/topology/singleton/impl/MasterSalFacade.java
netconf/tools/netconf-cli/src/main/java/org/opendaylight/netconf/cli/io/IOUtil.java
netconf/tools/netconf-testtool/src/main/java/org/opendaylight/netconf/test/tool/NetconfDeviceSimulator.java
restconf/sal-rest-connector/src/main/java/org/opendaylight/netconf/sal/restconf/impl/RestconfImpl.java
restconf/sal-rest-connector/src/main/java/org/opendaylight/restconf/restful/utils/RestconfStreamsConstants.java
restconf/sal-rest-connector/src/main/java/org/opendaylight/restconf/utils/RestconfConstants.java
restconf/sal-rest-connector/src/main/java/org/opendaylight/restconf/utils/mapping/RestconfMappingNodeUtil.java
restconf/sal-rest-connector/src/main/java/org/opendaylight/restconf/utils/parser/ParserIdentifier.java
restconf/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestJsonBodyReader.java
restconf/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestJsonBodyReaderMountPoint.java
restconf/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestXmlBodyReader.java
restconf/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/rest/impl/test/providers/TestXmlBodyReaderMountPoint.java
restconf/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/restconf/impl/test/RestGetOperationTest.java
restconf/sal-rest-connector/src/test/java/org/opendaylight/controller/sal/streams/listeners/NotificationListenerTest.java
restconf/sal-rest-connector/src/test/java/org/opendaylight/restconf/jersey/providers/JsonBodyReaderTest.java
restconf/sal-rest-connector/src/test/java/org/opendaylight/restconf/jersey/providers/XmlBodyReaderTest.java
restconf/sal-rest-connector/src/test/java/org/opendaylight/restconf/utils/parser/ParserFieldsParameterTest.java
restconf/sal-rest-connector/src/test/java/org/opendaylight/restconf/utils/schema/context/RestconfSchemaUtilTest.java
restconf/sal-rest-docgen/src/main/java/org/opendaylight/netconf/sal/rest/doc/impl/BaseYangSwaggerGenerator.java

index ef3bbf03e7c6eb75a03d33ef254efa8440779a71..cea55b91be10dce62734d517634dc1899ebf2c7f 100644 (file)
@@ -112,7 +112,7 @@ public class MdsalNetconfOperationServiceFactory implements NetconfOperationServ
 
         final SourceIdentifier moduleSourceIdentifier = SourceIdentifier.create(module.getName(),
                 (SimpleDateFormatUtil.DEFAULT_DATE_REV == module.getRevision() ? Optional.absent() :
-                        Optional.of(SimpleDateFormatUtil.getRevisionFormat().format(module.getRevision()))));
+                        Optional.of(module.getQNameModule().getFormattedRevision())));
 
         InputStream sourceStream = null;
         String source;
index e7689f35db75eecbc1a812fc5091302bf47cc9a2..d8fd148aadc659475782b904d39a9ba616f073b4 100644 (file)
@@ -31,7 +31,6 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.librar
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.library.rev160409.module.list.module.submodules.SubmoduleBuilder;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.YangIdentifier;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaContextListener;
@@ -113,7 +112,7 @@ public class SchemaServiceToMdsalWriter implements SchemaContextListener, AutoCl
         // TODO Conformance type is always set to Implement value, but it should it really be like this?
         // TODO Add also deviations and features lists to module entries
         moduleBuilder.setName(new YangIdentifier(module.getName()))
-                .setRevision(new OptionalRevision(SimpleDateFormatUtil.getRevisionFormat().format(module.getRevision())))
+                .setRevision(new OptionalRevision(module.getQNameModule().getFormattedRevision()))
                 .setNamespace(new Uri(module.getNamespace().toString()))
                 .setConformanceType(ConformanceType.Implement)
                 .setSubmodules(createSubmodulesForModule(module));
@@ -126,10 +125,10 @@ public class SchemaServiceToMdsalWriter implements SchemaContextListener, AutoCl
         for (final Module subModule : module.getSubmodules()) {
             final SubmoduleBuilder subModuleEntryBuilder = new SubmoduleBuilder();
             subModuleEntryBuilder.setName(new YangIdentifier(subModule.getName()))
-                    .setRevision(new OptionalRevision(SimpleDateFormatUtil.getRevisionFormat().format(subModule.getRevision())));
+                    .setRevision(new OptionalRevision(subModule.getQNameModule().getFormattedRevision()));
             submodulesList.add(subModuleEntryBuilder.build());
         }
 
         return  new SubmodulesBuilder().setSubmodule(submodulesList).build();
     }
-}
\ No newline at end of file
+}
index d905fa1dc0be29363a6e2375f8709c4c676efc94..96a6cb1d291eb5422fc54f1635946da12e694bdb 100644 (file)
@@ -155,7 +155,7 @@ class MasterSalFacade implements AutoCloseable, RemoteDeviceHandler<NetconfSessi
                 remoteSchemaContext.getAllModuleIdentifiers().stream().map(mi ->
                         RevisionSourceIdentifier.create(mi.getName(),
                             (SimpleDateFormatUtil.DEFAULT_DATE_REV == mi.getRevision() ? Optional.<String>absent() :
-                                    Optional.of(SimpleDateFormatUtil.getRevisionFormat().format(mi.getRevision())))))
+                                    Optional.of(mi.getQNameModule().getFormattedRevision()))))
                         .collect(Collectors.toList());
 
         // send initial data to master actor and create actor for providing it
index 3c5310337fceafc2e57e95aa425f0be363cd4be1..0387889681473f3c0f1f88cfdad373410f9a21a2 100644 (file)
@@ -15,6 +15,7 @@ import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import org.opendaylight.netconf.cli.reader.ReadingException;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
@@ -35,9 +36,8 @@ public class IOUtil {
     }
 
     public static Date parseDate(final String revision) {
-        final SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
         try {
-            return formatter.parse(revision);
+            return SimpleDateFormatUtil.getRevisionFormat().parse(revision);
         } catch (final ParseException e) {
             throw new IllegalArgumentException("Date not valid", e);
         }
index 3ade59f8a5822b4aa209ec2cc8c0ea8d1f5192c3..2850b5a65fa23720dc2afc55e95449a28d22b395 100644 (file)
@@ -334,7 +334,7 @@ public class NetconfDeviceSimulator implements Closeable {
     private void addModuleCapability(final SharedSchemaRepository consumer, final Set<Capability> capabilities, final Module module) {
         final SourceIdentifier moduleSourceIdentifier = SourceIdentifier.create(module.getName(),
                 (SimpleDateFormatUtil.DEFAULT_DATE_REV == module.getRevision() ? Optional.<String>absent() :
-                        Optional.of(SimpleDateFormatUtil.getRevisionFormat().format(module.getRevision()))));
+                        Optional.of(module.getQNameModule().getFormattedRevision())));
         try {
             final String moduleContent = new String(consumer.getSchemaSource(moduleSourceIdentifier, YangTextSchemaSource.class)
                     .checkedGet().read());
index 2c025d8e5c5c0d396d4ddf47eef2183e4a24180a..7484a377fbfee48266dc392d80ed438adadea9b0 100644 (file)
@@ -68,6 +68,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.
 import org.opendaylight.yang.gen.v1.urn.sal.restconf.event.subscription.rev140708.NotificationOutputTypeGrouping.NotificationOutputType;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
@@ -118,8 +119,6 @@ public class RestconfImpl implements RestconfService {
 
     private static final int CHAR_NOT_FOUND = -1;
 
-    private static final SimpleDateFormat REVISION_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
-
     private static final String SAL_REMOTE_NAMESPACE = "urn:opendaylight:params:xml:ns:yang:controller:md:sal:remote";
 
     private BrokerFacade broker;
@@ -158,7 +157,7 @@ public class RestconfImpl implements RestconfService {
 
     static {
         try {
-            final Date eventSubscriptionAugRevision = new SimpleDateFormat("yyyy-MM-dd").parse("2014-07-08");
+            final Date eventSubscriptionAugRevision = SimpleDateFormatUtil.getRevisionFormat().parse("2014-07-08");
             NETCONF_BASE_QNAME =
                     QName.create(QNameModule.create(new URI(NETCONF_BASE), null), NETCONF_BASE_PAYLOAD_NAME);
             SAL_REMOTE_AUGMENT = QNameModule.create(NAMESPACE_EVENT_SUBSCRIPTION_AUGMENT, eventSubscriptionAugRevision);
@@ -418,7 +417,7 @@ public class RestconfImpl implements RestconfService {
         try {
             final String moduleName = pathArgs.get(0);
             final String revision = pathArgs.get(1);
-            final Date moduleRevision = REVISION_FORMAT.parse(revision);
+            final Date moduleRevision = SimpleDateFormatUtil.getRevisionFormat().parse(revision);
             return QName.create(null, moduleRevision, moduleName);
         } catch (final ParseException e) {
             LOG.debug("URI has bad format. It should be \'moduleName/yyyy-MM-dd\' " + identifier);
@@ -1427,7 +1426,7 @@ public class RestconfImpl implements RestconfService {
                 ControllerContext.findInstanceDataChildrenByName(listModuleSchemaNode, "revision");
         final DataSchemaNode revisionSchemaNode = Iterables.getFirst(instanceDataChildrenByName, null);
         Preconditions.checkState(revisionSchemaNode instanceof LeafSchemaNode);
-        final String revision = REVISION_FORMAT.format(module.getRevision());
+        final String revision = module.getQNameModule().getFormattedRevision();
         moduleNodeValues
                 .withChild(Builders.leafBuilder((LeafSchemaNode) revisionSchemaNode).withValue(revision).build());
 
index 252ec781ba7b96e31529724123456b159d62962d..82bc4a02927890be0b0fdec9b0bdbf5a6d19a23f 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.restconf.restful.utils;
 import com.google.common.collect.Sets;
 import java.net.URI;
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.Date;
 import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
@@ -21,6 +20,7 @@ import org.opendaylight.restconf.utils.RestconfConstants;
 import org.opendaylight.restconf.utils.parser.builder.ParserBuilderConstants;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -74,7 +74,7 @@ public final class RestconfStreamsConstants {
     static {
         Date eventSubscriptionAugRevision;
         try {
-            eventSubscriptionAugRevision = new SimpleDateFormat("yyyy-MM-dd").parse("2014-07-08");
+            eventSubscriptionAugRevision = SimpleDateFormatUtil.getRevisionFormat().parse("2014-07-08");
         } catch (final ParseException e) {
             final String errMsg = "It wasn't possible to convert revision date of sal-remote-augment to date";
             LOG.debug(errMsg);
index b6a2f9f0674598312d5c7c5ab0b3be974fcef7b4..1ccb30b4102d6a8e616b046b1255dcc2f963a085 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.restconf.utils;
 
 import com.google.common.base.Splitter;
-import java.text.SimpleDateFormat;
 
 /**
  * Util class for Restconf constants.
@@ -20,7 +19,6 @@ public final class RestconfConstants {
     public static final String JSON = "+json";
     public static final String MOUNT = "yang-ext:mount";
     public static final String IDENTIFIER = "identifier";
-    public static final SimpleDateFormat REVISION_FORMAT = new SimpleDateFormat("yyyy-MM-dd");
     public static final char SLASH = '/';
     public static final Splitter SLASH_SPLITTER = Splitter.on(SLASH);
     public static final String DRAFT_PATTERN = "restconf/17";
index a0cbaaab742b1972f6dc7859e26be2b8016454d7..07a83205e24625240a49d03e1925d72d77a7d748 100644 (file)
@@ -116,7 +116,7 @@ public final class RestconfMappingNodeUtil {
         addCommonLeafs(module, mapEntryBuilder, ietfYangLibraryModule);
         addChildOfModuleBySpecificModuleInternal(
                 IetfYangLibrary.SPECIFIC_MODULE_SCHEMA_LEAF_QNAME, mapEntryBuilder, IetfYangLibrary.BASE_URI_OF_SCHEMA
-                        + module.getName() + "/" + new SimpleDateFormat("yyyy-MM-dd").format(module.getRevision()),
+                        + module.getName() + "/" + module.getQNameModule().getFormattedRevision(),
                 ietfYangLibraryModule);
         if (!isSubmodule) {
             addChildOfModuleBySpecificModuleOfListChild(IetfYangLibrary.SPECIFIC_MODULE_NAMESPACE_LEAF_QNAME,
@@ -246,7 +246,7 @@ public final class RestconfMappingNodeUtil {
         addChildOfModuleBySpecificModuleInternal(IetfYangLibrary.SPECIFIC_MODULE_NAME_LEAF_QNAME, mapEntryBuilder,
                 module.getName(), ietfYangLibraryModule);
         addChildOfModuleBySpecificModuleInternal(IetfYangLibrary.SPECIFIC_MODULE_REVISION_LEAF_QNAME, mapEntryBuilder,
-                new SimpleDateFormat("yyyy-MM-dd").format(module.getRevision()), ietfYangLibraryModule);
+                module.getQNameModule().getFormattedRevision(), ietfYangLibraryModule);
     }
 
     /**
index 95358244bb28afce2d1ac2d531d2ca3c6c65c155..f0aab31b63db760b52d323751395527ecd194428 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.restconf.utils.parser;
 import com.google.common.base.Optional;
 import com.google.common.base.Splitter;
 import com.google.common.collect.Iterables;
-import com.google.common.collect.Lists;
 import java.text.ParseException;
 import java.util.Date;
 import java.util.Iterator;
@@ -26,6 +25,7 @@ import org.opendaylight.restconf.parser.IdentifierCodec;
 import org.opendaylight.restconf.utils.RestconfConstants;
 import org.opendaylight.restconf.utils.validation.RestconfValidation;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode;
 import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree;
@@ -107,7 +107,7 @@ public final class ParserIdentifier {
                     break;
                 }
             }
-            return new InstanceIdentifierContext<RpcDefinition>(mountYangInstanceIdentifier, def, mountPoint.get(),
+            return new InstanceIdentifierContext<>(mountYangInstanceIdentifier, def, mountPoint.get(),
                     mountPoint.get().getSchemaContext());
         } else {
             final YangInstanceIdentifier deserialize = IdentifierCodec.deserialize(identifier, schemaContext);
@@ -124,7 +124,7 @@ public final class ParserIdentifier {
                     break;
                 }
             }
-            return new InstanceIdentifierContext<RpcDefinition>(deserialize, def, null, schemaContext);
+            return new InstanceIdentifierContext<>(deserialize, def, null, schemaContext);
         }
     }
 
@@ -166,27 +166,24 @@ public final class ParserIdentifier {
             moduleNameAndRevision = identifier;
         }
 
-        final Splitter splitter = Splitter.on(RestconfConstants.SLASH);
-        final Iterable<String> split = splitter.split(moduleNameAndRevision);
-        final List<String> pathArgs = Lists.newArrayList(split);
+        final List<String> pathArgs = RestconfConstants.SLASH_SPLITTER.splitToList(moduleNameAndRevision);
         if (pathArgs.size() != 2) {
-            LOG.debug("URI has bad format. It should be \'moduleName/yyyy-MM-dd\' " + identifier);
+            LOG.debug("URI has bad format '{}'. It should be 'moduleName/yyyy-MM-dd'", identifier);
             throw new RestconfDocumentedException(
                     "URI has bad format. End of URI should be in format \'moduleName/yyyy-MM-dd\'", ErrorType.PROTOCOL,
                     ErrorTag.INVALID_VALUE);
         }
 
+        final Date moduleRevision;
         try {
-            final String moduleName = pathArgs.get(0);
-            final String revision = pathArgs.get(1);
-            final Date moduleRevision = RestconfConstants.REVISION_FORMAT.parse(revision);
-
-            return QName.create(null, moduleRevision, moduleName);
+            moduleRevision = SimpleDateFormatUtil.getRevisionFormat().parse(pathArgs.get(1));
         } catch (final ParseException e) {
-            LOG.debug("URI has bad format. It should be \'moduleName/yyyy-MM-dd\' " + identifier);
+            LOG.debug("URI has bad format: '{}'. It should be 'moduleName/yyyy-MM-dd'", identifier);
             throw new RestconfDocumentedException("URI has bad format. It should be \'moduleName/yyyy-MM-dd\'",
                     ErrorType.PROTOCOL, ErrorTag.INVALID_VALUE);
         }
+
+        return QName.create(null, moduleRevision, pathArgs.get(0));
     }
 
     /**
index 8c8138578029e2ff23efe05157226c099fe079ce..d455a90d4c1539d6adaff90f1fb5ec8a93dae25d 100644 (file)
@@ -19,7 +19,6 @@ import java.io.FileNotFoundException;
 import java.io.InputStream;
 import java.net.URI;
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.Collection;
 import javax.ws.rs.core.MediaType;
 import org.junit.BeforeClass;
@@ -29,6 +28,7 @@ import org.opendaylight.netconf.sal.rest.impl.JsonNormalizedNodeBodyReader;
 import org.opendaylight.netconf.sal.restconf.impl.NormalizedNodeContext;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
@@ -62,7 +62,7 @@ public class TestJsonBodyReader extends AbstractBodyReaderTest {
     private static QNameModule initializeInstanceIdentifierModule() {
         try {
             return QNameModule.create(URI.create("instance:identifier:module"),
-                    new SimpleDateFormat("yyyy-MM-dd").parse("2014-01-17"));
+                SimpleDateFormatUtil.getRevisionFormat().parse("2014-01-17"));
         } catch (final ParseException e) {
             throw new Error(e);
         }
index 879445ab3f618ef49067b60ebf0f3ba136cb6e0f..a1ebff031cc1e91fec60dd6806aa57c6c9ef6a47 100644 (file)
@@ -19,7 +19,6 @@ import java.io.File;
 import java.io.InputStream;
 import java.net.URI;
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.Collection;
 import javax.ws.rs.core.MediaType;
 import org.junit.BeforeClass;
@@ -32,6 +31,7 @@ import org.opendaylight.netconf.sal.restconf.impl.ControllerContext;
 import org.opendaylight.netconf.sal.restconf.impl.NormalizedNodeContext;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
@@ -61,7 +61,7 @@ public class TestJsonBodyReaderMountPoint extends AbstractBodyReaderTest {
     private static QNameModule initializeInstanceIdentifierModule() {
         try {
             return QNameModule.create(URI.create("instance:identifier:module"),
-                    new SimpleDateFormat("yyyy-MM-dd").parse("2014-01-17"));
+                SimpleDateFormatUtil.getRevisionFormat().parse("2014-01-17"));
         } catch (final ParseException e) {
             throw new Error(e);
         }
index 6e32f8d276d441ff21e263845756ff70128db6f8..0a3f14a384d61ef8c309d6b89300c4757a35568a 100644 (file)
@@ -18,7 +18,6 @@ import java.io.File;
 import java.io.InputStream;
 import java.net.URI;
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.Collection;
 import javax.ws.rs.core.MediaType;
 import org.junit.BeforeClass;
@@ -28,6 +27,7 @@ import org.opendaylight.netconf.sal.rest.impl.XmlNormalizedNodeBodyReader;
 import org.opendaylight.netconf.sal.restconf.impl.NormalizedNodeContext;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
@@ -58,7 +58,7 @@ public class TestXmlBodyReader extends AbstractBodyReaderTest {
     private static QNameModule initializeInstanceIdentifierModule() {
         try {
             return QNameModule.create(URI.create("instance:identifier:module"),
-                    new SimpleDateFormat("yyyy-MM-dd").parse("2014-01-17"));
+                SimpleDateFormatUtil.getRevisionFormat().parse("2014-01-17"));
         } catch (final ParseException e) {
             throw new Error(e);
         }
index 67ae1a23cb9bdc08eccc4953ddf4b96844352155..f95090b7389fa3cfeec6a984d7891d53b43ba3a4 100644 (file)
@@ -20,7 +20,6 @@ import java.io.File;
 import java.io.InputStream;
 import java.net.URI;
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.Collection;
 import javax.ws.rs.core.MediaType;
 import org.junit.BeforeClass;
@@ -33,6 +32,7 @@ import org.opendaylight.netconf.sal.restconf.impl.ControllerContext;
 import org.opendaylight.netconf.sal.restconf.impl.NormalizedNodeContext;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
@@ -61,7 +61,7 @@ public class TestXmlBodyReaderMountPoint extends AbstractBodyReaderTest {
     private static QNameModule initializeInstanceIdentifierModule() {
         try {
             return QNameModule.create(URI.create("instance:identifier:module"),
-                    new SimpleDateFormat("yyyy-MM-dd").parse("2014-01-17"));
+                SimpleDateFormatUtil.getRevisionFormat().parse("2014-01-17"));
         } catch (final ParseException e) {
             throw new Error(e);
         }
index ec1642e55ff9ef313528a558ddde5300da964103..43ef9783de09cca5a9b77411686cadd426f4b7c9 100644 (file)
@@ -27,7 +27,6 @@ import java.io.UnsupportedEncodingException;
 import java.net.URI;
 import java.net.URISyntaxException;
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.HashSet;
@@ -61,6 +60,7 @@ import org.opendaylight.netconf.sal.restconf.impl.ControllerContext;
 import org.opendaylight.netconf.sal.restconf.impl.RestconfDocumentedException;
 import org.opendaylight.netconf.sal.restconf.impl.RestconfImpl;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
@@ -201,7 +201,7 @@ public class RestGetOperationTest extends JerseyTest {
      * @throws ParseException
      */
     @Test
-    public void getDataWithSlashesBehindMountPoint() throws Exception {
+    public void getDataWithSlashesBehindMountPoint() throws ParseException {
         final YangInstanceIdentifier awaitedInstanceIdentifier = prepareInstanceIdentifierForList();
         when(brokerFacade.readConfigurationData(any(DOMMountPoint.class), eq(awaitedInstanceIdentifier),
                 Mockito.anyString())).thenReturn(prepareCnDataForSlashesBehindMountPointTest());
@@ -216,7 +216,7 @@ public class RestGetOperationTest extends JerseyTest {
         assertEquals(200, get(uri, MediaType.APPLICATION_XML));
     }
 
-    private static YangInstanceIdentifier prepareInstanceIdentifierForList() throws Exception {
+    private static YangInstanceIdentifier prepareInstanceIdentifierForList() throws ParseException {
         final List<PathArgument> parameters = new ArrayList<>();
 
         final QName qNameCont = newTestModuleQName("cont");
@@ -230,9 +230,9 @@ public class RestGetOperationTest extends JerseyTest {
         return YangInstanceIdentifier.create(parameters);
     }
 
-    private static QName newTestModuleQName(final String localPart) throws Exception {
-        final Date revision = new SimpleDateFormat("yyyy-MM-dd").parse("2014-01-09");
-        final URI uri = new URI("test:module");
+    private static QName newTestModuleQName(final String localPart) throws ParseException {
+        final Date revision = SimpleDateFormatUtil.getRevisionFormat().parse("2014-01-09");
+        final URI uri = URI.create("test:module");
         return QName.create(uri, revision, localPart);
     }
 
index 16d8778e9e2c2edbf051a30f0a76e83855f06baf..1e12b8145ed8f9bf482a89fedd049aa3f27a792a 100644 (file)
@@ -18,7 +18,7 @@ import com.google.common.collect.Lists;
 import java.lang.reflect.Field;
 import java.lang.reflect.Method;
 import java.net.URI;
-import java.text.SimpleDateFormat;
+import java.text.ParseException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashMap;
@@ -36,6 +36,7 @@ import org.opendaylight.yang.gen.v1.urn.sal.restconf.event.subscription.rev14070
 import org.opendaylight.yangtools.util.SingletonSet;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
@@ -50,6 +51,15 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 
 public class NotificationListenerTest {
+    private static final QNameModule MODULE;
+    static {
+        try {
+            MODULE = QNameModule.create(URI.create("notifi:mod"),
+                SimpleDateFormatUtil.getRevisionFormat().parse("2016-11-23"));
+        } catch (ParseException e) {
+            throw new ExceptionInInitializerError(e);
+        }
+    }
 
     private SchemaContext schmeaCtx;
 
@@ -62,13 +72,11 @@ public class NotificationListenerTest {
 
     @Test
     public void notifi_leafTest() throws Exception {
-        final QNameModule moduleQName =
-                QNameModule.create(new URI("notifi:mod"), new SimpleDateFormat("yyyy-MM-dd").parse("2016-11-23"));
-        final SchemaPath schemaPathNotifi = SchemaPath.create(false, QName.create(moduleQName, "notifi-leaf"));
+        final SchemaPath schemaPathNotifi = SchemaPath.create(false, QName.create(MODULE, "notifi-leaf"));
 
         final DOMNotification notificationData = mock(DOMNotification.class);
 
-        final LeafNode leaf = mockLeaf(QName.create(moduleQName, "lf"));
+        final LeafNode leaf = mockLeaf(QName.create(MODULE, "lf"));
         final ContainerNode notifiBody = mockCont(schemaPathNotifi.getLastComponent(), leaf);
 
         when(notificationData.getType()).thenReturn(schemaPathNotifi);
@@ -84,16 +92,12 @@ public class NotificationListenerTest {
 
     @Test
     public void notifi_cont_leafTest() throws Exception {
-        final QNameModule moduleQName =
-                QNameModule.create(new URI("notifi:mod"), new SimpleDateFormat("yyyy-MM-dd").parse("2016-11-23"));
-
-        final SchemaPath schemaPathNotifi =
-                SchemaPath.create(false, QName.create(moduleQName, "notifi-cont"));
+        final SchemaPath schemaPathNotifi = SchemaPath.create(false, QName.create(MODULE, "notifi-cont"));
 
         final DOMNotification notificationData = mock(DOMNotification.class);
 
-        final LeafNode leaf = mockLeaf(QName.create(moduleQName, "lf"));
-        final ContainerNode cont = mockCont(QName.create(moduleQName, "cont"), leaf);
+        final LeafNode leaf = mockLeaf(QName.create(MODULE, "lf"));
+        final ContainerNode cont = mockCont(QName.create(MODULE, "cont"), leaf);
         final ContainerNode notifiBody = mockCont(schemaPathNotifi.getLastComponent(), cont);
 
         when(notificationData.getType()).thenReturn(schemaPathNotifi);
@@ -110,17 +114,14 @@ public class NotificationListenerTest {
 
     @Test
     public void notifi_list_Test() throws Exception {
-        final QNameModule moduleQName =
-                QNameModule.create(new URI("notifi:mod"), new SimpleDateFormat("yyyy-MM-dd").parse("2016-11-23"));
-
-        final SchemaPath schemaPathNotifi = SchemaPath.create(false, QName.create(moduleQName, "notifi-list"));
+        final SchemaPath schemaPathNotifi = SchemaPath.create(false, QName.create(MODULE, "notifi-list"));
 
         final DOMNotification notificationData = mock(DOMNotification.class);
 
-        final LeafNode leaf = mockLeaf(QName.create(moduleQName, "lf"));
-        final MapEntryNode entry = mockMapEntry(QName.create(moduleQName, "lst"), leaf);
-        final MapNode list = mockList(QName.create(moduleQName, "lst"), entry);
-        final ContainerNode cont = mockCont(QName.create(moduleQName, "cont"), list);
+        final LeafNode leaf = mockLeaf(QName.create(MODULE, "lf"));
+        final MapEntryNode entry = mockMapEntry(QName.create(MODULE, "lst"), leaf);
+        final MapNode list = mockList(QName.create(MODULE, "lst"), entry);
+        final ContainerNode cont = mockCont(QName.create(MODULE, "cont"), list);
         final ContainerNode notifiBody = mockCont(schemaPathNotifi.getLastComponent(), cont);
 
         when(notificationData.getType()).thenReturn(schemaPathNotifi);
@@ -137,14 +138,11 @@ public class NotificationListenerTest {
 
     @Test
     public void notifi_grpTest() throws Exception {
-        final QNameModule moduleQName =
-                QNameModule.create(new URI("notifi:mod"), new SimpleDateFormat("yyyy-MM-dd").parse("2016-11-23"));
-
-        final SchemaPath schemaPathNotifi = SchemaPath.create(false, QName.create(moduleQName, "notifi-grp"));
+        final SchemaPath schemaPathNotifi = SchemaPath.create(false, QName.create(MODULE, "notifi-grp"));
 
         final DOMNotification notificationData = mock(DOMNotification.class);
 
-        final LeafNode leaf = mockLeaf(QName.create(moduleQName, "lf"));
+        final LeafNode leaf = mockLeaf(QName.create(MODULE, "lf"));
         final ContainerNode notifiBody = mockCont(schemaPathNotifi.getLastComponent(), leaf);
 
         when(notificationData.getType()).thenReturn(schemaPathNotifi);
@@ -159,14 +157,11 @@ public class NotificationListenerTest {
 
     @Test
     public void notifi_augmTest() throws Exception {
-        final QNameModule moduleQName =
-                QNameModule.create(new URI("notifi:mod"), new SimpleDateFormat("yyyy-MM-dd").parse("2016-11-23"));
-
-        final SchemaPath schemaPathNotifi = SchemaPath.create(false, QName.create(moduleQName, "notifi-augm"));
+        final SchemaPath schemaPathNotifi = SchemaPath.create(false, QName.create(MODULE, "notifi-augm"));
 
         final DOMNotification notificationData = mock(DOMNotification.class);
 
-        final LeafNode leaf = mockLeaf(QName.create(moduleQName, "lf-augm"));
+        final LeafNode leaf = mockLeaf(QName.create(MODULE, "lf-augm"));
         final AugmentationNode augm = mockAugm(leaf);
         final ContainerNode notifiBody = mockCont(schemaPathNotifi.getLastComponent(), augm);
 
index 43c4d1ac8eb8de466e808ec41af8ecea791584c7..4b3bb46e9777f72946c02fb210c6e2a6dae7c8f8 100644 (file)
@@ -19,7 +19,6 @@ import java.io.FileNotFoundException;
 import java.io.InputStream;
 import java.net.URI;
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.Collection;
 import javax.ws.rs.core.MediaType;
 import org.junit.BeforeClass;
@@ -30,6 +29,7 @@ import org.opendaylight.controller.sal.rest.impl.test.providers.TestXmlBodyReade
 import org.opendaylight.netconf.sal.restconf.impl.NormalizedNodeContext;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodes;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
@@ -50,7 +50,7 @@ public class JsonBodyReaderTest extends AbstractBodyReaderTest {
     private static QNameModule initializeInstanceIdentifierModule() {
         try {
             return QNameModule.create(URI.create("instance:identifier:module"),
-                    new SimpleDateFormat("yyyy-MM-dd").parse("2014-01-17"));
+                SimpleDateFormatUtil.getRevisionFormat().parse("2014-01-17"));
         } catch (final ParseException e) {
             throw new Error(e);
         }
index ffd3036361741d8959b94a0f04b2ae3972ec7cb6..1aef4b1714338a2705366163593695fad2cf63e5 100644 (file)
@@ -18,7 +18,6 @@ import java.io.File;
 import java.io.InputStream;
 import java.net.URI;
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.Collection;
 import javax.ws.rs.core.MediaType;
 import org.junit.BeforeClass;
@@ -28,6 +27,7 @@ import org.opendaylight.controller.md.sal.rest.common.TestRestconfUtils;
 import org.opendaylight.netconf.sal.restconf.impl.NormalizedNodeContext;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodes;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
@@ -45,7 +45,7 @@ public class XmlBodyReaderTest extends AbstractBodyReaderTest {
     private static QNameModule initializeInstanceIdentifierModule() {
         try {
             return QNameModule.create(URI.create("instance:identifier:module"),
-                    new SimpleDateFormat("yyyy-MM-dd").parse("2014-01-17"));
+                SimpleDateFormatUtil.getRevisionFormat().parse("2014-01-17"));
         } catch (final ParseException e) {
             throw new Error(e);
         }
index 7b6f1448515b68fe5ab435997fa7ab88cd8ed109..d6ee71d46c74dccd5f3c1f90804dc18d385ea06f 100644 (file)
@@ -14,7 +14,6 @@ import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
 
 import java.net.URI;
-import java.text.SimpleDateFormat;
 import java.util.List;
 import java.util.Set;
 import org.junit.Before;
@@ -29,6 +28,7 @@ import org.opendaylight.netconf.sal.restconf.impl.RestconfError.ErrorTag;
 import org.opendaylight.netconf.sal.restconf.impl.RestconfError.ErrorType;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
+import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
@@ -80,7 +80,7 @@ public class ParserFieldsParameterTest {
                 YangParserTestUtils.parseYangSources(TestRestconfUtils.loadFiles("/jukebox"));
 
         final QNameModule qNameModule = QNameModule.create(URI.create("http://example.com/ns/example-jukebox"),
-                new SimpleDateFormat("yyyy-MM-dd").parse("2015-04-04"));
+            SimpleDateFormatUtil.getRevisionFormat().parse("2015-04-04"));
 
         this.jukeboxQName = QName.create(qNameModule, "jukebox");
         this.playerQName = QName.create(qNameModule, "player");
@@ -88,7 +88,7 @@ public class ParserFieldsParameterTest {
         this.augmentedLibraryQName = QName.create(
                 QNameModule.create(
                         URI.create("http://example.com/ns/augmented-jukebox"),
-                        new SimpleDateFormat("yyyy-MM-dd").parse("2016-05-05")),
+                        SimpleDateFormatUtil.getRevisionFormat().parse("2016-05-05")),
                 "augmented-library");
         this.albumQName = QName.create(qNameModule, "album");
         this.nameQName = QName.create(qNameModule, "name");
index d19c0ab565a46af01919dc437b80c615076e0a5d..ec0c7130bf318f09b403b586017eebc8cf0e5750 100644 (file)
@@ -8,7 +8,6 @@
 
 package org.opendaylight.restconf.utils.schema.context;
 
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -17,6 +16,7 @@ import org.junit.Test;
 import org.mockito.Mockito;
 import org.opendaylight.netconf.sal.restconf.impl.RestconfDocumentedException;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
 import org.opendaylight.yangtools.yang.model.api.SchemaNode;
 
 /**
@@ -48,7 +48,7 @@ public class RestconfSchemaUtilTest {
     private static SchemaNode mockSchemaNode(final String origKey) {
         final SchemaNode mockSchNode = Mockito.mock(SchemaNode.class);
         Mockito.when(mockSchNode.getQName())
-                .thenReturn(QName.create("ns", new SimpleDateFormat("yyyy-MM-dd").format(new Date()), origKey));
+                .thenReturn(QName.create("ns", SimpleDateFormatUtil.getRevisionFormat().format(new Date()), origKey));
         return mockSchNode;
     }
 }
index 041548f6bd4a42a93fb34239f2870602ee42c487..c6c7f1d28d23f2750adb8a895915fb7120e5f02d 100644 (file)
@@ -91,7 +91,7 @@ public class BaseYangSwaggerGenerator {
         LOG.info("Modules found [{}]", modules.size());
 
         for (final Module module : modules) {
-            final String revisionString = SimpleDateFormatUtil.getRevisionFormat().format(module.getRevision());
+            final String revisionString = module.getQNameModule().getFormattedRevision();
             final Resource resource = new Resource();
             LOG.debug("Working on [{},{}]...", module.getName(), revisionString);
             final ApiDeclaration doc =