Eliminate custom SimpleDateFormat instances 54/52254/1
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 24 Feb 2017 13:49:30 +0000 (14:49 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Fri, 24 Feb 2017 13:49:30 +0000 (14:49 +0100)
We have SimpleDateFormatUtil to capture a fast revision parser,
use that instead of rolling our own.

Change-Id: I9b907440b73d721d306d5a946fbee58b8be47bd1
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-model-util/src/main/java/org/opendaylight/yangtools/yang/model/repo/util/FilesystemSchemaSourceCache.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/AugmentTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/Bug1412Test.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/CaseStmtTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/GroupingTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/TestUtils.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/UsesAugmentTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserSimpleTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserTest.java
yang/yang-parser-impl/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserWithContextTest.java

index 9915334bae0a9d84752d61efc7a56a90f531fb62..e2d7d5d2b74fe85a95a4ed1704c79b66a0e9f05f 100644 (file)
@@ -7,8 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.model.repo.util;
 
-import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
-
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Optional;
 import com.google.common.base.Preconditions;
@@ -29,7 +27,6 @@ import java.nio.file.StandardCopyOption;
 import java.nio.file.attribute.BasicFileAttributes;
 import java.text.DateFormat;
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.Collections;
 import java.util.Date;
 import java.util.List;
@@ -37,7 +34,9 @@ import java.util.Map;
 import java.util.TreeMap;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
+import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
 import org.opendaylight.yangtools.yang.model.repo.api.MissingSchemaSourceException;
+import org.opendaylight.yangtools.yang.model.repo.api.RevisionSourceIdentifier;
 import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceException;
 import org.opendaylight.yangtools.yang.model.repo.api.SchemaSourceRepresentation;
 import org.opendaylight.yangtools.yang.model.repo.api.SourceIdentifier;
@@ -186,7 +185,7 @@ public final class FilesystemSchemaSourceCache<T extends SchemaSourceRepresentat
                  * String is comparable, pattern check tested format
                  * so comparing as ASCII string should be sufficient
                  */
-                DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
+                DateFormat df = SimpleDateFormatUtil.getRevisionFormat();
                 try {
                     Date d = df.parse(revStr);
                     map.put(d, sorted);
index a4772e3caa1b746d0864f972a77ec57be3dbc1cc..495e6ee01a25281525110f19be5202ba0fe1fdc1 100644 (file)
@@ -16,7 +16,6 @@ import java.io.FileNotFoundException;
 import java.net.URI;
 import java.text.DateFormat;
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -27,6 +26,7 @@ import java.util.Set;
 import org.junit.BeforeClass;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
 import org.opendaylight.yangtools.yang.common.YangConstants;
 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
 import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
@@ -56,7 +56,7 @@ public class AugmentTest {
 
     @BeforeClass
     public static void init() throws FileNotFoundException, ParseException {
-        final DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        final DateFormat simpleDateFormat = SimpleDateFormatUtil.getRevisionFormat();
         fooRev = simpleDateFormat.parse("2013-10-13");
         barRev = simpleDateFormat.parse("2013-10-14");
         bazRev = simpleDateFormat.parse("2013-10-15");
@@ -361,7 +361,7 @@ public class AugmentTest {
         modules = TestUtils.loadModules(getClass().getResource("/augment-test/rpc").toURI());
         final URI NS_BAR = URI.create("urn:opendaylight:bar");
         final URI NS_FOO = URI.create("urn:opendaylight:foo");
-        final Date revision = new SimpleDateFormat("yyyy-MM-dd").parse("2013-10-11");
+        final Date revision = SimpleDateFormatUtil.getRevisionFormat().parse("2013-10-11");
 
         final Module bar = TestUtils.findModule(modules, "bar");
         final Set<RpcDefinition> rpcs = bar.getRpcs();
index 873d05dc1a3b21352f79f5f16637646b892a466b..dc34e0af79b19f62bc752f092c0bd371b3c85572 100644 (file)
@@ -11,13 +11,13 @@ import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
 import java.net.URI;
-import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.List;
 import java.util.Set;
 import org.junit.Test;
 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.Module;
 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
@@ -47,7 +47,7 @@ public class Bug1412Test {
         assertEquals(1, unknownNodes.size());
         final UnknownSchemaNode action = unknownNodes.get(0);
 
-        final Date revision = new SimpleDateFormat("yyyy-MM-dd").parse("2014-07-25");
+        final Date revision = SimpleDateFormatUtil.getRevisionFormat().parse("2014-07-25");
         final QNameModule qm = QNameModule.create(URI.create("urn:test:bug1412"), revision);
         QName expectedNodeType = QName.create("urn:test:bug1412:ext:definitions", "2014-07-25", "action");
         assertEquals(expectedNodeType, action.getNodeType());
index 25b61304454d9fd7c64b577136478ce0b577ba72..23ad0d971024b289335e067d7c666bde87bfa2f8 100644 (file)
@@ -21,6 +21,7 @@ import org.junit.Test;
 import org.junit.rules.ExpectedException;
 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.ChoiceCaseNode;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
@@ -43,7 +44,7 @@ public class CaseStmtTest {
     public void setup() throws Exception {
         schema = StmtTestUtils.parseYangSources("/case-test");
         String date_s = "2015-09-09 00:00:00.0";
-        SimpleDateFormat dt = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
+        SimpleDateFormat dt = SimpleDateFormatUtil.getRevisionFormat();
         Date date = dt.parse(date_s);
         rootFoo = schema.findModuleByName("foo", date);
         rootBar = schema.findModuleByName("bar", date);
index 21afacdcfcd90e2ec8d365c4404d340105f10400..66000237f7d658cb82b41e8fb6c14e1e3079828b 100644 (file)
@@ -15,7 +15,6 @@ import static org.junit.Assert.assertTrue;
 
 import java.net.URI;
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Date;
@@ -25,6 +24,7 @@ import java.util.Set;
 import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
 import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
 import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
@@ -436,7 +436,7 @@ public class GroupingTest {
         assertNotNull(gzz);
 
         final URI expectedNS = URI.create("urn:grouping:cascade-uses");
-        final Date expectedRev = new SimpleDateFormat("yyyy-MM-dd").parse("2013-07-18");
+        final Date expectedRev = SimpleDateFormatUtil.getRevisionFormat().parse("2013-07-18");
         final String expectedPref = "cu";
         SchemaPath expectedPath;
 
index 8506d1dc5594d55249d5205d60239b1873f4fa43..9e96f585007af6b9fb30d4bb175c13ca0be9cabb 100644 (file)
@@ -17,13 +17,13 @@ import java.net.URISyntaxException;
 import java.net.URL;
 import java.text.DateFormat;
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Date;
 import java.util.List;
 import java.util.Set;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
 import org.opendaylight.yangtools.yang.common.YangConstants;
 import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
 import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
@@ -170,7 +170,7 @@ public final class TestUtils {
 
     public static Date createDate(final String date) {
         Date result;
-        final DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        final DateFormat simpleDateFormat = SimpleDateFormatUtil.getRevisionFormat();
         try {
             result = simpleDateFormat.parse(date);
         } catch (ParseException e) {
index 21f472fa7f9de18321d8a427c8c7dc41278dadcf..4d2b1a2277972f5c8edf97744770cc9c218e1495 100644 (file)
@@ -16,7 +16,6 @@ import java.io.FileNotFoundException;
 import java.net.URI;
 import java.text.DateFormat;
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.ArrayDeque;
 import java.util.Collection;
 import java.util.Date;
@@ -25,6 +24,7 @@ import java.util.Set;
 import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
 import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
@@ -48,7 +48,7 @@ public class UsesAugmentTest {
 
     @Before
     public void init() throws FileNotFoundException, ParseException {
-        final DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        final DateFormat simpleDateFormat = SimpleDateFormatUtil.getRevisionFormat();
         UG_REV = simpleDateFormat.parse("2013-07-30");
         GD_REV = simpleDateFormat.parse("2013-09-04");
     }
index 12dbf849d35b281191a98ab74c138a5986c55594..b3f301591d0bc473e062557ac4959f5c04b94eb6 100644 (file)
@@ -14,9 +14,7 @@ import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
 import java.net.URI;
-import java.text.DateFormat;
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -24,6 +22,7 @@ import java.util.Set;
 import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
 import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
@@ -42,12 +41,11 @@ public class YangParserSimpleTest {
     private Date snRev;
     private final String snPref = "sn";
 
-    private final DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
     private Set<Module> modules;
 
     @Before
     public void init() throws Exception {
-        snRev = simpleDateFormat.parse("2013-07-30");
+        snRev = SimpleDateFormatUtil.getRevisionFormat().parse("2013-07-30");
         modules = TestUtils.loadModules(getClass().getResource("/simple-test").toURI());
     }
 
@@ -195,7 +193,7 @@ public class YangParserSimpleTest {
     private static final URI NS = URI.create("urn:opendaylight:simple-nodes");
 
     private static SchemaPath createPath(final String... names) throws ParseException {
-        final Date rev = new SimpleDateFormat("yyyy-MM-dd").parse("2013-07-30");
+        final Date rev = SimpleDateFormatUtil.getRevisionFormat().parse("2013-07-30");
 
         final List<QName> path = new ArrayList<>();
         for (final String name : names) {
index 2a9754d59b081c7e65f19d4e8f09acb587fc4f8e..4ef0370e4d2ace11dc6256e8cc13825b4e6738c8 100644 (file)
@@ -21,7 +21,6 @@ import java.net.URI;
 import java.net.URISyntaxException;
 import java.text.DateFormat;
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Date;
@@ -31,6 +30,7 @@ import java.util.Set;
 import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
 import org.opendaylight.yangtools.yang.common.YangConstants;
 import org.opendaylight.yangtools.yang.common.YangVersion;
 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
@@ -85,7 +85,7 @@ public class YangParserTest {
 
     @Before
     public void init() throws Exception {
-        final DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        final DateFormat simpleDateFormat = SimpleDateFormatUtil.getRevisionFormat();
         fooRev = simpleDateFormat.parse("2013-02-27");
         barRev = simpleDateFormat.parse("2013-07-03");
         bazRev = simpleDateFormat.parse("2013-02-27");
@@ -127,14 +127,16 @@ public class YangParserTest {
         final URI expectedNamespace = URI.create("urn:opendaylight.bar");
         final String expectedPrefix = "bar";
 
-        final ContainerSchemaNode interfaces = (ContainerSchemaNode) bar.getDataChildByName(QName.create(bar.getQNameModule(), "interfaces"));
+        final ContainerSchemaNode interfaces = (ContainerSchemaNode) bar.getDataChildByName(QName.create(
+            bar.getQNameModule(), "interfaces"));
 
-        final ListSchemaNode ifEntry = (ListSchemaNode) interfaces.getDataChildByName(QName.create(bar.getQNameModule(), "ifEntry"));
+        final ListSchemaNode ifEntry = (ListSchemaNode) interfaces.getDataChildByName(QName.create(bar.getQNameModule(),
+            "ifEntry"));
         // test SchemaNode args
         final QName expectedQName = QName.create(expectedNamespace, barRev, "ifEntry");
         assertEquals(expectedQName, ifEntry.getQName());
-        final SchemaPath expectedPath = TestUtils.createPath(true, expectedNamespace, barRev, expectedPrefix, "interfaces",
-                "ifEntry");
+        final SchemaPath expectedPath = TestUtils.createPath(true, expectedNamespace, barRev, expectedPrefix,
+            "interfaces", "ifEntry");
         assertEquals(expectedPath, ifEntry.getPath());
         assertNull(ifEntry.getDescription());
         assertNull(ifEntry.getReference());
index 6f659082636e93c67fcbff87147b27af2f4fbe0f..6fdd1ff4386f4cb732c4bb41d2a8638eb4986305 100644 (file)
@@ -16,7 +16,6 @@ import static org.opendaylight.yangtools.yang.stmt.StmtTestUtils.sourceForResour
 import java.net.URI;
 import java.text.DateFormat;
 import java.text.ParseException;
-import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Date;
 import java.util.List;
@@ -53,7 +52,6 @@ public class YangParserWithContextTest {
     private static final URI T1_NS = URI.create("urn:simple.demo.test1");
     private static final URI T2_NS = URI.create("urn:simple.demo.test2");
     private static final URI T3_NS = URI.create("urn:simple.demo.test3");
-    private final DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
     private static Date rev;
 
     private static final StatementStreamSource BAR = sourceForResource("/model/bar.yang");
@@ -72,7 +70,7 @@ public class YangParserWithContextTest {
 
     @BeforeClass
     public static void init() throws ParseException {
-        final DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
+        final DateFormat simpleDateFormat = SimpleDateFormatUtil.getRevisionFormat();
         rev = simpleDateFormat.parse("2013-06-18");
     }
 
@@ -100,13 +98,13 @@ public class YangParserWithContextTest {
         final UnsignedIntegerTypeDefinition leafType = (UnsignedIntegerTypeDefinition) leaf.getType();
         QName qname = leafType.getQName();
         assertEquals(URI.create("urn:simple.demo.test1"), qname.getNamespace());
-        assertEquals(simpleDateFormat.parse("2013-06-18"), qname.getRevision());
+        assertEquals(SimpleDateFormatUtil.getRevisionFormat().parse("2013-06-18"), qname.getRevision());
         assertEquals("port-number", qname.getLocalName());
 
         final UnsignedIntegerTypeDefinition leafBaseType = leafType.getBaseType();
         qname = leafBaseType.getQName();
         assertEquals(URI.create("urn:ietf:params:xml:ns:yang:ietf-inet-types"), qname.getNamespace());
-        assertEquals(simpleDateFormat.parse("2010-09-24"), qname.getRevision());
+        assertEquals(SimpleDateFormatUtil.getRevisionFormat().parse("2010-09-24"), qname.getRevision());
         assertEquals("port-number", qname.getLocalName());
 
         final UnsignedIntegerTypeDefinition dscpExt = (UnsignedIntegerTypeDefinition) TestUtils.findTypedef(
@@ -250,8 +248,8 @@ public class YangParserWithContextTest {
 
         // test grouping path
         final List<QName> path = new ArrayList<>();
-        final QName qname = QName.create(URI.create("urn:opendaylight.baz"), simpleDateFormat.parse("2013-02-27"),
-                "target");
+        final QName qname = QName.create(URI.create("urn:opendaylight.baz"),
+            SimpleDateFormatUtil.getRevisionFormat().parse("2013-02-27"), "target");
         path.add(qname);
         final SchemaPath expectedPath = SchemaPath.create(path, true);
         assertEquals(expectedPath, usesNode.getGroupingPath());
@@ -326,13 +324,13 @@ public class YangParserWithContextTest {
         final IdentitySchemaNode identity = identities.iterator().next();
         final QName idQName = identity.getQName();
         assertEquals(URI.create("urn:simple.demo.test3"), idQName.getNamespace());
-        assertEquals(simpleDateFormat.parse("2013-06-18"), idQName.getRevision());
+        assertEquals(SimpleDateFormatUtil.getRevisionFormat().parse("2013-06-18"), idQName.getRevision());
         assertEquals("pt", idQName.getLocalName());
 
         final IdentitySchemaNode baseIdentity = identity.getBaseIdentity();
         final QName idBaseQName = baseIdentity.getQName();
         assertEquals(URI.create("urn:custom.types.demo"), idBaseQName.getNamespace());
-        assertEquals(simpleDateFormat.parse("2012-04-16"), idBaseQName.getRevision());
+        assertEquals(SimpleDateFormatUtil.getRevisionFormat().parse("2012-04-16"), idBaseQName.getRevision());
         assertEquals("service-type", idBaseQName.getLocalName());
     }
 
@@ -361,7 +359,7 @@ public class YangParserWithContextTest {
         final UnknownSchemaNode un = unknownNodes.get(0);
         final QName unType = un.getNodeType();
         assertEquals(URI.create("urn:custom.types.demo"), unType.getNamespace());
-        assertEquals(simpleDateFormat.parse("2012-04-16"), unType.getRevision());
+        assertEquals(SimpleDateFormatUtil.getRevisionFormat().parse("2012-04-16"), unType.getRevision());
         assertEquals("mountpoint", unType.getLocalName());
         assertEquals("point", un.getNodeParameter());
         assertNotNull(un.getExtensionDefinition());
@@ -428,8 +426,7 @@ public class YangParserWithContextTest {
         assertEquals("system/user ref", dev.getReference());
 
         final URI expectedNS = URI.create("urn:opendaylight.bar");
-        final DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
-        final Date expectedRev = simpleDateFormat.parse("2013-07-03");
+        final Date expectedRev = SimpleDateFormatUtil.getRevisionFormat().parse("2013-07-03");
         final List<QName> path = new ArrayList<>();
         path.add(QName.create(expectedNS, expectedRev, "interfaces"));
         path.add(QName.create(expectedNS, expectedRev, "ifEntry"));