fixing side effect of mutabilty od resource id
Change-Id: I16bf790829e1c9984e61eb8bf5d5754b1c6ab001
diff --git a/apps/config/src/main/java/org/onosproject/config/ResourceIdParser.java b/apps/config/src/main/java/org/onosproject/config/ResourceIdParser.java
index 802e682..6bcdecc 100755
--- a/apps/config/src/main/java/org/onosproject/config/ResourceIdParser.java
+++ b/apps/config/src/main/java/org/onosproject/config/ResourceIdParser.java
@@ -17,6 +17,7 @@
import java.util.Iterator;
+import java.util.LinkedList;
import java.util.List;
import org.onosproject.yang.model.KeyLeaf;
@@ -46,12 +47,6 @@
}
- public static ResourceId getParent(ResourceId path) {
- int last = path.nodeKeys().size();
- path.nodeKeys().remove(last - 1);
- return path;
- }
-
public static NodeKey getInstanceKey(ResourceId path) {
int last = path.nodeKeys().size();
NodeKey ret = path.nodeKeys().get(last - 1);
@@ -92,7 +87,6 @@
return ret;
}
-
public static String appendMultiInstKey(String path, String leaf) {
return (path + leaf.substring(leaf.indexOf(KEY_SEP)));
}
@@ -161,7 +155,14 @@
if (path == null) {
return bldr.toString();
}
- List<NodeKey> nodeKeyList = path.nodeKeys();
+ List<NodeKey> nodeKeyList = new LinkedList<>();
+ Iterator<NodeKey> itr = path.nodeKeys().iterator();
+ while (itr.hasNext()) {
+ nodeKeyList.add(itr.next());
+ }
+ if (nodeKeyList.get(0).schemaId().name().compareTo("/") == 0) {
+ nodeKeyList.remove(0);
+ }
for (NodeKey key : nodeKeyList) {
bldr.append(EL_SEP);
if (key instanceof LeafListKey) {
diff --git a/apps/config/src/main/java/org/onosproject/config/impl/DistributedDynamicConfigStore.java b/apps/config/src/main/java/org/onosproject/config/impl/DistributedDynamicConfigStore.java
index d1359e3..a1287a2 100644
--- a/apps/config/src/main/java/org/onosproject/config/impl/DistributedDynamicConfigStore.java
+++ b/apps/config/src/main/java/org/onosproject/config/impl/DistributedDynamicConfigStore.java
@@ -56,7 +56,6 @@
import org.slf4j.LoggerFactory;
import java.math.BigInteger;
-import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
@@ -125,11 +124,6 @@
public CompletableFuture<Boolean>
addNode(ResourceId complete, DataNode node) {
CompletableFuture<Boolean> eventFuture = CompletableFuture.completedFuture(true);
- List<NodeKey> nodeKeyList = complete.nodeKeys();
- NodeKey f = nodeKeyList.get(0);
- if (f.schemaId().name().compareTo("/") == 0) {
- nodeKeyList.remove(0);
- }
String spath = ResourceIdParser.parseResId(complete);
if (spath == null) {
throw new FailedException("Invalid RsourceId, cannot create Node");
@@ -211,11 +205,6 @@
@Override
public CompletableFuture<DataNode> readNode(ResourceId path, Filter filter) {
CompletableFuture<DataNode> eventFuture = CompletableFuture.completedFuture(null);
- List<NodeKey> nodeKeyList = path.nodeKeys();
- NodeKey f = nodeKeyList.get(0);
- if (f.schemaId().name().compareTo("/") == 0) {
- nodeKeyList.remove(0);
- }
String spath = ResourceIdParser.parseResId(path);
DocumentPath dpath = DocumentPath.from(spath);
DataNode.Type type = null;
@@ -339,11 +328,6 @@
@Override
public CompletableFuture<Boolean> updateNode(ResourceId complete, DataNode node) {
CompletableFuture<Boolean> eventFuture = CompletableFuture.completedFuture(true);
- List<NodeKey> nodeKeyList = complete.nodeKeys();
- NodeKey f = nodeKeyList.get(0);
- if (f.schemaId().name().compareTo("/") == 0) {
- nodeKeyList.remove(0);
- }
String spath = ResourceIdParser.parseResId(complete);
if (spath == null) {
throw new FailedException("Invalid RsourceId, cannot update Node");
@@ -361,11 +345,6 @@
@Override
public CompletableFuture<Boolean> nodeExist(ResourceId complete) {
Boolean stat = true;
- List<NodeKey> nodeKeyList = complete.nodeKeys();
- NodeKey f = nodeKeyList.get(0);
- if (f.schemaId().name().compareTo("/") == 0) {
- nodeKeyList.remove(0);
- }
String spath = ResourceIdParser.parseResId(complete);
if (spath == null) {
stat = false;
@@ -423,14 +402,9 @@
@Override
public CompletableFuture<Boolean> deleteNodeRecursive(ResourceId path) {
- List<NodeKey> nodeKeyList = path.nodeKeys();
- NodeKey f = nodeKeyList.get(0);
- if (f.schemaId().name().compareTo("/") == 0) {
- nodeKeyList.remove(0);
- }
String spath = ResourceIdParser.parseResId(path);
if (spath == null) {
- throw new FailedException("Invalid RsourceId, cannot create Node");
+ throw new FailedException("Invalid RsourceId, cannot delete Node");
}
if (spath.compareTo(ResourceIdParser.ROOT) == 0) {
throw new FailedException("Cannot delete Root");