Add Member.equalRoot() 60/96560/1
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 18 Jun 2021 12:51:44 +0000 (14:51 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Fri, 18 Jun 2021 12:51:44 +0000 (14:51 +0200)
When we are considering two distinct augmentations to, say, RPC input,
we need to consider more than just the local name, as otherwise we end
up shifting more than needed.

Change-Id: If717d54dfc3f6e5caa8d7e0955c752439ffac141
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/AbstractAugmentGenerator.java
binding/mdsal-binding-generator-impl/src/main/java/org/opendaylight/mdsal/binding/generator/impl/reactor/CollisionDomain.java

index 114dbfc72a9c5a1be8501fd2727f87cde9dfca61..d86d17d0fa3e3e9d1c698f9e6d00ed41dff48070 100644 (file)
@@ -109,20 +109,19 @@ abstract class AbstractAugmentGenerator extends AbstractCompositeGenerator<Augme
             return domain.addPrimary(this, new CamelCaseNamingStrategy(StatementNamespace.DEFAULT, explicitIdentifier));
         }
 
-        final AbstractCompositeGenerator<?> target = targetGenerator();
-        final String ref = target.localName().getLocalName();
+        final Member target = targetGenerator().getMember();
         int offset = 1;
         for (Generator gen : getParent()) {
             if (gen == this) {
                 break;
             }
             if (gen instanceof AbstractAugmentGenerator
-                && ref.equals(((AbstractAugmentGenerator) gen).targetGenerator().localName().getLocalName())) {
+                && target.equalRoot(((AbstractAugmentGenerator) gen).targetGenerator().getMember())) {
                 offset++;
             }
         }
 
-        return domain.addSecondary(this, target.getMember(), String.valueOf(offset), statement().argument());
+        return domain.addSecondary(this, target, String.valueOf(offset), statement().argument());
     }
 
     @Override
index 977d6b4f9619e2db4ea05eb1f96d1be5bff40016..9cd5aac5327374fc8c5c3e08986af13d4dc1e716 100644 (file)
@@ -58,6 +58,8 @@ final class CollisionDomain {
             return currentPackage;
         }
 
+        abstract boolean equalRoot(@NonNull Member other);
+
         abstract String computeCurrentClass();
 
         abstract String computeCurrentPackage();
@@ -102,7 +104,6 @@ final class CollisionDomain {
             return packageString(strategy.nodeIdentifier());
         }
 
-
         @Override
         final boolean signalConflict() {
             final ClassNamingStrategy newStrategy = strategy.fallback();
@@ -118,6 +119,12 @@ final class CollisionDomain {
         final ToStringHelper addToStringAttributes(final ToStringHelper helper) {
             return super.addToStringAttributes(helper.add("strategy", strategy));
         }
+
+        @Override
+        boolean equalRoot(final Member other) {
+            return other instanceof Primary && strategy.nodeIdentifier().getLocalName().equals(
+                ((Primary) other).strategy.nodeIdentifier().getLocalName());
+        }
     }
 
     private final class Prefix extends Primary {
@@ -150,6 +157,15 @@ final class CollisionDomain {
         final void primaryConflict() {
             super.signalConflict();
         }
+
+        @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;
+        }
     }
 
     private final class LeafSecondary extends Secondary {