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 f709d036524b6183d06eb6134a6dec89675ce73d..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 final Map<URI, Map<Date, Module>> NAMESPACE_AND_REVISION_TO_MODULE = 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}.
@@ -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 = NAMESPACE_AND_REVISION_TO_MODULE.get(namespace);
-        if (revisionToModule == null) {
-            revisionToModule = new HashMap<>();
-            NAMESPACE_AND_REVISION_TO_MODULE.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();
         }
@@ -82,10 +77,7 @@ public class RestDocgenUtil {
 
     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());