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=87e97d460677cb479fb249a6d2b72de5723b15e8;hp=617697710449b32602682802d10dd2022f551ee2;hb=refs%2Fchanges%2F29%2F83829%2F3;hpb=cb210bea2ab44aa2922ed86232c9db9a10452fc0 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 6176977104..87e97d4606 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 @@ -7,9 +7,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 edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.util.Collections; import java.util.HashSet; import java.util.List; @@ -17,29 +19,22 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; - import org.opendaylight.yangtools.concepts.Identifiable; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.CompositeNode; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.AugmentationIdentifier; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.NodeIdentifier; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier.NodeIdentifierWithPredicates; -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.YangInstanceIdentifier.AugmentationIdentifier; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithValue; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; 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.data.impl.schema.builder.api.DataContainerNodeBuilder; import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; import org.opendaylight.yangtools.yang.model.api.AugmentationTarget; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; +import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; @@ -48,12 +43,9 @@ 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 org.opendaylight.yangtools.yang.model.api.SchemaNode; +import org.opendaylight.yangtools.yang.model.util.EffectiveAugmentationSchema; -import com.google.common.base.Optional; -import com.google.common.collect.FluentIterable; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; - +@Deprecated public abstract class DataNormalizationOperation implements Identifiable { private final T identifier; @@ -62,12 +54,11 @@ public abstract class DataNormalizationOperation impleme @Override public T getIdentifier() { return identifier; - }; + } protected DataNormalizationOperation(final T identifier, final SchemaNode schema) { - super(); this.identifier = identifier; - if(schema instanceof DataSchemaNode) { + if (schema instanceof DataSchemaNode) { this.dataSchemaNode = Optional.of((DataSchemaNode) schema); } else { this.dataSchemaNode = Optional.absent(); @@ -87,12 +78,10 @@ public abstract class DataNormalizationOperation impleme return Collections.singleton(identifier.getNodeType()); } - public abstract DataNormalizationOperation getChild(final PathArgument child) throws DataNormalizationException; + public abstract DataNormalizationOperation getChild(PathArgument child) throws DataNormalizationException; public abstract DataNormalizationOperation getChild(QName child) throws DataNormalizationException; - public abstract NormalizedNode normalize(Node legacyData); - public abstract boolean isLeaf(); public Optional getDataSchemaNode() { @@ -100,21 +89,12 @@ public abstract class DataNormalizationOperation impleme return dataSchemaNode; } - private static abstract class SimpleTypeNormalization extends DataNormalizationOperation { - - protected SimpleTypeNormalization(final T identifier, final DataSchemaNode potential) { + private abstract static class SimpleTypeNormalization + extends DataNormalizationOperation { + SimpleTypeNormalization(final T identifier, final DataSchemaNode potential) { super(identifier,potential); } - @Override - public NormalizedNode normalize(final Node legacyData) { - checkArgument(legacyData != null); - checkArgument(legacyData instanceof SimpleNode); - return normalizeImpl((SimpleNode) legacyData); - } - - protected abstract NormalizedNode normalizeImpl(SimpleNode node); - @Override public DataNormalizationOperation getChild(final PathArgument child) { return null; @@ -134,111 +114,45 @@ public abstract class DataNormalizationOperation impleme public boolean isLeaf() { return true; } - } private static final class LeafNormalization extends SimpleTypeNormalization { - - protected LeafNormalization(final LeafSchemaNode potential) { + LeafNormalization(final LeafSchemaNode potential) { super(new NodeIdentifier(potential.getQName()),potential); } - - @Override - protected NormalizedNode normalizeImpl(final SimpleNode node) { - return ImmutableNodes.leafNode(node.getNodeType(), node.getValue()); - } - } private static final class LeafListEntryNormalization extends SimpleTypeNormalization { - - public LeafListEntryNormalization(final LeafListSchemaNode potential) { + LeafListEntryNormalization(final LeafListSchemaNode potential) { super(new NodeWithValue(potential.getQName(), null),potential); } - @Override - protected NormalizedNode normalizeImpl(final SimpleNode node) { - NodeWithValue nodeId = new NodeWithValue(node.getNodeType(), node.getValue()); - return Builders.leafSetEntryBuilder().withNodeIdentifier(nodeId).withValue(node.getValue()).build(); - } - - @Override public boolean isKeyedEntry() { return true; } } - private static abstract class CompositeNodeNormalizationOperation extends - DataNormalizationOperation { - - protected CompositeNodeNormalizationOperation(final T identifier, final DataSchemaNode schema) { + private abstract static class CompositeNodeNormalizationOperation + extends DataNormalizationOperation { + CompositeNodeNormalizationOperation(final T identifier, final DataSchemaNode schema) { super(identifier,schema); } - @SuppressWarnings({ "rawtypes", "unchecked" }) - @Override - public final NormalizedNode normalize(final Node legacyData) { - checkArgument(legacyData != null); - if (!isMixin() && getIdentifier().getNodeType() != null) { - checkArgument(getIdentifier().getNodeType().equals(legacyData.getNodeType()), - "Node QName must be %s was %s", getIdentifier().getNodeType(), legacyData.getNodeType()); - } - checkArgument(legacyData instanceof CompositeNode, "Node %s should be composite", legacyData); - CompositeNode compositeNode = (CompositeNode) legacyData; - NormalizedNodeContainerBuilder builder = createBuilder(compositeNode); - - Set> usedMixins = new HashSet<>(); - for (Node childLegacy : compositeNode.getValue()) { - final DataNormalizationOperation childOp; - - try { - childOp = getChild(childLegacy.getNodeType()); - } catch (DataNormalizationException e) { - throw new IllegalArgumentException(String.format("Failed to normalize data %s", compositeNode.getValue()), e); - } - - // We skip unknown nodes if this node is mixin since - // it's nodes and parent nodes are interleaved - if (childOp == null && isMixin()) { - continue; - } - - checkArgument(childOp != null, "Node %s is not allowed inside %s", childLegacy.getNodeType(), - getIdentifier()); - if (childOp.isMixin()) { - if (usedMixins.contains(childOp)) { - // We already run / processed that mixin, so to avoid - // duplicity we are skipping next nodes. - continue; - } - builder.addChild(childOp.normalize(compositeNode)); - usedMixins.add(childOp); - } else { - builder.addChild(childOp.normalize(childLegacy)); - } - } - return builder.build(); - } - @Override public boolean isLeaf() { return false; } - - @SuppressWarnings("rawtypes") - protected abstract NormalizedNodeContainerBuilder createBuilder(final CompositeNode compositeNode); - } - private static abstract class DataContainerNormalizationOperation extends - CompositeNodeNormalizationOperation { - + private abstract static class DataContainerNormalizationOperation + extends CompositeNodeNormalizationOperation { private final DataNodeContainer schema; private final Map> byQName; private final Map> byArg; - protected DataContainerNormalizationOperation(final T identifier, final DataNodeContainer schema, final DataSchemaNode node) { + DataContainerNormalizationOperation(final T identifier, final DataNodeContainer schema, + final DataSchemaNode node) { super(identifier,node); this.schema = schema; this.byArg = new ConcurrentHashMap<>(); @@ -255,14 +169,6 @@ public abstract class DataNormalizationOperation impleme return register(potential); } - private DataNormalizationOperation fromLocalSchema(final PathArgument child) throws DataNormalizationException { - if (child instanceof AugmentationIdentifier) { - return fromSchemaAndQNameChecked(schema, ((AugmentationIdentifier) child).getPossibleChildNames() - .iterator().next()); - } - return fromSchemaAndQNameChecked(schema, child.getNodeType()); - } - @Override public DataNormalizationOperation getChild(final QName child) throws DataNormalizationException { DataNormalizationOperation potential = byQName.get(child); @@ -273,51 +179,43 @@ public abstract class DataNormalizationOperation impleme return register(potential); } - protected DataNormalizationOperation fromLocalSchemaAndQName(final DataNodeContainer schema2, final QName child) throws DataNormalizationException { + private DataNormalizationOperation fromLocalSchema(final PathArgument child) + throws DataNormalizationException { + if (child instanceof AugmentationIdentifier) { + return fromSchemaAndQNameChecked(schema, ((AugmentationIdentifier) child).getPossibleChildNames() + .iterator().next()); + } + return fromSchemaAndQNameChecked(schema, child.getNodeType()); + } + + protected DataNormalizationOperation fromLocalSchemaAndQName(final DataNodeContainer schema2, + final QName child) throws DataNormalizationException { return fromSchemaAndQNameChecked(schema2, child); } private DataNormalizationOperation register(final DataNormalizationOperation potential) { if (potential != null) { byArg.put(potential.getIdentifier(), potential); - for (QName qName : potential.getQNameIdentifiers()) { - byQName.put(qName, potential); + for (final QName qname : potential.getQNameIdentifiers()) { + byQName.put(qname, potential); } } return potential; } - } private static final class ListItemNormalization extends - DataContainerNormalizationOperation { - - private final List keyDefinition; - - protected ListItemNormalization(final NodeIdentifierWithPredicates identifier, final ListSchemaNode schema) { - super(identifier, schema,schema); - keyDefinition = schema.getKeyDefinition(); - } - - @Override - protected NormalizedNodeContainerBuilder createBuilder(final CompositeNode compositeNode) { - ImmutableMap.Builder keys = ImmutableMap.builder(); - for (QName key : keyDefinition) { - - SimpleNode valueNode = checkNotNull(compositeNode.getFirstSimpleByName(key), - "List node %s MUST contain leaf %s with value.", getIdentifier().getNodeType(), key); - keys.put(key, valueNode.getValue()); - } - - return Builders.mapEntryBuilder().withNodeIdentifier( - new NodeIdentifierWithPredicates(getIdentifier().getNodeType(), keys.build())); + DataContainerNormalizationOperation { + ListItemNormalization(final NodeIdentifierWithPredicates identifier, final ListSchemaNode schema) { + super(identifier, schema, schema); } @Override + @SuppressFBWarnings("BC_UNCONFIRMED_CAST") public NormalizedNode createDefault(final PathArgument currentArg) { - DataContainerNodeAttrBuilder builder = Builders + final DataContainerNodeBuilder builder = Builders .mapEntryBuilder().withNodeIdentifier((NodeIdentifierWithPredicates) currentArg); - for (Entry keyValue : ((NodeIdentifierWithPredicates) currentArg).getKeyValues().entrySet()) { + for (final Entry keyValue : ((NodeIdentifierWithPredicates) currentArg).entrySet()) { builder.addChild(Builders.leafBuilder() // .withNodeIdentifier(new NodeIdentifier(keyValue.getKey())).withValue(keyValue.getValue()) @@ -326,53 +224,41 @@ public abstract class DataNormalizationOperation impleme return builder.build(); } - @Override public boolean isKeyedEntry() { return true; } } - private static final class UnkeyedListItemNormalization extends DataContainerNormalizationOperation { - - protected UnkeyedListItemNormalization(final ListSchemaNode schema) { + private static final class UnkeyedListItemNormalization + extends DataContainerNormalizationOperation { + UnkeyedListItemNormalization(final ListSchemaNode schema) { super(new NodeIdentifier(schema.getQName()), schema,schema); } @Override - protected NormalizedNodeContainerBuilder createBuilder(final CompositeNode compositeNode) { - return Builders.unkeyedListEntryBuilder().withNodeIdentifier(getIdentifier()); - } - - @Override + @SuppressFBWarnings("BC_UNCONFIRMED_CAST") public NormalizedNode createDefault(final PathArgument currentArg) { return Builders.unkeyedListEntryBuilder().withNodeIdentifier((NodeIdentifier) currentArg).build(); } - } private static final class ContainerNormalization extends DataContainerNormalizationOperation { - - protected ContainerNormalization(final ContainerSchemaNode schema) { + ContainerNormalization(final ContainerSchemaNode schema) { super(new NodeIdentifier(schema.getQName()),schema, schema); } @Override - protected NormalizedNodeContainerBuilder createBuilder(final CompositeNode compositeNode) { - return Builders.containerBuilder().withNodeIdentifier(getIdentifier()); - } - - @Override + @SuppressFBWarnings("BC_UNCONFIRMED_CAST") public NormalizedNode createDefault(final PathArgument currentArg) { return Builders.containerBuilder().withNodeIdentifier((NodeIdentifier) currentArg).build(); } - } - private static abstract class MixinNormalizationOp extends - CompositeNodeNormalizationOperation { + private abstract static class MixinNormalizationOp + extends CompositeNodeNormalizationOperation { - protected MixinNormalizationOp(final T identifier, final DataSchemaNode schema) { + MixinNormalizationOp(final T identifier, final DataSchemaNode schema) { super(identifier,schema); } @@ -380,22 +266,13 @@ public abstract class DataNormalizationOperation impleme public final boolean isMixin() { return true; } - } - private static final class OrderedLeafListMixinNormalization extends UnorderedLeafListMixinNormalization { - - - public OrderedLeafListMixinNormalization(final LeafListSchemaNode potential) { + OrderedLeafListMixinNormalization(final LeafListSchemaNode potential) { super(potential); } - @Override - protected NormalizedNodeContainerBuilder createBuilder(final CompositeNode compositeNode) { - return Builders.orderedLeafSetBuilder().withNodeIdentifier(getIdentifier()); - } - @Override public NormalizedNode createDefault(final PathArgument currentArg) { return Builders.orderedLeafSetBuilder().withNodeIdentifier(getIdentifier()).build(); @@ -406,16 +283,11 @@ public abstract class DataNormalizationOperation impleme private final DataNormalizationOperation innerOp; - public UnorderedLeafListMixinNormalization(final LeafListSchemaNode potential) { + UnorderedLeafListMixinNormalization(final LeafListSchemaNode potential) { super(new NodeIdentifier(potential.getQName()),potential); innerOp = new LeafListEntryNormalization(potential); } - @Override - protected NormalizedNodeContainerBuilder createBuilder(final CompositeNode compositeNode) { - return Builders.leafSetBuilder().withNodeIdentifier(getIdentifier()); - } - @Override public NormalizedNode createDefault(final PathArgument currentArg) { return Builders.leafSetBuilder().withNodeIdentifier(getIdentifier()).build(); @@ -438,10 +310,10 @@ public abstract class DataNormalizationOperation impleme } } - private static final class AugmentationNormalization extends DataContainerNormalizationOperation { + private static final class AugmentationNormalization + extends DataContainerNormalizationOperation { - public AugmentationNormalization(final AugmentationSchema augmentation, final DataNodeContainer schema) { - //super(); + AugmentationNormalization(final AugmentationSchemaNode augmentation, final DataNodeContainer schema) { super(augmentationIdentifierFrom(augmentation), augmentationProxy(augmentation,schema),null); } @@ -450,19 +322,17 @@ public abstract class DataNormalizationOperation impleme return true; } - - @Override - protected DataNormalizationOperation fromLocalSchemaAndQName(final DataNodeContainer schema, final QName child) - throws DataNormalizationException { - Optional potential = findChildSchemaNode(schema, child); + protected DataNormalizationOperation fromLocalSchemaAndQName(final DataNodeContainer schema, + final QName child) { + final Optional potential = findChildSchemaNode(schema, child); if (!potential.isPresent()) { return null; } - DataSchemaNode result = potential.get(); + final DataSchemaNode result = potential.get(); // We try to look up if this node was added by augmentation - if ((schema instanceof DataSchemaNode) && result.isAugmenting()) { + if (schema instanceof DataSchemaNode && result.isAugmenting()) { return fromAugmentation(schema, (AugmentationTarget) schema, result); } return fromDataSchemaNode(result); @@ -473,12 +343,6 @@ public abstract class DataNormalizationOperation impleme return getIdentifier().getPossibleChildNames(); } - @SuppressWarnings("rawtypes") - @Override - protected NormalizedNodeContainerBuilder createBuilder(final CompositeNode compositeNode) { - return Builders.augmentationBuilder().withNodeIdentifier(getIdentifier()); - } - @Override public NormalizedNode createDefault(final PathArgument currentArg) { return Builders.augmentationBuilder().withNodeIdentifier(getIdentifier()).build(); @@ -487,19 +351,12 @@ public abstract class DataNormalizationOperation impleme } private static class UnorderedMapMixinNormalization extends MixinNormalizationOp { - private final ListItemNormalization innerNode; - public UnorderedMapMixinNormalization(final ListSchemaNode list) { + UnorderedMapMixinNormalization(final ListSchemaNode list) { super(new NodeIdentifier(list.getQName()),list); - this.innerNode = new ListItemNormalization(new NodeIdentifierWithPredicates(list.getQName(), - Collections. emptyMap()), list); - } - - @SuppressWarnings("rawtypes") - @Override - protected NormalizedNodeContainerBuilder createBuilder(final CompositeNode compositeNode) { - return Builders.mapBuilder().withNodeIdentifier(getIdentifier()); + this.innerNode = new ListItemNormalization(NodeIdentifierWithPredicates.of(list.getQName(), + Collections.emptyMap()), list); } @Override @@ -522,25 +379,16 @@ public abstract class DataNormalizationOperation impleme } return null; } - } - private static class UnkeyedListMixinNormalization extends MixinNormalizationOp { - private final UnkeyedListItemNormalization innerNode; - public UnkeyedListMixinNormalization(final ListSchemaNode list) { + UnkeyedListMixinNormalization(final ListSchemaNode list) { super(new NodeIdentifier(list.getQName()),list); this.innerNode = new UnkeyedListItemNormalization(list); } - @SuppressWarnings("rawtypes") - @Override - protected NormalizedNodeContainerBuilder createBuilder(final CompositeNode compositeNode) { - return Builders.unkeyedListBuilder().withNodeIdentifier(getIdentifier()); - } - @Override public NormalizedNode createDefault(final PathArgument currentArg) { return Builders.unkeyedListBuilder().withNodeIdentifier(getIdentifier()).build(); @@ -561,43 +409,34 @@ public abstract class DataNormalizationOperation impleme } return null; } - } private static final class OrderedMapMixinNormalization extends UnorderedMapMixinNormalization { - - public OrderedMapMixinNormalization(final ListSchemaNode list) { + OrderedMapMixinNormalization(final ListSchemaNode list) { super(list); } - @SuppressWarnings("rawtypes") - @Override - protected NormalizedNodeContainerBuilder createBuilder(final CompositeNode compositeNode) { - return Builders.orderedMapBuilder().withNodeIdentifier(getIdentifier()); - } - @Override public NormalizedNode createDefault(final PathArgument currentArg) { return Builders.orderedMapBuilder().withNodeIdentifier(getIdentifier()).build(); } - } private static class ChoiceNodeNormalization extends MixinNormalizationOp { - private final ImmutableMap> byQName; private final ImmutableMap> byArg; - protected ChoiceNodeNormalization(final org.opendaylight.yangtools.yang.model.api.ChoiceNode schema) { + ChoiceNodeNormalization(final ChoiceSchemaNode schema) { super(new NodeIdentifier(schema.getQName()),schema); - ImmutableMap.Builder> byQNameBuilder = ImmutableMap.builder(); - ImmutableMap.Builder> byArgBuilder = ImmutableMap.builder(); + final ImmutableMap.Builder> byQNameBuilder = ImmutableMap.builder(); + final ImmutableMap.Builder> byArgBuilder = + ImmutableMap.builder(); - for (ChoiceCaseNode caze : schema.getCases()) { - for (DataSchemaNode cazeChild : caze.getChildNodes()) { - DataNormalizationOperation childOp = fromDataSchemaNode(cazeChild); + for (final CaseSchemaNode caze : schema.getCases().values()) { + for (final DataSchemaNode cazeChild : caze.getChildNodes()) { + final DataNormalizationOperation childOp = fromDataSchemaNode(cazeChild); byArgBuilder.put(childOp.getIdentifier(), childOp); - for (QName qname : childOp.getQNameIdentifiers()) { + for (final QName qname : childOp.getQNameIdentifiers()) { byQNameBuilder.put(qname, childOp); } } @@ -616,11 +455,6 @@ public abstract class DataNormalizationOperation impleme return byQName.get(child); } - @Override - protected NormalizedNodeContainerBuilder createBuilder(final CompositeNode compositeNode) { - return Builders.choiceBuilder().withNodeIdentifier(getIdentifier()); - } - @Override public NormalizedNode createDefault(final PathArgument currentArg) { return Builders.choiceBuilder().withNodeIdentifier(getIdentifier()).build(); @@ -628,46 +462,37 @@ public abstract class DataNormalizationOperation impleme } private static class AnyXmlNormalization extends DataNormalizationOperation { - - protected AnyXmlNormalization( final AnyXmlSchemaNode schema) { - super( new NodeIdentifier(schema.getQName()), schema); + AnyXmlNormalization(final AnyXmlSchemaNode schema) { + super(new NodeIdentifier(schema.getQName()), schema); } @Override - public DataNormalizationOperation getChild( final PathArgument child ) throws DataNormalizationException { + public DataNormalizationOperation getChild(final PathArgument child) { return null; } @Override - public DataNormalizationOperation getChild( final QName child ) throws DataNormalizationException { + public DataNormalizationOperation getChild(final QName child) { 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 ) { + public NormalizedNode createDefault(final PathArgument currentArg) { return null; } } - private static final Optional findChildSchemaNode(final DataNodeContainer parent,final QName child) { + private static Optional findChildSchemaNode(final DataNodeContainer parent, + final QName child) { DataSchemaNode potential = parent.getDataChildByName(child); if (potential == null) { - Iterable choices = FluentIterable.from( - parent.getChildNodes()).filter(org.opendaylight.yangtools.yang.model.api.ChoiceNode.class); + final Iterable choices = FluentIterable.from(parent.getChildNodes()) + .filter(ChoiceSchemaNode.class); potential = findChoice(choices, child); } return Optional.fromNullable(potential); @@ -676,24 +501,25 @@ public abstract class DataNormalizationOperation impleme private static DataNormalizationOperation fromSchemaAndQNameChecked(final DataNodeContainer schema, final QName child) throws DataNormalizationException { - Optional potential = findChildSchemaNode(schema, child); + final Optional potential = findChildSchemaNode(schema, child); if (!potential.isPresent()) { - throw new DataNormalizationException(String.format("Supplied QName %s is not valid according to schema %s, potential children nodes: %s", child, schema,schema.getChildNodes())); + throw new DataNormalizationException(String.format( + "Supplied QName %s is not valid according to schema %s, potential children nodes: %s", child, + schema,schema.getChildNodes())); } - DataSchemaNode result = potential.get(); + final DataSchemaNode result = potential.get(); // We try to look up if this node was added by augmentation - if ((schema instanceof DataSchemaNode) && result.isAugmenting()) { + if (schema instanceof DataSchemaNode && result.isAugmenting()) { return fromAugmentation(schema, (AugmentationTarget) schema, result); } return fromDataSchemaNode(result); } - private static org.opendaylight.yangtools.yang.model.api.ChoiceNode findChoice( - final Iterable choices, final QName child) { - org.opendaylight.yangtools.yang.model.api.ChoiceNode foundChoice = null; - choiceLoop: for (org.opendaylight.yangtools.yang.model.api.ChoiceNode choice : choices) { - for (ChoiceCaseNode caze : choice.getCases()) { + private static ChoiceSchemaNode findChoice(final Iterable choices, final QName child) { + ChoiceSchemaNode foundChoice = null; + choiceLoop: for (final ChoiceSchemaNode choice : choices) { + for (final CaseSchemaNode caze : choice.getCases().values()) { if (findChildSchemaNode(caze, child).isPresent()) { foundChoice = choice; break choiceLoop; @@ -703,41 +529,37 @@ public abstract class DataNormalizationOperation impleme return foundChoice; } - public static AugmentationIdentifier augmentationIdentifierFrom(final AugmentationSchema augmentation) { - ImmutableSet.Builder potentialChildren = ImmutableSet.builder(); - for (DataSchemaNode child : augmentation.getChildNodes()) { + public static AugmentationIdentifier augmentationIdentifierFrom(final AugmentationSchemaNode augmentation) { + final ImmutableSet.Builder potentialChildren = ImmutableSet.builder(); + for (final DataSchemaNode child : augmentation.getChildNodes()) { potentialChildren.add(child.getQName()); } return new AugmentationIdentifier(potentialChildren.build()); } - private static DataNodeContainer augmentationProxy(final AugmentationSchema augmentation, final DataNodeContainer schema) { - Set children = new HashSet<>(); - for (DataSchemaNode augNode : augmentation.getChildNodes()) { + private static DataNodeContainer augmentationProxy(final AugmentationSchemaNode augmentation, + final DataNodeContainer schema) { + final Set children = new HashSet<>(); + for (final DataSchemaNode augNode : augmentation.getChildNodes()) { children.add(schema.getDataChildByName(augNode.getQName())); } - return new DataSchemaContainerProxy(children); + return new EffectiveAugmentationSchema(augmentation, children); } /** - * Returns a DataNormalizationOperation for provided child node + * Returns a DataNormalizationOperation for provided child node. * + *

* If supplied child is added by Augmentation this operation returns * a DataNormalizationOperation for augmentation, * otherwise returns a DataNormalizationOperation for child as * call for {@link #fromDataSchemaNode(DataSchemaNode)}. - * - * - * @param parent - * @param parentAug - * @param child - * @return */ private static DataNormalizationOperation fromAugmentation(final DataNodeContainer parent, final AugmentationTarget parentAug, final DataSchemaNode child) { - AugmentationSchema augmentation = null; - for (AugmentationSchema aug : parentAug.getAvailableAugmentations()) { - DataSchemaNode potential = aug.getDataChildByName(child.getQName()); + AugmentationSchemaNode augmentation = null; + for (final AugmentationSchemaNode aug : parentAug.getAvailableAugmentations()) { + final DataSchemaNode potential = aug.getDataChildByName(child.getQName()); if (potential != null) { augmentation = aug; break; @@ -759,29 +581,29 @@ public abstract class DataNormalizationOperation impleme return fromListSchemaNode((ListSchemaNode) potential); } else if (potential instanceof LeafSchemaNode) { return new LeafNormalization((LeafSchemaNode) potential); - } else if (potential instanceof org.opendaylight.yangtools.yang.model.api.ChoiceNode) { - return new ChoiceNodeNormalization((org.opendaylight.yangtools.yang.model.api.ChoiceNode) potential); + } else if (potential instanceof ChoiceSchemaNode) { + return new ChoiceNodeNormalization((ChoiceSchemaNode) potential); } else if (potential instanceof LeafListSchemaNode) { return fromLeafListSchemaNode((LeafListSchemaNode) potential); } else if (potential instanceof AnyXmlSchemaNode) { - return new AnyXmlNormalization( (AnyXmlSchemaNode) potential); + return new AnyXmlNormalization((AnyXmlSchemaNode) potential); } return null; } private static DataNormalizationOperation fromListSchemaNode(final ListSchemaNode potential) { - List keyDefinition = potential.getKeyDefinition(); - if(keyDefinition == null || keyDefinition.isEmpty()) { + final List keyDefinition = potential.getKeyDefinition(); + if (keyDefinition == null || keyDefinition.isEmpty()) { return new UnkeyedListMixinNormalization(potential); } - if(potential.isUserOrdered()) { + if (potential.isUserOrdered()) { return new OrderedMapMixinNormalization(potential); } return new UnorderedMapMixinNormalization(potential); } private static DataNormalizationOperation fromLeafListSchemaNode(final LeafListSchemaNode potential) { - if(potential.isUserOrdered()) { + if (potential.isUserOrdered()) { return new OrderedLeafListMixinNormalization(potential); } return new UnorderedLeafListMixinNormalization(potential);