X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-common-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fmd%2Fsal%2Fcommon%2Fimpl%2Futil%2Fcompat%2FDataNormalizationOperation.java;h=2b9694bed71d87dfb8d48e04024b94f619e5c049;hp=f869254dcf1efa2832f792005c7f22f02d9be033;hb=c1362c86eb19e92e6c64d10099a45deb499c6db1;hpb=fe87aace8123cc8988acfc74c0208472359a4f55 diff --git a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/util/compat/DataNormalizationOperation.java b/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/util/compat/DataNormalizationOperation.java index f869254dcf..2b9694bed7 100644 --- a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/util/compat/DataNormalizationOperation.java +++ b/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/util/compat/DataNormalizationOperation.java @@ -10,6 +10,11 @@ package org.opendaylight.controller.md.sal.common.impl.util.compat; import static com.google.common.base.Preconditions.checkArgument; import static com.google.common.base.Preconditions.checkNotNull; +import com.google.common.base.Optional; +import com.google.common.collect.FluentIterable; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; + import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -28,12 +33,15 @@ import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.NodeWithValue import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.Node; import org.opendaylight.yangtools.yang.data.api.SimpleNode; +import org.opendaylight.yangtools.yang.data.api.schema.AnyXmlNode; import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.impl.schema.Builders; import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes; import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder; +import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.NormalizedNodeAttrBuilder; import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.NormalizedNodeContainerBuilder; +import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode; import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; import org.opendaylight.yangtools.yang.model.api.AugmentationTarget; import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; @@ -45,11 +53,6 @@ import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; import org.opendaylight.yangtools.yang.model.api.ListSchemaNode; import org.opendaylight.yangtools.yang.model.api.SchemaContext; -import com.google.common.base.Optional; -import com.google.common.collect.FluentIterable; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; - public abstract class DataNormalizationOperation implements Identifiable { private final T identifier; @@ -155,7 +158,7 @@ public abstract class DataNormalizationOperation impleme } private static abstract class CompositeNodeNormalizationOperation extends - DataNormalizationOperation { + DataNormalizationOperation { protected CompositeNodeNormalizationOperation(final T identifier) { super(identifier); @@ -217,7 +220,7 @@ public abstract class DataNormalizationOperation impleme } private static abstract class DataContainerNormalizationOperation extends - CompositeNodeNormalizationOperation { + CompositeNodeNormalizationOperation { private final DataNodeContainer schema; private final Map> byQName; @@ -275,7 +278,7 @@ public abstract class DataNormalizationOperation impleme } private static final class ListItemNormalization extends - DataContainerNormalizationOperation { + DataContainerNormalizationOperation { private final List keyDefinition; @@ -285,7 +288,7 @@ public abstract class DataNormalizationOperation impleme } @Override - protected NormalizedNodeContainerBuilder createBuilder(final CompositeNode compositeNode) { + protected NormalizedNodeContainerBuilder createBuilder(final CompositeNode compositeNode) { ImmutableMap.Builder keys = ImmutableMap.builder(); for (QName key : keyDefinition) { @@ -325,7 +328,7 @@ public abstract class DataNormalizationOperation impleme } @Override - protected NormalizedNodeContainerBuilder createBuilder(final CompositeNode compositeNode) { + protected NormalizedNodeContainerBuilder createBuilder(final CompositeNode compositeNode) { return Builders.unkeyedListEntryBuilder().withNodeIdentifier(getIdentifier()); } @@ -343,7 +346,7 @@ public abstract class DataNormalizationOperation impleme } @Override - protected NormalizedNodeContainerBuilder createBuilder(final CompositeNode compositeNode) { + protected NormalizedNodeContainerBuilder createBuilder(final CompositeNode compositeNode) { return Builders.containerBuilder().withNodeIdentifier(getIdentifier()); } @@ -355,7 +358,7 @@ public abstract class DataNormalizationOperation impleme } private static abstract class MixinNormalizationOp extends - CompositeNodeNormalizationOperation { + CompositeNodeNormalizationOperation { protected MixinNormalizationOp(final T identifier) { super(identifier); @@ -377,7 +380,7 @@ public abstract class DataNormalizationOperation impleme } @Override - protected NormalizedNodeContainerBuilder createBuilder(final CompositeNode compositeNode) { + protected NormalizedNodeContainerBuilder createBuilder(final CompositeNode compositeNode) { return Builders.orderedLeafSetBuilder().withNodeIdentifier(getIdentifier()); } @@ -397,7 +400,7 @@ public abstract class DataNormalizationOperation impleme } @Override - protected NormalizedNodeContainerBuilder createBuilder(final CompositeNode compositeNode) { + protected NormalizedNodeContainerBuilder createBuilder(final CompositeNode compositeNode) { return Builders.leafSetBuilder().withNodeIdentifier(getIdentifier()); } @@ -602,7 +605,7 @@ public abstract class DataNormalizationOperation impleme } @Override - protected NormalizedNodeContainerBuilder createBuilder(final CompositeNode compositeNode) { + protected NormalizedNodeContainerBuilder createBuilder(final CompositeNode compositeNode) { return Builders.choiceBuilder().withNodeIdentifier(getIdentifier()); } @@ -612,6 +615,42 @@ public abstract class DataNormalizationOperation impleme } } + private static class AnyXmlNormalization extends DataNormalizationOperation { + + protected AnyXmlNormalization( final NodeIdentifier identifier ) { + super( identifier ); + } + + @Override + public DataNormalizationOperation getChild( final PathArgument child ) throws DataNormalizationException { + return null; + } + + @Override + public DataNormalizationOperation getChild( final QName child ) throws DataNormalizationException { + return null; + } + + @Override + public NormalizedNode normalize( final Node legacyData ) { + NormalizedNodeAttrBuilder, AnyXmlNode> builder = + Builders.anyXmlBuilder().withNodeIdentifier( + new NodeIdentifier( legacyData.getNodeType() ) ); + builder.withValue(legacyData); + return builder.build(); + } + + @Override + public boolean isLeaf() { + return false; + } + + @Override + public NormalizedNode createDefault( final PathArgument currentArg ) { + return null; + } + } + private static final Optional findChildSchemaNode(final DataNodeContainer parent,final QName child) { DataSchemaNode potential = parent.getDataChildByName(child); if (potential == null) { @@ -657,7 +696,7 @@ public abstract class DataNormalizationOperation impleme for (DataSchemaNode child : augmentation.getChildNodes()) { potentialChildren.add(child.getQName()); } - return new AugmentationIdentifier(null, potentialChildren.build()); + return new AugmentationIdentifier(potentialChildren.build()); } private static DataNodeContainer augmentationProxy(final AugmentationSchema augmentation, final DataNodeContainer schema) { @@ -712,6 +751,8 @@ public abstract class DataNormalizationOperation impleme return new ChoiceNodeNormalization((org.opendaylight.yangtools.yang.model.api.ChoiceNode) potential); } else if (potential instanceof LeafListSchemaNode) { return fromLeafListSchemaNode((LeafListSchemaNode) potential); + } else if (potential instanceof AnyXmlSchemaNode) { + return new AnyXmlNormalization( new NodeIdentifier(potential.getQName() ) ); } return null; }