package org.opendaylight.controller.md.sal.common.impl; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; import org.opendaylight.controller.md.sal.common.api.data.DataModification; import org.opendaylight.yangtools.concepts.Path; import static org.opendaylight.controller.md.sal.common.api.TransactionStatus.NEW; public abstract class AbstractDataModification

*/, D> implements DataModification { private final Map configurationUpdate; private final Map operationalUpdate; private final Set

configurationRemove; private final Set

operationalRemove; private final Map unmodifiable_configurationUpdate; private final Map unmodifiable_operationalUpdate; private final Set

unmodifiable_configurationRemove; private final Set

unmodifiable_OperationalRemove; public AbstractDataModification(Map configurationUpdate, Map operationalUpdate, Set

configurationRemove, Set

operationalRemove) { this.configurationUpdate = configurationUpdate; this.operationalUpdate = operationalUpdate; this.configurationRemove = configurationRemove; this.operationalRemove = operationalRemove; unmodifiable_configurationUpdate = Collections.unmodifiableMap(configurationUpdate); unmodifiable_operationalUpdate = Collections.unmodifiableMap(operationalUpdate); unmodifiable_configurationRemove = Collections.unmodifiableSet(configurationRemove); unmodifiable_OperationalRemove = Collections.unmodifiableSet(operationalRemove); } public AbstractDataModification() { this(new HashMap(), new HashMap(), new HashSet

(), new HashSet

()); } @Override public final void putConfigurationData(P path, D data) { checkMutable(); configurationUpdate.put(path, data); configurationRemove.remove(path); } @Override public final void putRuntimeData(P path, D data) { checkMutable(); operationalUpdate.put(path, data); operationalRemove.remove(path); } @Override public final void removeRuntimeData(P path) { checkMutable(); operationalUpdate.remove(path); operationalRemove.add(path); } @Override public final void removeConfigurationData(P path) { checkMutable(); configurationUpdate.remove(path); configurationRemove.add(path); } private final void checkMutable() { if (!NEW.equals(this.getStatus())) throw new IllegalStateException("Transaction was already submitted"); } @Override public Map getUpdatedConfigurationData() { return unmodifiable_configurationUpdate; } @Override public Map getUpdatedOperationalData() { return unmodifiable_operationalUpdate; } @Override public Set

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

getRemovedOperationalData() { return unmodifiable_OperationalRemove; } }