X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-dom-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fsal%2Fdom%2Fbroker%2Fimpl%2FSchemaAwareDataStoreAdapter.java;h=6a456ba0e8d2af5393cd09d3186d3dfbd4fb14d3;hp=1a572d157dba9f8272140495b8eabf9669df11bc;hb=ed6019236d78a69577888f60064c3714eaa80f6a;hpb=aae09dbf11186d2cd30fe87692f746519b0958f9 diff --git a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/impl/SchemaAwareDataStoreAdapter.java b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/impl/SchemaAwareDataStoreAdapter.java index 1a572d157d..6a456ba0e8 100644 --- a/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/impl/SchemaAwareDataStoreAdapter.java +++ b/opendaylight/md-sal/sal-dom-broker/src/main/java/org/opendaylight/controller/sal/dom/broker/impl/SchemaAwareDataStoreAdapter.java @@ -8,7 +8,10 @@ package org.opendaylight.controller.sal.dom.broker.impl; import static com.google.common.base.Preconditions.checkState; - +import com.google.common.base.Predicate; +import com.google.common.collect.FluentIterable; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterables; import java.util.ArrayList; import java.util.Comparator; import java.util.HashMap; @@ -16,7 +19,6 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.concurrent.Future; - import org.opendaylight.controller.md.sal.common.api.TransactionStatus; import org.opendaylight.controller.md.sal.common.api.data.DataModification; import org.opendaylight.controller.md.sal.common.api.data.DataReader; @@ -28,9 +30,9 @@ import org.opendaylight.controller.sal.dom.broker.util.YangSchemaUtils; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.data.api.CompositeNode; -import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.Node; import org.opendaylight.yangtools.yang.data.api.SimpleNode; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.opendaylight.yangtools.yang.data.impl.CompositeNodeTOImpl; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; @@ -40,23 +42,17 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContextListener; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.base.Predicate; -import com.google.common.collect.FluentIterable; -import com.google.common.collect.ImmutableSet; - -public class SchemaAwareDataStoreAdapter extends AbstractLockableDelegator implements // -DataStore, // -SchemaContextListener, // -AutoCloseable { +@Deprecated +public class SchemaAwareDataStoreAdapter extends AbstractLockableDelegator implements DataStore, SchemaContextListener, AutoCloseable { private final static Logger LOG = LoggerFactory.getLogger(SchemaAwareDataStoreAdapter.class); private SchemaContext schema = null; private boolean validationEnabled = false; - private final DataReader reader = new MergeFirstLevelReader(); + private final DataReader reader = new MergeFirstLevelReader(); @Override - public boolean containsConfigurationPath(final InstanceIdentifier path) { + public boolean containsConfigurationPath(final YangInstanceIdentifier path) { try { getDelegateReadLock().lock(); return getDelegate().containsConfigurationPath(path); @@ -67,7 +63,7 @@ AutoCloseable { } @Override - public boolean containsOperationalPath(final InstanceIdentifier path) { + public boolean containsOperationalPath(final YangInstanceIdentifier path) { try { getDelegateReadLock().lock(); return getDelegate().containsOperationalPath(path); @@ -78,7 +74,7 @@ AutoCloseable { } @Override - public Iterable getStoredConfigurationPaths() { + public Iterable getStoredConfigurationPaths() { try { getDelegateReadLock().lock(); return getDelegate().getStoredConfigurationPaths(); @@ -89,7 +85,7 @@ AutoCloseable { } @Override - public Iterable getStoredOperationalPaths() { + public Iterable getStoredOperationalPaths() { try { getDelegateReadLock().lock(); return getDelegate().getStoredOperationalPaths(); @@ -100,18 +96,18 @@ AutoCloseable { } @Override - public CompositeNode readConfigurationData(final InstanceIdentifier path) { + public CompositeNode readConfigurationData(final YangInstanceIdentifier path) { return reader.readConfigurationData(path); } @Override - public CompositeNode readOperationalData(final InstanceIdentifier path) { + public CompositeNode readOperationalData(final YangInstanceIdentifier path) { return reader.readOperationalData(path); } @Override - public org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler.DataCommitTransaction requestCommit( - final DataModification modification) { + public org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler.DataCommitTransaction requestCommit( + final DataModification modification) { validateAgainstSchema(modification); NormalizedDataModification cleanedUp = prepareMergedTransaction(modification); cleanedUp.status = TransactionStatus.SUBMITED; @@ -126,7 +122,7 @@ AutoCloseable { this.validationEnabled = validationEnabled; } - private void validateAgainstSchema(final DataModification modification) { + private void validateAgainstSchema(final DataModification modification) { if (!validationEnabled) { return; } @@ -152,7 +148,7 @@ AutoCloseable { this.schema = null; } - protected CompositeNode mergeData(final InstanceIdentifier path, final CompositeNode stored, final CompositeNode modified, + protected CompositeNode mergeData(final YangInstanceIdentifier path, final CompositeNode stored, final CompositeNode modified, final boolean config) { // long startTime = System.nanoTime(); try { @@ -164,13 +160,13 @@ AutoCloseable { } } - private DataSchemaNode schemaNodeFor(final InstanceIdentifier path) { + private DataSchemaNode schemaNodeFor(final YangInstanceIdentifier path) { checkState(schema != null, "YANG Schema is not available"); return YangSchemaUtils.getSchemaNode(schema, path); } private NormalizedDataModification prepareMergedTransaction( - final DataModification original) { + final DataModification original) { NormalizedDataModification normalized = new NormalizedDataModification(original); LOG.trace("Transaction: {} Removed Configuration {}, Removed Operational {}", original.getIdentifier(), original.getRemovedConfigurationData(), original.getRemovedConfigurationData()); @@ -179,40 +175,40 @@ AutoCloseable { LOG.trace("Transaction: {} Updated Configuration {}, Updated Operational {}", original.getIdentifier(), original.getUpdatedConfigurationData().entrySet(), original.getUpdatedOperationalData().entrySet()); - for (InstanceIdentifier entry : original.getRemovedConfigurationData()) { + for (YangInstanceIdentifier entry : original.getRemovedConfigurationData()) { normalized.deepRemoveConfigurationData(entry); } - for (InstanceIdentifier entry : original.getRemovedOperationalData()) { + for (YangInstanceIdentifier entry : original.getRemovedOperationalData()) { normalized.deepRemoveOperationalData(entry); } - for (Entry entry : original.getUpdatedConfigurationData().entrySet()) { + for (Entry entry : original.getUpdatedConfigurationData().entrySet()) { normalized.putDeepConfigurationData(entry.getKey(), entry.getValue()); } - for (Entry entry : original.getUpdatedOperationalData().entrySet()) { + for (Entry entry : original.getUpdatedOperationalData().entrySet()) { normalized.putDeepOperationalData(entry.getKey(), entry.getValue()); } return normalized; } - private Iterable getConfigurationSubpaths(final InstanceIdentifier entry) { + private Iterable getConfigurationSubpaths(final YangInstanceIdentifier entry) { // FIXME: This should be replaced by index - Iterable paths = getStoredConfigurationPaths(); + Iterable paths = getStoredConfigurationPaths(); return getChildrenPaths(entry, paths); } - public Iterable getOperationalSubpaths(final InstanceIdentifier entry) { + public Iterable getOperationalSubpaths(final YangInstanceIdentifier entry) { // FIXME: This should be indexed - Iterable paths = getStoredOperationalPaths(); + Iterable paths = getStoredOperationalPaths(); return getChildrenPaths(entry, paths); } - private static final Iterable getChildrenPaths(final InstanceIdentifier entry, - final Iterable paths) { - ImmutableSet.Builder children = ImmutableSet.builder(); - for (InstanceIdentifier potential : paths) { + private static final Iterable getChildrenPaths(final YangInstanceIdentifier entry, + final Iterable paths) { + ImmutableSet.Builder children = ImmutableSet.builder(); + for (YangInstanceIdentifier potential : paths) { if (entry.contains(potential)) { children.add(entry); } @@ -220,22 +216,22 @@ AutoCloseable { return children.build(); } - private final Comparator> preparationComparator = new Comparator>() { + private final Comparator> preparationComparator = new Comparator>() { @Override - public int compare(final Entry o1, final Entry o2) { - InstanceIdentifier o1Key = o1.getKey(); - InstanceIdentifier o2Key = o2.getKey(); - return Integer.compare(o1Key.getPath().size(), o2Key.getPath().size()); + public int compare(final Entry o1, final Entry o2) { + YangInstanceIdentifier o1Key = o1.getKey(); + YangInstanceIdentifier o2Key = o2.getKey(); + return Integer.compare(Iterables.size(o1Key.getPathArguments()), Iterables.size(o2Key.getPathArguments())); } }; - private class MergeFirstLevelReader implements DataReader { + private class MergeFirstLevelReader implements DataReader { @Override - public CompositeNode readConfigurationData(final InstanceIdentifier path) { + public CompositeNode readConfigurationData(final YangInstanceIdentifier path) { getDelegateReadLock().lock(); try { - if (path.getPath().isEmpty()) { + if (Iterables.isEmpty(path.getPathArguments())) { return null; } QName qname = null; @@ -245,15 +241,15 @@ AutoCloseable { childNodes.addAll(original.getValue()); qname = original.getNodeType(); } else { - qname = path.getPath().get(path.getPath().size() - 1).getNodeType(); + qname = path.getLastPathArgument().getNodeType(); } - FluentIterable directChildren = FluentIterable.from(getStoredConfigurationPaths()) - .filter(new Predicate() { + FluentIterable directChildren = FluentIterable.from(getStoredConfigurationPaths()) + .filter(new Predicate() { @Override - public boolean apply(final InstanceIdentifier input) { + public boolean apply(final YangInstanceIdentifier input) { if (path.contains(input)) { - int nesting = input.getPath().size() - path.getPath().size(); + int nesting = Iterables.size(input.getPathArguments()) - Iterables.size(path.getPathArguments()); if (nesting == 1) { return true; } @@ -261,7 +257,7 @@ AutoCloseable { return false; } }); - for (InstanceIdentifier instanceIdentifier : directChildren) { + for (YangInstanceIdentifier instanceIdentifier : directChildren) { childNodes.add(getDelegate().readConfigurationData(instanceIdentifier)); } if (original == null && childNodes.isEmpty()) { @@ -275,10 +271,10 @@ AutoCloseable { } @Override - public CompositeNode readOperationalData(final InstanceIdentifier path) { + public CompositeNode readOperationalData(final YangInstanceIdentifier path) { getDelegateReadLock().lock(); try { - if (path.getPath().isEmpty()) { + if (Iterables.isEmpty(path.getPathArguments())) { return null; } QName qname = null; @@ -288,15 +284,15 @@ AutoCloseable { childNodes.addAll(original.getValue()); qname = original.getNodeType(); } else { - qname = path.getPath().get(path.getPath().size() - 1).getNodeType(); + qname = path.getLastPathArgument().getNodeType(); } - FluentIterable directChildren = FluentIterable.from(getStoredOperationalPaths()) - .filter(new Predicate() { + FluentIterable directChildren = FluentIterable.from(getStoredOperationalPaths()) + .filter(new Predicate() { @Override - public boolean apply(final InstanceIdentifier input) { + public boolean apply(final YangInstanceIdentifier input) { if (path.contains(input)) { - int nesting = input.getPath().size() - path.getPath().size(); + int nesting = Iterables.size(input.getPathArguments()) - Iterables.size(path.getPathArguments()); if (nesting == 1) { return true; } @@ -305,7 +301,7 @@ AutoCloseable { } }); - for (InstanceIdentifier instanceIdentifier : directChildren) { + for (YangInstanceIdentifier instanceIdentifier : directChildren) { childNodes.add(getDelegate().readOperationalData(instanceIdentifier)); } if (original == null && childNodes.isEmpty()) { @@ -319,14 +315,14 @@ AutoCloseable { } } - private class NormalizedDataModification extends AbstractDataModification { + private class NormalizedDataModification extends AbstractDataModification { private final String CONFIGURATIONAL_DATA_STORE_MARKER = "configurational"; private final String OPERATIONAL_DATA_STORE_MARKER = "operational"; private final Object identifier; private TransactionStatus status; - public NormalizedDataModification(final DataModification original) { + public NormalizedDataModification(final DataModification original) { super(getDelegate()); identifier = original; status = TransactionStatus.NEW; @@ -339,27 +335,27 @@ AutoCloseable { * * @param entry */ - public void deepRemoveOperationalData(final InstanceIdentifier entry) { - Iterable paths = getOperationalSubpaths(entry); + public void deepRemoveOperationalData(final YangInstanceIdentifier entry) { + Iterable paths = getOperationalSubpaths(entry); removeOperationalData(entry); - for (InstanceIdentifier potential : paths) { + for (YangInstanceIdentifier potential : paths) { removeOperationalData(potential); } } - public void deepRemoveConfigurationData(final InstanceIdentifier entry) { - Iterable paths = getConfigurationSubpaths(entry); + public void deepRemoveConfigurationData(final YangInstanceIdentifier entry) { + Iterable paths = getConfigurationSubpaths(entry); removeConfigurationData(entry); - for (InstanceIdentifier potential : paths) { + for (YangInstanceIdentifier potential : paths) { removeConfigurationData(potential); } } - public void putDeepConfigurationData(final InstanceIdentifier entryKey, final CompositeNode entryData) { + public void putDeepConfigurationData(final YangInstanceIdentifier entryKey, final CompositeNode entryData) { this.putCompositeNodeData(entryKey, entryData, CONFIGURATIONAL_DATA_STORE_MARKER); } - public void putDeepOperationalData(final InstanceIdentifier entryKey, final CompositeNode entryData) { + public void putDeepOperationalData(final YangInstanceIdentifier entryKey, final CompositeNode entryData) { this.putCompositeNodeData(entryKey, entryData, OPERATIONAL_DATA_STORE_MARKER); } @@ -379,18 +375,18 @@ AutoCloseable { } @Override - protected CompositeNode mergeConfigurationData(final InstanceIdentifier path, final CompositeNode stored, + protected CompositeNode mergeConfigurationData(final YangInstanceIdentifier path, final CompositeNode stored, final CompositeNode modified) { return mergeData(path, stored, modified, true); } @Override - protected CompositeNode mergeOperationalData(final InstanceIdentifier path, final CompositeNode stored, + protected CompositeNode mergeOperationalData(final YangInstanceIdentifier path, final CompositeNode stored, final CompositeNode modified) { return mergeData(path, stored, modified, false); } - private void putData(final InstanceIdentifier entryKey, final CompositeNode entryData, final String dataStoreIdentifier) { + private void putData(final YangInstanceIdentifier entryKey, final CompositeNode entryData, final String dataStoreIdentifier) { if (dataStoreIdentifier != null && entryKey != null && entryData != null) { switch (dataStoreIdentifier) { case (CONFIGURATIONAL_DATA_STORE_MARKER): @@ -407,29 +403,29 @@ AutoCloseable { } } - private void putCompositeNodeData(final InstanceIdentifier entryKey, final CompositeNode entryData, + private void putCompositeNodeData(final YangInstanceIdentifier entryKey, final CompositeNode entryData, final String dataStoreIdentifier) { this.putData(entryKey, entryData, dataStoreIdentifier); for (Node child : entryData.getValue()) { - InstanceIdentifier subEntryId = InstanceIdentifier.builder(entryKey).node(child.getNodeType()) + YangInstanceIdentifier subEntryId = YangInstanceIdentifier.builder(entryKey).node(child.getNodeType()) .toInstance(); if (child instanceof CompositeNode) { DataSchemaNode subSchema = schemaNodeFor(subEntryId); CompositeNode compNode = (CompositeNode) child; - InstanceIdentifier instanceId = null; + YangInstanceIdentifier instanceId = null; if (subSchema instanceof ListSchemaNode) { ListSchemaNode listSubSchema = (ListSchemaNode) subSchema; Map mapOfSubValues = this.getValuesFromListSchema(listSubSchema, (CompositeNode) child); if (mapOfSubValues != null) { - instanceId = InstanceIdentifier.builder(entryKey) + instanceId = YangInstanceIdentifier.builder(entryKey) .nodeWithKey(listSubSchema.getQName(), mapOfSubValues).toInstance(); } } else if (subSchema instanceof ContainerSchemaNode) { ContainerSchemaNode containerSchema = (ContainerSchemaNode) subSchema; - instanceId = InstanceIdentifier.builder(entryKey).node(subSchema.getQName()).toInstance(); + instanceId = YangInstanceIdentifier.builder(entryKey).node(subSchema.getQName()).toInstance(); } if (instanceId != null) { this.putCompositeNodeData(instanceId, compNode, dataStoreIdentifier);