package org.opendaylight.mdsal.binding.generator.impl.reactor;
import static com.google.common.base.Preconditions.checkState;
-import static com.google.common.base.Verify.verify;
import static java.util.Objects.requireNonNull;
import com.google.common.base.MoreObjects;
final class CollisionDomain {
abstract class Member {
+ private List<Secondary> secondaries = List.of();
private String currentPackage;
private String currentClass;
+ final void addSecondary(final Secondary secondary) {
+ if (secondaries.isEmpty()) {
+ secondaries = new ArrayList<>();
+ }
+ secondaries.add(requireNonNull(secondary));
+ }
+
final @NonNull String currentClass() {
if (currentClass == null) {
currentClass = computeCurrentClass();
solved = false;
currentClass = null;
currentPackage = null;
+
+ for (Secondary secondary : secondaries) {
+ secondary.primaryConflict();
+ }
+
return true;
}
private class Primary extends Member {
private ClassNamingStrategy strategy;
- private List<Secondary> secondaries = List.of();
Primary(final ClassNamingStrategy strategy) {
this.strategy = requireNonNull(strategy);
return packageString(strategy.nodeIdentifier());
}
- final void addSecondary(final Secondary secondary) {
- if (secondaries.isEmpty()) {
- secondaries = new ArrayList<>();
- }
- secondaries.add(requireNonNull(secondary));
- }
@Override
final boolean signalConflict() {
}
strategy = newStrategy;
- super.signalConflict();
- for (Secondary secondary : secondaries) {
- secondary.primaryConflict();
- }
- return true;
+ return super.signalConflict();
}
@Override
private abstract class Secondary extends Member {
private final String classSuffix;
- final Primary classPrimary;
+ final Member classPrimary;
- Secondary(final Primary primary, final String classSuffix) {
+ Secondary(final Member primary, final String classSuffix) {
this.classPrimary = requireNonNull(primary);
this.classSuffix = requireNonNull(classSuffix);
primary.addSecondary(this);
}
private final class LeafSecondary extends Secondary {
- LeafSecondary(final Primary classPrimary, final String classSuffix) {
+ LeafSecondary(final Member classPrimary, final String classSuffix) {
super(classPrimary, classSuffix);
}
private final class SuffixSecondary extends Secondary {
private final AbstractQName packageSuffix;
- SuffixSecondary(final Primary primaryClass, final String classSuffix, final AbstractQName packageSuffix) {
+ SuffixSecondary(final Member primaryClass, final String classSuffix, final AbstractQName packageSuffix) {
super(primaryClass, classSuffix);
this.packageSuffix = requireNonNull(packageSuffix);
}
private final class AugmentSecondary extends Secondary {
private final SchemaNodeIdentifier packageSuffix;
- AugmentSecondary(final Primary primary, final String classSuffix, final SchemaNodeIdentifier packageSuffix) {
+ AugmentSecondary(final Member primary, final String classSuffix, final SchemaNodeIdentifier packageSuffix) {
super(primary, classSuffix);
this.packageSuffix = requireNonNull(packageSuffix);
}
}
@NonNull Member addSecondary(final Member primary, final String classSuffix) {
- return addMember(new LeafSecondary(castPrimary(primary), classSuffix));
+ return addMember(new LeafSecondary(primary, classSuffix));
}
@NonNull Member addSecondary(final Member primary, final String classSuffix, final AbstractQName packageSuffix) {
- return addMember(new SuffixSecondary(castPrimary(primary), classSuffix, packageSuffix));
+ return addMember(new SuffixSecondary(primary, classSuffix, packageSuffix));
}
@NonNull Member addSecondary(final Member classPrimary, final String classSuffix,
final SchemaNodeIdentifier packageSuffix) {
- return addMember(new AugmentSecondary(castPrimary(classPrimary), classSuffix, packageSuffix));
- }
-
- private static @NonNull Primary castPrimary(final Member primary) {
- verify(primary instanceof Primary, "Unexpected primary %s", primary);
- return (Primary) primary;
+ return addMember(new AugmentSecondary(classPrimary, classSuffix, packageSuffix));
}
/*