From 72ec925228c924330ecbc568c652b9e56630b37f Mon Sep 17 00:00:00 2001 From: Tony Tkacik Date: Thu, 23 Jul 2015 14:23:26 +0200 Subject: [PATCH] Bug 4035: Remove unused implementations from sal-common-impl Removed left-overs from Hydrogen and Helium which are not used anymore in Lithium codebase and will be unnecessary in Beryllium codebase. Removed classes were never part of public API contracts outside of MD-SAL. Change-Id: I2d19373b270e539598fe31b7e493db494b017100 Signed-off-by: Tony Tkacik --- .../sal/common/impl/AbstractDataChange.java | 65 --- .../common/impl/AbstractDataModification.java | 196 -------- .../impl/AbstractRoutedRegistration.java | 20 - .../impl/routing/AbstractDataReadRouter.java | 198 -------- .../impl/service/AbstractDataBroker.java | 438 ------------------ .../impl/service/AbstractDataTransaction.java | 119 +---- .../impl/service/DataChangeEventImpl.java | 93 ---- .../DataChangeListenerRegistration.java | 37 -- .../service/ImmutableDataChangeEvent.java | 261 ----------- .../service/InitialDataChangeEventImpl.java | 96 ---- .../impl/service/ListenerStateCapture.java | 127 ----- .../common/impl/service/RootedChangeSet.java | 74 --- .../common/impl/service/TwoPhaseCommit.java | 242 ---------- .../compat/DataNormalizationOperation.java | 49 +- 14 files changed, 26 insertions(+), 1989 deletions(-) delete mode 100644 opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/AbstractDataChange.java delete mode 100644 opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/AbstractDataModification.java delete mode 100644 opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/AbstractRoutedRegistration.java delete mode 100644 opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/routing/AbstractDataReadRouter.java delete mode 100644 opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/AbstractDataBroker.java delete mode 100644 opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/DataChangeEventImpl.java delete mode 100644 opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/DataChangeListenerRegistration.java delete mode 100644 opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/ImmutableDataChangeEvent.java delete mode 100644 opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/InitialDataChangeEventImpl.java delete mode 100644 opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/ListenerStateCapture.java delete mode 100644 opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/RootedChangeSet.java delete mode 100644 opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/TwoPhaseCommit.java diff --git a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/AbstractDataChange.java b/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/AbstractDataChange.java deleted file mode 100644 index a90595b060..0000000000 --- a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/AbstractDataChange.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * 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.controller.md.sal.common.impl; - -import java.util.Map; -import java.util.Set; - -import org.opendaylight.controller.md.sal.common.api.data.DataChange; -import org.opendaylight.yangtools.concepts.Path; - -public abstract class AbstractDataChange

, D> implements DataChange { - - private final Map createdCfg; - private final Map createdOperational; - private final Set

removedCfg; - private final Set

removedOperational; - private final Map updatedCfg; - private final Map updatedOperational; - - public AbstractDataChange(Map createdCfg, Map createdOperational, Set

removedCfg, - Set

removedOperational, Map updatedCfg, Map updatedOperational) { - this.createdCfg = createdCfg; - this.createdOperational = createdOperational; - this.removedCfg = (removedCfg); - this.removedOperational = (removedOperational); - this.updatedCfg = (updatedCfg); - this.updatedOperational = (updatedOperational); - } - - @Override - public final Map getCreatedConfigurationData() { - return this.createdCfg; - } - - @Override - public final Map getCreatedOperationalData() { - return this.createdOperational; - } - - @Override - public final Set

getRemovedConfigurationData() { - return this.removedCfg; - } - - @Override - public final Set

getRemovedOperationalData() { - return this.removedOperational; - } - - @Override - public final Map getUpdatedConfigurationData() { - return this.updatedCfg; - } - - @Override - public final Map getUpdatedOperationalData() { - return this.updatedOperational; - } - -} diff --git a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/AbstractDataModification.java b/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/AbstractDataModification.java deleted file mode 100644 index 1d3967f94d..0000000000 --- a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/AbstractDataModification.java +++ /dev/null @@ -1,196 +0,0 @@ -/* - * 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.controller.md.sal.common.impl; - -import static org.opendaylight.controller.md.sal.common.api.TransactionStatus.NEW; - -import java.util.Collections; -import java.util.LinkedHashMap; -import java.util.Map; -import java.util.Set; - -import org.opendaylight.controller.md.sal.common.api.data.DataModification; -import org.opendaylight.controller.md.sal.common.api.data.DataReader; -import org.opendaylight.yangtools.concepts.Path; - -@Deprecated -public abstract class AbstractDataModification

, D> implements DataModification { - - private final Map operationalOriginal; - private final Map configurationOriginal; - - private final Map operationalCreated; - private final Map configurationCreated; - - private final Map configurationUpdate; - private final Map operationalUpdate; - - private final Map configurationRemove; - private final Map operationalRemove; - - private final Map unmodifiable_configurationOriginal; - private final Map unmodifiable_operationalOriginal; - private final Map unmodifiable_configurationCreated; - private final Map unmodifiable_operationalCreated; - private final Map unmodifiable_configurationUpdate; - private final Map unmodifiable_operationalUpdate; - private final Set

unmodifiable_configurationRemove; - private final Set

unmodifiable_OperationalRemove; - private final DataReader reader; - - public AbstractDataModification(final DataReader reader) { - this.reader = reader; - this.configurationUpdate = new LinkedHashMap<>(); - this.operationalUpdate = new LinkedHashMap<>(); - this.configurationRemove = new LinkedHashMap<>(); - this.operationalRemove = new LinkedHashMap<>(); - - this.configurationOriginal = new LinkedHashMap<>(); - this.operationalOriginal = new LinkedHashMap<>(); - - this.configurationCreated = new LinkedHashMap<>(); - this.operationalCreated = new LinkedHashMap<>(); - - unmodifiable_configurationOriginal = Collections.unmodifiableMap(configurationOriginal); - unmodifiable_operationalOriginal = Collections.unmodifiableMap(operationalOriginal); - unmodifiable_configurationCreated = Collections.unmodifiableMap(configurationCreated); - unmodifiable_operationalCreated = Collections.unmodifiableMap(operationalCreated); - unmodifiable_configurationUpdate = Collections.unmodifiableMap(configurationUpdate); - unmodifiable_operationalUpdate = Collections.unmodifiableMap(operationalUpdate); - unmodifiable_configurationRemove = Collections.unmodifiableSet(configurationRemove.keySet()); - unmodifiable_OperationalRemove = Collections.unmodifiableSet(operationalRemove.keySet()); - } - - @Override - public final void putConfigurationData(final P path, final D data) { - checkMutable(); - D original = null; - if ((original = getConfigurationOriginal(path)) == null) { - configurationCreated.put(path, data); - } - - configurationUpdate.put(path, mergeConfigurationData(path,original, data)); - } - - @Override - public final void putOperationalData(final P path, final D data) { - checkMutable(); - D original = null; - if ((original = getOperationalOriginal(path)) == null) { - operationalCreated.put(path, data); - } - operationalUpdate.put(path, mergeOperationalData(path,original,data)); - } - - @Override - public final void removeOperationalData(final P path) { - checkMutable(); - getOperationalOriginal(path); - operationalUpdate.remove(path); - operationalRemove.put(path, path); - } - - @Override - public final void removeConfigurationData(final P path) { - checkMutable(); - getConfigurationOriginal(path); - configurationUpdate.remove(path); - configurationRemove.put(path, path); - } - - private final void checkMutable() { - if (!NEW.equals(this.getStatus())) { - throw new IllegalStateException("Transaction was already submitted"); - } - } - - @Override - public final Map getUpdatedConfigurationData() { - - return unmodifiable_configurationUpdate; - } - - @Override - public final Map getUpdatedOperationalData() { - return unmodifiable_operationalUpdate; - } - - @Override - public final Set

getRemovedConfigurationData() { - return unmodifiable_configurationRemove; - } - - @Override - public final Set

getRemovedOperationalData() { - return unmodifiable_OperationalRemove; - } - - @Override - public Map getCreatedConfigurationData() { - return unmodifiable_configurationCreated; - } - - @Override - public Map getCreatedOperationalData() { - return unmodifiable_operationalCreated; - } - - @Override - public Map getOriginalConfigurationData() { - return unmodifiable_configurationOriginal; - } - - @Override - public Map getOriginalOperationalData() { - return unmodifiable_operationalOriginal; - } - - @Override - public D readOperationalData(final P path) { - return reader.readOperationalData(path); - } - - @Override - public D readConfigurationData(final P path) { - return reader.readConfigurationData(path); - } - - private D getConfigurationOriginal(final P path) { - D data = configurationOriginal.get(path); - if (data != null) { - return data; - } - data = reader.readConfigurationData(path); - if (data != null) { - configurationOriginal.put(path, data); - return data; - } - return null; - } - - private D getOperationalOriginal(final P path) { - D data = operationalOriginal.get(path); - if (data != null) { - return data; - } - data = reader.readOperationalData(path); - if (data != null) { - operationalOriginal.put(path, data); - return data; - } - return null; - } - - protected D mergeOperationalData(final P path,final D stored, final D modified) { - return modified; - } - - protected D mergeConfigurationData(final P path,final D stored, final D modified) { - return modified; - } -} diff --git a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/AbstractRoutedRegistration.java b/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/AbstractRoutedRegistration.java deleted file mode 100644 index 22c458a507..0000000000 --- a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/AbstractRoutedRegistration.java +++ /dev/null @@ -1,20 +0,0 @@ -/* - * 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.controller.md.sal.common.impl; - -import org.opendaylight.controller.md.sal.common.api.routing.RoutedRegistration; -import org.opendaylight.yangtools.concepts.AbstractObjectRegistration; -import org.opendaylight.yangtools.concepts.Path; - -public abstract class AbstractRoutedRegistration, S> extends AbstractObjectRegistration implements - RoutedRegistration { - - public AbstractRoutedRegistration(S instance) { - super(instance); - } -} diff --git a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/routing/AbstractDataReadRouter.java b/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/routing/AbstractDataReadRouter.java deleted file mode 100644 index fea06bb2a1..0000000000 --- a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/routing/AbstractDataReadRouter.java +++ /dev/null @@ -1,198 +0,0 @@ -/* - * 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.controller.md.sal.common.impl.routing; - -import java.util.Map.Entry; - -import org.opendaylight.controller.md.sal.common.api.data.DataReader; -import org.opendaylight.yangtools.concepts.AbstractObjectRegistration; -import org.opendaylight.yangtools.concepts.Path; -import org.opendaylight.yangtools.concepts.Registration; - -import com.google.common.base.Function; -import com.google.common.base.Predicate; -import com.google.common.collect.FluentIterable; -import com.google.common.collect.HashMultimap; -import com.google.common.collect.Multimap; -import com.google.common.collect.Multimaps; - -/** - * Base abstract implementation of DataReadRouter, which performs - * a read operation on multiple data readers and then merges result. - * - * @param

- * @param - */ -@Deprecated -public abstract class AbstractDataReadRouter

, D> implements DataReader { - - Multimap> configReaders = Multimaps.synchronizedSetMultimap(HashMultimap.>create()); - Multimap> operationalReaders = Multimaps.synchronizedSetMultimap(HashMultimap.>create()); - - @Override - public D readConfigurationData(P path) { - FluentIterable dataBits = FluentIterable // - .from(getReaders(configReaders, path)).transform(configurationRead(path)); - return merge(path,dataBits); - } - - @Override - public D readOperationalData(P path) { - FluentIterable dataBits = FluentIterable // - .from(getReaders(operationalReaders, path)).transform(operationalRead(path)); - return merge(path,dataBits); - - } - - /** - * Merges data readed by reader instances from specified path - * - * @param path Path on which read was performed - * @param data Data which was returned by read operation. - * @return Merged result. - */ - protected abstract D merge(P path,Iterable data); - - /** - * Returns a function which performs configuration read for supplied path - * - * @param path - * @return function which performs configuration read for supplied path - */ - - private Function, D> configurationRead(final P path) { - return new Function, D>() { - @Override - public D apply(DataReader input) { - return input.readConfigurationData(path); - } - }; - } - - /** - * Returns a function which performs operational read for supplied path - * - * @param path - * @return function which performs operational read for supplied path - */ - private Function, D> operationalRead(final P path) { - return new Function, D>() { - @Override - public D apply(DataReader input) { - return input.readOperationalData(path); - } - }; - } - - // Registrations - - /** - * Register's a reader for operational data. - * - * @param path Path which is served by this reader - * @param reader Reader instance which is responsible for reading particular subpath. - * @return - */ - public Registration registerOperationalReader(P path, DataReader reader) { - OperationalDataReaderRegistration ret = new OperationalDataReaderRegistration<>(path, reader); - operationalReaders.put(path, ret); - return ret; - } - - public Registration registerConfigurationReader(P path, DataReader reader) { - ConfigurationDataReaderRegistration ret = new ConfigurationDataReaderRegistration<>(path, reader); - configReaders.put(path, ret); - return ret; - } - - Iterable> getOperationalReaders(P path) { - return getReaders(operationalReaders, path); - } - - Iterable> getConfigurationReaders(P path) { - return getReaders(configReaders, path); - } - - private Iterable> getReaders(Multimap> readerMap, P path) { - return FluentIterable - .from(readerMap.entries()) // - .filter(affects(path)) // - .transform(retrieveInstance()); - } - - private void removeRegistration(OperationalDataReaderRegistration registration) { - operationalReaders.remove(registration.getKey(), registration); - } - - private void removeRegistration(ConfigurationDataReaderRegistration registration) { - configReaders.remove(registration.getKey(), registration); - } - - private Function>, DataReader> retrieveInstance() { - return new Function>, DataReader>() { - @Override - public DataReader apply(Entry> input) { - return input.getValue().getInstance(); - } - }; - } - - private Predicate>> affects(final P path) { - - return new Predicate>>() { - - @Override - public boolean apply(Entry> input) { - final P key = input.getKey(); - return key.contains(path) || ((P) path).contains(key); - } - - }; - } - - @SuppressWarnings("hiding") - private class ConfigurationDataReaderRegistration

, D> extends DataReaderRegistration { - - public ConfigurationDataReaderRegistration(P key, DataReader instance) { - super(key, instance); - } - - @Override - protected void removeRegistration() { - AbstractDataReadRouter.this.removeRegistration(this); - } - } - - @SuppressWarnings("hiding") - private class OperationalDataReaderRegistration

, D> extends DataReaderRegistration { - - public OperationalDataReaderRegistration(P key, DataReader instance) { - super(key, instance); - } - - @Override - protected void removeRegistration() { - AbstractDataReadRouter.this.removeRegistration(this); - } - } - - private abstract static class DataReaderRegistration

, D> extends - AbstractObjectRegistration> { - - private final P key; - - public P getKey() { - return this.key; - } - - public DataReaderRegistration(P key, DataReader instance) { - super(instance); - this.key = key; - } - } -} diff --git a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/AbstractDataBroker.java b/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/AbstractDataBroker.java deleted file mode 100644 index 88cb039a88..0000000000 --- a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/AbstractDataBroker.java +++ /dev/null @@ -1,438 +0,0 @@ -/** - * 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.controller.md.sal.common.impl.service; - -import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; -import java.util.HashSet; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Future; -import java.util.concurrent.atomic.AtomicLong; -import java.util.concurrent.locks.Lock; -import java.util.concurrent.locks.ReentrantLock; - -import org.opendaylight.controller.md.sal.common.api.RegistrationListener; -import org.opendaylight.controller.md.sal.common.api.TransactionStatus; -import org.opendaylight.controller.md.sal.common.api.data.DataChangeEvent; -import org.opendaylight.controller.md.sal.common.api.data.DataChangeListener; -import org.opendaylight.controller.md.sal.common.api.data.DataChangePublisher; -import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler; -import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandlerRegistration; -import org.opendaylight.controller.md.sal.common.api.data.DataModificationTransactionFactory; -import org.opendaylight.controller.md.sal.common.api.data.DataProvisionService; -import org.opendaylight.controller.md.sal.common.api.data.DataReader; -import org.opendaylight.controller.md.sal.common.impl.routing.AbstractDataReadRouter; -import org.opendaylight.yangtools.concepts.AbstractObjectRegistration; -import org.opendaylight.yangtools.concepts.CompositeObjectRegistration; -import org.opendaylight.yangtools.concepts.ListenerRegistration; -import org.opendaylight.yangtools.concepts.Path; -import org.opendaylight.yangtools.concepts.Registration; -import org.opendaylight.yangtools.util.ListenerRegistry; -import org.opendaylight.yangtools.yang.common.RpcResult; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.Function; -import com.google.common.base.Preconditions; -import com.google.common.base.Predicate; -import com.google.common.base.Supplier; -import com.google.common.collect.FluentIterable; -import com.google.common.collect.HashMultimap; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.Multimap; -import com.google.common.collect.Multimaps; -import com.google.common.util.concurrent.MoreExecutors; - -@Deprecated -public abstract class AbstractDataBroker

, D extends Object, DCL extends DataChangeListener> - implements DataModificationTransactionFactory, DataReader, DataChangePublisher, - DataProvisionService { - private final static Logger LOG = LoggerFactory.getLogger(AbstractDataBroker.class); - - private ExecutorService executor; - - public ExecutorService getExecutor() { - return this.executor; - } - - public void setExecutor(final ExecutorService executor) { - this.executor = executor; - } - - private ExecutorService notificationExecutor = MoreExecutors.sameThreadExecutor(); - - public ExecutorService getNotificationExecutor() { - return this.notificationExecutor; - } - - public void setNotificationExecutor(final ExecutorService notificationExecutor) { - this.notificationExecutor = notificationExecutor; - } - - private AbstractDataReadRouter dataReadRouter; - - private final AtomicLong submittedTransactionsCount = new AtomicLong(); - - private final AtomicLong failedTransactionsCount = new AtomicLong(); - - private final AtomicLong finishedTransactionsCount = new AtomicLong(); - - public AbstractDataReadRouter getDataReadRouter() { - return this.dataReadRouter; - } - - public void setDataReadRouter(final AbstractDataReadRouter dataReadRouter) { - this.dataReadRouter = dataReadRouter; - } - - public AtomicLong getSubmittedTransactionsCount() { - return this.submittedTransactionsCount; - } - - public AtomicLong getFailedTransactionsCount() { - return this.failedTransactionsCount; - } - - public AtomicLong getFinishedTransactionsCount() { - return this.finishedTransactionsCount; - } - - private final Multimap> listeners = Multimaps - .synchronizedSetMultimap(HashMultimap.> create()); - - private final Multimap> commitHandlers = Multimaps - .synchronizedSetMultimap(HashMultimap.> create()); - - private final Lock registrationLock = new ReentrantLock(); - - private final ListenerRegistry>> commitHandlerRegistrationListeners = new ListenerRegistry>>(); - - public AbstractDataBroker() { - } - - protected ImmutableList> affectedCommitHandlers(final Set

paths) { - final Supplier>> _function = new Supplier>>() { - @Override - public ImmutableList> get() { - Map>> _asMap = commitHandlers.asMap(); - Set>>> _entrySet = _asMap.entrySet(); - FluentIterable>>> _from = FluentIterable - .>>> from(_entrySet); - final Predicate>>> _function = new Predicate>>>() { - @Override - public boolean apply(final Entry>> it) { - P _key = it.getKey(); - boolean _isAffectedBy = isAffectedBy(_key, paths); - return _isAffectedBy; - } - }; - FluentIterable>>> _filter = _from - .filter(_function); - final Function>>, Collection>> _function_1 = new Function>>, Collection>>() { - @Override - public Collection> apply( - final Entry>> it) { - Collection> _value = it.getValue(); - return _value; - } - }; - FluentIterable> _transformAndConcat = _filter - .> transformAndConcat(_function_1); - final Function, DataCommitHandler> _function_2 = new Function, DataCommitHandler>() { - @Override - public DataCommitHandler apply(final DataCommitHandlerRegistrationImpl it) { - DataCommitHandler _instance = it.getInstance(); - return _instance; - } - }; - FluentIterable> _transform = _transformAndConcat - .> transform(_function_2); - return _transform.toList(); - } - }; - return AbstractDataBroker.>> withLock(this.registrationLock, _function); - } - - protected ImmutableList> probablyAffectedCommitHandlers(final HashSet

paths) { - final Supplier>> _function = new Supplier>>() { - @Override - public ImmutableList> get() { - Map>> _asMap = commitHandlers.asMap(); - Set>>> _entrySet = _asMap.entrySet(); - FluentIterable>>> _from = FluentIterable - .>>> from(_entrySet); - final Predicate>>> _function = new Predicate>>>() { - @Override - public boolean apply(final Entry>> it) { - P _key = it.getKey(); - boolean _isProbablyAffectedBy = isProbablyAffectedBy(_key, paths); - return _isProbablyAffectedBy; - } - }; - FluentIterable>>> _filter = _from - .filter(_function); - final Function>>, Collection>> _function_1 = new Function>>, Collection>>() { - @Override - public Collection> apply( - final Entry>> it) { - Collection> _value = it.getValue(); - return _value; - } - }; - FluentIterable> _transformAndConcat = _filter - .> transformAndConcat(_function_1); - final Function, DataCommitHandler> _function_2 = new Function, DataCommitHandler>() { - @Override - public DataCommitHandler apply(final DataCommitHandlerRegistrationImpl it) { - DataCommitHandler _instance = it.getInstance(); - return _instance; - } - }; - FluentIterable> _transform = _transformAndConcat - .> transform(_function_2); - return _transform.toList(); - } - }; - return AbstractDataBroker.>> withLock(this.registrationLock, _function); - } - - protected Map deepGetBySubpath(final Map dataSet, final P path) { - return Collections. emptyMap(); - } - - @Override - public final D readConfigurationData(final P path) { - AbstractDataReadRouter _dataReadRouter = this.getDataReadRouter(); - return _dataReadRouter.readConfigurationData(path); - } - - @Override - public final D readOperationalData(final P path) { - AbstractDataReadRouter _dataReadRouter = this.getDataReadRouter(); - return _dataReadRouter.readOperationalData(path); - } - - private static T withLock(final Lock lock, final Supplier method) { - lock.lock(); - try { - return method.get(); - } finally { - lock.unlock(); - } - } - - @Override - public final Registration registerCommitHandler(final P path, - final DataCommitHandler commitHandler) { - synchronized (commitHandler) { - final DataCommitHandlerRegistrationImpl registration = new DataCommitHandlerRegistrationImpl( - path, commitHandler, this); - commitHandlers.put(path, registration); - LOG.trace("Registering Commit Handler {} for path: {}", commitHandler, path); - for (final ListenerRegistration>> listener : commitHandlerRegistrationListeners) { - try { - listener.getInstance().onRegister(registration); - } catch (Exception e) { - LOG.error("Unexpected exception in listener {} during invoking onRegister", listener.getInstance(), - e); - } - } - return registration; - } - } - - @Override - public final ListenerRegistration registerDataChangeListener(final P path, final DCL listener) { - synchronized (listeners) { - final DataChangeListenerRegistration reg = new DataChangeListenerRegistration(path, - listener, AbstractDataBroker.this); - listeners.put(path, reg); - final D initialConfig = getDataReadRouter().readConfigurationData(path); - final D initialOperational = getDataReadRouter().readOperationalData(path); - final DataChangeEvent event = createInitialListenerEvent(path, initialConfig, initialOperational); - listener.onDataChanged(event); - return reg; - } - } - - public final CompositeObjectRegistration> registerDataReader(final P path, - final DataReader reader) { - - final Registration confReg = getDataReadRouter().registerConfigurationReader(path, reader); - final Registration dataReg = getDataReadRouter().registerOperationalReader(path, reader); - return new CompositeObjectRegistration>(reader, Arrays.asList(confReg, dataReg)); - } - - @Override - public ListenerRegistration>> registerCommitHandlerListener( - final RegistrationListener> commitHandlerListener) { - final ListenerRegistration>> ret = this.commitHandlerRegistrationListeners - .register(commitHandlerListener); - return ret; - } - - protected DataChangeEvent createInitialListenerEvent(final P path, final D initialConfig, - final D initialOperational) { - InitialDataChangeEventImpl _initialDataChangeEventImpl = new InitialDataChangeEventImpl( - initialConfig, initialOperational); - return _initialDataChangeEventImpl; - } - - protected final void removeListener(final DataChangeListenerRegistration registration) { - synchronized (listeners) { - listeners.remove(registration.getPath(), registration); - } - } - - protected final void removeCommitHandler(final DataCommitHandlerRegistrationImpl registration) { - synchronized (commitHandlers) { - - commitHandlers.remove(registration.getPath(), registration); - LOG.trace("Removing Commit Handler {} for path: {}", registration.getInstance(), registration.getPath()); - for (final ListenerRegistration>> listener : commitHandlerRegistrationListeners) { - try { - listener.getInstance().onUnregister(registration); - } catch (Exception e) { - LOG.error("Unexpected exception in listener {} during invoking onUnregister", - listener.getInstance(), e); - } - } - } - - } - - protected final Collection>> getActiveCommitHandlers() { - return commitHandlers.entries(); - } - - protected ImmutableList> affectedListeners(final Set

paths) { - - synchronized (listeners) { - return FluentIterable // - .from(listeners.asMap().entrySet()) // - .filter(new Predicate>>>() { - @Override - public boolean apply(final Entry>> it) { - return isAffectedBy(it.getKey(), paths); - } - }) // - .transform( - new Function>>, ListenerStateCapture>() { - @Override - public ListenerStateCapture apply( - final Entry>> it) { - return new ListenerStateCapture(it.getKey(), it.getValue(), - createContainsPredicate(it.getKey())); - } - }) // - .toList(); - } - } - - protected ImmutableList> probablyAffectedListeners(final Set

paths) { - synchronized (listeners) { - return FluentIterable // - .from(listeners.asMap().entrySet()) // - .filter(new Predicate>>>() { - @Override - public boolean apply(final Entry>> it) { - return isProbablyAffectedBy(it.getKey(), paths); - } - }) // - .transform( - new Function>>, ListenerStateCapture>() { - @Override - public ListenerStateCapture apply( - final Entry>> it) { - return new ListenerStateCapture(it.getKey(), it.getValue(), - createIsContainedPredicate(it.getKey())); - } - }) // - .toList(); - } - } - - protected Predicate

createContainsPredicate(final P key) { - return new Predicate

() { - @Override - public boolean apply(final P other) { - return key.contains(other); - } - }; - } - - protected Predicate

createIsContainedPredicate(final P key) { - return new Predicate

() { - @Override - public boolean apply(final P other) { - return other.contains(key); - } - }; - } - - protected boolean isAffectedBy(final P key, final Set

paths) { - final Predicate

contains = this.createContainsPredicate(key); - if (paths.contains(key)) { - return true; - } - for (final P path : paths) { - if (contains.apply(path)) { - return true; - } - } - return false; - } - - protected boolean isProbablyAffectedBy(final P key, final Set

paths) { - final Predicate

isContained = this.createIsContainedPredicate(key); - for (final P path : paths) { - if (isContained.apply(path)) { - return true; - } - } - return false; - } - - final Future> commit(final AbstractDataTransaction transaction) { - Preconditions.checkNotNull(transaction); - final TwoPhaseCommit task = new TwoPhaseCommit(transaction, this); - - this.getSubmittedTransactionsCount().getAndIncrement(); - return this.getExecutor().submit(task); - } - - private static class DataCommitHandlerRegistrationImpl

, D extends Object> // - extends AbstractObjectRegistration> // - implements DataCommitHandlerRegistration { - - private AbstractDataBroker dataBroker; - private final P path; - - @Override - public P getPath() { - return this.path; - } - - public DataCommitHandlerRegistrationImpl(final P path, final DataCommitHandler instance, - final AbstractDataBroker broker) { - super(instance); - this.dataBroker = broker; - this.path = path; - } - - @Override - protected void removeRegistration() { - this.dataBroker.removeCommitHandler(this); - this.dataBroker = null; - } - } -} diff --git a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/AbstractDataTransaction.java b/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/AbstractDataTransaction.java index be95bc4f71..f83a77829b 100644 --- a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/AbstractDataTransaction.java +++ b/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/AbstractDataTransaction.java @@ -7,140 +7,23 @@ */ package org.opendaylight.controller.md.sal.common.impl.service; -import com.google.common.base.Preconditions; import com.google.common.util.concurrent.AsyncFunction; import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; -import java.util.concurrent.Future; -import java.util.concurrent.TimeUnit; import org.opendaylight.controller.md.sal.common.api.TransactionStatus; import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException; -import org.opendaylight.controller.md.sal.common.impl.AbstractDataModification; -import org.opendaylight.yangtools.concepts.Path; import org.opendaylight.yangtools.yang.common.RpcResult; import org.opendaylight.yangtools.yang.common.RpcResultBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Deprecated -public abstract class AbstractDataTransaction

, D extends Object> extends - AbstractDataModification { +public abstract class AbstractDataTransaction { private static final Logger LOG = LoggerFactory.getLogger(AbstractDataTransaction.class); private static final ListenableFuture> SUCCESS_FUTURE = Futures.immediateFuture(RpcResultBuilder.success(TransactionStatus.COMMITED).build()); - private final Object identifier; - private final long allocationTime; - private long readyTime = 0; - private long completeTime = 0; - - private TransactionStatus status = TransactionStatus.NEW; - - private final AbstractDataBroker broker; - - protected AbstractDataTransaction(final Object identifier, - final AbstractDataBroker dataBroker) { - super(dataBroker); - this.identifier = Preconditions.checkNotNull(identifier); - this.broker = Preconditions.checkNotNull(dataBroker); - this.allocationTime = System.nanoTime(); - LOG.debug("Transaction {} Allocated.", identifier); - } - - @Override - public Object getIdentifier() { - return this.identifier; - } - - @Override - public Future> commit() { - readyTime = System.nanoTime(); - if (LOG.isDebugEnabled()) { - LOG.debug("Transaction {} Ready after {}ms.", identifier, TimeUnit.NANOSECONDS.toMillis(readyTime - allocationTime)); - } - changeStatus(TransactionStatus.SUBMITED); - return this.broker.commit(this); - } - - @Override - public D readConfigurationData(final P path) { - final D local = getUpdatedConfigurationData().get(path); - if (local != null) { - return local; - } - return this.broker.readConfigurationData(path); - } - - @Override - public D readOperationalData(final P path) { - final D local = this.getUpdatedOperationalData().get(path); - if (local != null) { - return local; - } - return this.broker.readOperationalData(path); - } - - @Override - public int hashCode() { - final int prime = 31; - int result = 1; - result = prime * result + ((identifier == null) ? 0 : identifier.hashCode()); - return result; - } - - @Override - public boolean equals(final Object obj) { - if (this == obj) { - return true; - } - if (obj == null) { - return false; - } - if (getClass() != obj.getClass()) { - return false; - } - AbstractDataTransaction other = (AbstractDataTransaction) obj; - if (identifier == null) { - if (other.identifier != null) { - return false; - } - } else if (!identifier.equals(other.identifier)) { - return false; - } - return true; - } - - @Override - public TransactionStatus getStatus() { - return this.status; - } - - protected abstract void onStatusChange(final TransactionStatus status); - - public void succeeded() { - this.completeTime = System.nanoTime(); - if (LOG.isDebugEnabled()) { - LOG.debug("Transaction {} Committed after {}ms.", identifier, TimeUnit.NANOSECONDS.toMillis(completeTime - readyTime)); - } - changeStatus(TransactionStatus.COMMITED); - } - - public void failed() { - this.completeTime = System.nanoTime(); - - if (LOG.isDebugEnabled()) { - LOG.debug("Transaction {} Failed after {}ms.", identifier, TimeUnit.NANOSECONDS.toMillis(completeTime - readyTime)); - } - changeStatus(TransactionStatus.FAILED); - } - - private void changeStatus(final TransactionStatus status) { - LOG.debug("Transaction {} transitioned from {} to {}", getIdentifier(), this.status, status); - this.status = status; - this.onStatusChange(status); - } - public static ListenableFuture> convertToLegacyCommitFuture(final CheckedFuture from) { return Futures.transform(from, new AsyncFunction>() { @Override diff --git a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/DataChangeEventImpl.java b/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/DataChangeEventImpl.java deleted file mode 100644 index 5e2e9de578..0000000000 --- a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/DataChangeEventImpl.java +++ /dev/null @@ -1,93 +0,0 @@ -/* - * 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.controller.md.sal.common.impl.service; - -import java.util.Map; -import java.util.Set; - -import org.opendaylight.controller.md.sal.common.api.data.DataChange; -import org.opendaylight.controller.md.sal.common.api.data.DataChangeEvent; -import org.opendaylight.yangtools.concepts.Immutable; -import org.opendaylight.yangtools.concepts.Path; - -@Deprecated -public class DataChangeEventImpl

, D> implements DataChangeEvent, Immutable { - - private final DataChange dataChange; - - private final D originalConfigurationSubtree; - private final D originalOperationalSubtree; - private final D updatedOperationalSubtree; - private final D updatedConfigurationSubtree; - - - - - public DataChangeEventImpl(DataChange dataChange, D originalConfigurationSubtree, - D originalOperationalSubtree, D updatedOperationalSubtree, D updatedConfigurationSubtree) { - super(); - this.dataChange = dataChange; - this.originalConfigurationSubtree = originalConfigurationSubtree; - this.originalOperationalSubtree = originalOperationalSubtree; - this.updatedOperationalSubtree = updatedOperationalSubtree; - this.updatedConfigurationSubtree = updatedConfigurationSubtree; - } - - @Override - public D getOriginalConfigurationSubtree() { - return originalConfigurationSubtree; - } - - @Override - public D getOriginalOperationalSubtree() { - return originalOperationalSubtree; - } - - @Override - public D getUpdatedOperationalSubtree() { - return updatedOperationalSubtree; - } - - @Override - public D getUpdatedConfigurationSubtree() { - return updatedConfigurationSubtree; - } - - public Map getCreatedOperationalData() { - return dataChange.getCreatedOperationalData(); - } - - public Map getCreatedConfigurationData() { - return dataChange.getCreatedConfigurationData(); - } - - public Map getUpdatedOperationalData() { - return dataChange.getUpdatedOperationalData(); - } - - public Map getUpdatedConfigurationData() { - return dataChange.getUpdatedConfigurationData(); - } - - public Set

getRemovedConfigurationData() { - return dataChange.getRemovedConfigurationData(); - } - - public Set

getRemovedOperationalData() { - return dataChange.getRemovedOperationalData(); - } - - public Map getOriginalConfigurationData() { - return dataChange.getOriginalConfigurationData(); - } - - public Map getOriginalOperationalData() { - return dataChange.getOriginalOperationalData(); - } - -} diff --git a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/DataChangeListenerRegistration.java b/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/DataChangeListenerRegistration.java deleted file mode 100644 index 57d511ecf2..0000000000 --- a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/DataChangeListenerRegistration.java +++ /dev/null @@ -1,37 +0,0 @@ -/** - * 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.controller.md.sal.common.impl.service; - -import org.opendaylight.controller.md.sal.common.api.data.DataChangeListener; -import org.opendaylight.yangtools.concepts.AbstractObjectRegistration; -import org.opendaylight.yangtools.concepts.ListenerRegistration; -import org.opendaylight.yangtools.concepts.Path; - -@SuppressWarnings("all") -class DataChangeListenerRegistration

, D extends Object, DCL extends DataChangeListener> extends - AbstractObjectRegistration implements ListenerRegistration { - private AbstractDataBroker dataBroker; - - private final P path; - - public P getPath() { - return this.path; - } - - public DataChangeListenerRegistration(final P path, final DCL instance, final AbstractDataBroker broker) { - super(instance); - this.dataBroker = broker; - this.path = path; - } - - @Override - protected void removeRegistration() { - this.dataBroker.removeListener(this); - this.dataBroker = null; - } -} diff --git a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/ImmutableDataChangeEvent.java b/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/ImmutableDataChangeEvent.java deleted file mode 100644 index 5671b480c0..0000000000 --- a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/ImmutableDataChangeEvent.java +++ /dev/null @@ -1,261 +0,0 @@ -/* - * Copyright (c) 2014, 2015 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.controller.md.sal.common.impl.service; - -import java.util.Map; -import java.util.Set; - -import org.opendaylight.controller.md.sal.common.api.data.DataChangeEvent; -import org.opendaylight.controller.md.sal.common.api.data.DataModification; -import org.opendaylight.yangtools.concepts.Path; - -import com.google.common.base.Predicate; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; - -@Deprecated -public final class ImmutableDataChangeEvent

, D> implements DataChangeEvent { - - private final D updatedOperationalSubtree; - private final Map updatedOperational; - private final D updatedConfigurationSubtree; - private final Map updatedConfiguration; - private final Set

removedOperational; - private final Set

removedConfiguration; - private final D originalOperationalSubtree; - private final Map originalOperational; - private final D originalConfigurationSubtree; - private final Map originalConfiguration; - private final Map createdOperational; - private final Map createdConfiguration; - - - private ImmutableDataChangeEvent(final Builder builder) { - - createdConfiguration = builder.getCreatedConfiguration().build(); - createdOperational = builder.getCreatedOperational().build(); - originalConfiguration = builder.getOriginalConfiguration().build(); - originalConfigurationSubtree = builder.getOriginalConfigurationSubtree(); - originalOperational = builder.getOriginalOperational().build(); - originalOperationalSubtree = builder.getOriginalOperationalSubtree(); - removedConfiguration = builder.getRemovedConfiguration().build(); - removedOperational = builder.getRemovedOperational().build(); - updatedConfiguration = builder.getUpdatedConfiguration().build(); - updatedConfigurationSubtree = builder.getUpdatedConfigurationSubtree(); - updatedOperational = builder.getUpdatedOperational().build(); - updatedOperationalSubtree = builder.getUpdatedOperationalSubtree(); - } - - @Override - public Map getCreatedConfigurationData() { - return createdConfiguration; - } - - @Override - public Map getCreatedOperationalData() { - return createdOperational; - } - - @Override - public Map getOriginalConfigurationData() { - return originalConfiguration; - } - @Override - public D getOriginalConfigurationSubtree() { - return originalConfigurationSubtree; - } - @Override - public Map getOriginalOperationalData() { - return originalOperational; - } - @Override - public D getOriginalOperationalSubtree() { - return originalOperationalSubtree; - } - @Override - public Set

getRemovedConfigurationData() { - return removedConfiguration; - } - @Override - public Set

getRemovedOperationalData() { - return removedOperational; - } - @Override - public Map getUpdatedConfigurationData() { - return updatedConfiguration; - } - @Override - public D getUpdatedConfigurationSubtree() { - return updatedConfigurationSubtree; - } - @Override - public Map getUpdatedOperationalData() { - return updatedOperational; - } - @Override - public D getUpdatedOperationalSubtree() { - return updatedOperationalSubtree; - } - - public static final

,D> Builder builder() { - return new Builder<>(); - } - - public static final class Builder

,D> { - - private D updatedOperationalSubtree; - private D originalOperationalSubtree; - private D originalConfigurationSubtree; - private D updatedConfigurationSubtree; - - private final ImmutableMap.Builder updatedOperational = ImmutableMap.builder(); - private final ImmutableMap.Builder updatedConfiguration = ImmutableMap.builder(); - private final ImmutableSet.Builder

removedOperational = ImmutableSet.builder(); - private final ImmutableSet.Builder

removedConfiguration = ImmutableSet.builder(); - private final ImmutableMap.Builder originalOperational = ImmutableMap.builder(); - - private final ImmutableMap.Builder originalConfiguration = ImmutableMap.builder(); - private final ImmutableMap.Builder createdOperational = ImmutableMap.builder(); - private final ImmutableMap.Builder createdConfiguration = ImmutableMap.builder(); - - - - - - protected Builder addTransaction(final DataModification data, final Predicate

keyFilter) { - updatedOperational.putAll(Maps.filterKeys(data.getUpdatedOperationalData(), keyFilter)); - updatedConfiguration.putAll(Maps.filterKeys(data.getUpdatedConfigurationData(), keyFilter)); - originalConfiguration.putAll(Maps.filterKeys(data.getOriginalConfigurationData(), keyFilter)); - originalOperational.putAll(Maps.filterKeys(data.getOriginalOperationalData(), keyFilter)); - createdOperational.putAll(Maps.filterKeys(data.getCreatedOperationalData(), keyFilter)); - createdConfiguration.putAll(Maps.filterKeys(data.getCreatedConfigurationData(), keyFilter)); - removedOperational.addAll(Sets.filter(data.getRemovedOperationalData(), keyFilter)); - removedConfiguration.addAll(Sets.filter(data.getRemovedConfigurationData(), keyFilter)); - return this; - } - - protected Builder addConfigurationChangeSet(final RootedChangeSet changeSet) { - if(changeSet == null) { - return this; - } - - originalConfiguration.putAll(changeSet.getOriginal()); - createdConfiguration.putAll(changeSet.getCreated()); - updatedConfiguration.putAll(changeSet.getUpdated()); - removedConfiguration.addAll(changeSet.getRemoved()); - return this; - } - - protected Builder addOperationalChangeSet(final RootedChangeSet changeSet) { - if(changeSet == null) { - return this; - } - originalOperational.putAll(changeSet.getOriginal()); - createdOperational.putAll(changeSet.getCreated()); - updatedOperational.putAll(changeSet.getUpdated()); - removedOperational.addAll(changeSet.getRemoved()); - return this; - } - - public ImmutableDataChangeEvent build() { - return new ImmutableDataChangeEvent(this); - } - - protected D getUpdatedOperationalSubtree() { - return updatedOperationalSubtree; - } - - public Builder setUpdatedOperationalSubtree(final D updatedOperationalSubtree) { - this.updatedOperationalSubtree = updatedOperationalSubtree; - return this; - } - - protected D getOriginalOperationalSubtree() { - return originalOperationalSubtree; - } - - public Builder setOriginalOperationalSubtree(final D originalOperationalSubtree) { - this.originalOperationalSubtree = originalOperationalSubtree; - return this; - } - - protected D getOriginalConfigurationSubtree() { - return originalConfigurationSubtree; - } - - public Builder setOriginalConfigurationSubtree(final D originalConfigurationSubtree) { - this.originalConfigurationSubtree = originalConfigurationSubtree; - return this; - } - - protected D getUpdatedConfigurationSubtree() { - return updatedConfigurationSubtree; - } - - public Builder setUpdatedConfigurationSubtree(final D updatedConfigurationSubtree) { - this.updatedConfigurationSubtree = updatedConfigurationSubtree; - return this; - } - - protected ImmutableMap.Builder getUpdatedOperational() { - return updatedOperational; - } - - protected ImmutableMap.Builder getUpdatedConfiguration() { - return updatedConfiguration; - } - - protected ImmutableSet.Builder

getRemovedOperational() { - return removedOperational; - } - - protected ImmutableSet.Builder

getRemovedConfiguration() { - return removedConfiguration; - } - - protected ImmutableMap.Builder getOriginalOperational() { - return originalOperational; - } - - protected ImmutableMap.Builder getOriginalConfiguration() { - return originalConfiguration; - } - - protected ImmutableMap.Builder getCreatedOperational() { - return createdOperational; - } - - protected ImmutableMap.Builder getCreatedConfiguration() { - return createdConfiguration; - } - - public Builder putOriginalOperational(final Map originalData) { - originalOperational.putAll(originalData); - return this; - } - - public Builder putCreatedOperational(final Map originalData) { - createdOperational.putAll(originalData); - return this; - } - - public Builder putUpdatedOperational(final Map originalData) { - updatedOperational.putAll(originalData); - return this; - } - - public Builder putRemovedOperational(final Set originalData) { - removedOperational.addAll(originalData); - return this; - } - } - -} diff --git a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/InitialDataChangeEventImpl.java b/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/InitialDataChangeEventImpl.java deleted file mode 100644 index ebe7d9dae2..0000000000 --- a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/InitialDataChangeEventImpl.java +++ /dev/null @@ -1,96 +0,0 @@ -/* - * 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.controller.md.sal.common.impl.service; - -import java.util.Collections; -import java.util.Map; -import java.util.Set; - -import org.opendaylight.controller.md.sal.common.api.data.DataChangeEvent; -import org.opendaylight.yangtools.concepts.Immutable; -import org.opendaylight.yangtools.concepts.Path; - -@Deprecated -public class InitialDataChangeEventImpl

,D> implements DataChangeEvent, Immutable { - - private final D updatedOperationalTree; - private final D updatedConfigurationTree; - private final Map updatedConfigurationData; - private final Map updatedOperationalData; - - public InitialDataChangeEventImpl(D configTree, D operTree) { - updatedConfigurationTree = configTree; - updatedOperationalTree = operTree; - updatedConfigurationData = Collections.emptyMap(); - updatedOperationalData = Collections.emptyMap(); - } - - public InitialDataChangeEventImpl(D configTree, D operTree, Map updatedCfgData, Map updatedOperData) { - updatedConfigurationTree = configTree; - updatedOperationalTree = operTree; - updatedConfigurationData = updatedCfgData; - updatedOperationalData = updatedOperData; - } - - @Override - public Map getCreatedConfigurationData() { - return Collections.emptyMap(); - } - - @Override - public Map getCreatedOperationalData() { - return Collections.emptyMap(); - } - - @Override - public Map getOriginalConfigurationData() { - return Collections.emptyMap(); - } - @Override - public Map getOriginalOperationalData() { - return Collections.emptyMap(); - } - @Override - public Set

getRemovedConfigurationData() { - return Collections.emptySet(); - } - @Override - public Set

getRemovedOperationalData() { - return Collections.emptySet(); - } - @Override - public Map getUpdatedConfigurationData() { - return updatedConfigurationData; - } - - @Override - public D getUpdatedConfigurationSubtree() { - return updatedConfigurationTree; - } - @Override - public D getUpdatedOperationalSubtree() { - return updatedOperationalTree; - } - - @Override - public D getOriginalConfigurationSubtree() { - return updatedConfigurationTree; - } - - @Override - public D getOriginalOperationalSubtree() { - return updatedOperationalTree; - } - - @Override - public Map getUpdatedOperationalData() { - return updatedOperationalData; - } - - -} diff --git a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/ListenerStateCapture.java b/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/ListenerStateCapture.java deleted file mode 100644 index ab94163dd6..0000000000 --- a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/ListenerStateCapture.java +++ /dev/null @@ -1,127 +0,0 @@ -/* - * Copyright (c) 2014, 2015 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.controller.md.sal.common.impl.service; - -import java.util.Map; - -import org.opendaylight.controller.md.sal.common.api.data.DataChangeEvent; -import org.opendaylight.controller.md.sal.common.api.data.DataChangeListener; -import org.opendaylight.controller.md.sal.common.api.data.DataModification; -import org.opendaylight.yangtools.concepts.Path; - -import com.google.common.base.Predicate; - -@Deprecated -public final class ListenerStateCapture

, D, DCL extends DataChangeListener> { - - final P path; - - final Iterable> listeners; - - D initialOperationalState; - - D initialConfigurationState; - - D finalConfigurationState; - - D finalOperationalState; - - Map additionalConfigOriginal; - Map additionalConfigCreated; - Map additionalConfigUpdated; - Map additionalConfigDeleted; - - Map additionalOperOriginal; - Map additionalOperCreated; - Map additionalOperUpdated; - Map additionalOperDeleted; - - RootedChangeSet normalizedConfigurationChanges; - RootedChangeSet normalizedOperationalChanges; - - private final Predicate

containsPredicate; - - public ListenerStateCapture(P path, Iterable> listeners, - Predicate

containsPredicate) { - super(); - this.path = path; - this.listeners = listeners; - this.containsPredicate = containsPredicate; - } - - protected D getInitialOperationalState() { - return initialOperationalState; - } - - protected void setInitialOperationalState(D initialOperationalState) { - this.initialOperationalState = initialOperationalState; - } - - protected D getInitialConfigurationState() { - return initialConfigurationState; - } - - protected void setInitialConfigurationState(D initialConfigurationState) { - this.initialConfigurationState = initialConfigurationState; - } - - protected P getPath() { - return path; - } - - protected Iterable> getListeners() { - return listeners; - } - - protected D getFinalConfigurationState() { - return finalConfigurationState; - } - - protected void setFinalConfigurationState(D finalConfigurationState) { - this.finalConfigurationState = finalConfigurationState; - } - - protected D getFinalOperationalState() { - return finalOperationalState; - } - - protected void setFinalOperationalState(D finalOperationalState) { - this.finalOperationalState = finalOperationalState; - } - - protected RootedChangeSet getNormalizedConfigurationChanges() { - return normalizedConfigurationChanges; - } - - protected void setNormalizedConfigurationChanges(RootedChangeSet normalizedConfigurationChanges) { - this.normalizedConfigurationChanges = normalizedConfigurationChanges; - } - - protected RootedChangeSet getNormalizedOperationalChanges() { - return normalizedOperationalChanges; - } - - protected void setNormalizedOperationalChanges(RootedChangeSet normalizedOperationalChange) { - this.normalizedOperationalChanges = normalizedOperationalChange; - } - - protected DataChangeEvent createEvent(DataModification modification) { - return ImmutableDataChangeEvent. builder()// - .addTransaction(modification, containsPredicate) // - .addConfigurationChangeSet(normalizedConfigurationChanges) // - .addOperationalChangeSet(normalizedOperationalChanges) // - .setOriginalConfigurationSubtree(initialConfigurationState) // - .setOriginalOperationalSubtree(initialOperationalState) // - .setUpdatedConfigurationSubtree(finalConfigurationState) // - .setUpdatedOperationalSubtree(finalOperationalState) // - .build(); - - } - -} diff --git a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/RootedChangeSet.java b/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/RootedChangeSet.java deleted file mode 100644 index 43536b77cd..0000000000 --- a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/RootedChangeSet.java +++ /dev/null @@ -1,74 +0,0 @@ -/* - * Copyright (c) 2014, 2015 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.controller.md.sal.common.impl.service; - -import java.util.HashMap; -import java.util.HashSet; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; - -import org.opendaylight.yangtools.concepts.Path; - -public class RootedChangeSet

,D> { - - private final P root; - private final Map original; - private final Map created = new HashMap<>(); - private final Map updated = new HashMap<>(); - private final Set

removed = new HashSet<>(); - - - - public RootedChangeSet(P root,Map original) { - super(); - this.root = root; - this.original = original; - } - - protected P getRoot() { - return root; - } - - protected Map getOriginal() { - return original; - } - - protected Map getCreated() { - return created; - } - - protected Map getUpdated() { - return updated; - } - - protected Set

getRemoved() { - return removed; - } - - public void addCreated(Map created) { - this.created.putAll(created); - } - - public void addCreated(Entry entry) { - created.put(entry.getKey(), entry.getValue()); - } - - public void addUpdated(Entry entry) { - updated.put(entry.getKey(), entry.getValue()); - } - - public void addRemoval(P path) { - removed.add(path); - } - - public boolean isChange() { - return !created.isEmpty() || !updated.isEmpty() || !removed.isEmpty(); - } -} diff --git a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/TwoPhaseCommit.java b/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/TwoPhaseCommit.java deleted file mode 100644 index 30c5898ea3..0000000000 --- a/opendaylight/md-sal/sal-common-impl/src/main/java/org/opendaylight/controller/md/sal/common/impl/service/TwoPhaseCommit.java +++ /dev/null @@ -1,242 +0,0 @@ -/** - * 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.controller.md.sal.common.impl.service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; -import java.util.Set; -import java.util.concurrent.Callable; -import java.util.concurrent.ExecutorService; - -import org.opendaylight.controller.md.sal.common.api.TransactionStatus; -import org.opendaylight.controller.md.sal.common.api.data.DataChangeEvent; -import org.opendaylight.controller.md.sal.common.api.data.DataChangeListener; -import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler; -import org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler.DataCommitTransaction; -import org.opendaylight.yangtools.concepts.Path; -import org.opendaylight.yangtools.yang.common.RpcResult; -import org.opendaylight.yangtools.yang.common.RpcResultBuilder; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.Optional; -import com.google.common.base.Predicate; -import com.google.common.collect.ImmutableList; -import com.google.common.collect.ImmutableList.Builder; -import com.google.common.collect.ImmutableSet; -import com.google.common.collect.Sets; - -@Deprecated -public class TwoPhaseCommit

, D extends Object, DCL extends DataChangeListener> implements - Callable> { - private final static Logger log = LoggerFactory.getLogger(TwoPhaseCommit.class); - - private final AbstractDataTransaction transaction; - - private final AbstractDataBroker dataBroker; - - public TwoPhaseCommit(final AbstractDataTransaction transaction, final AbstractDataBroker broker) { - this.transaction = transaction; - this.dataBroker = broker; - } - - @Override - public RpcResult call() throws Exception { - final Object transactionId = this.transaction.getIdentifier(); - - Set

changedPaths = ImmutableSet.

builder().addAll(transaction.getUpdatedConfigurationData().keySet()) - .addAll(transaction.getCreatedConfigurationData().keySet()) - .addAll(transaction.getRemovedConfigurationData()) - .addAll(transaction.getUpdatedOperationalData().keySet()) - .addAll(transaction.getCreatedOperationalData().keySet()) - .addAll(transaction.getRemovedOperationalData()).build(); - - log.trace("Transaction: {} Affected Subtrees: {}", transactionId, changedPaths); - - // The transaction has no effects, let's just shortcut it - if (changedPaths.isEmpty()) { - dataBroker.getFinishedTransactionsCount().getAndIncrement(); - transaction.succeeded(); - - log.trace("Transaction: {} Finished successfully (no effects).", transactionId); - - return RpcResultBuilder. success( TransactionStatus.COMMITED ).build(); - } - - final ImmutableList.Builder> listenersBuilder = ImmutableList.builder(); - listenersBuilder.addAll(dataBroker.affectedListeners(changedPaths)); - filterProbablyAffectedListeners(dataBroker.probablyAffectedListeners(changedPaths),listenersBuilder); - - - - final ImmutableList> listeners = listenersBuilder.build(); - final Iterable> commitHandlers = dataBroker.affectedCommitHandlers(changedPaths); - captureInitialState(listeners); - - - log.trace("Transaction: {} Starting Request Commit.",transactionId); - final List> handlerTransactions = new ArrayList<>(); - try { - for (final DataCommitHandler handler : commitHandlers) { - DataCommitTransaction requestCommit = handler.requestCommit(this.transaction); - if (requestCommit != null) { - handlerTransactions.add(requestCommit); - } else { - log.debug("Transaction: {}, Handler {} is not participating in transaction.", transactionId, - handler); - } - } - } catch (Exception e) { - log.error("Transaction: {} Request Commit failed", transactionId, e); - dataBroker.getFailedTransactionsCount().getAndIncrement(); - this.transaction.failed(); - return this.rollback(handlerTransactions, e); - - } - - log.trace("Transaction: {} Starting Finish.",transactionId); - final List> results = new ArrayList>(); - try { - for (final DataCommitTransaction subtransaction : handlerTransactions) { - results.add(subtransaction.finish()); - } - } catch (Exception e) { - log.error("Transaction: {} Finish Commit failed", transactionId, e); - dataBroker.getFailedTransactionsCount().getAndIncrement(); - transaction.failed(); - return this.rollback(handlerTransactions, e); - } - - - dataBroker.getFinishedTransactionsCount().getAndIncrement(); - transaction.succeeded(); - - log.trace("Transaction: {} Finished successfully.", transactionId); - - captureFinalState(listeners); - - log.trace("Transaction: {} Notifying listeners.", transactionId); - - publishDataChangeEvent(listeners); - return RpcResultBuilder. success(TransactionStatus.COMMITED).build(); - } - - private void captureInitialState(ImmutableList> listeners) { - for (ListenerStateCapture state : listeners) { - state.setInitialConfigurationState(dataBroker.readConfigurationData(state.getPath())); - state.setInitialOperationalState(dataBroker.readOperationalData(state.getPath())); - } - } - - - private void captureFinalState(ImmutableList> listeners) { - for (ListenerStateCapture state : listeners) { - state.setFinalConfigurationState(dataBroker.readConfigurationData(state.getPath())); - state.setFinalOperationalState(dataBroker.readOperationalData(state.getPath())); - } - } - - private void filterProbablyAffectedListeners( - ImmutableList> probablyAffectedListeners, Builder> reallyAffected) { - - for(ListenerStateCapture listenerSet : probablyAffectedListeners) { - P affectedPath = listenerSet.getPath(); - Optional> configChange = resolveConfigChange(affectedPath); - Optional> operChange = resolveOperChange(affectedPath); - - if(configChange.isPresent() || operChange.isPresent()) { - reallyAffected.add(listenerSet); - if(configChange.isPresent()) { - listenerSet.setNormalizedConfigurationChanges(configChange.get()); - } - - if(operChange.isPresent()) { - listenerSet.setNormalizedOperationalChanges(operChange.get()); - } - } - } - } - - private Optional> resolveOperChange(P affectedPath) { - Map originalOper = dataBroker.deepGetBySubpath(transaction.getOriginalOperationalData(),affectedPath); - Map createdOper = dataBroker.deepGetBySubpath(transaction.getCreatedOperationalData(),affectedPath); - Map updatedOper = dataBroker.deepGetBySubpath(transaction.getUpdatedOperationalData(),affectedPath); - Set

removedOper = Sets.filter(transaction.getRemovedOperationalData(), dataBroker.createIsContainedPredicate(affectedPath)); - return resolveChanges(affectedPath,originalOper,createdOper,updatedOper,removedOper); - } - - private Optional> resolveConfigChange(P affectedPath) { - Map originalConfig = dataBroker.deepGetBySubpath(transaction.getOriginalConfigurationData(),affectedPath); - Map createdConfig = dataBroker.deepGetBySubpath(transaction.getCreatedConfigurationData(),affectedPath); - Map updatedConfig = dataBroker.deepGetBySubpath(transaction.getUpdatedConfigurationData(),affectedPath); - Set

removedConfig = Sets.filter(transaction.getRemovedConfigurationData(), dataBroker.createIsContainedPredicate(affectedPath)); - return resolveChanges(affectedPath,originalConfig,createdConfig,updatedConfig,removedConfig); - } - - private Optional> resolveChanges(P affectedPath, Map originalConfig, Map createdConfig, Map updatedConfig,Set

potentialDeletions) { - Predicate

isContained = dataBroker.createIsContainedPredicate(affectedPath); - - if(createdConfig.isEmpty() && updatedConfig.isEmpty() && potentialDeletions.isEmpty()) { - return Optional.absent(); - } - RootedChangeSet changeSet = new RootedChangeSet(affectedPath,originalConfig); - changeSet.addCreated(createdConfig); - - for(Entry entry : updatedConfig.entrySet()) { - if(originalConfig.containsKey(entry.getKey())) { - changeSet.addUpdated(entry); - } else { - changeSet.addCreated(entry); - } - } - - for(Entry entry : originalConfig.entrySet()) { - for(P deletion : potentialDeletions) { - if(isContained.apply(deletion)) { - changeSet.addRemoval(entry.getKey()); - } - } - } - - if(changeSet.isChange()) { - return Optional.of(changeSet); - } else { - return Optional.absent(); - } - - } - - public void publishDataChangeEvent(final ImmutableList> listeners) { - ExecutorService executor = this.dataBroker.getExecutor(); - final Runnable notifyTask = new Runnable() { - @Override - public void run() { - for (final ListenerStateCapture listenerSet : listeners) { - DataChangeEvent changeEvent = listenerSet.createEvent(transaction); - for (final DataChangeListenerRegistration listener : listenerSet.getListeners()) { - try { - listener.getInstance().onDataChanged(changeEvent); - } catch (Exception e) { - log.error("Unhandled exception when invoking listener {}", listener, e); - } - } - } - } - }; - executor.submit(notifyTask); - } - - public RpcResult rollback(final List> transactions, final Exception e) { - for (final DataCommitTransaction transaction : transactions) { - transaction.rollback(); - } - return RpcResultBuilder. failed().withResult(TransactionStatus.FAILED).build(); - } -} 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 6e9d9fd82b..d75f438144 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 @@ -42,6 +42,7 @@ 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; @Deprecated public abstract class DataNormalizationOperation implements Identifiable { @@ -201,7 +202,7 @@ public abstract class DataNormalizationOperation impleme private DataNormalizationOperation register(final DataNormalizationOperation potential) { if (potential != null) { byArg.put(potential.getIdentifier(), potential); - for (QName qName : potential.getQNameIdentifiers()) { + for (final QName qName : potential.getQNameIdentifiers()) { byQName.put(qName, potential); } } @@ -222,9 +223,9 @@ public abstract class DataNormalizationOperation impleme @Override public NormalizedNode createDefault(final PathArgument currentArg) { - DataContainerNodeAttrBuilder builder = Builders + final DataContainerNodeAttrBuilder builder = Builders .mapEntryBuilder().withNodeIdentifier((NodeIdentifierWithPredicates) currentArg); - for (Entry keyValue : ((NodeIdentifierWithPredicates) currentArg).getKeyValues().entrySet()) { + for (final Entry keyValue : ((NodeIdentifierWithPredicates) currentArg).getKeyValues().entrySet()) { builder.addChild(Builders.leafBuilder() // .withNodeIdentifier(new NodeIdentifier(keyValue.getKey())).withValue(keyValue.getValue()) @@ -341,12 +342,12 @@ public abstract class DataNormalizationOperation impleme @Override protected DataNormalizationOperation fromLocalSchemaAndQName(final DataNodeContainer schema, final QName child) throws DataNormalizationException { - Optional potential = findChildSchemaNode(schema, 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()) { return fromAugmentation(schema, (AugmentationTarget) schema, result); @@ -452,14 +453,14 @@ public abstract class DataNormalizationOperation impleme protected 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 ChoiceCaseNode caze : schema.getCases()) { + 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); } } @@ -514,7 +515,7 @@ public abstract class DataNormalizationOperation impleme private static final Optional findChildSchemaNode(final DataNodeContainer parent,final QName child) { DataSchemaNode potential = parent.getDataChildByName(child); if (potential == null) { - Iterable choices = FluentIterable.from(parent.getChildNodes()).filter(ChoiceSchemaNode.class); + final Iterable choices = FluentIterable.from(parent.getChildNodes()).filter(ChoiceSchemaNode.class); potential = findChoice(choices, child); } return Optional.fromNullable(potential); @@ -523,12 +524,12 @@ 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())); } - 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()) { return fromAugmentation(schema, (AugmentationTarget) schema, result); @@ -538,8 +539,8 @@ public abstract class DataNormalizationOperation impleme private static ChoiceSchemaNode findChoice(final Iterable choices, final QName child) { ChoiceSchemaNode foundChoice = null; - choiceLoop: for (ChoiceSchemaNode choice : choices) { - for (ChoiceCaseNode caze : choice.getCases()) { + choiceLoop: for (final ChoiceSchemaNode choice : choices) { + for (final ChoiceCaseNode caze : choice.getCases()) { if (findChildSchemaNode(caze, child).isPresent()) { foundChoice = choice; break choiceLoop; @@ -550,19 +551,19 @@ public abstract class DataNormalizationOperation impleme } public static AugmentationIdentifier augmentationIdentifierFrom(final AugmentationSchema augmentation) { - ImmutableSet.Builder potentialChildren = ImmutableSet.builder(); - for (DataSchemaNode child : augmentation.getChildNodes()) { + 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()) { + 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); } /** @@ -582,8 +583,8 @@ public abstract class DataNormalizationOperation impleme 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()); + for (final AugmentationSchema aug : parentAug.getAvailableAugmentations()) { + final DataSchemaNode potential = aug.getDataChildByName(child.getQName()); if (potential != null) { augmentation = aug; break; @@ -616,7 +617,7 @@ public abstract class DataNormalizationOperation impleme } private static DataNormalizationOperation fromListSchemaNode(final ListSchemaNode potential) { - List keyDefinition = potential.getKeyDefinition(); + final List keyDefinition = potential.getKeyDefinition(); if(keyDefinition == null || keyDefinition.isEmpty()) { return new UnkeyedListMixinNormalization(potential); } -- 2.36.6