From: Tony Tkacik Date: Fri, 8 Nov 2013 12:12:21 +0000 (+0100) Subject: Updated toString for BI InstanceIdentifier X-Git-Tag: yangtools-0.6.0~193^2 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=2e2bb0d8b296f9366b5b346f5c5d0c6f07e71647;p=yangtools.git Updated toString for BI InstanceIdentifier Change-Id: I3b12713c2144d7bb49bd86620edba4b238b7c895 Signed-off-by: Tony Tkacik --- diff --git a/concepts/src/main/java/org/opendaylight/yangtools/concepts/util/ListenerRegistry.java b/concepts/src/main/java/org/opendaylight/yangtools/concepts/util/ListenerRegistry.java index 2ac88d5796..458c54d806 100644 --- a/concepts/src/main/java/org/opendaylight/yangtools/concepts/util/ListenerRegistry.java +++ b/concepts/src/main/java/org/opendaylight/yangtools/concepts/util/ListenerRegistry.java @@ -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 implements Iterable> { - final Set> listeners; + final ConcurrentHashMap,ListenerRegistration> listeners; final Set> unmodifiableView; public ListenerRegistry() { - listeners = new HashSet<>(); - unmodifiableView = Collections.unmodifiableSet(listeners); + listeners = new ConcurrentHashMap<>(); + unmodifiableView = Collections.unmodifiableSet(listeners.keySet()); } public Iterable> getListeners() { @@ -30,13 +27,13 @@ public class ListenerRegistry implements Iterable ret = new ListenerRegistrationImpl(listener); - listeners.add(ret); + listeners.put(ret,ret); return ret; } @Override public java.util.Iterator> iterator() { - return listeners.iterator(); + return unmodifiableView.iterator(); } @SuppressWarnings("rawtypes") diff --git a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/InstanceIdentifier.java b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/InstanceIdentifier.java index e4e748e9a5..ba08d087d7 100644 --- a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/InstanceIdentifier.java +++ b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/InstanceIdentifier.java @@ -17,6 +17,8 @@ public class InstanceIdentifier implements Path, Immutable, private static final long serialVersionUID = 8467409862384206193L; private final List path; + private transient String to_string_cache = null; + public List getPath() { return path; } @@ -64,6 +66,10 @@ public class InstanceIdentifier implements Path, Immutable, return new BuilderImpl(); } + static public InstanceIdentifierBuilder builder(InstanceIdentifier origin) { + return new BuilderImpl(origin.getPath()); + } + public interface PathArgument extends Immutable, Serializable { QName getNodeType(); @@ -121,6 +127,11 @@ public class InstanceIdentifier implements Path, Immutable, return false; return true; } + + @Override + public String toString() { + return nodeType.toString(); + } } public static final class NodeIdentifierWithPredicates implements PathArgument { @@ -182,12 +193,25 @@ public class InstanceIdentifier implements Path, Immutable, return false; return true; } + + @Override + public String toString() { + return nodeType + "[" + keyValues + "]"; + } } private static class BuilderImpl implements InstanceIdentifierBuilder { private final List path = new ArrayList<>(); + public BuilderImpl() { + + } + + public BuilderImpl(List prefix) { + path.addAll(prefix); + } + @Override public InstanceIdentifierBuilder node(QName nodeType) { path.add(new NodeIdentifier(nodeType)); @@ -234,4 +258,18 @@ public class InstanceIdentifier implements Path, Immutable, } return true; } + + @Override + public String toString() { + if (to_string_cache != null) { + return to_string_cache; + } + StringBuilder builder = new StringBuilder(); + for (PathArgument argument : path) { + builder.append("/"); + builder.append(argument.toString()); + } + to_string_cache = builder.toString(); + return to_string_cache; + } } diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/NodeUtils.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/NodeUtils.java index 6aa9406d9e..d33ae60b91 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/NodeUtils.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/NodeUtils.java @@ -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>> buildNodeMap(List> value) { Map>> 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) {