BUG-865: deprecate pre-Beryllium parser elements
[yangtools.git] / yang / yang-parser-impl / src / main / java / org / opendaylight / yangtools / yang / parser / util / ModuleDependencySort.java
index f7e270ea1d5badf84ef605c51a93da8422739e9d..c34a8f421824dc494aa3b08e330fcc134618960a 100644 (file)
@@ -1,5 +1,6 @@
 /*
- * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
+ * Copyright (c) 2013 Cisco Systems, Inc. and others.  All rights reserved.
+ *
  * This program and the accompanying materials are made available under the
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
@@ -7,21 +8,19 @@
 package org.opendaylight.yangtools.yang.parser.util;
 
 import static java.util.Arrays.asList;
-
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Function;
-import com.google.common.base.Optional;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
 import java.net.URI;
-import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Set;
 import org.opendaylight.yangtools.yang.common.SimpleDateFormatUtil;
 import org.opendaylight.yangtools.yang.model.api.Module;
@@ -41,11 +40,14 @@ import org.slf4j.LoggerFactory;
  */
 public final class ModuleDependencySort {
 
-    private static final Date DEFAULT_REVISION = new Date(0);
+    private static final Date DEFAULT_REVISION = SimpleDateFormatUtil.DEFAULT_DATE_REV;
     private static final Logger LOGGER = LoggerFactory.getLogger(ModuleDependencySort.class);
     private static final Function<Node, Module> TOPOLOGY_FUNCTION = new Function<TopologicalSort.Node, Module>() {
         @Override
         public Module apply(final TopologicalSort.Node input) {
+            if (input == null) {
+                return null;
+            }
             ModuleOrModuleBuilder moduleOrModuleBuilder = ((ModuleNodeImpl) input).getReference();
             return moduleOrModuleBuilder.getModule();
         }
@@ -65,6 +67,9 @@ public final class ModuleDependencySort {
         @Override
         public ModuleBuilder apply(final TopologicalSort.Node input) {
             // Cast to ModuleBuilder from Node and return
+            if (input == null) {
+                return null;
+            }
             ModuleOrModuleBuilder moduleOrModuleBuilder = ((ModuleNodeImpl) input).getReference();
             return moduleOrModuleBuilder.getModuleBuilder();
         }
@@ -73,13 +78,20 @@ public final class ModuleDependencySort {
     /**
      * Topological sort of module builder dependency graph.
      *
+     * @param builders builders of Module object
      * @return Sorted list of Module builders. Modules can be further processed
      *         in returned order.
+     * @deprecated Pre-Beryllium implementation, scheduled for removal.
      */
+    @Deprecated
     public static List<ModuleBuilder> sort(final ModuleBuilder... builders) {
         return sort(asList(builders));
     }
 
+    /**
+     * @deprecated Pre-Beryllium implementation, scheduled for removal.
+     */
+    @Deprecated
     public static List<ModuleBuilder> sort(final Collection<ModuleBuilder> builders) {
         List<TopologicalSort.Node> sorted = sortInternal(ModuleOrModuleBuilder.fromAll(
                 Collections.<Module>emptySet(),builders));
@@ -95,6 +107,9 @@ public final class ModuleDependencySort {
 
             @Override
             public ModuleBuilder apply(final TopologicalSort.Node input) {
+                if (input == null) {
+                    return null;
+                }
                 ModuleOrModuleBuilder moduleOrModuleBuilder = ((ModuleNodeImpl) input).getReference();
                 if (moduleOrModuleBuilder.isModuleBuilder()) {
                     return moduleOrModuleBuilder.getModuleBuilder();
@@ -108,6 +123,7 @@ public final class ModuleDependencySort {
     /**
      * Topological sort of module dependency graph.
      *
+     * @param modules YANG modules
      * @return Sorted list of Modules. Modules can be further processed in
      *         returned order.
      */
@@ -323,8 +339,8 @@ public final class ModuleDependencySort {
         public int hashCode() {
             final int prime = 31;
             int result = 1;
-            result = prime * result + ((name == null) ? 0 : name.hashCode());
-            result = prime * result + ((revision == null) ? 0 : revision.hashCode());
+            result = prime * result + Objects.hashCode(name);
+            result = prime * result + Objects.hashCode(revision);
             return result;
         }
 
@@ -369,40 +385,3 @@ public final class ModuleDependencySort {
     }
 
 }
-class ModuleOrModuleBuilder {
-    private final Optional<Module> maybeModule;
-    private final Optional<ModuleBuilder> maybeModuleBuilder;
-
-    ModuleOrModuleBuilder(final Module module) {
-        maybeModule = Optional.of(module);
-        maybeModuleBuilder = Optional.absent();
-    }
-
-    ModuleOrModuleBuilder(final ModuleBuilder moduleBuilder) {
-        maybeModule = Optional.absent();
-        maybeModuleBuilder = Optional.of(moduleBuilder);
-    }
-    boolean isModule(){
-        return maybeModule.isPresent();
-    }
-    boolean isModuleBuilder(){
-        return maybeModuleBuilder.isPresent();
-    }
-    Module getModule(){
-        return maybeModule.get();
-    }
-    ModuleBuilder getModuleBuilder(){
-        return maybeModuleBuilder.get();
-    }
-
-    static List<ModuleOrModuleBuilder> fromAll(final Collection<Module> modules, final Collection<ModuleBuilder> moduleBuilders) {
-        List<ModuleOrModuleBuilder> result = new ArrayList<>(modules.size() + moduleBuilders.size());
-        for(Module m: modules){
-            result.add(new ModuleOrModuleBuilder(m));
-        }
-        for (ModuleBuilder mb : moduleBuilders) {
-            result.add(new ModuleOrModuleBuilder(mb));
-        }
-        return result;
-    }
-}