RFC8040 'rc:yang-data' support for mdsal binding generator
[mdsal.git] / binding / mdsal-binding-generator / src / main / java / org / opendaylight / mdsal / binding / generator / impl / reactor / CollisionDomain.java
index ea6453e76ac546d4e4f1b46439474f5cb5c56f9e..0f8d9d2f7292954fb60a1902dd8d702fd219d62c 100644 (file)
@@ -14,7 +14,6 @@ import com.google.common.base.MoreObjects;
 import com.google.common.base.MoreObjects.ToStringHelper;
 import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.Multimap;
-import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Iterator;
@@ -27,7 +26,7 @@ import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
 
 final class CollisionDomain {
-    abstract class Member {
+    abstract sealed class Member {
         private final Generator gen;
 
         private List<Secondary> secondaries = List.of();
@@ -87,7 +86,7 @@ final class CollisionDomain {
         }
     }
 
-    private class Primary extends Member {
+    private sealed class Primary extends Member {
         private ClassNamingStrategy strategy;
 
         Primary(final Generator gen, final ClassNamingStrategy strategy) {
@@ -102,7 +101,7 @@ final class CollisionDomain {
 
         @Override
         final String computeCurrentPackage() {
-            return packageString(strategy.nodeIdentifier());
+            return strategy.childPackage();
         }
 
         @Override
@@ -123,8 +122,7 @@ final class CollisionDomain {
 
         @Override
         boolean equalRoot(final Member other) {
-            return other instanceof Primary && strategy.nodeIdentifier().getLocalName().equals(
-                ((Primary) other).strategy.nodeIdentifier().getLocalName());
+            return other instanceof Primary primary && strategy.rootName().equals(primary.strategy.rootName());
         }
     }
 
@@ -134,9 +132,9 @@ final class CollisionDomain {
         }
     }
 
-    private abstract class Secondary extends Member {
+    private abstract sealed class Secondary extends Member {
         private final String classSuffix;
-        final Member classPrimary;
+        final @NonNull Member classPrimary;
 
         Secondary(final Generator gen, final Member primary, final String classSuffix) {
             super(gen);
@@ -161,11 +159,8 @@ final class CollisionDomain {
 
         @Override
         final boolean equalRoot(final Member other) {
-            if (other instanceof Secondary) {
-                final Secondary sec = (Secondary) other;
-                return classPrimary.equalRoot(sec.classPrimary) && classSuffix.equals(sec.classSuffix);
-            }
-            return false;
+            return other instanceof Secondary sec
+                && classPrimary.equalRoot(sec.classPrimary) && classSuffix.equals(sec.classSuffix);
         }
     }
 
@@ -240,12 +235,12 @@ final class CollisionDomain {
         return addMember(new LeafSecondary(memberGen, primary, classSuffix));
     }
 
-    @NonNull Member addSecondary(final RpcInputGenerator memberGen, final Member primary) {
+    @NonNull Member addSecondary(final InputGenerator memberGen, final Member primary) {
         return addMember(new SuffixSecondary(memberGen, primary, BindingMapping.RPC_INPUT_SUFFIX,
             memberGen.statement().argument()));
     }
 
-    @NonNull Member addSecondary(final RpcOutputGenerator memberGen, final Member primary) {
+    @NonNull Member addSecondary(final OutputGenerator memberGen, final Member primary) {
         return addMember(new SuffixSecondary(memberGen, primary, BindingMapping.RPC_OUTPUT_SUFFIX,
             memberGen.statement().argument()));
     }
@@ -327,8 +322,6 @@ final class CollisionDomain {
         return MoreObjects.toStringHelper(this).add("gen", gen).toString();
     }
 
-    @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD",
-        justification = "https://github.com/spotbugs/spotbugs/issues/811")
     private @NonNull Member addMember(final @NonNull Member member) {
         if (members.isEmpty()) {
             members = new ArrayList<>();
@@ -337,10 +330,8 @@ final class CollisionDomain {
         return member;
     }
 
-    @SuppressFBWarnings(value = "UPM_UNCALLED_PRIVATE_METHOD",
-        justification = "https://github.com/spotbugs/spotbugs/issues/811")
-    private static @NonNull String packageString(final AbstractQName component) {
-        // Replace dashes with dots, as dashes are not allowed in package names
+    // Replace dashes with dots, as dashes are not allowed in package names
+    static @NonNull String packageString(final AbstractQName component) {
         return component.getLocalName().replace('-', '.');
     }
 }