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; } }