Implement ModelStatement.toString() 26/98926/4
authorRobert Varga <robert.varga@pantheon.tech>
Wed, 8 Dec 2021 11:20:26 +0000 (12:20 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 8 Dec 2021 13:27:56 +0000 (14:27 +0100)
Make sure we codify hashCode()/equals()/toString() methods in
AbstractModelStatement -- fixing a major usability issue with our
objects and improving consistency.

JIRA: YANGTOOLS-1378
Change-Id: I60c233c978ac4315e9c7c79a2ff96751108671cb
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
38 files changed:
codec/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/StrictParsingModeTest.java
codec/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlToNormalizedNodesTest.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractChoiceEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractContainerEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractGroupingEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractIdentityEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractLeafListEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractListEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AugmentEffectiveStatementImpl.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/DeclaredCaseEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/DeclaredInputEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/DeclaredOutputEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/DeviationEffectiveStatementImpl.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyAnydataEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyAnyxmlEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyBitEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyFeatureEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ExtensionEffectiveStatementImpl.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/ImportEffectiveStatementImpl.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/NotificationEffectiveStatementImpl.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/UndeclaredCaseEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/UndeclaredInputEffectiveStatement.java
model/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/UndeclaredOutputEffectiveStatement.java
model/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/meta/AbstractEffectiveUnknownSchmemaNode.java
model/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/meta/AbstractModelStatement.java
model/yang-model-spi/src/main/java/org/opendaylight/yangtools/yang/model/spi/meta/EffectiveStatementMixins.java
model/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/LeafrefStaticAnalysisTest.java
model/yang-model-util/src/test/java/org/opendaylight/yangtools/yang/model/util/YT1127Test.java
parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/AliasEffectiveStatementImpl.java
parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/DefValEffectiveStatementImpl.java
parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/DisplayHintEffectiveStatementImpl.java
parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/ImpliedEffectiveStatementImpl.java
parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/MaxAccessEffectiveStatementImpl.java
parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/OidEffectiveStatementImpl.java
parser/rfc6643-parser-support/src/main/java/org/opendaylight/yangtools/rfc6643/parser/SubIdEffectiveStatementImpl.java
parser/rfc8040-parser-support/src/main/java/org/opendaylight/yangtools/rfc8040/parser/YangDataEffectiveStatementImpl.java
parser/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/AbstractEffectiveModule.java
parser/yang-parser-rfc7950/src/test/java/org/opendaylight/yangtools/yang/stmt/YangParserSimpleTest.java

index 557b5c451100a1e6bef1f8326b9f5ae7e28545ea..cce76ec9b75860a61e702447044b6b6c9ea7f7c7 100644 (file)
@@ -77,6 +77,6 @@ public class StrictParsingModeTest {
 
         final XMLStreamException ex = assertThrows(XMLStreamException.class, () -> xmlParser.parse(reader));
         assertThat(ex.getMessage(), containsString("Schema for node with name unknown-container-a and namespace foo "
-            + "does not exist in parent container top-level-container"));
+            + "does not exist in parent EmptyContainerEffectiveStatement{argument=(foo)top-level-container}"));
     }
 }
index 7d4c7753a8c259cbab459583c7eb498eec6c1aeb..83a12f0803c3d799bd28bef7ec84d95ba8ecf8f0 100644 (file)
@@ -150,8 +150,9 @@ public class XmlToNormalizedNodesTest {
 
         final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, parentContainerSchema);
         final XMLStreamException ex = assertThrows(XMLStreamException.class, () -> xmlParser.parse(reader));
-        assertThat(ex.getMessage(), containsString("Duplicate element \"decimal64-leaf\" in namespace"
-            + " \"foo-namespace\" with parent \"container leaf-container\" in XML input"));
+        assertThat(ex.getMessage(), containsString("Duplicate element \"decimal64-leaf\" in namespace "
+            + "\"foo-namespace\" with parent "
+            + "\"EmptyContainerEffectiveStatement{argument=(foo-namespace)leaf-container}\" in XML input"));
     }
 
     @Test
@@ -166,8 +167,9 @@ public class XmlToNormalizedNodesTest {
 
         final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, parentContainerSchema);
         final XMLStreamException ex = assertThrows(XMLStreamException.class, () -> xmlParser.parse(reader));
-        assertThat(ex.getMessage(), containsString("Duplicate element \"my-anyxml\" in namespace"
-            + " \"foo-namespace\" with parent \"container anyxml-container\" in XML input"));
+        assertThat(ex.getMessage(), containsString("Duplicate element \"my-anyxml\" in namespace \"foo-namespace\" "
+            + "with parent \"EmptyContainerEffectiveStatement{argument=(foo-namespace)anyxml-container}\" in XML "
+            + "input"));
     }
 
     @Test
@@ -183,7 +185,8 @@ public class XmlToNormalizedNodesTest {
         final XmlParserStream xmlParser = XmlParserStream.create(streamWriter, parentContainerSchema);
         final XMLStreamException ex = assertThrows(XMLStreamException.class, () -> xmlParser.parse(reader));
         assertThat(ex.getMessage(), containsString("Duplicate element \"leaf-container\" in namespace"
-            + " \"foo-namespace\" with parent \"container parent-container\" in XML input"));
+            + " \"foo-namespace\" with parent "
+            + "\"EmptyContainerEffectiveStatement{argument=(foo-namespace)parent-container}\" in XML input"));
     }
 
     @Test
@@ -245,7 +248,8 @@ public class XmlToNormalizedNodesTest {
         final XMLStreamException ex = assertThrows(XMLStreamException.class, () -> xmlParser.parse(reader));
 
         assertThat(ex.getMessage(), containsString("Schema for node with name my-container-1 and namespace "
-            + "baz-namespace does not exist in parent container my-container-1"));
+            + "baz-namespace does not exist in parent "
+            + "EmptyContainerEffectiveStatement{argument=(baz-namespace)my-container-1}"));
     }
 
     private static NormalizedNode buildOuterContainerNode() {
index fe49165004c400ec0b4c1e44c244c7f8c42bd3d0..c7065c07d538b815fd511b6587654b7dd23330a8 100644 (file)
@@ -62,9 +62,4 @@ public abstract class AbstractChoiceEffectiveStatement
     public final ChoiceEffectiveStatement asEffectiveStatement() {
         return this;
     }
-
-    @Override
-    public final String toString() {
-        return AbstractChoiceEffectiveStatement.class.getSimpleName() + "[" + "qname=" + argument() + "]";
-    }
 }
index 9417dab3954b0b76252904979b3322156f77c951..b15dbf60db3bd26cf6df827ff1d9c34cf6799c4a 100644 (file)
@@ -66,9 +66,4 @@ public abstract class AbstractContainerEffectiveStatement
     public final ContainerEffectiveStatement asEffectiveStatement() {
         return this;
     }
-
-    @Override
-    public final String toString() {
-        return "container " + argument().getLocalName();
-    }
 }
index 5f01e3f6a06fba289a1e8394f393587e87bd0f17..160cdd6092807793003b726a4e69a324dc1cc2f8 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff;
 
-import com.google.common.base.MoreObjects;
 import com.google.common.collect.ImmutableList;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
@@ -50,9 +49,4 @@ public abstract class AbstractGroupingEffectiveStatement
     public final GroupingEffectiveStatement asEffectiveStatement() {
         return this;
     }
-
-    @Override
-    public final String toString() {
-        return MoreObjects.toStringHelper(this).add("qname", argument()).toString();
-    }
 }
index ef0d9d5337334ee07de182cadb0c677554b69168..0aa26e36e6a402b5ce5f71ca72005a6cd027f193 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff;
 
-import com.google.common.base.MoreObjects;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
 import org.opendaylight.yangtools.yang.model.api.stmt.IdentityEffectiveStatement;
@@ -25,9 +24,4 @@ abstract class AbstractIdentityEffectiveStatement extends DefaultArgument<QName,
     public final IdentityEffectiveStatement asEffectiveStatement() {
         return this;
     }
-
-    @Override
-    public final String toString() {
-        return MoreObjects.toStringHelper(this).add("qname", getQName()).toString();
-    }
 }
index 68f8783f848af150be435330ad14cef6ed560a1c..b57e5b96fe49d77c8ca3ea5682a0f64a051c6ee4 100644 (file)
@@ -77,11 +77,6 @@ abstract class AbstractLeafListEffectiveStatement
         return this;
     }
 
-    @Override
-    public final String toString() {
-        return getClass().getSimpleName() + "[" + argument() + "]";
-    }
-
     @Override
     public final TypeDefinition<?> getType() {
         final var local = (TypeDefinition<?>) TYPE.getAcquire(this);
index 766f7e138d6ad27cb2ec4e544b277f938ffc6f24..05742d7dfe24547f5bb9d637ba5b2b91e9a7d11d 100644 (file)
@@ -88,9 +88,4 @@ abstract class AbstractListEffectiveStatement
     public final ListEffectiveStatement asEffectiveStatement() {
         return this;
     }
-
-    @Override
-    public final String toString() {
-        return "list " + getQName().getLocalName();
-    }
 }
index 70603e469f2da1bceaa40813f48241b96fc5ef16..c01af0dc6864dc481226bd95bdba603890f50b49 100644 (file)
@@ -73,10 +73,4 @@ public final class AugmentEffectiveStatementImpl
     public AugmentEffectiveStatement asEffectiveStatement() {
         return this;
     }
-
-    @Override
-    public String toString() {
-        return AugmentEffectiveStatementImpl.class.getSimpleName() + "[" + "targetPath=" + getTargetPath() + ", when="
-                + getWhenCondition() + "]";
-    }
 }
index 8f51bd1ef837cf12e1abaa0196f96ffac8d36fc5..e4eba4264417f07dea744eb1c5da1a2222a50f38 100644 (file)
@@ -58,9 +58,4 @@ public final class DeclaredCaseEffectiveStatement
     public CaseEffectiveStatement asEffectiveStatement() {
         return this;
     }
-
-    @Override
-    public String toString() {
-        return DeclaredCaseEffectiveStatement.class.getSimpleName() + "[" + "qname=" + argument + "]";
-    }
 }
index 5e487be77d3f0d2523d335d0ddfd46f2a183930f..ec6c51cab4aa83f6c9cc2b81adddec77ec13ef0f 100644 (file)
@@ -60,9 +60,4 @@ public final class DeclaredInputEffectiveStatement
     public InputEffectiveStatement asEffectiveStatement() {
         return this;
     }
-
-    @Override
-    public String toString() {
-        return defaultToString();
-    }
 }
index c10fb19e6079d673c9461efb9166892d2411bf76..488fd72d4d44a7fbec2fbfc6e8e28fd9baaf1d8a 100644 (file)
@@ -60,9 +60,4 @@ public final class DeclaredOutputEffectiveStatement
     public OutputEffectiveStatement asEffectiveStatement() {
         return this;
     }
-
-    @Override
-    public String toString() {
-        return defaultToString();
-    }
 }
index 45214af985543e1a5e55ddd767072916cab6eada..fcacdaf30733843578969d8d240c53240ec155bf 100644 (file)
@@ -34,14 +34,4 @@ public final class DeviationEffectiveStatementImpl extends WithSubstatements<Abs
     public DeviationEffectiveStatement asEffectiveStatement() {
         return this;
     }
-
-    @Override
-    public String toString() {
-        return DeviationEffectiveStatementImpl.class.getSimpleName() + "["
-                + "targetPath=" + getTargetPath()
-                + ", deviates=" + getDeviates()
-                + ", description=" + getDescription().orElse(null)
-                + ", reference=" + getReference().orElse(null)
-                + "]";
-    }
 }
index 483f550b1efce7b681be196a4b2e75fb7592201a..e0e7bf2d176b31a76733e0a537a363c077590b74 100644 (file)
@@ -9,7 +9,6 @@ package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff;
 
 import static java.util.Objects.requireNonNull;
 
-import com.google.common.base.MoreObjects;
 import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.common.QName;
@@ -60,9 +59,4 @@ public class EmptyAnydataEffectiveStatement extends Default<QName, AnydataStatem
     public final AnydataEffectiveStatement asEffectiveStatement() {
         return this;
     }
-
-    @Override
-    public final String toString() {
-        return MoreObjects.toStringHelper(this).add("qname", getQName()).toString();
-    }
 }
index 362c704339310ace8c36945ab9b4debb4c51a886..3ff2e65bd8ec2ed20b7be14f312aebfac4aad374 100644 (file)
@@ -9,7 +9,6 @@ package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff;
 
 import static java.util.Objects.requireNonNull;
 
-import com.google.common.base.MoreObjects;
 import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode;
@@ -50,9 +49,4 @@ public class EmptyAnyxmlEffectiveStatement extends Default<QName, AnyxmlStatemen
     public final AnyxmlEffectiveStatement asEffectiveStatement() {
         return this;
     }
-
-    @Override
-    public final String toString() {
-        return MoreObjects.toStringHelper(this).add("qname", argument).toString();
-    }
 }
index 4b604e95b5b92617194bf5cceee98ef2f794e1ea..9b0422abf16789495fe54878d8e31723d2d72de5 100644 (file)
@@ -25,10 +25,4 @@ public class EmptyBitEffectiveStatement extends DefaultArgument<String, BitState
     public final Status getStatus() {
         return findFirstEffectiveSubstatementArgument(StatusEffectiveStatement.class).orElse(Status.CURRENT);
     }
-
-    @Override
-    public final String toString() {
-        return "BitEffectiveStatementImpl[name=" + argument() + ", position=" + getDeclaredPosition().orElse(null)
-                + "]";
-    }
 }
index 185b9c53877b47f5fe6544d3cd09b28e9d8750b7..bb0ebeb6ae1fc73ad3a8d0601a328f65425127f8 100644 (file)
@@ -32,9 +32,4 @@ public class EmptyFeatureEffectiveStatement extends DefaultArgument<QName, Featu
     public final FeatureEffectiveStatement asEffectiveStatement() {
         return this;
     }
-
-    @Override
-    public final String toString() {
-        return getClass().getSimpleName() + "[name=" + getQName() + "]";
-    }
 }
index 52e412601732b2abd8ef7da70514a02478d5a639..01ddc5ab5ab4eeea9ae0a7de61f555a39c6c5acb 100644 (file)
@@ -66,14 +66,4 @@ public final class ExtensionEffectiveStatementImpl extends DefaultArgument<QName
     public ExtensionEffectiveStatement asEffectiveStatement() {
         return this;
     }
-
-    @Override
-    public String toString() {
-        return ExtensionEffectiveStatementImpl.class.getSimpleName() + "["
-            + "argument=" + getArgument()
-            + ", qname=" + getQName()
-            + ", yin=" + isYinElement()
-            + ", extensionSchemaNodes=" + getUnknownSchemaNodes()
-            + "]";
-    }
 }
index b898eaada10c0acbf63ffa40736c739d0eba5a11..c7147dddb06dff3b1b3b087c3abae89182db53c8 100644 (file)
@@ -7,7 +7,6 @@
  */
 package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff;
 
-import com.google.common.base.MoreObjects;
 import com.google.common.collect.ImmutableList;
 import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
@@ -32,8 +31,8 @@ public final class ImportEffectiveStatementImpl extends WithSubstatements<String
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
             final @NonNull SourceIdentifier importedSource) {
         super(declared, substatements);
-        this.revision = importedSource.getRevision().orElse(null);
-        this.semVer = importedSource instanceof SemVerSourceIdentifier
+        revision = importedSource.getRevision().orElse(null);
+        semVer = importedSource instanceof SemVerSourceIdentifier
             ? ((SemVerSourceIdentifier) importedSource).getSemanticVersion().orElse(null)
                 : null;
     }
@@ -57,16 +56,4 @@ public final class ImportEffectiveStatementImpl extends WithSubstatements<String
     public ImportEffectiveStatement asEffectiveStatement() {
         return this;
     }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this).omitNullValues()
-                .add("moduleName", getModuleName())
-                .add("revision", revision)
-                .add("version", semVer)
-                .add("prefix", getPrefix())
-                .add("description", getDescription().orElse(null))
-                .add("reference", getReference().orElse(null))
-                .toString();
-    }
 }
index d84471cf380bcf5bb6f66640f1b351179c8d0591..093ffbaae9aa23ea05127919320236842901ecf7 100644 (file)
@@ -68,9 +68,4 @@ public final class NotificationEffectiveStatementImpl
     public NotificationEffectiveStatement asEffectiveStatement() {
         return this;
     }
-
-    @Override
-    public String toString() {
-        return NotificationEffectiveStatementImpl.class.getSimpleName() + "[qname=" + argument + "]";
-    }
 }
index 7a5cbd5c254e5a73c36c7d356ad080f6342b6603..453c5bb3778a314c14f433da0be973621670aa66 100644 (file)
@@ -57,9 +57,4 @@ public final class UndeclaredCaseEffectiveStatement
     public CaseEffectiveStatement asEffectiveStatement() {
         return this;
     }
-
-    @Override
-    public String toString() {
-        return UndeclaredCaseEffectiveStatement.class.getSimpleName() + "[" + "qname=" + argument + "]";
-    }
 }
index 81bf1d87ff123e3317661205311d8ffd747b5a66..f35e233610156369c4dfa3e34f8fea8a2c34d914 100644 (file)
@@ -59,9 +59,4 @@ public final class UndeclaredInputEffectiveStatement
     public InputEffectiveStatement asEffectiveStatement() {
         return this;
     }
-
-    @Override
-    public String toString() {
-        return defaultToString();
-    }
 }
index 2f14a5af615bea39f1412ebdba770b047fb58f15..cbf44550b8084292d647ca3de238194f2faa12e5 100644 (file)
@@ -59,9 +59,4 @@ public final class UndeclaredOutputEffectiveStatement
     public OutputEffectiveStatement asEffectiveStatement() {
         return this;
     }
-
-    @Override
-    public String toString() {
-        return defaultToString();
-    }
 }
index 9e649c696d109d4dc69315658121702e204614ef..52a2ebf2a42339a644713b2a66125dca76bfc793 100644 (file)
@@ -85,12 +85,6 @@ public abstract class AbstractEffectiveUnknownSchmemaNode<A, D extends UnknownSt
         return augmenting;
     }
 
-    @Override
-    public String toString() {
-        final QName type = getNodeType();
-        return type.getNamespace() + ":" + type.getLocalName() + " " + getNodeParameter();
-    }
-
     @SuppressWarnings("unchecked")
     public final <T> Collection<T> allSubstatementsOfType(final Class<T> type) {
         return Collection.class.cast(Collections2.filter(effectiveSubstatements(), type::isInstance));
index dcd5c67fbe85294b8afd20d597416da33299a742..0ae7e01b244e81b1ea78364ab9e9ffe07c6a976c 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.yangtools.yang.model.spi.meta;
 
+import com.google.common.base.MoreObjects;
+import com.google.common.base.MoreObjects.ToStringHelper;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import org.eclipse.jdt.annotation.NonNull;
@@ -20,6 +22,26 @@ import org.opendaylight.yangtools.yang.model.api.meta.ModelStatement;
  * @param <A> Argument type ({@link Empty} if statement does not have argument.)
  */
 abstract class AbstractModelStatement<A> implements ModelStatement<A> {
+
+    @Override
+    public final int hashCode() {
+        return System.identityHashCode(this);
+    }
+
+    @Override
+    public final boolean equals(final Object obj) {
+        return this == obj;
+    }
+
+    @Override
+    public final String toString() {
+        return addToStringAttributes(MoreObjects.toStringHelper(this).omitNullValues()).toString();
+    }
+
+    protected ToStringHelper addToStringAttributes(final ToStringHelper helper) {
+        return helper.add("argument", argument());
+    }
+
     /**
      * Utility method for squashing singleton lists into single objects. This is a CPU/mem trade-off, which we are
      * usually willing to make: for the cost of an instanceof check we can save one object and re-create it when needed.
index 780529bde9aa1756c6db3a378831cd7b67f664d4..20c88f7bd3aac1dbda3d8d32fa5cca58ca501591 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.yangtools.yang.model.spi.meta;
 
 import com.google.common.annotations.Beta;
-import com.google.common.base.MoreObjects;
 import com.google.common.base.Strings;
 import com.google.common.collect.Collections2;
 import com.google.common.collect.ImmutableSet;
@@ -388,10 +387,6 @@ public final class EffectiveStatementMixins {
         default Optional<Boolean> effectiveConfig() {
             return Optional.empty();
         }
-
-        default String defaultToString() {
-            return MoreObjects.toStringHelper(this).add("qname", getQName()).toString();
-        }
     }
 
     /**
index d4a9fe7163915e98608245821ed79a047a9c8376..ee2bb4ea1efb4f620d790f786c7f125bbe72a07f 100644 (file)
@@ -169,7 +169,7 @@ public class LeafrefStaticAnalysisTest {
         assertThat(ex.getMessage(), startsWith("Illegal parent access in "));
         final Throwable cause = ex.getCause();
         assertThat(cause, instanceOf(IllegalStateException.class));
-        assertEquals("Unexpected current EmptyGroupingEffectiveStatement{qname=(leafrefs)grp}", cause.getMessage());
+        assertEquals("Unexpected current EmptyGroupingEffectiveStatement{argument=(leafrefs)grp}", cause.getMessage());
     }
 
     private static void assertThrowsMissingXyzzy(final SchemaInferenceStack stack, final LeafSchemaNode leaf,
index 17f74781463c71d1b2886bfdc75cd329d3d63a11..a3ec59a2b3f04210f89f58d1c25afbf0aa388581 100644 (file)
@@ -53,7 +53,7 @@ public class YT1127Test {
         assertThat(ex.getMessage(), startsWith("Illegal parent access in YangLocationPath"));
         final Throwable cause = ex.getCause();
         assertThat(cause, instanceOf(IllegalStateException.class));
-        assertEquals("Unexpected current EmptyGroupingEffectiveStatement{qname=(foo)grp}", cause.getMessage());
+        assertEquals("Unexpected current EmptyGroupingEffectiveStatement{argument=(foo)grp}", cause.getMessage());
     }
 
     @Test
index b7c00937626d4d7038db88e521fed282fa13135f..1045fc9d93c3233c066cf83251dfd7c6dd226da5 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.yangtools.rfc6643.parser;
 
 import com.google.common.collect.ImmutableList;
-import java.util.Objects;
 import org.opendaylight.yangtools.rfc6643.model.api.AliasEffectiveStatement;
 import org.opendaylight.yangtools.rfc6643.model.api.AliasSchemaNode;
 import org.opendaylight.yangtools.rfc6643.model.api.AliasStatement;
@@ -33,22 +32,4 @@ final class AliasEffectiveStatementImpl extends AbstractEffectiveUnknownSchmemaN
     public AliasEffectiveStatement asEffectiveStatement() {
         return this;
     }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(getNodeType(), getNodeParameter());
-    }
-
-    @Override
-    public boolean equals(final Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (!(obj instanceof AliasEffectiveStatementImpl)) {
-            return false;
-        }
-        final AliasEffectiveStatementImpl other = (AliasEffectiveStatementImpl) obj;
-        return Objects.equals(getNodeType(), other.getNodeType())
-            && Objects.equals(getNodeParameter(), other.getNodeParameter());
-    }
 }
index 99309737ffe23f633afdc127187ddacb6a6f1277..5802c0bd6556110008fab8c64fa6f48acd1a9632 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.yangtools.rfc6643.parser;
 
 import com.google.common.collect.ImmutableList;
-import java.util.Objects;
 import org.opendaylight.yangtools.rfc6643.model.api.DefValEffectiveStatement;
 import org.opendaylight.yangtools.rfc6643.model.api.DefValSchemaNode;
 import org.opendaylight.yangtools.rfc6643.model.api.DefValStatement;
@@ -33,22 +32,4 @@ final class DefValEffectiveStatementImpl extends AbstractEffectiveUnknownSchmema
     public DefValEffectiveStatement asEffectiveStatement() {
         return this;
     }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(getNodeType(), getNodeParameter());
-    }
-
-    @Override
-    public boolean equals(final Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (!(obj instanceof DefValEffectiveStatementImpl)) {
-            return false;
-        }
-        final DefValEffectiveStatementImpl other = (DefValEffectiveStatementImpl) obj;
-        return Objects.equals(getNodeType(), other.getNodeType())
-            && Objects.equals(getNodeParameter(), other.getNodeParameter());
-    }
 }
index 6174b45f0ccdf67fcd580bdbe3746f58ebc069ab..958ddbad4c54f76f5f038c1b7636d67dba056362 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.yangtools.rfc6643.parser;
 
 import com.google.common.collect.ImmutableList;
-import java.util.Objects;
 import org.opendaylight.yangtools.rfc6643.model.api.DisplayHintEffectiveStatement;
 import org.opendaylight.yangtools.rfc6643.model.api.DisplayHintSchemaNode;
 import org.opendaylight.yangtools.rfc6643.model.api.DisplayHintStatement;
@@ -33,22 +32,4 @@ final class DisplayHintEffectiveStatementImpl extends AbstractEffectiveUnknownSc
     public DisplayHintEffectiveStatement asEffectiveStatement() {
         return this;
     }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(getNodeType(), getNodeParameter());
-    }
-
-    @Override
-    public boolean equals(final Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (!(obj instanceof DisplayHintEffectiveStatementImpl)) {
-            return false;
-        }
-        final DisplayHintEffectiveStatementImpl other = (DisplayHintEffectiveStatementImpl) obj;
-        return Objects.equals(getNodeType(), other.getNodeType())
-            && Objects.equals(getNodeParameter(), other.getNodeParameter());
-    }
 }
index cc97703d64754e30c29ae0f3cdc108cb87b6a8cc..9df79ed7420e2a7e2800084bc34534745a48c700 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.yangtools.rfc6643.parser;
 
 import com.google.common.collect.ImmutableList;
-import java.util.Objects;
 import org.opendaylight.yangtools.rfc6643.model.api.ImpliedEffectiveStatement;
 import org.opendaylight.yangtools.rfc6643.model.api.ImpliedSchemaNode;
 import org.opendaylight.yangtools.rfc6643.model.api.ImpliedStatement;
@@ -33,22 +32,4 @@ final class ImpliedEffectiveStatementImpl extends AbstractEffectiveUnknownSchmem
     public ImpliedEffectiveStatement asEffectiveStatement() {
         return this;
     }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(getNodeType(), getNodeParameter());
-    }
-
-    @Override
-    public boolean equals(final Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (!(obj instanceof ImpliedEffectiveStatementImpl)) {
-            return false;
-        }
-        final ImpliedEffectiveStatementImpl other = (ImpliedEffectiveStatementImpl) obj;
-        return Objects.equals(getNodeType(), other.getNodeType())
-            && Objects.equals(getNodeParameter(), other.getNodeParameter());
-    }
 }
index 6317f4adee5674f7b830148778da16a0090b8678..88ca5f129a0cb84cd501aa4725776cea87c4564a 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.yangtools.rfc6643.parser;
 
 import com.google.common.collect.ImmutableList;
-import java.util.Objects;
 import org.opendaylight.yangtools.rfc6643.model.api.MaxAccess;
 import org.opendaylight.yangtools.rfc6643.model.api.MaxAccessEffectiveStatement;
 import org.opendaylight.yangtools.rfc6643.model.api.MaxAccessSchemaNode;
@@ -39,22 +38,4 @@ final class MaxAccessEffectiveStatementImpl extends AbstractEffectiveUnknownSchm
     public MaxAccessEffectiveStatement asEffectiveStatement() {
         return this;
     }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(getNodeType(), getNodeParameter());
-    }
-
-    @Override
-    public boolean equals(final Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (!(obj instanceof MaxAccessEffectiveStatementImpl)) {
-            return false;
-        }
-        final MaxAccessEffectiveStatementImpl other = (MaxAccessEffectiveStatementImpl) obj;
-        return Objects.equals(getNodeType(), other.getNodeType())
-            && Objects.equals(getNodeParameter(), other.getNodeParameter());
-    }
 }
index 22a60a230fb4cb74841252f2f7c2ff1102da671e..6ebd7c3ec01fb9a1797f7502e592f4c9bf989224 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.yangtools.rfc6643.parser;
 
 import com.google.common.collect.ImmutableList;
-import java.util.Objects;
 import org.opendaylight.yangtools.rfc6643.model.api.ObjectIdentifier;
 import org.opendaylight.yangtools.rfc6643.model.api.OidEffectiveStatement;
 import org.opendaylight.yangtools.rfc6643.model.api.OidSchemaNode;
@@ -34,22 +33,4 @@ final class OidEffectiveStatementImpl extends AbstractEffectiveUnknownSchmemaNod
     public OidEffectiveStatement asEffectiveStatement() {
         return this;
     }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(getNodeType(), getNodeParameter());
-    }
-
-    @Override
-    public boolean equals(final Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (!(obj instanceof OidEffectiveStatementImpl)) {
-            return false;
-        }
-        final OidEffectiveStatementImpl other = (OidEffectiveStatementImpl) obj;
-        return Objects.equals(getNodeType(), other.getNodeType())
-            && Objects.equals(getNodeParameter(), other.getNodeParameter());
-    }
 }
\ No newline at end of file
index 1b6308938c641fc41e3058aa23f901fcaf025fb5..c05bb84fd6d531dde28628998a1a0c2bf9b33135 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.yangtools.rfc6643.parser;
 
 import com.google.common.collect.ImmutableList;
-import java.util.Objects;
 import org.opendaylight.yangtools.rfc6643.model.api.SubIdEffectiveStatement;
 import org.opendaylight.yangtools.rfc6643.model.api.SubIdSchemaNode;
 import org.opendaylight.yangtools.rfc6643.model.api.SubIdStatement;
@@ -34,22 +33,4 @@ final class SubIdEffectiveStatementImpl extends AbstractEffectiveUnknownSchmemaN
     public SubIdEffectiveStatement asEffectiveStatement() {
         return this;
     }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(getNodeType(), getNodeParameter());
-    }
-
-    @Override
-    public boolean equals(final Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (!(obj instanceof SubIdEffectiveStatementImpl)) {
-            return false;
-        }
-        final SubIdEffectiveStatementImpl other = (SubIdEffectiveStatementImpl) obj;
-        return Objects.equals(getNodeType(), other.getNodeType())
-            && Objects.equals(getNodeParameter(), other.getNodeParameter());
-    }
 }
index 209cd97fdb09663b7d8c278d03280c7fe3107742..6382d3c42746c81f93b71bb5fd38eecc3bfec3d2 100644 (file)
@@ -11,7 +11,6 @@ import static com.google.common.base.Verify.verify;
 import static java.util.Objects.requireNonNull;
 
 import com.google.common.annotations.Beta;
-import com.google.common.base.MoreObjects;
 import com.google.common.collect.ImmutableList;
 import java.util.Map;
 import java.util.Optional;
@@ -79,11 +78,4 @@ final class YangDataEffectiveStatementImpl extends AbstractEffectiveUnknownSchme
         }
         return super.getNamespaceContents(namespace);
     }
-
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this).omitNullValues()
-                .add("qname", argumentQName)
-                .add("container", container).toString();
-    }
 }
index 18b7b429e71bd5c882ed8d6f7935730ef1575d5b..5335338f4dd50114e8e7cae93565c4139cd6db54 100644 (file)
@@ -11,7 +11,6 @@ import static com.google.common.base.Verify.verifyNotNull;
 import static java.util.Objects.requireNonNull;
 
 import com.google.common.annotations.Beta;
-import com.google.common.base.MoreObjects;
 import com.google.common.collect.Collections2;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap.Builder;
@@ -201,17 +200,6 @@ public abstract class AbstractEffectiveModule<D extends DeclaredStatement<Unqual
         return findFirstEffectiveSubstatementArgument(OpenConfigVersionEffectiveStatement.class);
     }
 
-    @Override
-    public String toString() {
-        return MoreObjects.toStringHelper(this).omitNullValues()
-                .add("name", getName())
-                .add("namespace", getNamespace())
-                .add("revision", getRevision().orElse(null))
-                .add("prefix", prefix)
-                .add("yangVersion", getYangVersion())
-                .toString();
-    }
-
     protected static final @NonNull String findPrefix(final CommonStmtCtx stmt,
             final Collection<? extends EffectiveStatement<?, ?>> substatements, final String type, final String name) {
         return substatements.stream()
index d431e541f6471a770ebad8c1d0e3ba412ebb9eaf..99ae9026816a30d6f9561319005697cfea544b7c 100644 (file)
@@ -49,8 +49,9 @@ public class YangParserSimpleTest extends AbstractYangTest {
         final AnyxmlSchemaNode data = (AnyxmlSchemaNode) MODULE.getDataChildByName(
             QName.create(MODULE.getQNameModule(), "data"));
         assertFalse(data.equals(null));
-        assertEquals("RegularAnyxmlEffectiveStatement{qname=(urn:opendaylight:simple-nodes?revision=2013-07-30)data}",
-                data.toString());
+        assertEquals(
+            "RegularAnyxmlEffectiveStatement{argument=(urn:opendaylight:simple-nodes?revision=2013-07-30)data}",
+            data.toString());
 
         // test SchemaNode args
         assertEquals(QName.create(SN, "data"), data.getQName());
@@ -94,8 +95,9 @@ public class YangParserSimpleTest extends AbstractYangTest {
                 QName.create(MODULE.getQNameModule(), "data2")).orElse(null);
 
         assertNotNull("'anydata data not found'", anydata);
-        assertEquals("RegularAnydataEffectiveStatement{qname=(urn:opendaylight:simple-nodes?revision=2013-07-30)data2}",
-                anydata.toString());
+        assertEquals(
+            "RegularAnydataEffectiveStatement{argument=(urn:opendaylight:simple-nodes?revision=2013-07-30)data2}",
+            anydata.toString());
 
         // test SchemaNode args
         assertEquals(QName.create(SN, "data2"), anydata.getQName());