Merge "Global cleanup of restconf client dependencies"
authorTony Tkacik <ttkacik@cisco.com>
Tue, 25 Mar 2014 05:17:50 +0000 (05:17 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Tue, 25 Mar 2014 05:17:50 +0000 (05:17 +0000)
71 files changed:
code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/InstanceIdentifierCodecImpl.xtend
common/concepts/pom.xml [moved from concepts/pom.xml with 96% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractListenerRegistration.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractListenerRegistration.java with 100% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractObjectRegistration.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractObjectRegistration.java with 100% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractRegistration.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractRegistration.java with 100% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Builder.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/Builder.java with 100% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/ClassBasedPropertyBuilder.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/ClassBasedPropertyBuilder.java with 100% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Codec.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/Codec.java with 100% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/CompositeObjectRegistration.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/CompositeObjectRegistration.java with 100% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Delegator.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/Delegator.java with 100% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Deserializer.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/Deserializer.java with 100% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Identifiable.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/Identifiable.java with 100% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Identifier.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/Identifier.java with 100% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Immutable.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/Immutable.java with 100% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/InvertibleTransformator.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/InvertibleTransformator.java with 100% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/ListenerRegistration.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/ListenerRegistration.java with 100% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Mutable.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/Mutable.java with 100% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/MutationBehaviour.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/MutationBehaviour.java with 100% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Namespace.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/Namespace.java with 100% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/ObjectRegistration.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/ObjectRegistration.java with 100% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/OrderedSet.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/OrderedSet.java with 100% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Path.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/Path.java with 100% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/ProductAwareBuilder.java [new file with mode: 0644]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Registration.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/Registration.java with 100% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Serializer.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/Serializer.java with 100% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Transformator.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/Transformator.java with 100% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/ValueWrapper.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/ValueWrapper.java with 100% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/util/ClassLoaderUtils.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/util/ClassLoaderUtils.java with 100% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/util/Immutables.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/util/Immutables.java with 100% similarity]
common/concepts/src/main/java/org/opendaylight/yangtools/concepts/util/ListenerRegistry.java [moved from concepts/src/main/java/org/opendaylight/yangtools/concepts/util/ListenerRegistry.java with 100% similarity]
common/mockito-configuration/pom.xml [moved from mockito-configuration/pom.xml with 96% similarity]
common/mockito-configuration/src/main/java/org/mockito/configuration/ArgumentsExtractorVerifier.java [moved from mockito-configuration/src/main/java/org/mockito/configuration/ArgumentsExtractorVerifier.java with 100% similarity]
common/mockito-configuration/src/main/java/org/mockito/configuration/MockitoConfiguration.java [moved from mockito-configuration/src/main/java/org/mockito/configuration/MockitoConfiguration.java with 100% similarity]
common/mockito-configuration/src/main/java/org/mockito/configuration/ThrowsUnstubbedMethodException.java [moved from mockito-configuration/src/main/java/org/mockito/configuration/ThrowsUnstubbedMethodException.java with 100% similarity]
common/mockito-configuration/src/main/java/org/mockito/configuration/UnstubbedMethodException.java [moved from mockito-configuration/src/main/java/org/mockito/configuration/UnstubbedMethodException.java with 100% similarity]
common/mockito-configuration/src/main/resources/logback-test.xml [moved from mockito-configuration/src/main/resources/logback-test.xml with 100% similarity]
common/mockito-configuration/src/test/java/org/mockito/configuration/ArgumentsExtractorVerifierTest.java [moved from mockito-configuration/src/test/java/org/mockito/configuration/ArgumentsExtractorVerifierTest.java with 100% similarity]
common/mockito-configuration/src/test/java/org/mockito/configuration/DefaultAnswerTest.java [moved from mockito-configuration/src/test/java/org/mockito/configuration/DefaultAnswerTest.java with 100% similarity]
common/pom.xml [new file with mode: 0644]
pom.xml
restconf/restconf-client-impl/src/main/java/org/opendaylight/yangtools/restconf/client/BindingToRestRpc.java
restconf/restconf-client-impl/src/main/java/org/opendaylight/yangtools/restconf/client/RestListenableEventStreamContext.java
yang/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/test/InstanceIdentifierTest.java
yang/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/test/mock/NodeChildKey.java
yang/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/test/mock/NodeKey.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/FromNormalizedNodeSerializerFactory.java [new file with mode: 0644]
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/ToNormalizedNodeParser.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/ToNormalizedNodeParserFactory.java [new file with mode: 0644]
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/base/parser/NodeParserDispatcher.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/base/serializer/NodeSerializerDispatcher.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/AugmentationNodeDomParser.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/ChoiceNodeDomParser.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/ContainerNodeDomParser.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/DomNodeDispatcher.java [deleted file]
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/DomToNormalizedNodeParserFactory.java [new file with mode: 0644]
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/LeafNodeDomParser.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/LeafSetEntryNodeDomParser.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/LeafSetNodeDomParser.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/MapEntryNodeDomParser.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/MapNodeDomParser.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/AugmentationNodeDomSerializer.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/ChoiceNodeDomSerializer.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/ContainerNodeDomSerializer.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/DomFromNormalizedNodeSerializerFactory.java [new file with mode: 0644]
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/DomNodeSerializerDispatcher.java [deleted file]
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/LeafNodeDomSerializer.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/LeafSetEntryNodeDomSerializer.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/LeafSetNodeDomSerializer.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/MapEntryNodeDomSerializer.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/MapNodeDomSerializer.java
yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/NormalizedNodeXmlTranslationTest.java

index d563b29de11383ba3200703d2b26a88d7edcc9d5..3396f4e3f8c41857e8a8a9e4f75658cf1ca2e431 100644 (file)
@@ -7,34 +7,33 @@
  */
 package org.opendaylight.yangtools.sal.binding.generator.impl
 
+import com.google.common.collect.ImmutableList
+import java.util.ArrayList
+import java.util.Collections
+import java.util.HashMap
+import java.util.List
+import java.util.Map
+import java.util.WeakHashMap
+import java.util.concurrent.ConcurrentHashMap
+import org.opendaylight.yangtools.yang.binding.Augmentation
+import org.opendaylight.yangtools.yang.binding.DataObject
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier
-import org.opendaylight.yangtools.yang.data.impl.codec.CodecRegistry
-import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.PathArgument
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.IdentifiableItem
-import org.opendaylight.yangtools.yang.common.QName
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.Item
-import java.util.Map
-import java.util.WeakHashMap
+import org.opendaylight.yangtools.yang.binding.util.BindingReflections
+import org.opendaylight.yangtools.yang.common.QName
+import org.opendaylight.yangtools.yang.data.api.CompositeNode
 import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.NodeIdentifier
 import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.NodeIdentifierWithPredicates
-import java.util.ArrayList
+import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.PathArgument
+import org.opendaylight.yangtools.yang.data.api.Node
+import org.opendaylight.yangtools.yang.data.impl.CompositeNodeTOImpl
+import org.opendaylight.yangtools.yang.data.impl.SimpleNodeTOImpl
+import org.opendaylight.yangtools.yang.data.impl.codec.CodecRegistry
+import org.opendaylight.yangtools.yang.data.impl.codec.IdentifierCodec
 import org.opendaylight.yangtools.yang.data.impl.codec.InstanceIdentifierCodec
 import org.opendaylight.yangtools.yang.data.impl.codec.ValueWithQName
-import java.util.HashMap
 import org.slf4j.LoggerFactory
-import java.util.List
-import org.opendaylight.yangtools.yang.binding.DataObject
-import org.opendaylight.yangtools.yang.data.impl.codec.IdentifierCodec
-import org.opendaylight.yangtools.yang.data.impl.CompositeNodeTOImpl
-import org.opendaylight.yangtools.yang.data.api.Node
-import org.opendaylight.yangtools.yang.data.impl.SimpleNodeTOImpl
-import org.opendaylight.yangtools.yang.data.api.CompositeNode
-import org.opendaylight.yangtools.yang.binding.Augmentable
-import com.google.common.collect.ImmutableList
-import org.opendaylight.yangtools.yang.binding.Augmentation
-import java.util.concurrent.ConcurrentHashMap
-import org.opendaylight.yangtools.yang.binding.util.BindingReflections
-import java.util.Collections
 
 class InstanceIdentifierCodecImpl implements InstanceIdentifierCodec {
 
@@ -52,7 +51,7 @@ class InstanceIdentifierCodecImpl implements InstanceIdentifierCodec {
         var Class<?> baType = null
         val biArgs = input.path
         val scannedPath = new ArrayList<QName>(biArgs.size);
-        val baArgs = new ArrayList<org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument>(biArgs.size)
+        val baArgs = new ArrayList<InstanceIdentifier.PathArgument>(biArgs.size)
         for(biArg : biArgs) {
             scannedPath.add(biArg.nodeType);
             val baArg = deserializePathArgument(biArg,scannedPath)
@@ -71,13 +70,13 @@ class InstanceIdentifierCodecImpl implements InstanceIdentifierCodec {
         return ret;
     }
 
-    private def dispatch org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument deserializePathArgument(NodeIdentifier argument,List<QName> processedPath) {
+    private def dispatch InstanceIdentifier.PathArgument deserializePathArgument(NodeIdentifier argument,List<QName> processedPath) {
         val Class cls = codecRegistry.getClassForPath(processedPath);
         return new Item(cls);
     }
 
 
-    private def dispatch org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument deserializePathArgument(NodeIdentifierWithPredicates argument,List<QName> processedPath) {
+    private def dispatch InstanceIdentifier.PathArgument deserializePathArgument(NodeIdentifierWithPredicates argument,List<QName> processedPath) {
         val Class type = codecRegistry.getClassForPath(processedPath);
         val IdentifierCodec codec = codecRegistry.getIdentifierCodecForIdentifiable(type);
         val value = codec.deserialize(argument.toCompositeNode())?.value;
@@ -93,9 +92,9 @@ class InstanceIdentifierCodecImpl implements InstanceIdentifierCodec {
         return new CompositeNodeTOImpl(predicates.nodeType,null,values);
     }
 
-    override serialize(InstanceIdentifier input) {
+    override serialize(InstanceIdentifier<?> input) {
         var Class<?> previousAugmentation = null
-        val pathArgs = input.path as List<org.opendaylight.yangtools.yang.binding.InstanceIdentifier.PathArgument>
+        val pathArgs = input.path as List<InstanceIdentifier.PathArgument>
         var QName previousQName = null;
         val components = new ArrayList<PathArgument>(pathArgs.size);
         val qnamePath = new ArrayList<QName>(pathArgs.size);
@@ -114,7 +113,7 @@ class InstanceIdentifierCodecImpl implements InstanceIdentifierCodec {
 
                 previousAugmentation = null;
             } else {
-                previousQName = codecRegistry.getQNameForAugmentation(baArg.type as Class);
+                previousQName = codecRegistry.getQNameForAugmentation(baArg.type as Class<?>);
                 previousAugmentation = baArg.type;
             }
         }
@@ -130,7 +129,7 @@ class InstanceIdentifierCodecImpl implements InstanceIdentifierCodec {
         classToPreviousAugment.get(class1).put(list,augmentation);
     }
 
-    private def dispatch PathArgument serializePathArgument(Item argument, QName previousQname) {
+    private def dispatch PathArgument serializePathArgument(Item<?> argument, QName previousQname) {
         val type = argument.type;
         val qname = BindingReflections.findQName(type);
         if(previousQname == null || (BindingReflections.isAugmentationChild(argument.type))) {
similarity index 96%
rename from concepts/pom.xml
rename to common/concepts/pom.xml
index 7c9df45b4db526ac2e2bd66798febaf39e03556b..9123d6ae73b7dcaaf2d3d55f97697792cc83924c 100644 (file)
@@ -11,7 +11,7 @@
 
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
-        <artifactId>yangtools</artifactId>
+        <artifactId>common-parent</artifactId>
         <version>0.6.2-SNAPSHOT</version>
     </parent>
     <packaging>bundle</packaging>
diff --git a/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/ProductAwareBuilder.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/ProductAwareBuilder.java
new file mode 100644 (file)
index 0000000..b2c2d04
--- /dev/null
@@ -0,0 +1,36 @@
+/*
+ * Copyright (c) 2014 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.concepts;
+
+/**
+ * An extension of the {@link Builder} concept which allows an implementation
+ * of this interface to be used in collections instead of the product. Given
+ * the mutable nature of Builders, this has to be done very carefully.
+ *
+ * @param <P> Product type
+ */
+public interface ProductAwareBuilder<P> extends Builder<P> {
+       /**
+        * Return the hash code of the product. This has to be equivalent
+        * of calling {@link #toInstance()}.{@link #hashCode()}.
+        *
+        * @return the hash code of the product.
+        */
+       int productHashCode();
+
+       /**
+        * Check whether an instance of the product that would be created
+        * by the builder is equal to an existing instance. This has to
+        * be equivalent of calling {@link #toInstance()}.{@link #equals(Object)}.
+        *
+        * @param product Product instance
+        * @return Return true if the product is equal to the would-be
+        *         product of the builder.
+        */
+       boolean productEquals(Object product);
+}
similarity index 96%
rename from mockito-configuration/pom.xml
rename to common/mockito-configuration/pom.xml
index c0d5225e9a4f283954579f70a6c3fee4f26c3f74..2e896de18b946b4ec59aa8e0540c25acabeb0966 100644 (file)
@@ -11,7 +11,7 @@
 
     <parent>
         <groupId>org.opendaylight.yangtools</groupId>
-        <artifactId>yangtools</artifactId>
+        <artifactId>common-parent</artifactId>
         <version>0.6.2-SNAPSHOT</version>
     </parent>
 
diff --git a/common/pom.xml b/common/pom.xml
new file mode 100644 (file)
index 0000000..10db456
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
+<!--
+ Copyright (c) 2014 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
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <parent>
+        <groupId>org.opendaylight.yangtools</groupId>
+        <artifactId>yangtools</artifactId>
+        <version>0.6.2-SNAPSHOT</version>
+    </parent>
+
+    <modelVersion>4.0.0</modelVersion>
+    <artifactId>common-parent</artifactId>
+    <packaging>pom</packaging>
+
+    <modules>
+        <module>concepts</module>
+        <module>mockito-configuration</module>
+    </modules>
+
+</project>
diff --git a/pom.xml b/pom.xml
index 68cc427b04b8c501c4eeff0e193858fd3947ecbc..2d39835831cbc5aa33e603bd0da1914da79c0833 100644 (file)
--- a/pom.xml
+++ b/pom.xml
     </scm>
 
     <modules>
-        <module>concepts</module>
-        <module>yang</module>
         <module>code-generator</module>
+        <module>common</module>
+        <module>integration-test</module>
         <module>model</module>
         <module>restconf</module>
-        <module>integration-test</module>
-        <module>mockito-configuration</module>
         <module>websocket</module>
+        <module>yang</module>
         <!-- module>third-party</module -->
     </modules>
 
index 6e695359daf0f2e02b8d6e9e8388fd2c0e88aa88..fe4eb76695e25b08007f27215ce3cd26bc1d7e7a 100644 (file)
@@ -7,14 +7,12 @@
  */
 package org.opendaylight.yangtools.restconf.client;
 
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import com.sun.jersey.api.client.ClientResponse;
 import java.lang.reflect.InvocationHandler;
 import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
 import java.util.ArrayList;
 import java.util.List;
+
 import org.opendaylight.yangtools.restconf.client.to.RestRpcError;
 import org.opendaylight.yangtools.restconf.client.to.RestRpcResult;
 import org.opendaylight.yangtools.restconf.common.ResourceUri;
@@ -38,6 +36,10 @@ import org.w3c.dom.Document;
 import org.w3c.dom.ls.DOMImplementationLS;
 import org.w3c.dom.ls.LSSerializer;
 
+import com.google.common.base.Function;
+import com.google.common.base.Optional;
+import com.sun.jersey.api.client.ClientResponse;
+
 public class BindingToRestRpc implements InvocationHandler {
 
     private final RestconfClientImpl client;
@@ -46,7 +48,7 @@ public class BindingToRestRpc implements InvocationHandler {
     private final SchemaContext schcemaContext;
     private final Module module;
 
-    public BindingToRestRpc(Class proxiedInterface,BindingIndependentMappingService mappingService,RestconfClientImpl client,SchemaContext schemaContext) throws Exception {
+    public BindingToRestRpc(Class<?> proxiedInterface,BindingIndependentMappingService mappingService,RestconfClientImpl client,SchemaContext schemaContext) throws Exception {
         this.mappingService = mappingService;
         this.client  = client;
         this.schcemaContext = schemaContext;
index e08f5b65d882fb4d6b7629393ba22de64c0e2b49..796959fe627af02eb619199567f9630605a2525b 100644 (file)
@@ -7,14 +7,8 @@
  */
 package org.opendaylight.yangtools.restconf.client;
 
-import com.google.common.base.Charsets;
-import com.google.common.base.Function;
-import com.google.common.base.Optional;
-import com.google.common.util.concurrent.ListenableFuture;
-import com.google.common.util.concurrent.ListeningExecutorService;
-import com.google.common.util.concurrent.MoreExecutors;
-import com.sun.jersey.api.client.ClientResponse;
 import io.netty.handler.codec.http.websocketx.CloseWebSocketFrame;
+
 import java.io.UnsupportedEncodingException;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
@@ -24,7 +18,9 @@ import java.util.Date;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executors;
+
 import javax.ws.rs.core.MediaType;
+
 import org.opendaylight.yangtools.concepts.AbstractListenerRegistration;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 import org.opendaylight.yangtools.restconf.client.api.event.EventStreamInfo;
@@ -40,6 +36,14 @@ import org.opendaylight.yangtools.yang.common.RpcResult;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.google.common.base.Charsets;
+import com.google.common.base.Function;
+import com.google.common.base.Optional;
+import com.google.common.util.concurrent.ListenableFuture;
+import com.google.common.util.concurrent.ListeningExecutorService;
+import com.google.common.util.concurrent.MoreExecutors;
+import com.sun.jersey.api.client.ClientResponse;
+
 
 
 
index 074624b1e53ea4bc9a5d6259a12fe09cb124232f..792ccd0ccf2018ede2d1dac58043a92a376a98c3 100644 (file)
@@ -7,7 +7,10 @@
  */
 package org.opendaylight.yangtools.yang.binding.test;
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 
 import org.junit.Test;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
@@ -23,18 +26,18 @@ public class InstanceIdentifierTest {
 
     @Test
     public void constructWithPredicates() {
-        
+
         InstanceIdentifier<Nodes> nodes = InstanceIdentifier.builder(Nodes.class).toInstance();
-        
+
         assertNotNull(nodes);
         assertEquals(Nodes.class, nodes.getTargetType());
-        
-        
-        InstanceIdentifier<Node> node = InstanceIdentifier.builder(nodes).node(Node.class).toInstance();
-        
+
+
+        InstanceIdentifier<Node> node = InstanceIdentifier.builder(nodes).child(Node.class).toInstance();
+
         assertNotNull(node);
         assertEquals(Node.class, node.getTargetType());
-        
+
         assertTrue(nodes.contains(node));
     }
 
@@ -49,25 +52,25 @@ public class InstanceIdentifierTest {
 
         assertTrue(nodes.contains(node));
     }
-   
-    
+
+
     @Test
     public void negativeContains() {
         InstanceIdentifier<FooChild> fooChild = InstanceIdentifier.builder(Nodes.class).child(InstantiatedFoo.class).child(FooChild.class).build();
-        
+
         InstanceIdentifier<Node> nodeTen = InstanceIdentifier.builder(Nodes.class) //
                 .child(Node.class,new NodeKey(10)).toInstance();
         InstanceIdentifier<Node> nodeOne = InstanceIdentifier.builder(Nodes.class) //
                 .child(Node.class,new NodeKey(1)).toInstance();
         InstanceIdentifier<Nodes> nodes = InstanceIdentifier.builder(Nodes.class).toInstance();
-    
+
         assertFalse(fooChild.contains(nodeTen));
         assertFalse(nodeTen.contains(nodes));
-        
+
         assertFalse(nodeOne.contains(nodes));
         assertTrue(nodes.contains(nodeOne));
     }
-    
+
     @Test
     public void containsWildcarded() {
         InstanceIdentifier<Nodes> nodes = InstanceIdentifier.builder(Nodes.class).toInstance();
@@ -75,40 +78,40 @@ public class InstanceIdentifierTest {
         InstanceIdentifier<NodeChild> wildcardedChildren = InstanceIdentifier.builder(Nodes.class) //
                 .child(Node.class) //
                 .child(NodeChild.class).build();
-        
+
         assertTrue(wildcarded.isWildcarded());
         assertTrue(wildcardedChildren.isWildcarded());
-        
-        
+
+
         InstanceIdentifier<Node> nodeTen = InstanceIdentifier.builder(Nodes.class) //
                 .child(Node.class,new NodeKey(10)).toInstance();
         InstanceIdentifier<Node> nodeOne = InstanceIdentifier.builder(Nodes.class) //
                 .child(Node.class,new NodeKey(1)).toInstance();
-        
+
         assertFalse(nodeTen.isWildcarded());
         assertFalse(nodeOne.isWildcarded());
         assertTrue(nodes.containsWildcarded(nodeOne));
         assertTrue(wildcarded.containsWildcarded(nodeOne));
         assertTrue(wildcarded.containsWildcarded(nodeTen));
-        
-        
+
+
         InstanceIdentifier<NodeChild> nodeTenChildWildcarded = InstanceIdentifier.builder(Nodes.class) //
                 .child(Node.class,new NodeKey(10)).child(NodeChild.class).toInstance();
-        
+
         assertTrue(nodeTenChildWildcarded.isWildcarded());
-        
+
         InstanceIdentifier<NodeChild> nodeTenChild = InstanceIdentifier.builder(Nodes.class) //
                 .child(Node.class,new NodeKey(10)).child(NodeChild.class, new NodeChildKey(10)).toInstance();
         InstanceIdentifier<NodeChild> nodeOneChild = InstanceIdentifier.builder(Nodes.class) //
                 .child(Node.class,new NodeKey(1)).child(NodeChild.class, new NodeChildKey(1)).toInstance();
 
-        
+
         assertFalse(nodeTenChildWildcarded.containsWildcarded(nodeOneChild));
         assertTrue(nodeTenChildWildcarded.containsWildcarded(nodeTenChild));
-        
+
     }
-    
-    
+
+
     void childOfTest() {
         InstanceIdentifier.builder(Nodes.class).child(InstantiatedFoo.class).child(FooChild.class);
     }
index f78427840ca1bd81fd231a3d144a5703fa7c7cdc..4c915fb8474209a24a86b4538fc4ea3466a7a34e 100644 (file)
@@ -11,8 +11,8 @@ import org.opendaylight.yangtools.yang.binding.Identifier;
 
 public class NodeChildKey implements //
         Identifier<NodeChild> {
-
-    private final int id;
+       private static final long serialVersionUID = 1L;
+       private final int id;
 
     public NodeChildKey(int id) {
         super();
index 295b6e5765628047e899ae528d881ce445ab23b3..7b83790c7537fca4937673db8b958c9a7144631b 100644 (file)
@@ -11,8 +11,8 @@ import org.opendaylight.yangtools.yang.binding.Identifier;
 
 public class NodeKey implements //
         Identifier<Node> {
-
-    private final int id;
+       private static final long serialVersionUID = 1L;
+       private final int id;
 
     public NodeKey(int id) {
         super();
diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/FromNormalizedNodeSerializerFactory.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/FromNormalizedNodeSerializerFactory.java
new file mode 100644 (file)
index 0000000..48fedda
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2014 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.data.impl.schema.transform;
+
+import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode;
+import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode;
+import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
+import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
+import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode;
+import org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode;
+import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
+import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
+import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
+import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
+
+/**
+ * Factory for different normalized node serializers.
+ *
+ * @param <E>
+ *            type of resulting/serialized element from NormalizedNode
+ */
+public interface FromNormalizedNodeSerializerFactory<E> {
+       FromNormalizedNodeSerializer<E, AugmentationNode, AugmentationSchema> getAugmentationNodeSerializer();
+       FromNormalizedNodeSerializer<E, ChoiceNode, org.opendaylight.yangtools.yang.model.api.ChoiceNode> getChoiceNodeSerializer();
+       FromNormalizedNodeSerializer<E, ContainerNode, ContainerSchemaNode> getContainerNodeSerializer();
+       FromNormalizedNodeSerializer<E, LeafNode<?>, LeafSchemaNode> getLeafNodeSerializer();
+       FromNormalizedNodeSerializer<E, LeafSetEntryNode<?>, LeafListSchemaNode> getLeafSetEntryNodeSerializer();
+       FromNormalizedNodeSerializer<E, LeafSetNode<?>, LeafListSchemaNode> getLeafSetNodeSerializer();
+       FromNormalizedNodeSerializer<E, MapEntryNode, ListSchemaNode> getMapEntryNodeSerializer();
+       FromNormalizedNodeSerializer<E, MapNode, ListSchemaNode> getMapNodeSerializer();
+}
index 25cd3308b972c5945c85a2ecd9676cf1911cf4b0..a300cc07d41f88b83daa6d3dcbdc386ba353132d 100644 (file)
@@ -34,6 +34,4 @@ public interface ToNormalizedNodeParser<E, N extends NormalizedNode<?, ?>, S> {
      * @return NormalizedNode as a result of parsing list of E elements with schema S
      */
     N parse(Iterable<E> xmlDom, S schema);
-
-
 }
diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/ToNormalizedNodeParserFactory.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/ToNormalizedNodeParserFactory.java
new file mode 100644 (file)
index 0000000..f99cbcf
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2013 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.data.impl.schema.transform;
+
+import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode;
+import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode;
+import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
+import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
+import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode;
+import org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode;
+import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
+import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
+import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
+import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
+
+/**
+ * Factory for different normalized node parsers.
+ *
+ * @param <E>
+ *            type of element to be parsed into NormalizedNode
+ */
+public interface ToNormalizedNodeParserFactory<E> {
+       ToNormalizedNodeParser<E, AugmentationNode, AugmentationSchema> getAugmentationNodeParser();
+       ToNormalizedNodeParser<E, ChoiceNode, org.opendaylight.yangtools.yang.model.api.ChoiceNode> getChoiceNodeParser();
+       ToNormalizedNodeParser<E, ContainerNode, ContainerSchemaNode> getContainerNodeParser();
+       ToNormalizedNodeParser<E, LeafNode<?>, LeafSchemaNode> getLeafNodeParser();
+       ToNormalizedNodeParser<E, LeafSetEntryNode<?>, LeafListSchemaNode> getLeafSetEntryNodeParser();
+       ToNormalizedNodeParser<E, LeafSetNode<?>, LeafListSchemaNode> getLeafSetNodeParser();
+       ToNormalizedNodeParser<E, MapEntryNode, ListSchemaNode> getMapEntryNodeParser();
+       ToNormalizedNodeParser<E, MapNode, ListSchemaNode> getMapNodeParser();
+}
index e18db0dba2cad86b6d6f03fd6025369d2c4e904b..40722b3aee8a15c05f37c9974e475f7fc67d5478 100644 (file)
@@ -9,13 +9,8 @@ package org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser;
 
 import java.util.List;
 
-import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
 import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
-import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
-import org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode;
-import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.transform.ToNormalizedNodeParser;
+import org.opendaylight.yangtools.yang.data.impl.schema.transform.ToNormalizedNodeParserFactory;
 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
 import org.opendaylight.yangtools.yang.model.api.ChoiceNode;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
@@ -40,39 +35,31 @@ public interface NodeParserDispatcher<E> {
      * The same instance of parser can be provided in case it is immutable.
      */
     public static abstract class BaseNodeParserDispatcher<E> implements NodeParserDispatcher<E> {
+        private final ToNormalizedNodeParserFactory<E> factory;
+
+        protected BaseNodeParserDispatcher(final ToNormalizedNodeParserFactory<E> factory) {
+            this.factory = Preconditions.checkNotNull(factory);
+        }
 
         @Override
         public final DataContainerChild<?, ?> dispatchChildElement(Object schema, List<E> childNodes) {
             Preconditions.checkArgument(childNodes.isEmpty() == false);
 
             if (schema instanceof ContainerSchemaNode) {
-                return getContainerNodeParser().parse(childNodes, (ContainerSchemaNode) schema);
+                return factory.getContainerNodeParser().parse(childNodes, (ContainerSchemaNode) schema);
             } else if (schema instanceof LeafSchemaNode) {
-                return getLeafNodeParser().parse(childNodes, (LeafSchemaNode) schema);
+                return factory.getLeafNodeParser().parse(childNodes, (LeafSchemaNode) schema);
             } else if (schema instanceof LeafListSchemaNode) {
-                return getLeafSetNodeParser().parse(childNodes, (LeafListSchemaNode) schema);
+                return factory.getLeafSetNodeParser().parse(childNodes, (LeafListSchemaNode) schema);
             } else if (schema instanceof ListSchemaNode) {
-                return getMapNodeParser().parse(childNodes, (ListSchemaNode) schema);
+                return factory.getMapNodeParser().parse(childNodes, (ListSchemaNode) schema);
             } else if (schema instanceof ChoiceNode) {
-                return getChoiceNodeParser().parse(childNodes, (ChoiceNode) schema);
+                return factory.getChoiceNodeParser().parse(childNodes, (ChoiceNode) schema);
             } else if (schema instanceof AugmentationSchema) {
-                return getAugmentationNodeParser().parse(childNodes, (AugmentationSchema) schema);
+                return factory.getAugmentationNodeParser().parse(childNodes, (AugmentationSchema) schema);
             }
 
             throw new IllegalArgumentException("Unable to parse node, unknown schema type: " + schema.getClass());
         }
-
-        protected abstract ToNormalizedNodeParser<E, ContainerNode, ContainerSchemaNode> getContainerNodeParser();
-
-        protected abstract ToNormalizedNodeParser<E, LeafNode<?>, LeafSchemaNode> getLeafNodeParser();
-
-        protected abstract ToNormalizedNodeParser<E, LeafSetNode<?>, LeafListSchemaNode> getLeafSetNodeParser();
-
-        protected abstract ToNormalizedNodeParser<E, MapNode, ListSchemaNode> getMapNodeParser();
-
-        protected abstract ToNormalizedNodeParser<E, org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode, ChoiceNode> getChoiceNodeParser();
-
-        protected abstract ToNormalizedNodeParser<E, AugmentationNode, AugmentationSchema> getAugmentationNodeParser();
-
     }
 }
index e19b625ef2f266bb2559fb2914ee76b8756559d0..9c1adfc6230568bc7f0592539ca7df3f42c31ddb 100644 (file)
@@ -16,7 +16,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MixinNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.transform.FromNormalizedNodeSerializer;
+import org.opendaylight.yangtools.yang.data.impl.schema.transform.FromNormalizedNodeSerializerFactory;
 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
@@ -42,6 +42,11 @@ public interface NodeSerializerDispatcher<E> {
      * The same instance of serializer can be provided in case it is immutable.
      */
     public static abstract class BaseNodeSerializerDispatcher<E> implements NodeSerializerDispatcher<E> {
+        private final FromNormalizedNodeSerializerFactory<E> factory;
+
+        protected BaseNodeSerializerDispatcher(final FromNormalizedNodeSerializerFactory<E> factory) {
+            this.factory = Preconditions.checkNotNull(factory);
+        }
 
         @Override
         public final Iterable<E> dispatchChildElement(Object childSchema,
@@ -67,7 +72,7 @@ public interface NodeSerializerDispatcher<E> {
         private Iterable<E> onAugmentationSchema(Object childSchema,
                 DataContainerChild<? extends InstanceIdentifier.PathArgument, ?> dataContainerChild) {
             checkSchemaCompatibility(childSchema, AugmentationSchema.class, dataContainerChild);
-            return getAugmentationNodeSerializer().serialize((AugmentationSchema) childSchema,
+            return factory.getAugmentationNodeSerializer().serialize((AugmentationSchema) childSchema,
                     (AugmentationNode) dataContainerChild);
         }
 
@@ -75,7 +80,7 @@ public interface NodeSerializerDispatcher<E> {
                 DataContainerChild<? extends InstanceIdentifier.PathArgument, ?> dataContainerChild) {
             checkSchemaCompatibility(childSchema, org.opendaylight.yangtools.yang.model.api.ChoiceNode.class,
                     dataContainerChild);
-            return getChoiceNodeSerializer()
+            return factory.getChoiceNodeSerializer()
                     .serialize((org.opendaylight.yangtools.yang.model.api.ChoiceNode) childSchema,
                             (ChoiceNode) dataContainerChild);
         }
@@ -83,20 +88,20 @@ public interface NodeSerializerDispatcher<E> {
         private Iterable<E> onListNode(Object childSchema,
                 DataContainerChild<? extends InstanceIdentifier.PathArgument, ?> dataContainerChild) {
             checkSchemaCompatibility(childSchema, ListSchemaNode.class, dataContainerChild);
-            return getMapNodeSerializer().serialize((ListSchemaNode) childSchema, (MapNode) dataContainerChild);
+            return factory.getMapNodeSerializer().serialize((ListSchemaNode) childSchema, (MapNode) dataContainerChild);
         }
 
         private Iterable<E> onLeafListNode(Object childSchema,
                 DataContainerChild<? extends InstanceIdentifier.PathArgument, ?> dataContainerChild) {
             checkSchemaCompatibility(childSchema, LeafListSchemaNode.class, dataContainerChild);
-            return getLeafSetNodeSerializer().serialize((LeafListSchemaNode) childSchema,
+            return factory.getLeafSetNodeSerializer().serialize((LeafListSchemaNode) childSchema,
                     (LeafSetNode<?>) dataContainerChild);
         }
 
         private Iterable<E> onLeafNode(Object childSchema,
                 DataContainerChild<? extends InstanceIdentifier.PathArgument, ?> dataContainerChild) {
             checkSchemaCompatibility(childSchema, LeafSchemaNode.class, dataContainerChild);
-            Iterable<E> elements = getLeafNodeSerializer().serialize((LeafSchemaNode) childSchema,
+            Iterable<E> elements = factory.getLeafNodeSerializer().serialize((LeafSchemaNode) childSchema,
                     (LeafNode<?>) dataContainerChild);
             checkOnlyOneSerializedElement(elements, dataContainerChild);
             return elements;
@@ -114,7 +119,7 @@ public interface NodeSerializerDispatcher<E> {
                 DataContainerChild<? extends InstanceIdentifier.PathArgument, ?> dataContainerChild) {
             checkSchemaCompatibility(childSchema, ContainerSchemaNode.class, dataContainerChild);
 
-            Iterable<E> elements = getContainerNodeSerializer().serialize((ContainerSchemaNode) childSchema,
+            Iterable<E> elements = factory.getContainerNodeSerializer().serialize((ContainerSchemaNode) childSchema,
                     (ContainerNode) dataContainerChild);
             checkOnlyOneSerializedElement(elements, dataContainerChild);
             return elements;
@@ -126,17 +131,5 @@ public interface NodeSerializerDispatcher<E> {
                     "Incompatible schema: %s with node: %s, expected: %s", childSchema, dataContainerChild,
                     containerSchemaNodeClass);
         }
-
-        protected abstract FromNormalizedNodeSerializer<E, ContainerNode, ContainerSchemaNode> getContainerNodeSerializer();
-
-        protected abstract FromNormalizedNodeSerializer<E, LeafNode<?>, LeafSchemaNode> getLeafNodeSerializer();
-
-        protected abstract FromNormalizedNodeSerializer<E, LeafSetNode<?>, LeafListSchemaNode> getLeafSetNodeSerializer();
-
-        protected abstract FromNormalizedNodeSerializer<E, MapNode, ListSchemaNode> getMapNodeSerializer();
-
-        protected abstract FromNormalizedNodeSerializer<E, org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode, org.opendaylight.yangtools.yang.model.api.ChoiceNode> getChoiceNodeSerializer();
-
-        protected abstract FromNormalizedNodeSerializer<E, AugmentationNode, AugmentationSchema> getAugmentationNodeSerializer();
     }
 }
index 0b351f1baf679288a650125637d35d88faf578a8..7a5b551578ba850d88b65212b83eebfe6a793edf 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.parser;
 
 import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.impl.codec.xml.XmlCodecProvider;
 import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.AugmentationNodeBaseParser;
 import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.NodeParserDispatcher;
 import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.DomUtils;
@@ -17,12 +16,12 @@ import org.w3c.dom.Element;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.LinkedListMultimap;
 
-public final class AugmentationNodeDomParser extends AugmentationNodeBaseParser<Element> {
+final class AugmentationNodeDomParser extends AugmentationNodeBaseParser<Element> {
 
-    private final XmlCodecProvider codecProvider;
+    private final NodeParserDispatcher<Element> dispatcher;
 
-    public AugmentationNodeDomParser(XmlCodecProvider codecProvider) {
-        this.codecProvider = Preconditions.checkNotNull(codecProvider);
+    AugmentationNodeDomParser(final NodeParserDispatcher<Element> dispatcher) {
+        this.dispatcher = Preconditions.checkNotNull(dispatcher);
     }
 
     @Override
@@ -32,7 +31,7 @@ public final class AugmentationNodeDomParser extends AugmentationNodeBaseParser<
 
     @Override
     protected NodeParserDispatcher<Element> getDispatcher() {
-        return DomNodeDispatcher.getInstance(codecProvider);
+        return dispatcher;
     }
 
 }
index 5e077207aa5e96db52ce6a0d80f455f4469a41fc..97e8a6171cdaaf0d82c1031247c181385fcbb0d6 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.parser;
 
 import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.impl.codec.xml.XmlCodecProvider;
 import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.ChoiceNodeBaseParser;
 import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.NodeParserDispatcher;
 import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.DomUtils;
@@ -17,12 +16,12 @@ import org.w3c.dom.Element;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.LinkedListMultimap;
 
-public final class ChoiceNodeDomParser extends ChoiceNodeBaseParser<Element> {
+final class ChoiceNodeDomParser extends ChoiceNodeBaseParser<Element> {
 
-    private final XmlCodecProvider codecProvider;
+    private final NodeParserDispatcher<Element> dispatcher;
 
-    public ChoiceNodeDomParser(XmlCodecProvider codecProvider) {
-        this.codecProvider = Preconditions.checkNotNull(codecProvider);
+    ChoiceNodeDomParser(NodeParserDispatcher<Element> dispatcher) {
+        this.dispatcher = Preconditions.checkNotNull(dispatcher);
     }
 
     @Override
@@ -32,7 +31,6 @@ public final class ChoiceNodeDomParser extends ChoiceNodeBaseParser<Element> {
 
     @Override
     protected NodeParserDispatcher<Element> getDispatcher() {
-        return DomNodeDispatcher.getInstance(codecProvider);
+        return dispatcher;
     }
-
 }
index 2b0b63c9f583991fc234c2072d92a3d88e077292..c03113af22cd5cbeae7c30feff0aa655082ea3ba 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.parser;
 import java.util.Map;
 
 import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.impl.codec.xml.XmlCodecProvider;
 import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.ContainerNodeBaseParser;
 import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.NodeParserDispatcher;
 import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.DomUtils;
@@ -19,13 +18,14 @@ import org.w3c.dom.Element;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.LinkedListMultimap;
 
-public final class ContainerNodeDomParser extends ContainerNodeBaseParser<Element> {
+final class ContainerNodeDomParser extends ContainerNodeBaseParser<Element> {
 
-    private final XmlCodecProvider codecProvider;
+    private final NodeParserDispatcher<Element> dispatcher;
 
-    public ContainerNodeDomParser(XmlCodecProvider codecProvider) {
-        this.codecProvider = Preconditions.checkNotNull(codecProvider);
+    ContainerNodeDomParser(final NodeParserDispatcher<Element> dispatcher) {
+        this.dispatcher = Preconditions.checkNotNull(dispatcher);
     }
+
     @Override
     protected Map<QName, String> getAttributes(Element element) {
         return DomUtils.toAttributes(element.getAttributes());
@@ -33,7 +33,7 @@ public final class ContainerNodeDomParser extends ContainerNodeBaseParser<Elemen
 
     @Override
     protected NodeParserDispatcher<Element> getDispatcher() {
-        return DomNodeDispatcher.getInstance(codecProvider);
+        return dispatcher;
     }
 
     @Override
diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/DomNodeDispatcher.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/DomNodeDispatcher.java
deleted file mode 100644 (file)
index ae725f5..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-package org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.parser;
-
-import org.opendaylight.yangtools.yang.data.api.schema.*;
-import org.opendaylight.yangtools.yang.data.impl.codec.xml.XmlCodecProvider;
-import org.opendaylight.yangtools.yang.data.impl.schema.transform.ToNormalizedNodeParser;
-import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.NodeParserDispatcher;
-import org.opendaylight.yangtools.yang.model.api.*;
-import org.opendaylight.yangtools.yang.model.api.ChoiceNode;
-import org.w3c.dom.Element;
-
-public class DomNodeDispatcher extends NodeParserDispatcher.BaseNodeParserDispatcher<Element> {
-
-        private final ContainerNodeDomParser containerNodeDomParser;
-        private final LeafNodeDomParser leafNodeDomParser;
-        private final LeafSetNodeDomParser leafSetNodeDomParser;
-        private final MapNodeDomParser mapNodeDomParser;
-        private final ChoiceNodeDomParser choiceNodeDomParser;
-        private final AugmentationNodeDomParser augmentationNodeDomParser;
-
-        private static DomNodeDispatcher instance = null;
-
-        private DomNodeDispatcher(XmlCodecProvider codecProvider) {
-            leafNodeDomParser = new LeafNodeDomParser(codecProvider);
-            containerNodeDomParser = new ContainerNodeDomParser(codecProvider);
-            leafSetNodeDomParser = new LeafSetNodeDomParser(new LeafSetEntryNodeDomParser(codecProvider));
-            mapNodeDomParser = new MapNodeDomParser(new MapEntryNodeDomParser(codecProvider));
-            choiceNodeDomParser = new ChoiceNodeDomParser(codecProvider);
-            augmentationNodeDomParser = new AugmentationNodeDomParser(codecProvider);
-        }
-
-        @Override
-        protected ToNormalizedNodeParser<Element, ContainerNode, ContainerSchemaNode> getContainerNodeParser() {
-            return containerNodeDomParser;
-        }
-
-        @Override
-        protected ToNormalizedNodeParser<Element, LeafNode<?>, LeafSchemaNode> getLeafNodeParser() {
-            return leafNodeDomParser;
-        }
-
-        @Override
-        protected ToNormalizedNodeParser<Element, LeafSetNode<?>, LeafListSchemaNode> getLeafSetNodeParser() {
-            return leafSetNodeDomParser;
-        }
-
-        @Override
-        protected ToNormalizedNodeParser<Element, MapNode, ListSchemaNode> getMapNodeParser() {
-            return mapNodeDomParser;
-        }
-
-        @Override
-        protected ToNormalizedNodeParser<Element, org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode, ChoiceNode> getChoiceNodeParser() {
-            return choiceNodeDomParser;
-        }
-
-        @Override
-        protected ToNormalizedNodeParser<Element, AugmentationNode, AugmentationSchema> getAugmentationNodeParser() {
-            return augmentationNodeDomParser;
-        }
-
-        public static NodeParserDispatcher<Element> getInstance(XmlCodecProvider codecProvider) {
-            if (instance == null) {
-                instance = new DomNodeDispatcher(codecProvider);
-            }
-            return instance;
-        }
-}
diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/DomToNormalizedNodeParserFactory.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/DomToNormalizedNodeParserFactory.java
new file mode 100644 (file)
index 0000000..53d68f8
--- /dev/null
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) 2014 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.data.impl.schema.transform.dom.parser;
+
+import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode;
+import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode;
+import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
+import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
+import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode;
+import org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode;
+import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
+import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
+import org.opendaylight.yangtools.yang.data.impl.codec.xml.XmlCodecProvider;
+import org.opendaylight.yangtools.yang.data.impl.schema.transform.ToNormalizedNodeParser;
+import org.opendaylight.yangtools.yang.data.impl.schema.transform.ToNormalizedNodeParserFactory;
+import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.NodeParserDispatcher;
+import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
+import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
+import org.w3c.dom.Element;
+
+public final class DomToNormalizedNodeParserFactory implements ToNormalizedNodeParserFactory<Element> {
+    private final AugmentationNodeDomParser augmentationNodeParser;
+    private final ChoiceNodeDomParser choiceNodeParser;
+    private final ContainerNodeDomParser containerNodeParser;
+    private final LeafNodeDomParser leafNodeParser;
+    private final LeafSetEntryNodeDomParser leafSetEntryNodeParser;
+    private final LeafSetNodeDomParser leafSetNodeParser;
+    private final MapNodeDomParser mapNodeParser;
+    private final MapEntryNodeDomParser mapEntryNodeParser;
+
+    private DomToNormalizedNodeParserFactory(final XmlCodecProvider codecProvider) {
+        leafNodeParser = new LeafNodeDomParser(codecProvider);
+        leafSetEntryNodeParser = new LeafSetEntryNodeDomParser(codecProvider);
+        leafSetNodeParser = new LeafSetNodeDomParser(leafSetEntryNodeParser);
+
+        final NodeParserDispatcher<Element> dispatcher = new NodeParserDispatcher.BaseNodeParserDispatcher<Element>(this) {
+
+        };
+
+        containerNodeParser = new ContainerNodeDomParser(dispatcher);
+        mapEntryNodeParser = new MapEntryNodeDomParser(dispatcher);
+        mapNodeParser = new MapNodeDomParser(mapEntryNodeParser);
+        choiceNodeParser = new ChoiceNodeDomParser(dispatcher);
+        augmentationNodeParser = new AugmentationNodeDomParser(dispatcher);
+    }
+
+    public static DomToNormalizedNodeParserFactory getInstance(final XmlCodecProvider codecProvider) {
+        return new DomToNormalizedNodeParserFactory(codecProvider);
+    }
+
+    @Override
+    public ToNormalizedNodeParser<Element, AugmentationNode, AugmentationSchema> getAugmentationNodeParser() {
+        return augmentationNodeParser;
+    }
+
+    @Override
+    public ToNormalizedNodeParser<Element, ChoiceNode, org.opendaylight.yangtools.yang.model.api.ChoiceNode> getChoiceNodeParser() {
+        return choiceNodeParser;
+    }
+
+    @Override
+    public ToNormalizedNodeParser<Element, ContainerNode, ContainerSchemaNode> getContainerNodeParser() {
+        return containerNodeParser;
+    }
+
+    @Override
+    public ToNormalizedNodeParser<Element, LeafNode<?>, LeafSchemaNode> getLeafNodeParser() {
+        return leafNodeParser;
+    }
+
+    @Override
+    public ToNormalizedNodeParser<Element, LeafSetEntryNode<?>, LeafListSchemaNode> getLeafSetEntryNodeParser() {
+        return leafSetEntryNodeParser;
+    }
+
+    @Override
+    public ToNormalizedNodeParser<Element, LeafSetNode<?>, LeafListSchemaNode> getLeafSetNodeParser() {
+        return leafSetNodeParser;
+    }
+
+    @Override
+    public ToNormalizedNodeParser<Element, MapEntryNode, ListSchemaNode> getMapEntryNodeParser() {
+        return mapEntryNodeParser;
+    }
+
+    @Override
+    public ToNormalizedNodeParser<Element, MapNode, ListSchemaNode> getMapNodeParser() {
+        return mapNodeParser;
+    }
+}
index 59ad9f84026e477df16ed3058e19f2725642ed84..6c5d064268b09270ed80ef40522d932af19433c1 100644 (file)
@@ -18,11 +18,11 @@ import org.w3c.dom.Element;
 
 import com.google.common.base.Preconditions;
 
-public class LeafNodeDomParser extends LeafNodeBaseParser<Element> {
+final class LeafNodeDomParser extends LeafNodeBaseParser<Element> {
 
     private final XmlCodecProvider codecProvider;
 
-    public LeafNodeDomParser(XmlCodecProvider codecProvider) {
+    LeafNodeDomParser(XmlCodecProvider codecProvider) {
         this.codecProvider = Preconditions.checkNotNull(codecProvider);
     }
 
index 047cd2b2821dbc2c5ae6a4911c42409f55242bb4..2b224a0e718b5064c6c2c32d259ebf29e3abffbc 100644 (file)
@@ -9,7 +9,6 @@ package org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.parser;
 
 import java.util.Map;
 
-import com.google.common.base.Preconditions;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.impl.codec.xml.XmlCodecProvider;
 import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.LeafSetEntryNodeBaseParser;
@@ -17,11 +16,13 @@ import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.DomUtils;
 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
 import org.w3c.dom.Element;
 
-public class LeafSetEntryNodeDomParser extends LeafSetEntryNodeBaseParser<Element> {
+import com.google.common.base.Preconditions;
+
+final class LeafSetEntryNodeDomParser extends LeafSetEntryNodeBaseParser<Element> {
 
     private final XmlCodecProvider codecProvider;
 
-    public LeafSetEntryNodeDomParser(XmlCodecProvider codecProvider) {
+    LeafSetEntryNodeDomParser(XmlCodecProvider codecProvider) {
         this.codecProvider = Preconditions.checkNotNull(codecProvider);
     }
 
index 8a771aac9c6712cdd6cb8c8de6c6e5dbba1bf9ba..8f6ee6ee2152fbf1ed60f9f4afa9e9433f8c627d 100644 (file)
@@ -13,11 +13,11 @@ import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.Le
 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
 import org.w3c.dom.Element;
 
-public class LeafSetNodeDomParser extends LeafSetNodeBaseParser<Element> {
+final class LeafSetNodeDomParser extends LeafSetNodeBaseParser<Element> {
 
     private final LeafSetEntryNodeDomParser leafSetEntryNodeBaseParser;
 
-    public LeafSetNodeDomParser(LeafSetEntryNodeDomParser leafSetEntryNodeBaseParser) {
+    LeafSetNodeDomParser(LeafSetEntryNodeDomParser leafSetEntryNodeBaseParser) {
         this.leafSetEntryNodeBaseParser = leafSetEntryNodeBaseParser;
     }
 
index e3c5e7d3281a8e9bd87850535a04a8ebfedc2e51..65dde5cf5ba1a3a6801f04aacf82ae8f1de07a62 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.parser;
 import java.util.Map;
 
 import org.opendaylight.yangtools.yang.common.QName;
-import org.opendaylight.yangtools.yang.data.impl.codec.xml.XmlCodecProvider;
 import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.MapEntryNodeBaseParser;
 import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.NodeParserDispatcher;
 import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.DomUtils;
@@ -19,12 +18,12 @@ import org.w3c.dom.Element;
 import com.google.common.base.Preconditions;
 import com.google.common.collect.LinkedListMultimap;
 
-public final class MapEntryNodeDomParser extends MapEntryNodeBaseParser<Element> {
+final class MapEntryNodeDomParser extends MapEntryNodeBaseParser<Element> {
 
-    private final XmlCodecProvider codecProvider;
+    private final NodeParserDispatcher<Element> dispatcher;
 
-    public MapEntryNodeDomParser(XmlCodecProvider codecProvider) {
-        this.codecProvider = Preconditions.checkNotNull(codecProvider);
+    MapEntryNodeDomParser(final NodeParserDispatcher<Element> dispatcher) {
+        this.dispatcher = Preconditions.checkNotNull(dispatcher);
     }
 
     @Override
@@ -34,7 +33,7 @@ public final class MapEntryNodeDomParser extends MapEntryNodeBaseParser<Element>
 
     @Override
     protected NodeParserDispatcher<Element> getDispatcher() {
-        return DomNodeDispatcher.getInstance(codecProvider);
+        return dispatcher;
     }
 
     @Override
index 1549269aaf97b923f952baa5373e961db79da2e5..ddc7163556877ac84b47f322968e8aaf1c2e7e83 100644 (file)
@@ -13,11 +13,11 @@ import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.parser.Ma
 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
 import org.w3c.dom.Element;
 
-public final class MapNodeDomParser extends MapNodeBaseParser<Element> {
+final class MapNodeDomParser extends MapNodeBaseParser<Element> {
 
     private final MapEntryNodeDomParser mapEntryParser;
 
-    public MapNodeDomParser(MapEntryNodeDomParser mapEntryParser) {
+    MapNodeDomParser(MapEntryNodeDomParser mapEntryParser) {
         this.mapEntryParser = mapEntryParser;
     }
 
index fbffc03abbfd1ae8c40287e42a567d944822172b..99547406bae3862124ad616cdde2342ef990c3d1 100644 (file)
@@ -13,12 +13,12 @@ import org.w3c.dom.Element;
 
 import com.google.common.base.Preconditions;
 
-public class AugmentationNodeDomSerializer extends
+final class AugmentationNodeDomSerializer extends
         AugmentationNodeBaseSerializer<Element> {
 
     private final NodeSerializerDispatcher<Element> dispatcher;
 
-    public AugmentationNodeDomSerializer(NodeSerializerDispatcher<Element> dispatcher) {
+    AugmentationNodeDomSerializer(NodeSerializerDispatcher<Element> dispatcher) {
         this.dispatcher = Preconditions.checkNotNull(dispatcher);
     }
 
index 1db6a8b6639592f5581f7810db64f418f631fe5f..8579202e515a3a185dec973dc3f6d4804bc9bb27 100644 (file)
@@ -13,10 +13,10 @@ import org.w3c.dom.Element;
 
 import com.google.common.base.Preconditions;
 
-public class ChoiceNodeDomSerializer extends ChoiceNodeBaseSerializer<Element> {
+final class ChoiceNodeDomSerializer extends ChoiceNodeBaseSerializer<Element> {
     private final NodeSerializerDispatcher<Element> dispatcher;
 
-    public ChoiceNodeDomSerializer(final NodeSerializerDispatcher<Element> dispatcher) {
+    ChoiceNodeDomSerializer(final NodeSerializerDispatcher<Element> dispatcher) {
         this.dispatcher = Preconditions.checkNotNull(dispatcher);
     }
 
index c5641a038a889164d556d112471b01224ff1fb23..3144806b9c37922e02cc799e195c8aa02b5f2bd2 100644 (file)
@@ -19,13 +19,13 @@ import org.w3c.dom.Element;
 
 import com.google.common.base.Preconditions;
 
-public class ContainerNodeDomSerializer extends
+final class ContainerNodeDomSerializer extends
         ContainerNodeBaseSerializer<Element> {
 
-    private final Document doc;
     private final NodeSerializerDispatcher<Element> dispatcher;
+    private final Document doc;
 
-    public ContainerNodeDomSerializer(final Document doc, final NodeSerializerDispatcher<Element> dispatcher) {
+    ContainerNodeDomSerializer(final Document doc, final NodeSerializerDispatcher<Element> dispatcher) {
         this.doc = Preconditions.checkNotNull(doc);
         this.dispatcher = Preconditions.checkNotNull(dispatcher);
     }
diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/DomFromNormalizedNodeSerializerFactory.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/DomFromNormalizedNodeSerializerFactory.java
new file mode 100644 (file)
index 0000000..0a5aba7
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 2014 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.data.impl.schema.transform.dom.serializer;
+
+import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode;
+import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode;
+import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
+import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
+import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode;
+import org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode;
+import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
+import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
+import org.opendaylight.yangtools.yang.data.impl.codec.xml.XmlCodecProvider;
+import org.opendaylight.yangtools.yang.data.impl.schema.transform.FromNormalizedNodeSerializer;
+import org.opendaylight.yangtools.yang.data.impl.schema.transform.FromNormalizedNodeSerializerFactory;
+import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.serializer.NodeSerializerDispatcher;
+import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
+import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
+import org.w3c.dom.Document;
+import org.w3c.dom.Element;
+
+public final class DomFromNormalizedNodeSerializerFactory implements FromNormalizedNodeSerializerFactory<Element> {
+    private final ContainerNodeDomSerializer containerSerializer;
+    private final ChoiceNodeDomSerializer choiceSerializer;
+    private final AugmentationNodeDomSerializer augmentSerializer;
+    private final LeafNodeDomSerializer leafNodeSerializer;
+    private final LeafSetNodeDomSerializer leafSetSerializer;
+    private final MapNodeDomSerializer mapNodeSerializer;
+    private final LeafSetEntryNodeDomSerializer leafSetEntryNodeSerializer;
+       private final MapEntryNodeDomSerializer mapEntryNodeSerializer;
+
+       private DomFromNormalizedNodeSerializerFactory(final Document doc, final XmlCodecProvider codecProvider) {
+               final NodeSerializerDispatcher.BaseNodeSerializerDispatcher<Element> dispatcher = new NodeSerializerDispatcher.BaseNodeSerializerDispatcher<Element>(this) {
+
+               };
+
+        containerSerializer = new ContainerNodeDomSerializer(doc, dispatcher);
+        choiceSerializer = new ChoiceNodeDomSerializer(dispatcher);
+        augmentSerializer = new AugmentationNodeDomSerializer(dispatcher);
+        leafNodeSerializer = new LeafNodeDomSerializer(doc, codecProvider);
+
+        leafSetEntryNodeSerializer = new LeafSetEntryNodeDomSerializer(doc, codecProvider);
+        leafSetSerializer = new LeafSetNodeDomSerializer(leafSetEntryNodeSerializer);
+
+        mapEntryNodeSerializer = new MapEntryNodeDomSerializer(doc, dispatcher);
+        mapNodeSerializer = new MapNodeDomSerializer(mapEntryNodeSerializer);
+       }
+
+       public static DomFromNormalizedNodeSerializerFactory getInstance(final Document doc, final XmlCodecProvider codecProvider) {
+               return new DomFromNormalizedNodeSerializerFactory(doc, codecProvider);
+       }
+
+       @Override
+       public FromNormalizedNodeSerializer<Element, AugmentationNode, AugmentationSchema> getAugmentationNodeSerializer() {
+               return augmentSerializer;
+       }
+
+       @Override
+       public FromNormalizedNodeSerializer<Element, ChoiceNode, org.opendaylight.yangtools.yang.model.api.ChoiceNode> getChoiceNodeSerializer() {
+               return choiceSerializer;
+       }
+
+       @Override
+       public FromNormalizedNodeSerializer<Element, ContainerNode, ContainerSchemaNode> getContainerNodeSerializer() {
+               return containerSerializer;
+       }
+
+       @Override
+       public FromNormalizedNodeSerializer<Element, LeafNode<?>, LeafSchemaNode> getLeafNodeSerializer() {
+               return leafNodeSerializer;
+       }
+
+       @Override
+       public FromNormalizedNodeSerializer<Element, LeafSetEntryNode<?>, LeafListSchemaNode> getLeafSetEntryNodeSerializer() {
+               return leafSetEntryNodeSerializer;
+       }
+
+       @Override
+       public FromNormalizedNodeSerializer<Element, LeafSetNode<?>, LeafListSchemaNode> getLeafSetNodeSerializer() {
+               return leafSetSerializer;
+       }
+
+       @Override
+       public FromNormalizedNodeSerializer<Element, MapEntryNode, ListSchemaNode> getMapEntryNodeSerializer() {
+               return mapEntryNodeSerializer;
+       }
+
+       @Override
+       public FromNormalizedNodeSerializer<Element, MapNode, ListSchemaNode> getMapNodeSerializer() {
+               return mapNodeSerializer;
+       }
+
+}
diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/DomNodeSerializerDispatcher.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/DomNodeSerializerDispatcher.java
deleted file mode 100644 (file)
index 9dee602..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (c) 2013 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.data.impl.schema.transform.dom.serializer;
-
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
-
-import org.opendaylight.yangtools.yang.data.api.schema.AugmentationNode;
-import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode;
-import org.opendaylight.yangtools.yang.data.api.schema.ContainerNode;
-import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
-import org.opendaylight.yangtools.yang.data.api.schema.LeafSetNode;
-import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
-import org.opendaylight.yangtools.yang.data.impl.codec.xml.XmlCodecProvider;
-import org.opendaylight.yangtools.yang.data.impl.schema.transform.FromNormalizedNodeSerializer;
-import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.serializer.NodeSerializerDispatcher;
-import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
-import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
-import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
-import org.w3c.dom.Document;
-import org.w3c.dom.Element;
-
-import com.google.common.cache.Cache;
-import com.google.common.cache.CacheBuilder;
-
-final class DomNodeSerializerDispatcher extends NodeSerializerDispatcher.BaseNodeSerializerDispatcher<Element> {
-    private static final Cache<Document, DomNodeSerializerDispatcher> dispatcherCache =
-            CacheBuilder.newBuilder().weakKeys().build();
-
-    private final FromNormalizedNodeSerializer<Element, ContainerNode, ContainerSchemaNode> containerSerializer;
-    private final FromNormalizedNodeSerializer<Element, ChoiceNode, org.opendaylight.yangtools.yang.model.api.ChoiceNode> choiceSerializer;
-    private final FromNormalizedNodeSerializer<Element, AugmentationNode, AugmentationSchema> augmentSerializer;
-    private final FromNormalizedNodeSerializer<Element, LeafNode<?>, LeafSchemaNode> leafNodeSerializer;
-    private final FromNormalizedNodeSerializer<Element, LeafSetNode<?>, LeafListSchemaNode> leafSetSerializer;
-    private final FromNormalizedNodeSerializer<Element, MapNode, ListSchemaNode> mapNodeSerializer;
-
-    DomNodeSerializerDispatcher(Document doc, XmlCodecProvider codecProvider) {
-        containerSerializer = new ContainerNodeDomSerializer(doc, this);
-        choiceSerializer = new ChoiceNodeDomSerializer(this);
-        augmentSerializer = new AugmentationNodeDomSerializer(this);
-        leafNodeSerializer = new LeafNodeDomSerializer(doc, codecProvider);
-        leafSetSerializer = new LeafSetNodeDomSerializer(new LeafSetEntryNodeDomSerializer(doc, codecProvider));
-        mapNodeSerializer = new MapNodeDomSerializer(new MapEntryNodeDomSerializer(doc, this));
-    }
-
-    // FIXME: Callers should really grow a proper (per-document) lifecycle and not rely on this
-    @Deprecated
-    static DomNodeSerializerDispatcher getInstance(final Document doc, final XmlCodecProvider codecProvider) {
-        // DOM does not allow to add elements to one document from another, so maintain a cache
-        // on a per-document case.
-        try {
-            return dispatcherCache.get(doc, new Callable<DomNodeSerializerDispatcher>() {
-                @Override
-                public DomNodeSerializerDispatcher call() {
-                    return new DomNodeSerializerDispatcher(doc, codecProvider);
-                }
-            });
-        } catch (ExecutionException e) {
-            throw new IllegalStateException("Failed to instantiated a dispatcher", e);
-        }
-    }
-
-    @Override
-    protected FromNormalizedNodeSerializer<Element, ContainerNode, ContainerSchemaNode> getContainerNodeSerializer() {
-        return containerSerializer;
-    }
-
-    @Override
-    protected FromNormalizedNodeSerializer<Element, LeafNode<?>, LeafSchemaNode> getLeafNodeSerializer() {
-        return leafNodeSerializer;
-    }
-
-    @Override
-    protected FromNormalizedNodeSerializer<Element, LeafSetNode<?>, LeafListSchemaNode> getLeafSetNodeSerializer() {
-        return leafSetSerializer;
-    }
-
-    @Override
-    protected FromNormalizedNodeSerializer<Element, MapNode, ListSchemaNode> getMapNodeSerializer() {
-        return mapNodeSerializer;
-    }
-
-    @Override
-    protected FromNormalizedNodeSerializer<Element, ChoiceNode, org.opendaylight.yangtools.yang.model.api.ChoiceNode> getChoiceNodeSerializer() {
-        return choiceSerializer;
-    }
-
-    @Override
-    protected FromNormalizedNodeSerializer<Element, AugmentationNode, AugmentationSchema> getAugmentationNodeSerializer() {
-        return augmentSerializer;
-    }
-}
index acdb7eb73854951a4931ad809b7ff3aa308fc956..83fcb8dd2073f95686598703aab3fe37a792478f 100644 (file)
@@ -7,22 +7,22 @@
  */
 package org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.serializer;
 
-import com.google.common.base.Preconditions;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafNode;
 import org.opendaylight.yangtools.yang.data.impl.codec.xml.XmlCodecProvider;
 import org.opendaylight.yangtools.yang.data.impl.codec.xml.XmlDocumentUtils;
-import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.DomUtils;
 import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.serializer.LeafNodeBaseSerializer;
+import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.DomUtils;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
-public class LeafNodeDomSerializer extends LeafNodeBaseSerializer<Element> {
+import com.google.common.base.Preconditions;
 
-    private final Document doc;
+final class LeafNodeDomSerializer extends LeafNodeBaseSerializer<Element> {
     private final XmlCodecProvider codecProvider;
+    private final Document doc;
 
-    public LeafNodeDomSerializer(Document doc, XmlCodecProvider codecProvider) {
+    LeafNodeDomSerializer(Document doc, XmlCodecProvider codecProvider) {
         this.doc = Preconditions.checkNotNull(doc);
         this.codecProvider = Preconditions.checkNotNull(codecProvider);
     }
index 98908cca54331525fde196f27b1067b762934162..fcc04c2f3934ca2bb8a921c033d2f828712d7f72 100644 (file)
@@ -7,23 +7,24 @@
  */
 package org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.serializer;
 
-import com.google.common.base.Preconditions;
 import org.opendaylight.yangtools.yang.data.api.schema.LeafSetEntryNode;
 import org.opendaylight.yangtools.yang.data.impl.codec.xml.XmlCodecProvider;
 import org.opendaylight.yangtools.yang.data.impl.codec.xml.XmlDocumentUtils;
-import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.DomUtils;
 import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.serializer.LeafSetEntryNodeBaseSerializer;
+import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.DomUtils;
 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
 import org.w3c.dom.Document;
 import org.w3c.dom.Element;
 
-public class LeafSetEntryNodeDomSerializer extends
+import com.google.common.base.Preconditions;
+
+final class LeafSetEntryNodeDomSerializer extends
         LeafSetEntryNodeBaseSerializer<Element> {
 
     private final Document doc;
     private final XmlCodecProvider codecProvider;
 
-    public LeafSetEntryNodeDomSerializer(Document doc, XmlCodecProvider codecProvider) {
+    LeafSetEntryNodeDomSerializer(Document doc, XmlCodecProvider codecProvider) {
         this.doc = Preconditions.checkNotNull(doc);
         this.codecProvider = Preconditions.checkNotNull(codecProvider);
     }
index ae49d68aa5b8aebdd2be66b834ed25a81a230cf8..63af56932c250e81cf7cd1d65a37533d8913592c 100644 (file)
@@ -13,12 +13,10 @@ import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.serialize
 import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
 import org.w3c.dom.Element;
 
-public class LeafSetNodeDomSerializer extends
-        LeafSetNodeBaseSerializer<Element> {
-
+final class LeafSetNodeDomSerializer extends LeafSetNodeBaseSerializer<Element> {
     private final FromNormalizedNodeSerializer<Element, LeafSetEntryNode<?>, LeafListSchemaNode> leafSetEntryNodeSerializer;
 
-    public LeafSetNodeDomSerializer(LeafSetEntryNodeDomSerializer leafSetEntryNodeSerializer) {
+    LeafSetNodeDomSerializer(LeafSetEntryNodeDomSerializer leafSetEntryNodeSerializer) {
         this.leafSetEntryNodeSerializer = leafSetEntryNodeSerializer;
     }
 
index 5e65dd8d89e34023152753137a141edde26344c1..dbe8a90fc67f3b0caffa782160a57d950e68b5ba 100644 (file)
@@ -19,13 +19,11 @@ import org.w3c.dom.Element;
 
 import com.google.common.base.Preconditions;
 
-public class MapEntryNodeDomSerializer extends
-        MapEntryNodeBaseSerializer<Element> {
-
-    private final Document doc;
+final class MapEntryNodeDomSerializer extends MapEntryNodeBaseSerializer<Element> {
     private final NodeSerializerDispatcher<Element> dispatcher;
+    private final Document doc;
 
-    public MapEntryNodeDomSerializer(final Document doc, final NodeSerializerDispatcher<Element> dispatcher) {
+    MapEntryNodeDomSerializer(final Document doc, final NodeSerializerDispatcher<Element> dispatcher) {
         this.doc = Preconditions.checkNotNull(doc);
         this.dispatcher = Preconditions.checkNotNull(dispatcher);
     }
index d1486f0d70faeb54652a56138c53259901023566..5404f193bfb69f0ec2283dbda2fee0dfe1cc5fa3 100644 (file)
@@ -13,11 +13,11 @@ import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.serialize
 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
 import org.w3c.dom.Element;
 
-public class MapNodeDomSerializer extends MapNodeBaseSerializer<Element> {
+final class MapNodeDomSerializer extends MapNodeBaseSerializer<Element> {
 
     private final FromNormalizedNodeSerializer<Element, MapEntryNode, ListSchemaNode> mapEntrySerializer;
 
-    public MapNodeDomSerializer(MapEntryNodeDomSerializer mapEntrySerializer) {
+    MapNodeDomSerializer(MapEntryNodeDomSerializer mapEntrySerializer) {
         this.mapEntrySerializer = mapEntrySerializer;
     }
 
index e6c68feee521b2e81a1a90a1efbfa5e693dc3c3d..84ca9f540079f18f05f8e904fd81abe2aa882391 100644 (file)
@@ -51,9 +51,8 @@ import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.CollectionNo
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.ListNodeBuilder;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.NormalizedNodeBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.transform.base.serializer.NodeSerializerDispatcher;
 import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.DomUtils;
-import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.parser.ContainerNodeDomParser;
+import org.opendaylight.yangtools.yang.data.impl.schema.transform.dom.parser.DomToNormalizedNodeParserFactory;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.Module;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
@@ -235,7 +234,8 @@ public class NormalizedNodeXmlTranslationTest {
     public void testTranslation() throws Exception {
         Document doc = loadDocument(xmlPath);
 
-        ContainerNode built = new ContainerNodeDomParser(DomUtils.defaultValueCodecProvider()).parse(
+        ContainerNode built =
+                DomToNormalizedNodeParserFactory.getInstance(DomUtils.defaultValueCodecProvider()).getContainerNodeParser().parse(
                 Collections.singletonList(doc.getDocumentElement()), containerNode);
 
         if (expectedNode != null)
@@ -243,11 +243,8 @@ public class NormalizedNodeXmlTranslationTest {
 
         logger.info("{}", built);
 
-        final Document newDoc = XmlDocumentUtils.getDocument();
-        final NodeSerializerDispatcher<Element> dispatcher = new DomNodeSerializerDispatcher(newDoc, DomUtils.defaultValueCodecProvider());
-
-        Iterable<Element> els = new ContainerNodeDomSerializer(newDoc,
-                dispatcher).serialize(containerNode, built);
+        Iterable<Element> els = DomFromNormalizedNodeSerializerFactory.getInstance(XmlDocumentUtils.getDocument(), DomUtils.defaultValueCodecProvider())
+                .getContainerNodeSerializer().serialize(containerNode, built);
 
         Element el = els.iterator().next();