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() {
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")
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
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
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
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
}\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
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();
*/
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) {