From 25af5cac9dc66fe36021a1f4e224b64a3f7ac177 Mon Sep 17 00:00:00 2001
From: Robert Varga
Date: Thu, 25 Aug 2016 13:14:27 +0200
Subject: [PATCH] BUG-6533: add immutable implementations of yang.model.api
This patch introduces Immutables.org annotations to generate
immutable/builder implementation of yang.model.api interfaces.
These are contained in a separate artifact and not available
as a feature, since they currently do not have a user.
Change-Id: I98a9969138a702b67139f323e77fa955162c3d74
Signed-off-by: Robert Varga
---
common/artifacts/pom.xml | 5 ++
yang/pom.xml | 5 +-
.../yang/model/api/ChoiceCaseNode.java | 3 +-
.../yang/model/api/ContainerSchemaNode.java | 1 -
.../yang/model/api/DocumentedNode.java | 2 -
.../yang/model/api/ListSchemaNode.java | 4 +-
.../yang/model/api/RpcDefinition.java | 2 +-
.../yang/model/api/SchemaContext.java | 20 ++++-
.../yangtools/yang/model/api/UsesNode.java | 1 -
.../yang/model/api/package-info.java | 53 ++++++------
.../model/api/type/BinaryTypeDefinition.java | 3 +-
.../model/api/type/BooleanTypeDefinition.java | 2 -
.../model/api/type/DecimalTypeDefinition.java | 1 -
.../model/api/type/EnumTypeDefinition.java | 1 -
.../api/type/IdentityrefTypeDefinition.java | 4 -
.../model/api/type/PatternConstraint.java | 1 -
.../model/api/type/StringTypeDefinition.java | 1 -
.../model/api/type/UnionTypeDefinition.java | 2 -
yang/yang-model-immutable/pom.xml | 82 +++++++++++++++++++
.../immutable/AbstractChoiceCaseNode.java | 16 ++++
.../AbstractContainerSchemaNode.java | 16 ++++
.../immutable/AbstractDataNodeContainer.java | 29 +++++++
.../immutable/AbstractListSchemaNode.java | 16 ++++
.../yang/model/immutable/AbstractModule.java | 16 ++++
.../AbstractNotificationDefinition.java | 16 ++++
.../immutable/AbstractSchemaContext.java | 29 +++++++
.../immutable/CommonContainerSchemaNode.java | 19 +++++
.../yang/model/immutable/package-info.java | 52 ++++++++++++
28 files changed, 345 insertions(+), 57 deletions(-)
create mode 100644 yang/yang-model-immutable/pom.xml
create mode 100644 yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractChoiceCaseNode.java
create mode 100644 yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractContainerSchemaNode.java
create mode 100644 yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractDataNodeContainer.java
create mode 100644 yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractListSchemaNode.java
create mode 100644 yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractModule.java
create mode 100644 yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractNotificationDefinition.java
create mode 100644 yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractSchemaContext.java
create mode 100644 yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/CommonContainerSchemaNode.java
create mode 100644 yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/package-info.java
diff --git a/common/artifacts/pom.xml b/common/artifacts/pom.xml
index fdfa06544e..289c44e494 100644
--- a/common/artifacts/pom.xml
+++ b/common/artifacts/pom.xml
@@ -94,6 +94,11 @@
yang-model-export
${project.version}
+
+ org.opendaylight.yangtools
+ yang-model-immutable
+ ${project.version}
+
org.opendaylight.yangtools
yang-model-util
diff --git a/yang/pom.xml b/yang/pom.xml
index e52383c526..f729e2424f 100644
--- a/yang/pom.xml
+++ b/yang/pom.xml
@@ -30,14 +30,15 @@
yang-data-transform
yang-data-codec-gson
yang-data-codec-xml
- yang-model-api
yang-maven-plugin
yang-maven-plugin-it
yang-maven-plugin-spi
+ yang-model-api
+ yang-model-export
+ yang-model-immutable
yang-model-util
yang-parser-api
yang-parser-impl
- yang-model-export
yang-data-jaxen
yang-system-test
yang-test-util
diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ChoiceCaseNode.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ChoiceCaseNode.java
index e38df949bf..5b12968929 100644
--- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ChoiceCaseNode.java
+++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ChoiceCaseNode.java
@@ -10,7 +10,6 @@ package org.opendaylight.yangtools.yang.model.api;
/**
* The ChoiceCaseNode interface is used to define branches of the ChoiceNode.
*/
-public interface ChoiceCaseNode extends DataSchemaNode, DataNodeContainer,
- AugmentationTarget {
+public interface ChoiceCaseNode extends DataSchemaNode, DataNodeContainer, AugmentationTarget {
}
diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ContainerSchemaNode.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ContainerSchemaNode.java
index e7ebc0e186..cd4996e8f9 100644
--- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ContainerSchemaNode.java
+++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ContainerSchemaNode.java
@@ -7,7 +7,6 @@
*/
package org.opendaylight.yangtools.yang.model.api;
-
/**
* The ContainerSchemaNode is used to define an interior data node in the schema
* tree. There are two styles of containers, those that exist only for
diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/DocumentedNode.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/DocumentedNode.java
index a3b031a08c..353a817c37 100644
--- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/DocumentedNode.java
+++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/DocumentedNode.java
@@ -13,9 +13,7 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
/**
- *
* Node which can have documentation assigned.
- *
*/
public interface DocumentedNode {
diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ListSchemaNode.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ListSchemaNode.java
index b2e1a321b8..217b4a2f16 100644
--- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ListSchemaNode.java
+++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/ListSchemaNode.java
@@ -21,8 +21,8 @@ import org.opendaylight.yangtools.yang.common.QName;
* if defined.
*
*/
-public interface ListSchemaNode extends DataNodeContainer, AugmentationTarget, DataSchemaNode, NotificationNodeContainer,
- ActionNodeContainer {
+public interface ListSchemaNode extends DataNodeContainer, AugmentationTarget, DataSchemaNode,
+ NotificationNodeContainer, ActionNodeContainer {
/**
* @return List of QNames of leaf identifiers of this list
diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/RpcDefinition.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/RpcDefinition.java
index 375be86373..42b49cc237 100644
--- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/RpcDefinition.java
+++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/RpcDefinition.java
@@ -9,11 +9,11 @@ package org.opendaylight.yangtools.yang.model.api;
/**
* Interface describing YANG 'rpc' statement.
+ *
*
* The rpc statement defines an rpc node in the schema tree. Under the rpc node,
* a schema node with the name 'input', and a schema node with the name 'output'
* are also defined.
- *
*/
public interface RpcDefinition extends OperationDefinition {
diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaContext.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaContext.java
index 707fa11504..770a584125 100644
--- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaContext.java
+++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/SchemaContext.java
@@ -8,6 +8,7 @@
package org.opendaylight.yangtools.yang.model.api;
import com.google.common.base.Optional;
+import com.google.common.collect.Sets;
import java.net.URI;
import java.util.Date;
import java.util.Set;
@@ -88,7 +89,9 @@ public interface SchemaContext extends ContainerSchemaNode {
* @return module instance which has namespace equal to the
* namespace
or null
in other cases
*/
- Set findModuleByNamespace(final URI namespace);
+ default Set findModuleByNamespace(final URI namespace) {
+ return Sets.filter(getModules(), m -> namespace.equals(m.getNamespace()));
+ }
/**
* Returns module instance based on given namespace and revision. If
@@ -96,10 +99,19 @@ public interface SchemaContext extends ContainerSchemaNode {
*
* @param namespace
* @param revision
- * @return
+ * @return Matching module or null if a match is not found
*/
- Module findModuleByNamespaceAndRevision(final URI namespace, final Date revision);
-
+ default Module findModuleByNamespaceAndRevision(final URI namespace, final Date revision) {
+ if (namespace == null) {
+ return null;
+ }
+ for (Module module : findModuleByNamespace(namespace)) {
+ if (revision == null || revision.equals(module.getRevision())) {
+ return module;
+ }
+ }
+ return null;
+ }
/**
* Get yang source code represented as string for matching
diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/UsesNode.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/UsesNode.java
index d0106cff66..86acdf68e4 100644
--- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/UsesNode.java
+++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/UsesNode.java
@@ -15,7 +15,6 @@ import javax.annotation.Nonnull;
/**
* Contains the methods for getting data and checking properties of the YANG
* uses
substatement.
- *
*/
public interface UsesNode extends DocumentedNode.WithStatus {
diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/package-info.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/package-info.java
index 424c64b081..9c8fc62456 100644
--- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/package-info.java
+++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/package-info.java
@@ -36,7 +36,6 @@
* argument
* {@link org.opendaylight.yangtools.yang.model.api.ExtensionDefinition#getArgument()}
*
- *
* augment
* {@link org.opendaylight.yangtools.yang.model.api.AugmentationSchema}
*
@@ -44,7 +43,7 @@
* {@link org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition#getIdentity()}
*
* belongs-to
- *
+ * {@link org.opendaylight.yangtools.yang.model.api.stmt.SubmoduleStatement#getBelongsTo()}
*
* bit
* {@link org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition.Bit}
@@ -66,7 +65,7 @@
* {@link org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode}
*
* default
- *
+ * {@link org.opendaylight.yangtools.yang.model.api.LeafSchemaNode#getDefault()}
*
* description
* {@link org.opendaylight.yangtools.yang.model.api.SchemaNode#getDescription()}
@@ -89,7 +88,7 @@
* {@link org.opendaylight.yangtools.yang.model.api.Deviation}
*
* deviate
- *
+ * {@link org.opendaylight.yangtools.yang.model.api.DeviateKind}
*
* feature
* {@link org.opendaylight.yangtools.yang.model.api.FeatureDefinition}
@@ -101,16 +100,16 @@
* {@link org.opendaylight.yangtools.yang.model.api.GroupingDefinition}
*
* identity
- *
+ * {@link org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode}
*
* if-feature
- *
+ * {@link org.opendaylight.yangtools.yang.model.api.stmt.IfFeatureStatement}
*
* import
* {@link org.opendaylight.yangtools.yang.model.api.ModuleImport}
*
* include
- *
+ * {@link org.opendaylight.yangtools.yang.model.api.stmt.IncludeStatement}
*
* input
* {@link org.opendaylight.yangtools.yang.model.api.RpcDefinition#getInput()}
@@ -189,7 +188,7 @@
* {@link org.opendaylight.yangtools.yang.model.api.SchemaNode#getReference()}
*
* refine
- *
+ * {@link org.opendaylight.yangtools.yang.model.api.stmt.RefineStatement}
*
* require-instance
* {@link org.opendaylight.yangtools.yang.model.api.type.InstanceIdentifierTypeDefinition#requireInstance()}
@@ -207,7 +206,7 @@
* {@link org.opendaylight.yangtools.yang.model.api.SchemaNode#getStatus()}
*
* submodule
- *
+ * {@link org.opendaylight.yangtools.yang.model.api.stmt.SubmoduleStatement}
*
* type
* {@link org.opendaylight.yangtools.yang.model.api.TypeDefinition}
@@ -218,7 +217,7 @@
* {@link org.opendaylight.yangtools.yang.model.api.TypeDefinition}
*
* unique
- *
+ * {@link org.opendaylight.yangtools.yang.model.api.UniqueConstraint}
*
* units
* {@link org.opendaylight.yangtools.yang.model.api.TypeDefinition#getUnits()}
@@ -234,54 +233,52 @@
* {@link org.opendaylight.yangtools.yang.model.api.ConstraintDefinition#getWhenCondition()}
*
* yang-version
+ * {@link org.opendaylight.yangtools.yang.model.api.Module#getYangVersion()}
*
* yin-element
- *
- *
- *
- *
+ * {@link org.opendaylight.yangtools.yang.model.api.ExtensionDefinition#isYinElement()}
*
* add
- *
+ * {@link org.opendaylight.yangtools.yang.model.api.DeviateKind#ADD}
*
* current
- *
+ * {@link org.opendaylight.yangtools.yang.model.api.Status#CURRENT}
*
* delete
- *
+ * {@link org.opendaylight.yangtools.yang.model.api.DeviateKind#DELETE}
*
* deprecated
- *
+ * {@link org.opendaylight.yangtools.yang.model.api.Status#DEPRECATED}
*
* false
- *
+ * {@link java.lang.Boolean#FALSE}
*
* max
- *
+ * Not exposed
*
* min
- *
+ * Not exposed
*
* not-supported
- *
+ * {@link org.opendaylight.yangtools.yang.model.api.DeviateKind#NOT_SUPPORTED}
*
* obsolete
- *
+ * {@link org.opendaylight.yangtools.yang.model.api.Status#OBSOLETE}
*
* replace
- *
+ * {@link org.opendaylight.yangtools.yang.model.api.DeviateKind#REPLACE}
*
* system
- *
+ * {@link org.opendaylight.yangtools.yang.model.api.ListSchemaNode#isUserOrdered()}
*
* true
- *
+ * {@link java.lang.Boolean#TRUE}
*
* unbounded
- *
+ * Not exposed
*
* user
- *
+ * {@link org.opendaylight.yangtools.yang.model.api.ListSchemaNode#isUserOrdered()}
*
*
*
diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/BinaryTypeDefinition.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/BinaryTypeDefinition.java
index b097fd3d87..94eca2b9e4 100644
--- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/BinaryTypeDefinition.java
+++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/BinaryTypeDefinition.java
@@ -12,7 +12,7 @@ import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
/**
* The binary built-in type represents any binary data, i.e., a sequence of
- * octets.
+ * octets.
*
* Binary values are encoded with the base64 encoding scheme (see [RFC4648], Section
@@ -21,7 +21,6 @@ import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
* href="https://tools.ietf.org/html/rfc4648">[RFC4648].
*
*
- *
* This interface was modeled according to definition in [RFC-6020] The binary
* Built-In Type
diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/BooleanTypeDefinition.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/BooleanTypeDefinition.java
index dd20aacc5f..503dbd69b8 100644
--- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/BooleanTypeDefinition.java
+++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/BooleanTypeDefinition.java
@@ -10,10 +10,8 @@ package org.opendaylight.yangtools.yang.model.api.type;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
/**
- *
* Marker interface which marks that type definition represents the built-in
* YANG boolean
type.
- *
*/
public interface BooleanTypeDefinition extends TypeDefinition {
diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/DecimalTypeDefinition.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/DecimalTypeDefinition.java
index 66bc99fc80..75f6f43444 100644
--- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/DecimalTypeDefinition.java
+++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/DecimalTypeDefinition.java
@@ -14,7 +14,6 @@ import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
/**
* Contains methods for getting data from the YANG type
* substatement for decimal64
built-in type.
- *
*/
public interface DecimalTypeDefinition extends TypeDefinition {
diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/EnumTypeDefinition.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/EnumTypeDefinition.java
index d27e2ba3d1..402d7135d9 100644
--- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/EnumTypeDefinition.java
+++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/EnumTypeDefinition.java
@@ -27,7 +27,6 @@ public interface EnumTypeDefinition extends TypeDefinition {
@Nonnull List getValues();
/**
- *
* Contains the methods for accessing the data about the concrete
* enumeration item which represents enum
YANG type.
*/
diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/IdentityrefTypeDefinition.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/IdentityrefTypeDefinition.java
index 1ab5370d5f..30d48b7627 100644
--- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/IdentityrefTypeDefinition.java
+++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/IdentityrefTypeDefinition.java
@@ -11,13 +11,10 @@ import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
/**
- *
* Contains method for getting data from identityref
built-in YANG
* type.
- *
*/
public interface IdentityrefTypeDefinition extends TypeDefinition {
-
/**
* Returns identity to which the instance of this type refers.
*
@@ -25,5 +22,4 @@ public interface IdentityrefTypeDefinition extends TypeDefinitionpattern
* which is substatement of type
statement.
- *
*/
public interface PatternConstraint extends ConstraintMetaDefinition {
diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/StringTypeDefinition.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/StringTypeDefinition.java
index 958e796e51..c5784be505 100644
--- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/StringTypeDefinition.java
+++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/StringTypeDefinition.java
@@ -11,7 +11,6 @@ import java.util.List;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
/**
- *
* Contains method for getting data from the string
YANG built-in
* type.
*/
diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/UnionTypeDefinition.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/UnionTypeDefinition.java
index 6b2897f588..c08cc7602d 100644
--- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/UnionTypeDefinition.java
+++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/type/UnionTypeDefinition.java
@@ -8,12 +8,10 @@
package org.opendaylight.yangtools.yang.model.api.type;
import java.util.List;
-
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
/**
* Contains the method which access union item in the union type.
- *
*/
public interface UnionTypeDefinition extends TypeDefinition {
diff --git a/yang/yang-model-immutable/pom.xml b/yang/yang-model-immutable/pom.xml
new file mode 100644
index 0000000000..1b275f8ebc
--- /dev/null
+++ b/yang/yang-model-immutable/pom.xml
@@ -0,0 +1,82 @@
+
+
+
+
+
+
+ org.opendaylight.odlparent
+ bundle-parent
+ 1.8.0-SNAPSHOT
+
+
+
+ 4.0.0
+ org.opendaylight.yangtools
+ yang-model-immutable
+ 1.1.0-SNAPSHOT
+ bundle
+ ${project.artifactId}
+ ${project.artifactId}
+
+
+
+
+ org.opendaylight.yangtools
+ yangtools-artifacts
+ 1.1.0-SNAPSHOT
+ import
+ pom
+
+
+
+
+
+
+ ${project.groupId}
+ yang-model-api
+
+
+
+ org.immutables
+ value
+ 2.3.9
+ provided
+
+
+
+ junit
+ junit
+ test
+
+
+ org.mockito
+ mockito-core
+
+
+ ch.qos.logback
+ logback-classic
+ test
+
+
+
+
+ ${odl.site.url}/${project.groupId}/${stream}/${project.artifactId}/
+
+
+ opendaylight-site
+ ${nexus.site.url}/${project.artifactId}/
+
+
+
diff --git a/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractChoiceCaseNode.java b/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractChoiceCaseNode.java
new file mode 100644
index 0000000000..3731f4ac63
--- /dev/null
+++ b/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractChoiceCaseNode.java
@@ -0,0 +1,16 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.yang.model.immutable;
+
+import org.immutables.value.Value;
+import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
+
+@Value.Immutable
+abstract class AbstractChoiceCaseNode extends AbstractDataNodeContainer implements ChoiceCaseNode {
+
+}
diff --git a/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractContainerSchemaNode.java b/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractContainerSchemaNode.java
new file mode 100644
index 0000000000..b49246331c
--- /dev/null
+++ b/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractContainerSchemaNode.java
@@ -0,0 +1,16 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.yang.model.immutable;
+
+import org.immutables.value.Value;
+import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+
+@Value.Immutable
+abstract class AbstractContainerSchemaNode extends CommonContainerSchemaNode implements ContainerSchemaNode {
+
+}
diff --git a/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractDataNodeContainer.java b/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractDataNodeContainer.java
new file mode 100644
index 0000000000..030df61659
--- /dev/null
+++ b/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractDataNodeContainer.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.yang.model.immutable;
+
+import java.util.Collection;
+import java.util.Map;
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
+import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+
+abstract class AbstractDataNodeContainer implements DataNodeContainer {
+
+ abstract Map children();
+
+ @Override
+ public final Collection getChildNodes() {
+ return children().values();
+ }
+
+ @Override
+ public final DataSchemaNode getDataChildByName(final QName name) {
+ return children().get(name);
+ }
+}
diff --git a/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractListSchemaNode.java b/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractListSchemaNode.java
new file mode 100644
index 0000000000..ce2c246767
--- /dev/null
+++ b/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractListSchemaNode.java
@@ -0,0 +1,16 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.yang.model.immutable;
+
+import org.immutables.value.Value;
+import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
+
+@Value.Immutable
+abstract class AbstractListSchemaNode extends AbstractDataNodeContainer implements ListSchemaNode {
+
+}
diff --git a/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractModule.java b/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractModule.java
new file mode 100644
index 0000000000..f01ac25ec9
--- /dev/null
+++ b/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractModule.java
@@ -0,0 +1,16 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.yang.model.immutable;
+
+import org.immutables.value.Value;
+import org.opendaylight.yangtools.yang.model.api.Module;
+
+@Value.Immutable
+abstract class AbstractModule extends AbstractDataNodeContainer implements Module {
+
+}
diff --git a/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractNotificationDefinition.java b/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractNotificationDefinition.java
new file mode 100644
index 0000000000..3a2d54e143
--- /dev/null
+++ b/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractNotificationDefinition.java
@@ -0,0 +1,16 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.yang.model.immutable;
+
+import org.immutables.value.Value;
+import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
+
+@Value.Immutable
+abstract class AbstractNotificationDefinition extends AbstractDataNodeContainer implements NotificationDefinition {
+
+}
diff --git a/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractSchemaContext.java b/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractSchemaContext.java
new file mode 100644
index 0000000000..fabfd76640
--- /dev/null
+++ b/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/AbstractSchemaContext.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.yang.model.immutable;
+
+import com.google.common.base.Optional;
+import java.util.Date;
+import org.immutables.value.Value;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.ModuleIdentifier;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+
+@Value.Immutable
+abstract class AbstractSchemaContext extends CommonContainerSchemaNode implements SchemaContext {
+
+ @Override
+ public final Optional getModuleSource(final ModuleIdentifier moduleIdentifier) {
+ throw new UnsupportedOperationException("Not implemented");
+ }
+
+ @Override
+ public Module findModuleByName(final String name, final Date revision) {
+ throw new UnsupportedOperationException("Not implemented");
+ }
+}
diff --git a/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/CommonContainerSchemaNode.java b/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/CommonContainerSchemaNode.java
new file mode 100644
index 0000000000..83f39f0f7b
--- /dev/null
+++ b/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/CommonContainerSchemaNode.java
@@ -0,0 +1,19 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.yangtools.yang.model.immutable;
+
+import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+
+/**
+ * Common abstract class capturing {@link AbstractDataNodeContainer} and {@link ContainerSchemaNode}.
+ *
+ * @author Robert Varga
+ */
+abstract class CommonContainerSchemaNode extends AbstractDataNodeContainer implements ContainerSchemaNode {
+
+}
diff --git a/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/package-info.java b/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/package-info.java
new file mode 100644
index 0000000000..df049d5522
--- /dev/null
+++ b/yang/yang-model-immutable/src/main/java/org/opendaylight/yangtools/yang/model/immutable/package-info.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+/**
+ * Generated immutable implementations for org.opendaylight.yangtools.yang.model.api interfaces.
+ *
+ * @author Robert Varga
+ */
+@Include(value = {
+ org.opendaylight.yangtools.yang.model.api.ActionDefinition.class,
+ org.opendaylight.yangtools.yang.model.api.AnyDataSchemaNode.class,
+ org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode.class,
+ org.opendaylight.yangtools.yang.model.api.ExtensionDefinition.class,
+ org.opendaylight.yangtools.yang.model.api.FeatureDefinition.class,
+ org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode.class,
+ org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode.class,
+ org.opendaylight.yangtools.yang.model.api.LeafSchemaNode.class,
+ org.opendaylight.yangtools.yang.model.api.ModuleImport.class,
+ org.opendaylight.yangtools.yang.model.api.RpcDefinition.class,
+ org.opendaylight.yangtools.yang.model.api.type.BinaryTypeDefinition.class,
+ org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition.class,
+ org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition.Bit.class,
+ org.opendaylight.yangtools.yang.model.api.type.BooleanTypeDefinition.class,
+ org.opendaylight.yangtools.yang.model.api.type.DecimalTypeDefinition.class,
+ org.opendaylight.yangtools.yang.model.api.type.EmptyTypeDefinition.class,
+ org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition.class,
+ org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition.EnumPair.class,
+ org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition.class,
+ org.opendaylight.yangtools.yang.model.api.type.IntegerTypeDefinition.class,
+ org.opendaylight.yangtools.yang.model.api.type.InstanceIdentifierTypeDefinition.class,
+ org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition.class,
+ org.opendaylight.yangtools.yang.model.api.type.LengthConstraint.class,
+ org.opendaylight.yangtools.yang.model.api.type.PatternConstraint.class,
+ org.opendaylight.yangtools.yang.model.api.type.RangeConstraint.class,
+ org.opendaylight.yangtools.yang.model.api.type.StringTypeDefinition.class,
+ org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition.class,
+ org.opendaylight.yangtools.yang.model.api.type.UnsignedIntegerTypeDefinition.class,
+})
+@Style(
+ builderVisibility = BuilderVisibility.PUBLIC,
+ strictBuilder = true,
+ visibility = ImplementationVisibility.PRIVATE)
+package org.opendaylight.yangtools.yang.model.immutable;
+
+import org.immutables.value.Value.Include;
+import org.immutables.value.Value.Style;
+import org.immutables.value.Value.Style.BuilderVisibility;
+import org.immutables.value.Value.Style.ImplementationVisibility;
--
2.36.6