Simplify code using Java 8 features
[netconf.git] / restconf / sal-rest-docgen / src / main / java / org / opendaylight / netconf / sal / rest / doc / util / RestDocgenUtil.java
index 55d92c73f6b3b1a6c8fbf92f6127b8c8c20a0241..ee96a376db8f750a6e930d3c57bd843aba4328ee 100644 (file)
@@ -8,21 +8,22 @@
 package org.opendaylight.netconf.sal.rest.doc.util;
 
 import java.net.URI;
-import java.util.Date;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.Map;
+import java.util.Optional;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.Revision;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaNode;
 
-public class RestDocgenUtil {
+public final class RestDocgenUtil {
 
     private RestDocgenUtil() {
     }
 
-    private static Map<URI, Map<Date, Module>> namespaceAndRevisionToModule = new HashMap<>();
+    private static final Map<URI, Map<Optional<Revision>, Module>> NAMESPACE_AND_REVISION_TO_MODULE = new HashMap<>();
 
     /**
      * Resolve path argument name for {@code node}.
@@ -34,9 +35,9 @@ public class RestDocgenUtil {
      * @return name of {@code node}
      */
     public static String resolvePathArgumentsName(final SchemaNode node, final SchemaContext schemaContext) {
-        Iterable<QName> schemaPath = node.getPath().getPathTowardsRoot();
-        Iterator<QName> it = schemaPath.iterator();
-        QName nodeQName = it.next();
+        final Iterable<QName> schemaPath = node.getPath().getPathTowardsRoot();
+        final Iterator<QName> it = schemaPath.iterator();
+        final QName nodeQName = it.next();
 
         QName parentQName = null;
         if (it.hasNext()) {
@@ -52,18 +53,12 @@ public class RestDocgenUtil {
     private static synchronized String resolveFullNameFromNode(final SchemaNode node,
             final SchemaContext schemaContext) {
         final URI namespace = node.getQName().getNamespace();
-        final Date revision = node.getQName().getRevision();
+        final Optional<Revision> revision = node.getQName().getRevision();
 
-        Map<Date, Module> revisionToModule = namespaceAndRevisionToModule.get(namespace);
-        if (revisionToModule == null) {
-            revisionToModule = new HashMap<>();
-            namespaceAndRevisionToModule.put(namespace, revisionToModule);
-        }
-        Module module = revisionToModule.get(revision);
-        if (module == null) {
-            module = schemaContext.findModuleByNamespaceAndRevision(namespace, revision);
-            revisionToModule.put(revision, module);
-        }
+        Map<Optional<Revision>, Module> revisionToModule =
+            NAMESPACE_AND_REVISION_TO_MODULE.computeIfAbsent(namespace, k -> new HashMap<>());
+        Module module =
+            revisionToModule.computeIfAbsent(revision, k -> schemaContext.findModule(namespace, k).orElse(null));
         if (module != null) {
             return module.getName() + ":" + node.getQName().getLocalName();
         }
@@ -80,14 +75,12 @@ public class RestDocgenUtil {
         }
     }
 
-    private static boolean isEqualNamespaceAndRevision(QName parentQName, QName nodeQName) {
+    private static boolean isEqualNamespaceAndRevision(final QName parentQName, final QName nodeQName) {
         if (parentQName == null) {
-            if (nodeQName == null) {
-                return true;
-            }
-            return false;
+            return nodeQName == null;
         }
         return parentQName.getNamespace().equals(nodeQName.getNamespace())
                 && parentQName.getRevision().equals(nodeQName.getRevision());
     }
+
 }