Updated toString for BI InstanceIdentifier 48/2548/1
authorTony Tkacik <ttkacik@cisco.com>
Fri, 8 Nov 2013 12:12:21 +0000 (13:12 +0100)
committerTony Tkacik <ttkacik@cisco.com>
Fri, 8 Nov 2013 12:14:33 +0000 (13:14 +0100)
Change-Id: I3b12713c2144d7bb49bd86620edba4b238b7c895
Signed-off-by: Tony Tkacik <ttkacik@cisco.com>
concepts/src/main/java/org/opendaylight/yangtools/concepts/util/ListenerRegistry.java
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/InstanceIdentifier.java
yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/NodeUtils.java

index 2ac88d5796f78119b6ec8a68e6fecb8cb51c2336..458c54d806ce330c6116f3d75dd58d38b85f03bf 100644 (file)
@@ -2,23 +2,20 @@ package org.opendaylight.yangtools.concepts.util;
 
 import java.util.Collections;
 import java.util.EventListener;
-import java.util.HashSet;
 import java.util.Set;
 import java.util.concurrent.ConcurrentHashMap;
 
-import javax.swing.text.html.HTMLDocument.Iterator;
-
 import org.opendaylight.yangtools.concepts.AbstractObjectRegistration;
 import org.opendaylight.yangtools.concepts.ListenerRegistration;
 
 public class ListenerRegistry<T extends EventListener> implements Iterable<ListenerRegistration<T>> {
 
-    final Set<ListenerRegistration<T>> listeners;
+    final ConcurrentHashMap<ListenerRegistration<T>,ListenerRegistration<T>> listeners;
     final Set<ListenerRegistration<T>> unmodifiableView;
 
     public ListenerRegistry() {
-        listeners = new HashSet<>();
-        unmodifiableView = Collections.unmodifiableSet(listeners);
+        listeners = new ConcurrentHashMap<>();
+        unmodifiableView = Collections.unmodifiableSet(listeners.keySet());
     }
 
     public Iterable<ListenerRegistration<T>> getListeners() {
@@ -30,13 +27,13 @@ public class ListenerRegistry<T extends EventListener> implements Iterable<Liste
             throw new IllegalArgumentException("Listener should not be null.");
         }
         ListenerRegistrationImpl<T> ret = new ListenerRegistrationImpl<T>(listener);
-        listeners.add(ret);
+        listeners.put(ret,ret);
         return ret;
     }
     
     @Override
     public java.util.Iterator<ListenerRegistration<T>> iterator() {
-        return listeners.iterator();
+        return unmodifiableView.iterator();
     }
 
     @SuppressWarnings("rawtypes")
index e4e748e9a50ac874ceee8f3344fee6b51d366126..ba08d087d7d09022ee403879cc80eeaf0fd10676 100644 (file)
@@ -17,6 +17,8 @@ public class InstanceIdentifier implements Path<InstanceIdentifier>, Immutable,
     private static final long serialVersionUID = 8467409862384206193L;\r
     private final List<PathArgument> path;\r
 \r
+    private transient String to_string_cache = null;\r
+\r
     public List<PathArgument> getPath() {\r
         return path;\r
     }\r
@@ -64,6 +66,10 @@ public class InstanceIdentifier implements Path<InstanceIdentifier>, Immutable,
         return new BuilderImpl();\r
     }\r
 \r
+    static public InstanceIdentifierBuilder builder(InstanceIdentifier origin) {\r
+        return new BuilderImpl(origin.getPath());\r
+    }\r
+\r
     public interface PathArgument extends Immutable, Serializable {\r
         QName getNodeType();\r
 \r
@@ -121,6 +127,11 @@ public class InstanceIdentifier implements Path<InstanceIdentifier>, Immutable,
                 return false;\r
             return true;\r
         }\r
+\r
+        @Override\r
+        public String toString() {\r
+            return nodeType.toString();\r
+        }\r
     }\r
 \r
     public static final class NodeIdentifierWithPredicates implements PathArgument {\r
@@ -182,12 +193,25 @@ public class InstanceIdentifier implements Path<InstanceIdentifier>, Immutable,
                 return false;\r
             return true;\r
         }\r
+\r
+        @Override\r
+        public String toString() {\r
+            return nodeType + "[" + keyValues + "]";\r
+        }\r
     }\r
 \r
     private static class BuilderImpl implements InstanceIdentifierBuilder {\r
 \r
         private final List<PathArgument> path = new ArrayList<>();\r
 \r
+        public BuilderImpl() {\r
+\r
+        }\r
+\r
+        public BuilderImpl(List<? extends PathArgument> prefix) {\r
+            path.addAll(prefix);\r
+        }\r
+\r
         @Override\r
         public InstanceIdentifierBuilder node(QName nodeType) {\r
             path.add(new NodeIdentifier(nodeType));\r
@@ -234,4 +258,18 @@ public class InstanceIdentifier implements Path<InstanceIdentifier>, Immutable,
         }\r
         return true;\r
     }\r
+\r
+    @Override\r
+    public String toString() {\r
+        if (to_string_cache != null) {\r
+            return to_string_cache;\r
+        }\r
+        StringBuilder builder = new StringBuilder();\r
+        for (PathArgument argument : path) {\r
+            builder.append("/");\r
+            builder.append(argument.toString());\r
+        }\r
+        to_string_cache = builder.toString();\r
+        return to_string_cache;\r
+    }\r
 }\r
index 6aa9406d9e522bee5d51ba4834e393f572c4251d..d33ae60b913a6b756a86da3a36727a93679a96e0 100644 (file)
@@ -96,7 +96,9 @@ public abstract class NodeUtils {
             itemEl.setUserData(USER_KEY_NODE, item, null);
             if (item instanceof SimpleNode<?>) {
                 Object value = ((SimpleNode<?>) item).getValue();
-                itemEl.setTextContent(String.valueOf(value));
+                if(value != null) {
+                    itemEl.setTextContent(String.valueOf(value));
+                }
             }
             if (item instanceof NodeModification) {
                 ModifyAction modificationAction = ((NodeModification) item).getModificationAction();
@@ -147,7 +149,7 @@ public abstract class NodeUtils {
      */
     public static Map<QName, List<Node<?>>> buildNodeMap(List<Node<?>> value) {
         Map<QName, List<Node<?>>> nodeMapTmp = new HashMap<>();
-        if (value == null || value.isEmpty()) {
+        if (value == null) {
             throw new IllegalStateException("nodeList should not be null or empty");
         }
         for (Node<?> node : value) {