Code Review
/
controller.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
review
|
tree
raw
|
inline
| side by side
Merge "Improve iteration over subnets map by using entrySet instead of keyset. It...
[controller.git]
/
opendaylight
/
md-sal
/
sal-common-impl
/
src
/
main
/
java
/
org
/
opendaylight
/
controller
/
md
/
sal
/
common
/
impl
/
AbstractDataModification.java
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
index c9e1d6e330e38324f21e26b510cb548f5298a562..fb3e38f44af0fff91264f24d197fb77e02d67c49 100644
(file)
--- 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
@@
-10,8
+10,9
@@
import java.util.concurrent.ConcurrentMap;
import org.opendaylight.controller.md.sal.common.api.data.DataModification;
import org.opendaylight.controller.md.sal.common.api.data.DataReader;
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;
-public abstract class AbstractDataModification<P
/* extends Path<P> */
, D> implements DataModification<P, D> {
+public abstract class AbstractDataModification<P
extends Path<P>
, D> implements DataModification<P, D> {
private final ConcurrentMap<P, D> operationalOriginal;
private final ConcurrentMap<P, D> configurationOriginal;
private final ConcurrentMap<P, D> operationalOriginal;
private final ConcurrentMap<P, D> configurationOriginal;
@@
-56,28
+57,28
@@
public abstract class AbstractDataModification<P /* extends Path<P> */, D> imple
unmodifiable_operationalUpdate = Collections.unmodifiableMap(operationalUpdate);
unmodifiable_configurationRemove = Collections.unmodifiableSet(configurationRemove.keySet());
unmodifiable_OperationalRemove = Collections.unmodifiableSet(operationalRemove.keySet());
unmodifiable_operationalUpdate = Collections.unmodifiableMap(operationalUpdate);
unmodifiable_configurationRemove = Collections.unmodifiableSet(configurationRemove.keySet());
unmodifiable_OperationalRemove = Collections.unmodifiableSet(operationalRemove.keySet());
-
}
@Override
public final void putConfigurationData(P path, D data) {
checkMutable();
}
@Override
public final void putConfigurationData(P path, D data) {
checkMutable();
-
- if (
!hasConfigurationOriginal(path)
) {
+ D original = null;
+ if (
(original = getConfigurationOriginal(path)) == null
) {
configurationCreated.put(path, data);
}
configurationCreated.put(path, data);
}
- configurationUpdate.put(path,
data
);
+ configurationUpdate.put(path,
mergeConfigurationData(path,original, data)
);
configurationRemove.remove(path);
}
@Override
public final void putOperationalData(P path, D data) {
checkMutable();
configurationRemove.remove(path);
}
@Override
public final void putOperationalData(P path, D data) {
checkMutable();
- if (!hasOperationalOriginal(path)) {
+ D original = null;
+ if ((original = getOperationalOriginal(path)) == null) {
operationalCreated.put(path, data);
}
operationalCreated.put(path, data);
}
- operationalUpdate.put(path,
data
);
+ operationalUpdate.put(path,
mergeOperationalData(path,original,data)
);
operationalRemove.remove(path);
}
operationalRemove.remove(path);
}
@@
-89,7
+90,7
@@
public abstract class AbstractDataModification<P /* extends Path<P> */, D> imple
@Override
public final void removeOperationalData(P path) {
checkMutable();
@Override
public final void removeOperationalData(P path) {
checkMutable();
-
has
OperationalOriginal(path);
+
get
OperationalOriginal(path);
operationalUpdate.remove(path);
operationalRemove.put(path, path);
}
operationalUpdate.remove(path);
operationalRemove.put(path, path);
}
@@
-102,7
+103,7
@@
public abstract class AbstractDataModification<P /* extends Path<P> */, D> imple
@Override
public final void removeConfigurationData(P path) {
checkMutable();
@Override
public final void removeConfigurationData(P path) {
checkMutable();
-
has
ConfigurationOriginal(path);
+
get
ConfigurationOriginal(path);
configurationUpdate.remove(path);
configurationRemove.put(path, path);
}
configurationUpdate.remove(path);
configurationRemove.put(path, path);
}
@@
-163,27
+164,37
@@
public abstract class AbstractDataModification<P /* extends Path<P> */, D> imple
return reader.readConfigurationData(path);
}
return reader.readConfigurationData(path);
}
- private boolean hasConfigurationOriginal(P path) {
- if (configurationOriginal.containsKey(path)) {
- return true;
+ private D getConfigurationOriginal(P path) {
+ D data = configurationOriginal.get(path);
+ if (data != null) {
+ return data;
}
}
-
D
data = reader.readConfigurationData(path);
+ data = reader.readConfigurationData(path);
if (data != null) {
configurationOriginal.putIfAbsent(path, data);
if (data != null) {
configurationOriginal.putIfAbsent(path, data);
- return
true
;
+ return
data
;
}
}
- return
false
;
+ return
null
;
}
}
- private boolean hasOperationalOriginal(P path) {
- if (operationalOriginal.containsKey(path)) {
- return true;
+ private D getOperationalOriginal(P path) {
+ D data = operationalOriginal.get(path);
+ if (data != null) {
+ return data;
}
}
-
D data = reader.readConfiguration
Data(path);
+
data = reader.readOperational
Data(path);
if (data != null) {
operationalOriginal.putIfAbsent(path, data);
if (data != null) {
operationalOriginal.putIfAbsent(path, data);
- return
true
;
+ return
data
;
}
}
- return false;
+ return null;
+ }
+
+ protected D mergeOperationalData(P path,D stored, D modified) {
+ return modified;
+ }
+
+ protected D mergeConfigurationData(P path,D stored, D modified) {
+ return modified;
}
}
}
}