From: Tony Tkacik Date: Tue, 25 Mar 2014 05:17:50 +0000 (+0000) Subject: Merge "Global cleanup of restconf client dependencies" X-Git-Tag: release/helium~651 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=a791edb78424e32a3b02c92491d941e092248c3f;hp=e328c5367111cfebc0fc51ba79df1429a78fade7;p=yangtools.git Merge "Global cleanup of restconf client dependencies" --- diff --git a/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/InstanceIdentifierCodecImpl.xtend b/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/InstanceIdentifierCodecImpl.xtend index d563b29de1..3396f4e3f8 100644 --- a/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/InstanceIdentifierCodecImpl.xtend +++ b/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/impl/InstanceIdentifierCodecImpl.xtend @@ -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(biArgs.size); - val baArgs = new ArrayList(biArgs.size) + val baArgs = new ArrayList(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 processedPath) { + private def dispatch InstanceIdentifier.PathArgument deserializePathArgument(NodeIdentifier argument,List 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 processedPath) { + private def dispatch InstanceIdentifier.PathArgument deserializePathArgument(NodeIdentifierWithPredicates argument,List 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 + val pathArgs = input.path as List var QName previousQName = null; val components = new ArrayList(pathArgs.size); val qnamePath = new ArrayList(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))) { diff --git a/concepts/pom.xml b/common/concepts/pom.xml similarity index 96% rename from concepts/pom.xml rename to common/concepts/pom.xml index 7c9df45b4d..9123d6ae73 100644 --- a/concepts/pom.xml +++ b/common/concepts/pom.xml @@ -11,7 +11,7 @@ org.opendaylight.yangtools - yangtools + common-parent 0.6.2-SNAPSHOT bundle diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractListenerRegistration.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractListenerRegistration.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractListenerRegistration.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractListenerRegistration.java diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractObjectRegistration.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractObjectRegistration.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractObjectRegistration.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractObjectRegistration.java diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractRegistration.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractRegistration.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractRegistration.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/AbstractRegistration.java diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/Builder.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Builder.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/Builder.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Builder.java diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/ClassBasedPropertyBuilder.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/ClassBasedPropertyBuilder.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/ClassBasedPropertyBuilder.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/ClassBasedPropertyBuilder.java diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/Codec.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Codec.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/Codec.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Codec.java diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/CompositeObjectRegistration.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/CompositeObjectRegistration.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/CompositeObjectRegistration.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/CompositeObjectRegistration.java diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/Delegator.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Delegator.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/Delegator.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Delegator.java diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/Deserializer.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Deserializer.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/Deserializer.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Deserializer.java diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/Identifiable.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Identifiable.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/Identifiable.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Identifiable.java diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/Identifier.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Identifier.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/Identifier.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Identifier.java diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/Immutable.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Immutable.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/Immutable.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Immutable.java diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/InvertibleTransformator.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/InvertibleTransformator.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/InvertibleTransformator.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/InvertibleTransformator.java diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/ListenerRegistration.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/ListenerRegistration.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/ListenerRegistration.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/ListenerRegistration.java diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/Mutable.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Mutable.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/Mutable.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Mutable.java diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/MutationBehaviour.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/MutationBehaviour.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/MutationBehaviour.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/MutationBehaviour.java diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/Namespace.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Namespace.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/Namespace.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Namespace.java diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/ObjectRegistration.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/ObjectRegistration.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/ObjectRegistration.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/ObjectRegistration.java diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/OrderedSet.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/OrderedSet.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/OrderedSet.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/OrderedSet.java diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/Path.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Path.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/Path.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Path.java 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 index 0000000000..b2c2d049e0 --- /dev/null +++ b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/ProductAwareBuilder.java @@ -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

Product type + */ +public interface ProductAwareBuilder

extends Builder

{ + /** + * 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); +} diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/Registration.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Registration.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/Registration.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Registration.java diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/Serializer.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Serializer.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/Serializer.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Serializer.java diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/Transformator.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Transformator.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/Transformator.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/Transformator.java diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/ValueWrapper.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/ValueWrapper.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/ValueWrapper.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/ValueWrapper.java diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/util/ClassLoaderUtils.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/util/ClassLoaderUtils.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/util/ClassLoaderUtils.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/util/ClassLoaderUtils.java diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/util/Immutables.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/util/Immutables.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/util/Immutables.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/util/Immutables.java diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/util/ListenerRegistry.java b/common/concepts/src/main/java/org/opendaylight/yangtools/concepts/util/ListenerRegistry.java similarity index 100% rename from concepts/src/main/java/org/opendaylight/yangtools/concepts/util/ListenerRegistry.java rename to common/concepts/src/main/java/org/opendaylight/yangtools/concepts/util/ListenerRegistry.java diff --git a/mockito-configuration/pom.xml b/common/mockito-configuration/pom.xml similarity index 96% rename from mockito-configuration/pom.xml rename to common/mockito-configuration/pom.xml index c0d5225e9a..2e896de18b 100644 --- a/mockito-configuration/pom.xml +++ b/common/mockito-configuration/pom.xml @@ -11,7 +11,7 @@ org.opendaylight.yangtools - yangtools + common-parent 0.6.2-SNAPSHOT diff --git a/mockito-configuration/src/main/java/org/mockito/configuration/ArgumentsExtractorVerifier.java b/common/mockito-configuration/src/main/java/org/mockito/configuration/ArgumentsExtractorVerifier.java similarity index 100% rename from mockito-configuration/src/main/java/org/mockito/configuration/ArgumentsExtractorVerifier.java rename to common/mockito-configuration/src/main/java/org/mockito/configuration/ArgumentsExtractorVerifier.java diff --git a/mockito-configuration/src/main/java/org/mockito/configuration/MockitoConfiguration.java b/common/mockito-configuration/src/main/java/org/mockito/configuration/MockitoConfiguration.java similarity index 100% rename from mockito-configuration/src/main/java/org/mockito/configuration/MockitoConfiguration.java rename to common/mockito-configuration/src/main/java/org/mockito/configuration/MockitoConfiguration.java diff --git a/mockito-configuration/src/main/java/org/mockito/configuration/ThrowsUnstubbedMethodException.java b/common/mockito-configuration/src/main/java/org/mockito/configuration/ThrowsUnstubbedMethodException.java similarity index 100% rename from mockito-configuration/src/main/java/org/mockito/configuration/ThrowsUnstubbedMethodException.java rename to common/mockito-configuration/src/main/java/org/mockito/configuration/ThrowsUnstubbedMethodException.java diff --git a/mockito-configuration/src/main/java/org/mockito/configuration/UnstubbedMethodException.java b/common/mockito-configuration/src/main/java/org/mockito/configuration/UnstubbedMethodException.java similarity index 100% rename from mockito-configuration/src/main/java/org/mockito/configuration/UnstubbedMethodException.java rename to common/mockito-configuration/src/main/java/org/mockito/configuration/UnstubbedMethodException.java diff --git a/mockito-configuration/src/main/resources/logback-test.xml b/common/mockito-configuration/src/main/resources/logback-test.xml similarity index 100% rename from mockito-configuration/src/main/resources/logback-test.xml rename to common/mockito-configuration/src/main/resources/logback-test.xml diff --git a/mockito-configuration/src/test/java/org/mockito/configuration/ArgumentsExtractorVerifierTest.java b/common/mockito-configuration/src/test/java/org/mockito/configuration/ArgumentsExtractorVerifierTest.java similarity index 100% rename from mockito-configuration/src/test/java/org/mockito/configuration/ArgumentsExtractorVerifierTest.java rename to common/mockito-configuration/src/test/java/org/mockito/configuration/ArgumentsExtractorVerifierTest.java diff --git a/mockito-configuration/src/test/java/org/mockito/configuration/DefaultAnswerTest.java b/common/mockito-configuration/src/test/java/org/mockito/configuration/DefaultAnswerTest.java similarity index 100% rename from mockito-configuration/src/test/java/org/mockito/configuration/DefaultAnswerTest.java rename to common/mockito-configuration/src/test/java/org/mockito/configuration/DefaultAnswerTest.java diff --git a/common/pom.xml b/common/pom.xml new file mode 100644 index 0000000000..10db456f55 --- /dev/null +++ b/common/pom.xml @@ -0,0 +1,27 @@ + + + + + + + org.opendaylight.yangtools + yangtools + 0.6.2-SNAPSHOT + + + 4.0.0 + common-parent + pom + + + concepts + mockito-configuration + + + diff --git a/pom.xml b/pom.xml index 68cc427b04..2d39835831 100644 --- a/pom.xml +++ b/pom.xml @@ -54,14 +54,13 @@ - concepts - yang code-generator + common + integration-test model restconf - integration-test - mockito-configuration websocket + yang diff --git a/restconf/restconf-client-impl/src/main/java/org/opendaylight/yangtools/restconf/client/BindingToRestRpc.java b/restconf/restconf-client-impl/src/main/java/org/opendaylight/yangtools/restconf/client/BindingToRestRpc.java index 6e695359da..fe4eb76695 100644 --- a/restconf/restconf-client-impl/src/main/java/org/opendaylight/yangtools/restconf/client/BindingToRestRpc.java +++ b/restconf/restconf-client-impl/src/main/java/org/opendaylight/yangtools/restconf/client/BindingToRestRpc.java @@ -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; diff --git a/restconf/restconf-client-impl/src/main/java/org/opendaylight/yangtools/restconf/client/RestListenableEventStreamContext.java b/restconf/restconf-client-impl/src/main/java/org/opendaylight/yangtools/restconf/client/RestListenableEventStreamContext.java index e08f5b65d8..796959fe62 100644 --- a/restconf/restconf-client-impl/src/main/java/org/opendaylight/yangtools/restconf/client/RestListenableEventStreamContext.java +++ b/restconf/restconf-client-impl/src/main/java/org/opendaylight/yangtools/restconf/client/RestListenableEventStreamContext.java @@ -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; + diff --git a/yang/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/test/InstanceIdentifierTest.java b/yang/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/test/InstanceIdentifierTest.java index 074624b1e5..792ccd0ccf 100644 --- a/yang/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/test/InstanceIdentifierTest.java +++ b/yang/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/test/InstanceIdentifierTest.java @@ -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 = InstanceIdentifier.builder(Nodes.class).toInstance(); - + assertNotNull(nodes); assertEquals(Nodes.class, nodes.getTargetType()); - - - InstanceIdentifier node = InstanceIdentifier.builder(nodes).node(Node.class).toInstance(); - + + + InstanceIdentifier 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 = InstanceIdentifier.builder(Nodes.class).child(InstantiatedFoo.class).child(FooChild.class).build(); - + InstanceIdentifier nodeTen = InstanceIdentifier.builder(Nodes.class) // .child(Node.class,new NodeKey(10)).toInstance(); InstanceIdentifier nodeOne = InstanceIdentifier.builder(Nodes.class) // .child(Node.class,new NodeKey(1)).toInstance(); InstanceIdentifier 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 = InstanceIdentifier.builder(Nodes.class).toInstance(); @@ -75,40 +78,40 @@ public class InstanceIdentifierTest { InstanceIdentifier wildcardedChildren = InstanceIdentifier.builder(Nodes.class) // .child(Node.class) // .child(NodeChild.class).build(); - + assertTrue(wildcarded.isWildcarded()); assertTrue(wildcardedChildren.isWildcarded()); - - + + InstanceIdentifier nodeTen = InstanceIdentifier.builder(Nodes.class) // .child(Node.class,new NodeKey(10)).toInstance(); InstanceIdentifier 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 nodeTenChildWildcarded = InstanceIdentifier.builder(Nodes.class) // .child(Node.class,new NodeKey(10)).child(NodeChild.class).toInstance(); - + assertTrue(nodeTenChildWildcarded.isWildcarded()); - + InstanceIdentifier nodeTenChild = InstanceIdentifier.builder(Nodes.class) // .child(Node.class,new NodeKey(10)).child(NodeChild.class, new NodeChildKey(10)).toInstance(); InstanceIdentifier 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); } diff --git a/yang/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/test/mock/NodeChildKey.java b/yang/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/test/mock/NodeChildKey.java index f78427840c..4c915fb847 100644 --- a/yang/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/test/mock/NodeChildKey.java +++ b/yang/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/test/mock/NodeChildKey.java @@ -11,8 +11,8 @@ import org.opendaylight.yangtools.yang.binding.Identifier; public class NodeChildKey implements // Identifier { - - private final int id; + private static final long serialVersionUID = 1L; + private final int id; public NodeChildKey(int id) { super(); diff --git a/yang/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/test/mock/NodeKey.java b/yang/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/test/mock/NodeKey.java index 295b6e5765..7b83790c75 100644 --- a/yang/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/test/mock/NodeKey.java +++ b/yang/yang-binding/src/test/java/org/opendaylight/yangtools/yang/binding/test/mock/NodeKey.java @@ -11,8 +11,8 @@ import org.opendaylight.yangtools.yang.binding.Identifier; public class NodeKey implements // Identifier { - - 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 index 0000000000..48fedda860 --- /dev/null +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/FromNormalizedNodeSerializerFactory.java @@ -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 + * type of resulting/serialized element from NormalizedNode + */ +public interface FromNormalizedNodeSerializerFactory { + FromNormalizedNodeSerializer getAugmentationNodeSerializer(); + FromNormalizedNodeSerializer getChoiceNodeSerializer(); + FromNormalizedNodeSerializer getContainerNodeSerializer(); + FromNormalizedNodeSerializer, LeafSchemaNode> getLeafNodeSerializer(); + FromNormalizedNodeSerializer, LeafListSchemaNode> getLeafSetEntryNodeSerializer(); + FromNormalizedNodeSerializer, LeafListSchemaNode> getLeafSetNodeSerializer(); + FromNormalizedNodeSerializer getMapEntryNodeSerializer(); + FromNormalizedNodeSerializer getMapNodeSerializer(); +} diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/ToNormalizedNodeParser.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/ToNormalizedNodeParser.java index 25cd3308b9..a300cc07d4 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/ToNormalizedNodeParser.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/ToNormalizedNodeParser.java @@ -34,6 +34,4 @@ public interface ToNormalizedNodeParser, S> { * @return NormalizedNode as a result of parsing list of E elements with schema S */ N parse(Iterable 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 index 0000000000..f99cbcff28 --- /dev/null +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/ToNormalizedNodeParserFactory.java @@ -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 + * type of element to be parsed into NormalizedNode + */ +public interface ToNormalizedNodeParserFactory { + ToNormalizedNodeParser getAugmentationNodeParser(); + ToNormalizedNodeParser getChoiceNodeParser(); + ToNormalizedNodeParser getContainerNodeParser(); + ToNormalizedNodeParser, LeafSchemaNode> getLeafNodeParser(); + ToNormalizedNodeParser, LeafListSchemaNode> getLeafSetEntryNodeParser(); + ToNormalizedNodeParser, LeafListSchemaNode> getLeafSetNodeParser(); + ToNormalizedNodeParser getMapEntryNodeParser(); + ToNormalizedNodeParser getMapNodeParser(); +} diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/base/parser/NodeParserDispatcher.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/base/parser/NodeParserDispatcher.java index e18db0dba2..40722b3aee 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/base/parser/NodeParserDispatcher.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/base/parser/NodeParserDispatcher.java @@ -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 { * The same instance of parser can be provided in case it is immutable. */ public static abstract class BaseNodeParserDispatcher implements NodeParserDispatcher { + private final ToNormalizedNodeParserFactory factory; + + protected BaseNodeParserDispatcher(final ToNormalizedNodeParserFactory factory) { + this.factory = Preconditions.checkNotNull(factory); + } @Override public final DataContainerChild dispatchChildElement(Object schema, List 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 getContainerNodeParser(); - - protected abstract ToNormalizedNodeParser, LeafSchemaNode> getLeafNodeParser(); - - protected abstract ToNormalizedNodeParser, LeafListSchemaNode> getLeafSetNodeParser(); - - protected abstract ToNormalizedNodeParser getMapNodeParser(); - - protected abstract ToNormalizedNodeParser getChoiceNodeParser(); - - protected abstract ToNormalizedNodeParser getAugmentationNodeParser(); - } } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/base/serializer/NodeSerializerDispatcher.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/base/serializer/NodeSerializerDispatcher.java index e19b625ef2..9c1adfc623 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/base/serializer/NodeSerializerDispatcher.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/base/serializer/NodeSerializerDispatcher.java @@ -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 { * The same instance of serializer can be provided in case it is immutable. */ public static abstract class BaseNodeSerializerDispatcher implements NodeSerializerDispatcher { + private final FromNormalizedNodeSerializerFactory factory; + + protected BaseNodeSerializerDispatcher(final FromNormalizedNodeSerializerFactory factory) { + this.factory = Preconditions.checkNotNull(factory); + } @Override public final Iterable dispatchChildElement(Object childSchema, @@ -67,7 +72,7 @@ public interface NodeSerializerDispatcher { private Iterable onAugmentationSchema(Object childSchema, DataContainerChild 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 { DataContainerChild 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 { private Iterable onListNode(Object childSchema, DataContainerChild dataContainerChild) { checkSchemaCompatibility(childSchema, ListSchemaNode.class, dataContainerChild); - return getMapNodeSerializer().serialize((ListSchemaNode) childSchema, (MapNode) dataContainerChild); + return factory.getMapNodeSerializer().serialize((ListSchemaNode) childSchema, (MapNode) dataContainerChild); } private Iterable onLeafListNode(Object childSchema, DataContainerChild dataContainerChild) { checkSchemaCompatibility(childSchema, LeafListSchemaNode.class, dataContainerChild); - return getLeafSetNodeSerializer().serialize((LeafListSchemaNode) childSchema, + return factory.getLeafSetNodeSerializer().serialize((LeafListSchemaNode) childSchema, (LeafSetNode) dataContainerChild); } private Iterable onLeafNode(Object childSchema, DataContainerChild dataContainerChild) { checkSchemaCompatibility(childSchema, LeafSchemaNode.class, dataContainerChild); - Iterable elements = getLeafNodeSerializer().serialize((LeafSchemaNode) childSchema, + Iterable elements = factory.getLeafNodeSerializer().serialize((LeafSchemaNode) childSchema, (LeafNode) dataContainerChild); checkOnlyOneSerializedElement(elements, dataContainerChild); return elements; @@ -114,7 +119,7 @@ public interface NodeSerializerDispatcher { DataContainerChild dataContainerChild) { checkSchemaCompatibility(childSchema, ContainerSchemaNode.class, dataContainerChild); - Iterable elements = getContainerNodeSerializer().serialize((ContainerSchemaNode) childSchema, + Iterable elements = factory.getContainerNodeSerializer().serialize((ContainerSchemaNode) childSchema, (ContainerNode) dataContainerChild); checkOnlyOneSerializedElement(elements, dataContainerChild); return elements; @@ -126,17 +131,5 @@ public interface NodeSerializerDispatcher { "Incompatible schema: %s with node: %s, expected: %s", childSchema, dataContainerChild, containerSchemaNodeClass); } - - protected abstract FromNormalizedNodeSerializer getContainerNodeSerializer(); - - protected abstract FromNormalizedNodeSerializer, LeafSchemaNode> getLeafNodeSerializer(); - - protected abstract FromNormalizedNodeSerializer, LeafListSchemaNode> getLeafSetNodeSerializer(); - - protected abstract FromNormalizedNodeSerializer getMapNodeSerializer(); - - protected abstract FromNormalizedNodeSerializer getChoiceNodeSerializer(); - - protected abstract FromNormalizedNodeSerializer getAugmentationNodeSerializer(); } } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/AugmentationNodeDomParser.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/AugmentationNodeDomParser.java index 0b351f1baf..7a5b551578 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/AugmentationNodeDomParser.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/AugmentationNodeDomParser.java @@ -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 { +final class AugmentationNodeDomParser extends AugmentationNodeBaseParser { - private final XmlCodecProvider codecProvider; + private final NodeParserDispatcher dispatcher; - public AugmentationNodeDomParser(XmlCodecProvider codecProvider) { - this.codecProvider = Preconditions.checkNotNull(codecProvider); + AugmentationNodeDomParser(final NodeParserDispatcher dispatcher) { + this.dispatcher = Preconditions.checkNotNull(dispatcher); } @Override @@ -32,7 +31,7 @@ public final class AugmentationNodeDomParser extends AugmentationNodeBaseParser< @Override protected NodeParserDispatcher getDispatcher() { - return DomNodeDispatcher.getInstance(codecProvider); + return dispatcher; } } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/ChoiceNodeDomParser.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/ChoiceNodeDomParser.java index 5e077207aa..97e8a6171c 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/ChoiceNodeDomParser.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/ChoiceNodeDomParser.java @@ -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 { +final class ChoiceNodeDomParser extends ChoiceNodeBaseParser { - private final XmlCodecProvider codecProvider; + private final NodeParserDispatcher dispatcher; - public ChoiceNodeDomParser(XmlCodecProvider codecProvider) { - this.codecProvider = Preconditions.checkNotNull(codecProvider); + ChoiceNodeDomParser(NodeParserDispatcher dispatcher) { + this.dispatcher = Preconditions.checkNotNull(dispatcher); } @Override @@ -32,7 +31,6 @@ public final class ChoiceNodeDomParser extends ChoiceNodeBaseParser { @Override protected NodeParserDispatcher getDispatcher() { - return DomNodeDispatcher.getInstance(codecProvider); + return dispatcher; } - } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/ContainerNodeDomParser.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/ContainerNodeDomParser.java index 2b0b63c9f5..c03113af22 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/ContainerNodeDomParser.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/ContainerNodeDomParser.java @@ -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 { +final class ContainerNodeDomParser extends ContainerNodeBaseParser { - private final XmlCodecProvider codecProvider; + private final NodeParserDispatcher dispatcher; - public ContainerNodeDomParser(XmlCodecProvider codecProvider) { - this.codecProvider = Preconditions.checkNotNull(codecProvider); + ContainerNodeDomParser(final NodeParserDispatcher dispatcher) { + this.dispatcher = Preconditions.checkNotNull(dispatcher); } + @Override protected Map getAttributes(Element element) { return DomUtils.toAttributes(element.getAttributes()); @@ -33,7 +33,7 @@ public final class ContainerNodeDomParser extends ContainerNodeBaseParser 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 index ae725f5eea..0000000000 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/DomNodeDispatcher.java +++ /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 { - - 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 getContainerNodeParser() { - return containerNodeDomParser; - } - - @Override - protected ToNormalizedNodeParser, LeafSchemaNode> getLeafNodeParser() { - return leafNodeDomParser; - } - - @Override - protected ToNormalizedNodeParser, LeafListSchemaNode> getLeafSetNodeParser() { - return leafSetNodeDomParser; - } - - @Override - protected ToNormalizedNodeParser getMapNodeParser() { - return mapNodeDomParser; - } - - @Override - protected ToNormalizedNodeParser getChoiceNodeParser() { - return choiceNodeDomParser; - } - - @Override - protected ToNormalizedNodeParser getAugmentationNodeParser() { - return augmentationNodeDomParser; - } - - public static NodeParserDispatcher 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 index 0000000000..53d68f8872 --- /dev/null +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/DomToNormalizedNodeParserFactory.java @@ -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 { + 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 dispatcher = new NodeParserDispatcher.BaseNodeParserDispatcher(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 getAugmentationNodeParser() { + return augmentationNodeParser; + } + + @Override + public ToNormalizedNodeParser getChoiceNodeParser() { + return choiceNodeParser; + } + + @Override + public ToNormalizedNodeParser getContainerNodeParser() { + return containerNodeParser; + } + + @Override + public ToNormalizedNodeParser, LeafSchemaNode> getLeafNodeParser() { + return leafNodeParser; + } + + @Override + public ToNormalizedNodeParser, LeafListSchemaNode> getLeafSetEntryNodeParser() { + return leafSetEntryNodeParser; + } + + @Override + public ToNormalizedNodeParser, LeafListSchemaNode> getLeafSetNodeParser() { + return leafSetNodeParser; + } + + @Override + public ToNormalizedNodeParser getMapEntryNodeParser() { + return mapEntryNodeParser; + } + + @Override + public ToNormalizedNodeParser getMapNodeParser() { + return mapNodeParser; + } +} diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/LeafNodeDomParser.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/LeafNodeDomParser.java index 59ad9f8402..6c5d064268 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/LeafNodeDomParser.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/LeafNodeDomParser.java @@ -18,11 +18,11 @@ import org.w3c.dom.Element; import com.google.common.base.Preconditions; -public class LeafNodeDomParser extends LeafNodeBaseParser { +final class LeafNodeDomParser extends LeafNodeBaseParser { private final XmlCodecProvider codecProvider; - public LeafNodeDomParser(XmlCodecProvider codecProvider) { + LeafNodeDomParser(XmlCodecProvider codecProvider) { this.codecProvider = Preconditions.checkNotNull(codecProvider); } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/LeafSetEntryNodeDomParser.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/LeafSetEntryNodeDomParser.java index 047cd2b282..2b224a0e71 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/LeafSetEntryNodeDomParser.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/LeafSetEntryNodeDomParser.java @@ -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 { +import com.google.common.base.Preconditions; + +final class LeafSetEntryNodeDomParser extends LeafSetEntryNodeBaseParser { private final XmlCodecProvider codecProvider; - public LeafSetEntryNodeDomParser(XmlCodecProvider codecProvider) { + LeafSetEntryNodeDomParser(XmlCodecProvider codecProvider) { this.codecProvider = Preconditions.checkNotNull(codecProvider); } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/LeafSetNodeDomParser.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/LeafSetNodeDomParser.java index 8a771aac9c..8f6ee6ee21 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/LeafSetNodeDomParser.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/LeafSetNodeDomParser.java @@ -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 { +final class LeafSetNodeDomParser extends LeafSetNodeBaseParser { private final LeafSetEntryNodeDomParser leafSetEntryNodeBaseParser; - public LeafSetNodeDomParser(LeafSetEntryNodeDomParser leafSetEntryNodeBaseParser) { + LeafSetNodeDomParser(LeafSetEntryNodeDomParser leafSetEntryNodeBaseParser) { this.leafSetEntryNodeBaseParser = leafSetEntryNodeBaseParser; } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/MapEntryNodeDomParser.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/MapEntryNodeDomParser.java index e3c5e7d328..65dde5cf5b 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/MapEntryNodeDomParser.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/MapEntryNodeDomParser.java @@ -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 { +final class MapEntryNodeDomParser extends MapEntryNodeBaseParser { - private final XmlCodecProvider codecProvider; + private final NodeParserDispatcher dispatcher; - public MapEntryNodeDomParser(XmlCodecProvider codecProvider) { - this.codecProvider = Preconditions.checkNotNull(codecProvider); + MapEntryNodeDomParser(final NodeParserDispatcher dispatcher) { + this.dispatcher = Preconditions.checkNotNull(dispatcher); } @Override @@ -34,7 +33,7 @@ public final class MapEntryNodeDomParser extends MapEntryNodeBaseParser @Override protected NodeParserDispatcher 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/MapNodeDomParser.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/MapNodeDomParser.java index 1549269aaf..ddc7163556 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/MapNodeDomParser.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/parser/MapNodeDomParser.java @@ -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 { +final class MapNodeDomParser extends MapNodeBaseParser { private final MapEntryNodeDomParser mapEntryParser; - public MapNodeDomParser(MapEntryNodeDomParser mapEntryParser) { + MapNodeDomParser(MapEntryNodeDomParser mapEntryParser) { this.mapEntryParser = mapEntryParser; } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/AugmentationNodeDomSerializer.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/AugmentationNodeDomSerializer.java index fbffc03abb..99547406ba 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/AugmentationNodeDomSerializer.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/AugmentationNodeDomSerializer.java @@ -13,12 +13,12 @@ import org.w3c.dom.Element; import com.google.common.base.Preconditions; -public class AugmentationNodeDomSerializer extends +final class AugmentationNodeDomSerializer extends AugmentationNodeBaseSerializer { private final NodeSerializerDispatcher dispatcher; - public AugmentationNodeDomSerializer(NodeSerializerDispatcher dispatcher) { + AugmentationNodeDomSerializer(NodeSerializerDispatcher dispatcher) { 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/ChoiceNodeDomSerializer.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/ChoiceNodeDomSerializer.java index 1db6a8b663..8579202e51 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/ChoiceNodeDomSerializer.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/ChoiceNodeDomSerializer.java @@ -13,10 +13,10 @@ import org.w3c.dom.Element; import com.google.common.base.Preconditions; -public class ChoiceNodeDomSerializer extends ChoiceNodeBaseSerializer { +final class ChoiceNodeDomSerializer extends ChoiceNodeBaseSerializer { private final NodeSerializerDispatcher dispatcher; - public ChoiceNodeDomSerializer(final NodeSerializerDispatcher dispatcher) { + ChoiceNodeDomSerializer(final NodeSerializerDispatcher dispatcher) { 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/ContainerNodeDomSerializer.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/ContainerNodeDomSerializer.java index c5641a038a..3144806b9c 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/ContainerNodeDomSerializer.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/ContainerNodeDomSerializer.java @@ -19,13 +19,13 @@ import org.w3c.dom.Element; import com.google.common.base.Preconditions; -public class ContainerNodeDomSerializer extends +final class ContainerNodeDomSerializer extends ContainerNodeBaseSerializer { - private final Document doc; private final NodeSerializerDispatcher dispatcher; + private final Document doc; - public ContainerNodeDomSerializer(final Document doc, final NodeSerializerDispatcher dispatcher) { + ContainerNodeDomSerializer(final Document doc, final NodeSerializerDispatcher 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 index 0000000000..0a5aba7c4a --- /dev/null +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/DomFromNormalizedNodeSerializerFactory.java @@ -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 { + 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 dispatcher = new NodeSerializerDispatcher.BaseNodeSerializerDispatcher(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 getAugmentationNodeSerializer() { + return augmentSerializer; + } + + @Override + public FromNormalizedNodeSerializer getChoiceNodeSerializer() { + return choiceSerializer; + } + + @Override + public FromNormalizedNodeSerializer getContainerNodeSerializer() { + return containerSerializer; + } + + @Override + public FromNormalizedNodeSerializer, LeafSchemaNode> getLeafNodeSerializer() { + return leafNodeSerializer; + } + + @Override + public FromNormalizedNodeSerializer, LeafListSchemaNode> getLeafSetEntryNodeSerializer() { + return leafSetEntryNodeSerializer; + } + + @Override + public FromNormalizedNodeSerializer, LeafListSchemaNode> getLeafSetNodeSerializer() { + return leafSetSerializer; + } + + @Override + public FromNormalizedNodeSerializer getMapEntryNodeSerializer() { + return mapEntryNodeSerializer; + } + + @Override + public FromNormalizedNodeSerializer 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 index 9dee6026dc..0000000000 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/DomNodeSerializerDispatcher.java +++ /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 { - private static final Cache dispatcherCache = - CacheBuilder.newBuilder().weakKeys().build(); - - private final FromNormalizedNodeSerializer containerSerializer; - private final FromNormalizedNodeSerializer choiceSerializer; - private final FromNormalizedNodeSerializer augmentSerializer; - private final FromNormalizedNodeSerializer, LeafSchemaNode> leafNodeSerializer; - private final FromNormalizedNodeSerializer, LeafListSchemaNode> leafSetSerializer; - private final FromNormalizedNodeSerializer 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() { - @Override - public DomNodeSerializerDispatcher call() { - return new DomNodeSerializerDispatcher(doc, codecProvider); - } - }); - } catch (ExecutionException e) { - throw new IllegalStateException("Failed to instantiated a dispatcher", e); - } - } - - @Override - protected FromNormalizedNodeSerializer getContainerNodeSerializer() { - return containerSerializer; - } - - @Override - protected FromNormalizedNodeSerializer, LeafSchemaNode> getLeafNodeSerializer() { - return leafNodeSerializer; - } - - @Override - protected FromNormalizedNodeSerializer, LeafListSchemaNode> getLeafSetNodeSerializer() { - return leafSetSerializer; - } - - @Override - protected FromNormalizedNodeSerializer getMapNodeSerializer() { - return mapNodeSerializer; - } - - @Override - protected FromNormalizedNodeSerializer getChoiceNodeSerializer() { - return choiceSerializer; - } - - @Override - protected FromNormalizedNodeSerializer getAugmentationNodeSerializer() { - return augmentSerializer; - } -} diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/LeafNodeDomSerializer.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/LeafNodeDomSerializer.java index acdb7eb738..83fcb8dd20 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/LeafNodeDomSerializer.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/LeafNodeDomSerializer.java @@ -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 { +import com.google.common.base.Preconditions; - private final Document doc; +final class LeafNodeDomSerializer extends LeafNodeBaseSerializer { 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); } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/LeafSetEntryNodeDomSerializer.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/LeafSetEntryNodeDomSerializer.java index 98908cca54..fcc04c2f39 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/LeafSetEntryNodeDomSerializer.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/LeafSetEntryNodeDomSerializer.java @@ -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 { 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); } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/LeafSetNodeDomSerializer.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/LeafSetNodeDomSerializer.java index ae49d68aa5..63af56932c 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/LeafSetNodeDomSerializer.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/LeafSetNodeDomSerializer.java @@ -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 { - +final class LeafSetNodeDomSerializer extends LeafSetNodeBaseSerializer { private final FromNormalizedNodeSerializer, LeafListSchemaNode> leafSetEntryNodeSerializer; - public LeafSetNodeDomSerializer(LeafSetEntryNodeDomSerializer leafSetEntryNodeSerializer) { + LeafSetNodeDomSerializer(LeafSetEntryNodeDomSerializer leafSetEntryNodeSerializer) { this.leafSetEntryNodeSerializer = leafSetEntryNodeSerializer; } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/MapEntryNodeDomSerializer.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/MapEntryNodeDomSerializer.java index 5e65dd8d89..dbe8a90fc6 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/MapEntryNodeDomSerializer.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/MapEntryNodeDomSerializer.java @@ -19,13 +19,11 @@ import org.w3c.dom.Element; import com.google.common.base.Preconditions; -public class MapEntryNodeDomSerializer extends - MapEntryNodeBaseSerializer { - - private final Document doc; +final class MapEntryNodeDomSerializer extends MapEntryNodeBaseSerializer { private final NodeSerializerDispatcher dispatcher; + private final Document doc; - public MapEntryNodeDomSerializer(final Document doc, final NodeSerializerDispatcher dispatcher) { + MapEntryNodeDomSerializer(final Document doc, final NodeSerializerDispatcher 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/MapNodeDomSerializer.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/MapNodeDomSerializer.java index d1486f0d70..5404f193bf 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/MapNodeDomSerializer.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/MapNodeDomSerializer.java @@ -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 { +final class MapNodeDomSerializer extends MapNodeBaseSerializer { private final FromNormalizedNodeSerializer mapEntrySerializer; - public MapNodeDomSerializer(MapEntryNodeDomSerializer mapEntrySerializer) { + MapNodeDomSerializer(MapEntryNodeDomSerializer mapEntrySerializer) { this.mapEntrySerializer = mapEntrySerializer; } diff --git a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/NormalizedNodeXmlTranslationTest.java b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/NormalizedNodeXmlTranslationTest.java index e6c68feee5..84ca9f5400 100644 --- a/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/NormalizedNodeXmlTranslationTest.java +++ b/yang/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/transform/dom/serializer/NormalizedNodeXmlTranslationTest.java @@ -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 dispatcher = new DomNodeSerializerDispatcher(newDoc, DomUtils.defaultValueCodecProvider()); - - Iterable els = new ContainerNodeDomSerializer(newDoc, - dispatcher).serialize(containerNode, built); + Iterable els = DomFromNormalizedNodeSerializerFactory.getInstance(XmlDocumentUtils.getDocument(), DomUtils.defaultValueCodecProvider()) + .getContainerNodeSerializer().serialize(containerNode, built); Element el = els.iterator().next();