Update SchemaPathSupport output objects 51/95051/5
authorRobert Varga <robert.varga@pantheon.tech>
Sat, 6 Feb 2021 18:34:14 +0000 (19:34 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Sat, 6 Feb 2021 19:49:09 +0000 (20:49 +0100)
We can guarantee the returned object will be Immutable, express that
in our APIs.

JIRA: YANGTOOLS-1071
Change-Id: Ib32a11346afe912ffd70267f1a5b2d927cffc8ce
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
43 files changed:
yang/openconfig-parser-support/src/main/java/org/opendaylight/yangtools/openconfig/parser/AbstractHashedValueStatementSupport.java
yang/rfc6241-parser-support/src/main/java/org/opendaylight/yangtools/rfc6241/parser/GetFilterElementAttributesStatementSupport.java
yang/rfc6536-parser-support/src/main/java/org/opendaylight/yangtools/rfc6536/parser/DefaultDenyAllStatementSupport.java
yang/rfc6536-parser-support/src/main/java/org/opendaylight/yangtools/rfc6536/parser/DefaultDenyWriteStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/EffectiveStatementMixins.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/action/ActionEffectiveStatementImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anydata/AnydataStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anydata/EmptyAnydataEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anydata/RegularAnydataEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anyxml/AnyxmlStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anyxml/EmptyAnyxmlEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anyxml/RegularAnyxmlEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/case_/DeclaredCaseEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/case_/UndeclaredCaseEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/choice/ChoiceEffectiveStatementImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/container/ContainerEffectiveStatementImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/feature/EmptyFeatureEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/feature/RegularFeatureEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/grouping/GroupingEffectiveStatementImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/identity/AbstractIdentityEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/identity/EmptyIdentityEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/identity/RegularIdentityEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/input/DeclaredInputEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/input/UndeclaredInputEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf/AbstractLeafEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf/EmptyLeafEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf/RegularLeafEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/AbstractLeafListEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/AbstractNonEmptyLeafListEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/EmptyLeafListEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/RegularLeafListEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/SlimLeafListEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/AbstractListEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/EmptyListEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/ListStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/RegularListEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/notification/NotificationEffectiveStatementImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/output/DeclaredOutputEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/output/UndeclaredOutputEffectiveStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/rpc/RpcEffectiveStatementImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/typedef/TypedefEffectiveStatementImpl.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/EffectiveStmtCtx.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/SchemaPathSupport.java

index 2da6ade58fbfea9f075c130f98f5141ddaedb9d9..d01df43bf10ff4a273ff6bd5d9a02c78c098c197 100644 (file)
@@ -11,6 +11,7 @@ import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.openconfig.model.api.OpenConfigHashedValueEffectiveStatement;
 import org.opendaylight.yangtools.openconfig.model.api.OpenConfigHashedValueStatement;
 import org.opendaylight.yangtools.yang.common.Empty;
@@ -49,7 +50,7 @@ abstract class AbstractHashedValueStatementSupport
             extends UnknownEffectiveStatementBase<Empty, OpenConfigHashedValueStatement>
             implements OpenConfigHashedValueEffectiveStatement {
         private final @NonNull StatementDefinition definition;
-        private final @NonNull Object path;
+        private final @NonNull Immutable path;
 
         Effective(final Current<Empty, OpenConfigHashedValueStatement> stmt,
                 final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
index f7c8b07fd6a3e1dfdc803244f3fb1fef39ef3f19..fe7614c4b200bf86a53520bbe32eb4cdc74f31ea 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.yangtools.rfc6241.parser;
 import com.google.common.annotations.Beta;
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.rfc6241.model.api.GetFilterElementAttributesEffectiveStatement;
 import org.opendaylight.yangtools.rfc6241.model.api.GetFilterElementAttributesSchemaNode;
 import org.opendaylight.yangtools.rfc6241.model.api.GetFilterElementAttributesStatement;
@@ -47,7 +48,7 @@ public final class GetFilterElementAttributesStatementSupport extends AbstractEm
     private static final class Effective
             extends UnknownEffectiveStatementBase<Empty, GetFilterElementAttributesStatement>
             implements GetFilterElementAttributesEffectiveStatement, GetFilterElementAttributesSchemaNode {
-        private final @NonNull Object path;
+        private final @NonNull Immutable path;
 
         Effective(final Current<Empty, GetFilterElementAttributesStatement> stmt,
                 final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
index 39b19eaaa0386ba5e0291b824b6d8aaafcedcedf..05850da79c02def1f5cc993d5d92ffd5b0673114 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.yangtools.rfc6536.parser;
 
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.rfc6536.model.api.DefaultDenyAllEffectiveStatement;
 import org.opendaylight.yangtools.rfc6536.model.api.DefaultDenyAllSchemaNode;
 import org.opendaylight.yangtools.rfc6536.model.api.DefaultDenyAllStatement;
@@ -39,7 +40,7 @@ public final class DefaultDenyAllStatementSupport
 
     private static final class Effective extends UnknownEffectiveStatementBase<Empty, DefaultDenyAllStatement>
             implements DefaultDenyAllEffectiveStatement, DefaultDenyAllSchemaNode {
-        private final @NonNull Object path;
+        private final @NonNull Immutable path;
 
         Effective(final Current<Empty, DefaultDenyAllStatement> stmt,
                 final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
index dd4fd2e22f73284ba7509db6dfc3871d8b91ef2f..06c5836746fa73ce05c3352120ca2b33e3f7b5d4 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.yangtools.rfc6536.parser;
 
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.rfc6536.model.api.DefaultDenyWriteEffectiveStatement;
 import org.opendaylight.yangtools.rfc6536.model.api.DefaultDenyWriteSchemaNode;
 import org.opendaylight.yangtools.rfc6536.model.api.DefaultDenyWriteStatement;
@@ -39,7 +40,7 @@ public final class DefaultDenyWriteStatementSupport
 
     private static final class Effective extends UnknownEffectiveStatementBase<Empty, DefaultDenyWriteStatement>
             implements DefaultDenyWriteEffectiveStatement, DefaultDenyWriteSchemaNode {
-        private final @NonNull Object path;
+        private final @NonNull Immutable path;
 
         Effective(final Current<Empty, DefaultDenyWriteStatement> stmt,
                 final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
index 50af31c8212ef58628f3cbc707c2afcb6ce31b63..166c197bfe0749fc6263186395c2bff2d7eb20c3 100644 (file)
@@ -17,6 +17,7 @@ import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.concepts.Mutable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.ActionDefinition;
@@ -328,7 +329,7 @@ public final class EffectiveStatementMixins {
             return SchemaPathSupport.extractPath(this, pathObject());
         }
 
-        @NonNull Object pathObject();
+        @NonNull Immutable pathObject();
     }
 
     /**
index 1c19a66f31b2f34873aa2e07ea078273299aafea..267b3f5c77fba607bc65456e336e534aafe522b3 100644 (file)
@@ -11,6 +11,7 @@ import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.ActionDefinition;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
@@ -23,24 +24,24 @@ import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMix
 final class ActionEffectiveStatementImpl extends WithSubstatements<QName, ActionStatement, ActionEffectiveStatement>
         implements ActionDefinition, ActionEffectiveStatement, OperationDefinitionMixin<ActionStatement>,
                    CopyableMixin<QName, ActionStatement> {
-    private final @NonNull Object path;
+    private final @NonNull Immutable path;
     private final int flags;
 
-    ActionEffectiveStatementImpl(final ActionStatement declared, final Object path, final int flags,
+    ActionEffectiveStatementImpl(final ActionStatement declared, final Immutable path, final int flags,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
         super(declared, substatements);
         this.path = requireNonNull(path);
         this.flags = flags;
     }
 
-    ActionEffectiveStatementImpl(final ActionEffectiveStatementImpl original, final Object path, final int flags) {
+    ActionEffectiveStatementImpl(final ActionEffectiveStatementImpl original, final Immutable path, final int flags) {
         super(original);
         this.path = requireNonNull(path);
         this.flags = flags;
     }
 
     @Override
-    public Object pathObject() {
+    public Immutable pathObject() {
         return path;
     }
 
index 07a98b70fe306746cf418d1bc7e2ac59e820f2be..3c1627381fcc9d5c47f6eb2412ddc8b860b96f3e 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.anydata;
 
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Status;
@@ -73,7 +74,7 @@ public final class AnydataStatementSupport
             .setConfiguration(stmt.effectiveConfig().asNullable())
             .setMandatory(findFirstArgument(substatements, MandatoryEffectiveStatement.class, Boolean.FALSE))
             .toFlags();
-        final Object path = stmt.effectivePath();
+        final Immutable path = stmt.effectivePath();
 
         return substatements.isEmpty()
             ? new EmptyAnydataEffectiveStatement(stmt.declared(), path, flags, findOriginal(stmt))
index 69a1af072586791dfd388187d45e1ebd5fd8ce73..33abe44da753b9177033fc38f3b9f002a026c001 100644 (file)
@@ -13,6 +13,7 @@ import com.google.common.base.MoreObjects;
 import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
@@ -23,11 +24,11 @@ import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMix
 
 class EmptyAnydataEffectiveStatement extends Default<QName, AnydataStatement>
         implements AnydataEffectiveStatement, AnydataSchemaNode, OpaqueDataSchemaNodeMixin<AnydataStatement> {
-    private final @NonNull Object path;
+    private final @NonNull Immutable path;
     private final AnydataSchemaNode original;
     private final int flags;
 
-    EmptyAnydataEffectiveStatement(final AnydataStatement declared, final Object path, final int flags,
+    EmptyAnydataEffectiveStatement(final AnydataStatement declared, final Immutable path, final int flags,
             final @Nullable AnydataSchemaNode original) {
         super(declared);
         this.path = requireNonNull(path);
@@ -36,7 +37,7 @@ class EmptyAnydataEffectiveStatement extends Default<QName, AnydataStatement>
     }
 
     @Override
-    public final Object pathObject() {
+    public final Immutable pathObject() {
         return path;
     }
 
index 372863a8b5131b4f7f9263ab69b78e78ba2541ef..08e88ffe2874091c35a414b794e9f0c5f1316d35 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.anydata;
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.AnydataStatement;
@@ -20,7 +21,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.AnydataStatement;
 final class RegularAnydataEffectiveStatement extends EmptyAnydataEffectiveStatement {
     private final @NonNull Object substatements;
 
-    RegularAnydataEffectiveStatement(final AnydataStatement declared, final Object path, final int flags,
+    RegularAnydataEffectiveStatement(final AnydataStatement declared, final Immutable path, final int flags,
             final @Nullable AnydataSchemaNode original,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
         super(declared, path, flags, original);
index ea0f39117a10f4768be757b6ba7f090e708955c8..ff849c71332b4b6b8761e36dd5bf9544c3b33b97 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.anyxml;
 
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Status;
@@ -73,7 +74,7 @@ public final class AnyxmlStatementSupport
             .setConfiguration(stmt.effectiveConfig().asNullable())
             .setMandatory(findFirstArgument(substatements, MandatoryEffectiveStatement.class, Boolean.FALSE))
             .toFlags();
-        final Object path = stmt.effectivePath();
+        final Immutable path = stmt.effectivePath();
 
         return substatements.isEmpty()
             ? new EmptyAnyxmlEffectiveStatement(stmt.declared(), path, flags, findOriginal(stmt))
index 123dbbdb5b8fe867bd7dcc434ab99c1b99bd3a29..bd37172ec1d0b154075c2e4d2c1ee4bae659659b 100644 (file)
@@ -13,6 +13,7 @@ import com.google.common.base.MoreObjects;
 import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlEffectiveStatement;
@@ -22,11 +23,11 @@ import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMix
 
 class EmptyAnyxmlEffectiveStatement extends Default<QName, AnyxmlStatement>
         implements AnyxmlEffectiveStatement, AnyxmlSchemaNode, OpaqueDataSchemaNodeMixin<AnyxmlStatement> {
-    private final @NonNull Object path;
+    private final @NonNull Immutable path;
     private final AnyxmlSchemaNode original;
     private final int flags;
 
-    EmptyAnyxmlEffectiveStatement(final AnyxmlStatement declared, final Object path, final int flags,
+    EmptyAnyxmlEffectiveStatement(final AnyxmlStatement declared, final Immutable path, final int flags,
             final @Nullable AnyxmlSchemaNode original) {
         super(declared);
         this.path = requireNonNull(path);
@@ -35,7 +36,7 @@ class EmptyAnyxmlEffectiveStatement extends Default<QName, AnyxmlStatement>
     }
 
     @Override
-    public final Object pathObject() {
+    public final Immutable pathObject() {
         return path;
     }
 
index 7c5fe70030d39ea2a255603f5b9628dd1bcadeaf..18b0d8b1fe2fdee205b4f41d5b9796ce00533efb 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.anyxml;
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlStatement;
@@ -17,7 +18,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlStatement;
 final class RegularAnyxmlEffectiveStatement extends EmptyAnyxmlEffectiveStatement {
     private final @NonNull Object substatements;
 
-    RegularAnyxmlEffectiveStatement(final AnyxmlStatement declared, final Object path, final int flags,
+    RegularAnyxmlEffectiveStatement(final AnyxmlStatement declared, final Immutable path, final int flags,
             final @Nullable AnyxmlSchemaNode original,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
         super(declared, path, flags, original);
index d0935134db351aabc8e9818afb3c8092aaa4b611..8c857bf2c738f7682d7fd8eb9d6fcd9e8e6b3249 100644 (file)
@@ -13,6 +13,7 @@ import com.google.common.collect.ImmutableList;
 import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
@@ -24,19 +25,19 @@ import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredEffec
 final class DeclaredCaseEffectiveStatement extends WithSubstatements<QName, CaseStatement, CaseEffectiveStatement>
         implements CaseEffectiveStatementMixin {
     private final CaseSchemaNode original;
-    private final @NonNull Object path;
+    private final @NonNull Immutable path;
     private final int flags;
 
     DeclaredCaseEffectiveStatement(final CaseStatement declared,
-            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Object path, final int flags,
-            final @Nullable CaseSchemaNode original) {
+            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Immutable path,
+            final int flags, final @Nullable CaseSchemaNode original) {
         super(declared, substatements);
         this.path = requireNonNull(path);
         this.flags = flags;
         this.original = original;
     }
 
-    DeclaredCaseEffectiveStatement(final DeclaredCaseEffectiveStatement origEffective, final Object path,
+    DeclaredCaseEffectiveStatement(final DeclaredCaseEffectiveStatement origEffective, final Immutable path,
             final int flags, final @Nullable CaseSchemaNode original) {
         super(origEffective);
         this.path = requireNonNull(path);
@@ -50,7 +51,7 @@ final class DeclaredCaseEffectiveStatement extends WithSubstatements<QName, Case
     }
 
     @Override
-    public Object pathObject() {
+    public Immutable pathObject() {
         return path;
     }
 
index 0361e5262fbbebde2cf90ef24f46dea8c7dffd3f..6e2da3f21dbd036526b9d829cd84eff52ce1369b 100644 (file)
@@ -13,6 +13,7 @@ import com.google.common.collect.ImmutableList;
 import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
@@ -24,18 +25,18 @@ import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractUndeclaredEff
 final class UndeclaredCaseEffectiveStatement extends WithSubstatements<QName, CaseStatement, CaseEffectiveStatement>
         implements CaseEffectiveStatementMixin {
     private final @Nullable CaseSchemaNode original;
-    private final @NonNull Object path;
+    private final @NonNull Immutable path;
     private final int flags;
 
     UndeclaredCaseEffectiveStatement(final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
-            final Object path, final int flags, final @Nullable CaseSchemaNode original) {
+            final Immutable path, final int flags, final @Nullable CaseSchemaNode original) {
         super(substatements);
         this.path = requireNonNull(path);
         this.flags = flags;
         this.original = original;
     }
 
-    UndeclaredCaseEffectiveStatement(final UndeclaredCaseEffectiveStatement origEffective, final Object path,
+    UndeclaredCaseEffectiveStatement(final UndeclaredCaseEffectiveStatement origEffective, final Immutable path,
             final int flags, final @Nullable CaseSchemaNode original) {
         super(origEffective);
         this.path = requireNonNull(path);
@@ -49,7 +50,7 @@ final class UndeclaredCaseEffectiveStatement extends WithSubstatements<QName, Ca
     }
 
     @Override
-    public Object pathObject() {
+    public Immutable pathObject() {
         return path;
     }
 
index 17246ace07a687b433c8258ccc0db1a3ec52653d..737adf6d68a3f35426ea88f430d9ec79528d243a 100644 (file)
@@ -14,6 +14,7 @@ import java.util.Collection;
 import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
@@ -33,12 +34,12 @@ final class ChoiceEffectiveStatementImpl extends WithSubstatements<QName, Choice
                    MandatoryMixin<QName, ChoiceStatement> {
     private final CaseSchemaNode defaultCase;
     private final ChoiceSchemaNode original;
-    private final @NonNull Object path;
+    private final @NonNull Immutable path;
     private final int flags;
 
     ChoiceEffectiveStatementImpl(final ChoiceStatement declared,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final int flags,
-            final Object path, final @Nullable CaseSchemaNode defaultCase,
+            final Immutable path, final @Nullable CaseSchemaNode defaultCase,
             final @Nullable ChoiceSchemaNode original) {
         super(declared, substatements);
         this.path = requireNonNull(path);
@@ -48,7 +49,7 @@ final class ChoiceEffectiveStatementImpl extends WithSubstatements<QName, Choice
     }
 
     ChoiceEffectiveStatementImpl(final ChoiceEffectiveStatementImpl origEffective, final int flags,
-            final Object path, final ChoiceSchemaNode original) {
+            final Immutable path, final ChoiceSchemaNode original) {
         super(origEffective);
         this.path = requireNonNull(path);
         this.flags = flags;
@@ -62,7 +63,7 @@ final class ChoiceEffectiveStatementImpl extends WithSubstatements<QName, Choice
     }
 
     @Override
-    public Object pathObject() {
+    public Immutable pathObject() {
         return path;
     }
 
index c891bfc3e1c39c81fcfe4aa1e5ea09529dbd537d..2037e2183206be2a673576abf0f5fc2a96bb284e 100644 (file)
@@ -13,6 +13,7 @@ import com.google.common.collect.ImmutableList;
 import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
@@ -43,19 +44,19 @@ final class ContainerEffectiveStatementImpl
             AugmentationTargetMixin<QName, ContainerStatement> {
 
     private final int flags;
-    private final @NonNull Object path;
+    private final @NonNull Immutable path;
     private final @Nullable ContainerSchemaNode original;
 
     ContainerEffectiveStatementImpl(final ContainerStatement declared,
-            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Object path, final int flags,
-            final ContainerSchemaNode original) {
+            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Immutable path,
+            final int flags, final ContainerSchemaNode original) {
         super(declared, substatements);
         this.path = requireNonNull(path);
         this.original = original;
         this.flags = flags;
     }
 
-    ContainerEffectiveStatementImpl(final ContainerEffectiveStatementImpl origEffective, final Object path,
+    ContainerEffectiveStatementImpl(final ContainerEffectiveStatementImpl origEffective, final Immutable path,
             final int flags, final ContainerSchemaNode original) {
         super(origEffective);
         this.path = requireNonNull(path);
@@ -74,7 +75,7 @@ final class ContainerEffectiveStatementImpl
     }
 
     @Override
-    public Object pathObject() {
+    public Immutable pathObject() {
         return path;
     }
 
index 48d124dc6d9eee56fbf9f57d9d8d3d802cf2b68a..fa07793e34b4598cbc82f92031f2d1a089e35b31 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.feature;
 import static java.util.Objects.requireNonNull;
 
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.FeatureDefinition;
 import org.opendaylight.yangtools.yang.model.api.stmt.FeatureEffectiveStatement;
@@ -19,10 +20,10 @@ import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMix
 
 class EmptyFeatureEffectiveStatement extends Default<QName, FeatureStatement>
         implements FeatureDefinition, FeatureEffectiveStatement, SchemaNodeMixin<QName, FeatureStatement> {
-    private final @NonNull Object path;
+    private final @NonNull Immutable path;
     private final int flags;
 
-    EmptyFeatureEffectiveStatement(final FeatureStatement declared, final Object path, final int flags) {
+    EmptyFeatureEffectiveStatement(final FeatureStatement declared, final Immutable path, final int flags) {
         super(declared);
         this.path = requireNonNull(path);
         this.flags = flags;
@@ -40,7 +41,7 @@ class EmptyFeatureEffectiveStatement extends Default<QName, FeatureStatement>
 
     @Override
     @Deprecated
-    public final Object pathObject() {
+    public final Immutable pathObject() {
         return path;
     }
 
index e5d81431c338ca75426100324f3d7fe30bc21cbf..6f7e907591ca1df275e130dfae8e27f993d3ff96 100644 (file)
@@ -9,13 +9,14 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.feature;
 
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.FeatureStatement;
 
 final class RegularFeatureEffectiveStatement extends EmptyFeatureEffectiveStatement {
     private final @NonNull Object substatements;
 
-    RegularFeatureEffectiveStatement(final FeatureStatement declared, final Object path, final int flags,
+    RegularFeatureEffectiveStatement(final FeatureStatement declared, final Immutable path, final int flags,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
         super(declared, path, flags);
         this.substatements = maskList(substatements);
index 72766e87324d2addb2d770f47b9fe5a24ed64c03..3dd333ad3520762ba641a593406f887914b58de1 100644 (file)
@@ -11,6 +11,7 @@ import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
@@ -30,11 +31,12 @@ final class GroupingEffectiveStatementImpl
             DataNodeContainerMixin<QName, GroupingStatement>,
             SchemaNodeMixin<QName, GroupingStatement>, ActionNodeContainerMixin<QName, GroupingStatement>,
             NotificationNodeContainerMixin<QName, GroupingStatement>, AddedByUsesMixin<QName, GroupingStatement> {
-    private final @NonNull Object path;
+    private final @NonNull Immutable path;
     private final int flags;
 
     GroupingEffectiveStatementImpl(final GroupingStatement declared,
-            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Object path, final int flags) {
+            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Immutable path,
+            final int flags) {
         super(declared, substatements);
         this.path = requireNonNull(path);
         this.flags = flags;
@@ -46,7 +48,7 @@ final class GroupingEffectiveStatementImpl
     }
 
     @Override
-    public Object pathObject() {
+    public Immutable pathObject() {
         return path;
     }
 
index 96d84939cde4d17b5d0a7fc19d4022be2aec6c82..b9179641b0039e6576af401072dcb62e00c64fee 100644 (file)
@@ -11,6 +11,7 @@ import static java.util.Objects.requireNonNull;
 
 import com.google.common.base.MoreObjects;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
 import org.opendaylight.yangtools.yang.model.api.stmt.IdentityEffectiveStatement;
@@ -20,15 +21,15 @@ import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMix
 
 abstract class AbstractIdentityEffectiveStatement extends DefaultArgument<QName, IdentityStatement>
         implements IdentityEffectiveStatement, IdentitySchemaNode, SchemaNodeMixin<QName, IdentityStatement> {
-    private final @NonNull Object path;
+    private final @NonNull Immutable path;
 
-    AbstractIdentityEffectiveStatement(final IdentityStatement declared, final Object path) {
+    AbstractIdentityEffectiveStatement(final IdentityStatement declared, final Immutable path) {
         super(declared);
         this.path = requireNonNull(path);
     }
 
     @Override
-    public final Object pathObject() {
+    public final Immutable pathObject() {
         return path;
     }
 
index 70eed563fb04cf50be2b019c4c6c411d424cbd7f..fd872d0a931122a98554b8bd2a1ba10abdad3368 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.identity;
 
 import com.google.common.collect.ImmutableSet;
 import java.util.Collection;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Status;
 import org.opendaylight.yangtools.yang.model.api.stmt.IdentityStatement;
@@ -16,7 +17,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.IdentityStatement;
 final class EmptyIdentityEffectiveStatement extends AbstractIdentityEffectiveStatement {
     private static final int CURRENT_FLAGS = new FlagsBuilder().setStatus(Status.CURRENT).toFlags();
 
-    EmptyIdentityEffectiveStatement(final IdentityStatement declared, final Object path) {
+    EmptyIdentityEffectiveStatement(final IdentityStatement declared, final Immutable path) {
         super(declared, path);
     }
 
index 664f31bf8f73ae19bd36e5cfe2cda97f4ad640de..ec089c84bb11448cbac91722ada196e3aa69e9f7 100644 (file)
@@ -11,6 +11,7 @@ import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import java.util.Collection;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.IdentityStatement;
@@ -20,7 +21,7 @@ final class RegularIdentityEffectiveStatement extends AbstractIdentityEffectiveS
     private final @NonNull Object substatements;
     private final int flags;
 
-    RegularIdentityEffectiveStatement(final IdentityStatement declared, final Object path, final int flags,
+    RegularIdentityEffectiveStatement(final IdentityStatement declared, final Immutable path, final int flags,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
             final ImmutableSet<? extends IdentitySchemaNode> baseIdentities) {
         super(declared, path);
index 78504174e60b9a4d4b99b7b65c8c7bfb9edc1ff4..74501e1b722ab7e88b3a5ae738837bfdf0e04eba 100644 (file)
@@ -11,6 +11,7 @@ import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.InputSchemaNode;
@@ -22,17 +23,18 @@ import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMix
 
 final class DeclaredInputEffectiveStatement extends WithSubstatements<QName, InputStatement, InputEffectiveStatement>
         implements InputEffectiveStatement, InputSchemaNode, OperationContainerMixin<InputStatement> {
-    private final @NonNull Object path;
+    private final @NonNull Immutable path;
     private final int flags;
 
     DeclaredInputEffectiveStatement(final InputStatement declared,
-            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Object path, final int flags) {
+            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Immutable path,
+            final int flags) {
         super(declared, substatements);
         this.path = requireNonNull(path);
         this.flags = flags;
     }
 
-    DeclaredInputEffectiveStatement(final DeclaredInputEffectiveStatement original, final Object path,
+    DeclaredInputEffectiveStatement(final DeclaredInputEffectiveStatement original, final Immutable path,
             final int flags) {
         super(original);
         this.path = requireNonNull(path);
@@ -40,7 +42,7 @@ final class DeclaredInputEffectiveStatement extends WithSubstatements<QName, Inp
     }
 
     @Override
-    public Object pathObject() {
+    public Immutable pathObject() {
         return path;
     }
 
index d5dfd19a74f7d2b6d426450f15c4195982edd677..f336ff87927969769efa0a5e5fb15b47a3b35f4f 100644 (file)
@@ -11,6 +11,7 @@ import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.InputSchemaNode;
@@ -23,17 +24,17 @@ import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMix
 final class UndeclaredInputEffectiveStatement
         extends WithSubstatements<QName, InputStatement, InputEffectiveStatement>
         implements InputEffectiveStatement, InputSchemaNode, OperationContainerMixin<InputStatement> {
-    private final @NonNull Object path;
+    private final @NonNull Immutable path;
     private final int flags;
 
     UndeclaredInputEffectiveStatement(final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
-            final Object path, final int flags) {
+            final Immutable path, final int flags) {
         super(substatements);
         this.path = requireNonNull(path);
         this.flags = flags;
     }
 
-    UndeclaredInputEffectiveStatement(final UndeclaredInputEffectiveStatement original, final Object path,
+    UndeclaredInputEffectiveStatement(final UndeclaredInputEffectiveStatement original, final Immutable path,
             final int flags) {
         super(original);
         this.path = requireNonNull(path);
@@ -41,7 +42,7 @@ final class UndeclaredInputEffectiveStatement
     }
 
     @Override
-    public Object pathObject() {
+    public Immutable pathObject() {
         return path;
     }
 
index 38d40462aa00c34317fda6f775919e9921d38898..db869db2fe6b6b54c97763f58a403d1c3ad88de0 100644 (file)
@@ -11,6 +11,7 @@ import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
@@ -36,11 +37,11 @@ abstract class AbstractLeafEffectiveStatement extends AbstractDeclaredEffectiveS
             DataSchemaNodeMixin<QName, LeafStatement>, MandatoryMixin<QName, LeafStatement>,
             MustConstraintMixin<QName, LeafStatement> {
     private final @NonNull Object substatements;
-    private final @NonNull Object path;
+    private final @NonNull Immutable path;
     private final @NonNull TypeDefinition<?> type;
     private final int flags;
 
-    AbstractLeafEffectiveStatement(final LeafStatement declared, final Object path, final int flags,
+    AbstractLeafEffectiveStatement(final LeafStatement declared, final Immutable path, final int flags,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
         super(declared);
         this.path = requireNonNull(path);
@@ -50,7 +51,7 @@ abstract class AbstractLeafEffectiveStatement extends AbstractDeclaredEffectiveS
         this.type = buildType();
     }
 
-    AbstractLeafEffectiveStatement(final AbstractLeafEffectiveStatement original, final Object path,
+    AbstractLeafEffectiveStatement(final AbstractLeafEffectiveStatement original, final Immutable path,
             final int flags) {
         super(original);
         this.path = requireNonNull(path);
@@ -76,7 +77,7 @@ abstract class AbstractLeafEffectiveStatement extends AbstractDeclaredEffectiveS
     }
 
     @Override
-    public final Object pathObject() {
+    public final Immutable pathObject() {
         return path;
     }
 
index 0330ce4e41655a81d9461d118ed57c6ad3b08ee3..e60cb94eb528c50fa6ba200303d4fa6bb6daa4d3 100644 (file)
@@ -9,17 +9,18 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf;
 
 import com.google.common.collect.ImmutableList;
 import java.util.Optional;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.LeafStatement;
 
 final class EmptyLeafEffectiveStatement extends AbstractLeafEffectiveStatement {
-    EmptyLeafEffectiveStatement(final LeafStatement declared, final Object path, final int flags,
+    EmptyLeafEffectiveStatement(final LeafStatement declared, final Immutable path, final int flags,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
         super(declared, path, flags, substatements);
     }
 
-    EmptyLeafEffectiveStatement(final EmptyLeafEffectiveStatement original, final Object path, final int flags) {
+    EmptyLeafEffectiveStatement(final EmptyLeafEffectiveStatement original, final Immutable path, final int flags) {
         super(original, path, flags);
     }
 
index 4d531f70adb436b045d8aea0f65d3e908f33b0cf..a2c9103de162f32ab5fe7ac1aa046c54b5d6253c 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf;
 import com.google.common.collect.ImmutableList;
 import java.util.Optional;
 import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.LeafStatement;
@@ -17,13 +18,13 @@ import org.opendaylight.yangtools.yang.model.api.stmt.LeafStatement;
 final class RegularLeafEffectiveStatement extends AbstractLeafEffectiveStatement {
     private final @Nullable LeafSchemaNode original;
 
-    RegularLeafEffectiveStatement(final LeafStatement declared, final Object path, final int flags,
+    RegularLeafEffectiveStatement(final LeafStatement declared, final Immutable path, final int flags,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final LeafSchemaNode original) {
         super(declared, path, flags, substatements);
         this.original = original;
     }
 
-    RegularLeafEffectiveStatement(final AbstractLeafEffectiveStatement originalEffective, final Object path,
+    RegularLeafEffectiveStatement(final AbstractLeafEffectiveStatement originalEffective, final Immutable path,
             final int flags, final LeafSchemaNode original) {
         super(originalEffective, path, flags);
         this.original = original;
index a87a1d4fab96ba18b06eb4e03b14d264dcf9fcd1..9f4114f8c0a1905e67da25b0192778c0dfdabda2 100644 (file)
@@ -11,6 +11,7 @@ import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
@@ -36,11 +37,11 @@ abstract class AbstractLeafListEffectiveStatement
             UserOrderedMixin<QName, LeafListStatement>, DataSchemaNodeMixin<QName, LeafListStatement>,
             MustConstraintMixin<QName, LeafListStatement> {
     private final @NonNull Object substatements;
-    private final @NonNull Object path;
+    private final @NonNull Immutable path;
     private final @NonNull TypeDefinition<?> type;
     private final int flags;
 
-    AbstractLeafListEffectiveStatement(final LeafListStatement declared, final Object path, final int flags,
+    AbstractLeafListEffectiveStatement(final LeafListStatement declared, final Immutable path, final int flags,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
         super(declared);
         this.path = requireNonNull(path);
@@ -50,7 +51,7 @@ abstract class AbstractLeafListEffectiveStatement
         this.type = buildType();
     }
 
-    AbstractLeafListEffectiveStatement(final AbstractLeafListEffectiveStatement original, final Object path,
+    AbstractLeafListEffectiveStatement(final AbstractLeafListEffectiveStatement original, final Immutable path,
             final int flags) {
         super(original);
         this.path = requireNonNull(path);
@@ -76,7 +77,7 @@ abstract class AbstractLeafListEffectiveStatement
     }
 
     @Override
-    public final Object pathObject() {
+    public final Immutable pathObject() {
         return path;
     }
 
index 04c5c6a5c675cccfd1d2ea4864dab58c551ff149..76a7f19b5c7d68043ca4745943eaaf4210524850 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf_list;
 import com.google.common.collect.ImmutableList;
 import java.util.Optional;
 import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint;
 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
@@ -19,7 +20,7 @@ abstract class AbstractNonEmptyLeafListEffectiveStatement extends AbstractLeafLi
     private final @Nullable LeafListSchemaNode original;
     private final @Nullable ElementCountConstraint elementCountConstraint;
 
-    AbstractNonEmptyLeafListEffectiveStatement(final LeafListStatement declared, final Object path, final int flags,
+    AbstractNonEmptyLeafListEffectiveStatement(final LeafListStatement declared, final Immutable path, final int flags,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
             final LeafListSchemaNode original, final ElementCountConstraint elementCountConstraint) {
         super(declared, path, flags, substatements);
@@ -28,14 +29,14 @@ abstract class AbstractNonEmptyLeafListEffectiveStatement extends AbstractLeafLi
     }
 
     AbstractNonEmptyLeafListEffectiveStatement(final AbstractNonEmptyLeafListEffectiveStatement originalEffecive,
-            final LeafListSchemaNode original, final Object path, final int flags) {
+            final LeafListSchemaNode original, final Immutable path, final int flags) {
         super(originalEffecive, path, flags);
         this.elementCountConstraint = originalEffecive.elementCountConstraint;
         this.original = original;
     }
 
     AbstractNonEmptyLeafListEffectiveStatement(final EmptyLeafListEffectiveStatement originalEffective,
-            final LeafListSchemaNode original, final Object path, final int flags) {
+            final LeafListSchemaNode original, final Immutable path, final int flags) {
         super(originalEffective, path, flags);
         this.elementCountConstraint = null;
         this.original = original;
index 14a7bd59918c381c44d0a100efbff12489643c7d..0a7e3cb908feed1411eff3d40dcfcf4fc336f893 100644 (file)
@@ -11,18 +11,19 @@ import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import java.util.Collection;
 import java.util.Optional;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.LeafListStatement;
 
 final class EmptyLeafListEffectiveStatement extends AbstractLeafListEffectiveStatement {
-    EmptyLeafListEffectiveStatement(final LeafListStatement declared, final Object path, final int flags,
+    EmptyLeafListEffectiveStatement(final LeafListStatement declared, final Immutable path, final int flags,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
         super(declared, path, flags, substatements);
     }
 
-    EmptyLeafListEffectiveStatement(final EmptyLeafListEffectiveStatement original, final Object path,
+    EmptyLeafListEffectiveStatement(final EmptyLeafListEffectiveStatement original, final Immutable path,
             final int flags) {
         super(original, path, flags);
     }
index 5be7fb943c245ffb258f775b72fa6888e72d18d8..50842e930d376f67d050f7bc1a3c14a0d29f43e8 100644 (file)
@@ -12,6 +12,7 @@ import static java.util.Objects.requireNonNull;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint;
 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
@@ -20,7 +21,7 @@ import org.opendaylight.yangtools.yang.model.api.stmt.LeafListStatement;
 final class RegularLeafListEffectiveStatement extends AbstractNonEmptyLeafListEffectiveStatement {
     private final @NonNull ImmutableSet<String> defaults;
 
-    RegularLeafListEffectiveStatement(final LeafListStatement declared, final Object path, final int flags,
+    RegularLeafListEffectiveStatement(final LeafListStatement declared, final Immutable path, final int flags,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final LeafListSchemaNode original,
             final ImmutableSet<String> defaults, final ElementCountConstraint elementCountConstraint) {
         super(declared, path, flags, substatements, original, elementCountConstraint);
@@ -28,7 +29,7 @@ final class RegularLeafListEffectiveStatement extends AbstractNonEmptyLeafListEf
     }
 
     RegularLeafListEffectiveStatement(final RegularLeafListEffectiveStatement originalEffective,
-            final LeafListSchemaNode original, final Object path, final int flags) {
+            final LeafListSchemaNode original, final Immutable path, final int flags) {
         super(originalEffective, original, path, flags);
         this.defaults = originalEffective.defaults;
     }
index abb471487f30d57f3fa7f03b1ae7f83c647eb2fb..0ccbbc1dc4e41f81c1c53f3f5a3f14a30d0180ff 100644 (file)
@@ -9,25 +9,26 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf_list;
 
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint;
 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.LeafListStatement;
 
 final class SlimLeafListEffectiveStatement extends AbstractNonEmptyLeafListEffectiveStatement {
-    SlimLeafListEffectiveStatement(final LeafListStatement declared, final Object path, final int flags,
+    SlimLeafListEffectiveStatement(final LeafListStatement declared, final Immutable path, final int flags,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
             final LeafListSchemaNode original, final ElementCountConstraint elementCountConstraint) {
         super(declared, path, flags, substatements, original, elementCountConstraint);
     }
 
     SlimLeafListEffectiveStatement(final SlimLeafListEffectiveStatement originalEffective,
-            final LeafListSchemaNode original, final Object path, final int flags) {
+            final LeafListSchemaNode original, final Immutable path, final int flags) {
         super(originalEffective, original, path, flags);
     }
 
     SlimLeafListEffectiveStatement(final EmptyLeafListEffectiveStatement originalEffective,
-            final LeafListSchemaNode original, final Object path, final int flags) {
+            final LeafListSchemaNode original, final Immutable path, final int flags) {
         super(originalEffective, original, path, flags);
     }
 
index 089ccad277c9321e15c78914317b4a9a48d15146..ffb45d6ff73a14922185d381b670f4bcb113b332 100644 (file)
@@ -13,6 +13,7 @@ import com.google.common.collect.ImmutableList;
 import java.util.Collection;
 import java.util.List;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode;
@@ -44,10 +45,10 @@ abstract class AbstractListEffectiveStatement
             ActionNodeContainerMixin<QName, ListStatement>, MustConstraintMixin<QName, ListStatement> {
     private final int flags;
     private final @NonNull Object substatements;
-    private final @NonNull Object path;
+    private final @NonNull Immutable path;
     private final @NonNull Object keyDefinition;
 
-    AbstractListEffectiveStatement(final ListStatement declared, final Object path, final int flags,
+    AbstractListEffectiveStatement(final ListStatement declared, final Immutable path, final int flags,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
             final ImmutableList<QName> keyDefinition) {
         super(declared, substatements);
@@ -57,7 +58,8 @@ abstract class AbstractListEffectiveStatement
         this.flags = flags;
     }
 
-    AbstractListEffectiveStatement(final AbstractListEffectiveStatement original, final Object path, final int flags) {
+    AbstractListEffectiveStatement(final AbstractListEffectiveStatement original, final Immutable path,
+            final int flags) {
         super(original);
         this.path = requireNonNull(path);
         this.substatements = original.substatements;
@@ -81,7 +83,7 @@ abstract class AbstractListEffectiveStatement
     }
 
     @Override
-    public final Object pathObject() {
+    public final Immutable pathObject() {
         return path;
     }
 
index 195d04178e08804534a5870e2d8f02998d31d157..86e6029e0935c5f6c015e1deda2d99acfa8af957 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.list;
 
 import com.google.common.collect.ImmutableList;
 import java.util.Optional;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint;
 import org.opendaylight.yangtools.yang.model.api.SchemaNode;
@@ -16,13 +17,13 @@ import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ListStatement;
 
 final class EmptyListEffectiveStatement extends AbstractListEffectiveStatement {
-    EmptyListEffectiveStatement(final ListStatement declared, final Object path, final int flags,
+    EmptyListEffectiveStatement(final ListStatement declared, final Immutable path, final int flags,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
             final ImmutableList<QName> keyDefinition) {
         super(declared, path, flags, substatements, keyDefinition);
     }
 
-    EmptyListEffectiveStatement(final EmptyListEffectiveStatement original, final Object path, final int flags) {
+    EmptyListEffectiveStatement(final EmptyListEffectiveStatement original, final Immutable path, final int flags) {
         super(original, path, flags);
     }
 
index db75d55a80524364a42b50991416615322265043..89c6877c1d847d81a15a359a368219e23dd6ffc0 100644 (file)
@@ -20,6 +20,7 @@ import java.util.List;
 import java.util.Optional;
 import java.util.Set;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.Ordering;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint;
@@ -195,7 +196,7 @@ public final class ListStatementSupport
 
         final Optional<ElementCountConstraint> elementCountConstraint =
             EffectiveStmtUtils.createElementCountConstraint(substatements);
-        final Object path = stmt.effectivePath();
+        final Immutable path = stmt.effectivePath();
         final ListSchemaNode original = (ListSchemaNode) stmt.original();
         try {
             return original == null && !elementCountConstraint.isPresent()
index 2c577f1963bd6d316fb736482611963419e7b25a..a8b273b5a2fd9ffcaa4eb61b7cdc065ed29cb1ba 100644 (file)
@@ -9,6 +9,7 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.list;
 
 import com.google.common.collect.ImmutableList;
 import java.util.Optional;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint;
 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
@@ -19,7 +20,7 @@ final class RegularListEffectiveStatement extends AbstractListEffectiveStatement
     private final ElementCountConstraint elementCountConstraint;
     private final ListSchemaNode original;
 
-    RegularListEffectiveStatement(final ListStatement declared, final Object path, final int flags,
+    RegularListEffectiveStatement(final ListStatement declared, final Immutable path, final int flags,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
             final ImmutableList<QName> keyDefinition, final ElementCountConstraint elementCountConstraint,
             final ListSchemaNode original) {
@@ -29,14 +30,14 @@ final class RegularListEffectiveStatement extends AbstractListEffectiveStatement
     }
 
     RegularListEffectiveStatement(final RegularListEffectiveStatement originalEffective, final ListSchemaNode original,
-            final Object path, final int flags) {
+            final Immutable path, final int flags) {
         super(originalEffective, path, flags);
         this.elementCountConstraint = originalEffective.elementCountConstraint;
         this.original = original;
     }
 
     RegularListEffectiveStatement(final EmptyListEffectiveStatement originalEffective, final ListSchemaNode original,
-            final Object path, final int flags) {
+            final Immutable path, final int flags) {
         super(originalEffective, path, flags);
         this.elementCountConstraint = null;
         this.original = original;
index 2a4b75356dec6f3a5b2aa2ba98561c72a39e00b3..2a18a534d2756a5f758e211e04927c7032369579 100644 (file)
@@ -11,6 +11,7 @@ import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
@@ -31,17 +32,18 @@ final class NotificationEffectiveStatementImpl
                    AugmentationTargetMixin<QName, NotificationStatement>, CopyableMixin<QName, NotificationStatement>,
                    MustConstraintMixin<QName, NotificationStatement> {
 
-    private final @NonNull Object path;
+    private final @NonNull Immutable path;
     private final int flags;
 
     NotificationEffectiveStatementImpl(final NotificationStatement declared,
-            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Object path, final int flags) {
+            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Immutable path,
+            final int flags) {
         super(declared, substatements);
         this.path = requireNonNull(path);
         this.flags = flags;
     }
 
-    NotificationEffectiveStatementImpl(final NotificationEffectiveStatementImpl original, final Object path,
+    NotificationEffectiveStatementImpl(final NotificationEffectiveStatementImpl original, final Immutable path,
             final int flags) {
         super(original);
         this.path = requireNonNull(path);
@@ -64,7 +66,7 @@ final class NotificationEffectiveStatementImpl
     }
 
     @Override
-    public Object pathObject() {
+    public Immutable pathObject() {
         return path;
     }
 
index 81a27c4690c2594c4d3677a73cb29bd80914cb45..5eff73f7c1ae9b2b35c5283c7d2aea439f9de82c 100644 (file)
@@ -11,6 +11,7 @@ import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.OutputSchemaNode;
@@ -22,17 +23,18 @@ import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMix
 
 final class DeclaredOutputEffectiveStatement extends WithSubstatements<QName, OutputStatement, OutputEffectiveStatement>
         implements OutputEffectiveStatement, OutputSchemaNode, OperationContainerMixin<OutputStatement> {
-    private final @NonNull Object path;
+    private final @NonNull Immutable path;
     private final int flags;
 
     DeclaredOutputEffectiveStatement(final OutputStatement declared,
-            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Object path, final int flags) {
+            final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Immutable path,
+            final int flags) {
         super(declared, substatements);
         this.path = requireNonNull(path);
         this.flags = flags;
     }
 
-    DeclaredOutputEffectiveStatement(final DeclaredOutputEffectiveStatement original, final Object path,
+    DeclaredOutputEffectiveStatement(final DeclaredOutputEffectiveStatement original, final Immutable path,
             final int flags) {
         super(original);
         this.path = requireNonNull(path);
@@ -40,7 +42,7 @@ final class DeclaredOutputEffectiveStatement extends WithSubstatements<QName, Ou
     }
 
     @Override
-    public Object pathObject() {
+    public Immutable pathObject() {
         return path;
     }
 
index a185f0d4b5cd873ed2558a6f226366e9ca2c8d1d..9cc6e244ea7658a0f2b3dc021d04669604545724 100644 (file)
@@ -11,6 +11,7 @@ import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.OutputSchemaNode;
@@ -23,17 +24,17 @@ import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMix
 final class UndeclaredOutputEffectiveStatement
         extends WithSubstatements<QName, OutputStatement, OutputEffectiveStatement>
         implements OutputEffectiveStatement, OutputSchemaNode, OperationContainerMixin<OutputStatement> {
-    private final @NonNull Object path;
+    private final @NonNull Immutable path;
     private final int flags;
 
     UndeclaredOutputEffectiveStatement(final ImmutableList<? extends EffectiveStatement<?, ?>> substatements,
-            final Object path, final int flags) {
+            final Immutable path, final int flags) {
         super(substatements);
         this.path = requireNonNull(path);
         this.flags = flags;
     }
 
-    UndeclaredOutputEffectiveStatement(final UndeclaredOutputEffectiveStatement original, final Object path,
+    UndeclaredOutputEffectiveStatement(final UndeclaredOutputEffectiveStatement original, final Immutable path,
             final int flags) {
         super(original);
         this.path = requireNonNull(path);
@@ -41,7 +42,7 @@ final class UndeclaredOutputEffectiveStatement
     }
 
     @Override
-    public Object pathObject() {
+    public Immutable pathObject() {
         return path;
     }
 
index 3bf32f1e072b52cc1524131ec74661ca559f675d..64509f10952d65a3745727692734e1848e866bea 100644 (file)
@@ -11,6 +11,7 @@ import static java.util.Objects.requireNonNull;
 
 import com.google.common.collect.ImmutableList;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
@@ -21,18 +22,18 @@ import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.EffectiveStatementMix
 
 final class RpcEffectiveStatementImpl extends WithSubstatements<QName, RpcStatement, RpcEffectiveStatement>
         implements RpcDefinition, RpcEffectiveStatement, OperationDefinitionMixin<RpcStatement> {
-    private final @NonNull Object path;
+    private final @NonNull Immutable path;
     private final int flags;
 
     RpcEffectiveStatementImpl(final RpcStatement declared,
-        final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Object path, final int flags) {
+        final ImmutableList<? extends EffectiveStatement<?, ?>> substatements, final Immutable path, final int flags) {
         super(declared, substatements);
         this.path = requireNonNull(path);
         this.flags = flags;
     }
 
     @Override
-    public Object pathObject() {
+    public Immutable pathObject() {
         return path;
     }
 
index f583dd0b87dc0d63c573915e1bce13161c612b35..3ce4ef3b8a104d2bc2586dae600e196b977c5849 100644 (file)
@@ -17,6 +17,7 @@ import java.util.Collection;
 import java.util.Map;
 import java.util.Optional;
 import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode;
@@ -59,7 +60,7 @@ final class TypedefEffectiveStatementImpl extends Default<QName, TypedefStatemen
     }
 
     private final @NonNull Object substatements;
-    private final @NonNull Object path;
+    private final @NonNull Immutable path;
     private final int flags;
 
     // Accessed via TYPE_DEFINITION
@@ -69,7 +70,7 @@ final class TypedefEffectiveStatementImpl extends Default<QName, TypedefStatemen
     @SuppressWarnings("unused")
     private volatile ProxyTypeEffectiveStatement typeStatement;
 
-    TypedefEffectiveStatementImpl(final TypedefStatement declared, final Object path, final int flags,
+    TypedefEffectiveStatementImpl(final TypedefStatement declared, final Immutable path, final int flags,
             final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
         super(declared);
         this.path = requireNonNull(path);
@@ -83,7 +84,7 @@ final class TypedefEffectiveStatementImpl extends Default<QName, TypedefStatemen
     }
 
     @Override
-    public Object pathObject() {
+    public Immutable pathObject() {
         return path;
     }
 
index 6d9058fef5a84fb7469480395274d606f3b599be..22dffffbee1f9f34e82b24c57c427bf43137f8e6 100644 (file)
@@ -107,14 +107,14 @@ public interface EffectiveStmtCtx extends CommonStmtCtx, StmtContextCompat, Immu
          *
          * <p>
          * Returned object conforms to {@link SchemaPathSupport}'s view of how these are to be handled. Users of this
-         * method are expected to consult {@link SchemaPathSupport#extractQName(Object)} and
-         * {@link SchemaPathSupport#extractPath(Object, Object)} to ensure correct implementation behaviour with respect
-         * to {@link SchemaNode#getQName()} and {@link SchemaNode#getPath()} respectively.
+         * method are expected to consult {@link SchemaPathSupport#extractQName(Immutable)} and
+         * {@link SchemaPathSupport#extractPath(Object, Immutable)} to ensure correct implementation behaviour with
+         * respect to {@link SchemaNode#getQName()} and {@link SchemaNode#getPath()} respectively.
          *
-         * @return An effective path object
+         * @return An {@link Immutable} effective path object
          */
         // FIXME: Remove this when SchemaNode.getPath() is removed. QName users will store getArgument() instead.
-        default @NonNull Object effectivePath() {
+        default @NonNull Immutable effectivePath() {
             return SchemaPathSupport.toEffectivePath(getSchemaPath());
         }
 
index edad0024ddaa264c7493cbd785fef9f81a9f9a5e..3690909ef0ddd7780252d060b937e7d293fce4db 100644 (file)
@@ -44,7 +44,7 @@ public abstract class SchemaPathSupport implements Immutable {
         // Hidden on purpose
     }
 
-    public static @NonNull Object toEffectivePath(final @NonNull SchemaPath path) {
+    public static @NonNull Immutable toEffectivePath(final @NonNull SchemaPath path) {
         return DEFAULT.effectivePath(path);
     }
 
@@ -56,17 +56,23 @@ public abstract class SchemaPathSupport implements Immutable {
         return DEFAULT.equalPaths(first, second);
     }
 
-    public static @NonNull QName extractQName(final @NonNull Object path) {
-        return path instanceof QName ? (QName) path : verifyNotNull(((SchemaPath) path).getLastComponent());
+    public static @NonNull QName extractQName(final @NonNull Immutable path) {
+        if (path instanceof SchemaPath) {
+            return verifyNotNull(((SchemaPath) path).getLastComponent());
+        } else if (path instanceof QName) {
+            return (QName) path;
+        } else {
+            throw new IllegalArgumentException("Unhandled object " + path);
+        }
     }
 
-    public static @NonNull SchemaPath extractPath(final @NonNull Object impl, final @NonNull Object path) {
+    public static @NonNull SchemaPath extractPath(final @NonNull Object impl, final @NonNull Immutable path) {
         return path instanceof SchemaPath ? (SchemaPath) path : SchemaNodeDefaults.throwUnsupported(impl);
     }
 
     abstract boolean equalPaths(@Nullable SchemaPath first, @Nullable SchemaPath second);
 
-    abstract @NonNull Object effectivePath(@NonNull SchemaPath path);
+    abstract @NonNull Immutable effectivePath(@NonNull SchemaPath path);
 
     abstract @Nullable SchemaPath optionalPath(@Nullable SchemaPath path);
 }