Added some tests.
diff --git a/net/api/src/main/java/org/onlab/onos/net/provider/AbstractProviderRegistry.java b/net/api/src/main/java/org/onlab/onos/net/provider/AbstractProviderRegistry.java
index 6975447..02a486e 100644
--- a/net/api/src/main/java/org/onlab/onos/net/provider/AbstractProviderRegistry.java
+++ b/net/api/src/main/java/org/onlab/onos/net/provider/AbstractProviderRegistry.java
@@ -1,10 +1,13 @@
package org.onlab.onos.net.provider;
+import com.google.common.collect.ImmutableSet;
+
import java.util.HashMap;
import java.util.Map;
+import java.util.Set;
-import static com.google.common.base.Preconditions.checkArgument;
import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Preconditions.checkState;
/**
* Base implementation of provider registry.
@@ -28,7 +31,7 @@
@Override
public synchronized S register(P provider) {
checkNotNull(provider, "Provider cannot be null");
- checkArgument(!services.containsKey(provider), "Provider %s already registered", provider.id());
+ checkState(!services.containsKey(provider.id()), "Provider %s already registered", provider.id());
S service = createProviderService(provider);
services.put(provider.id(), service);
return service;
@@ -37,10 +40,16 @@
@Override
public synchronized void unregister(P provider) {
checkNotNull(provider, "Provider cannot be null");
- S service = services.get(provider);
+ S service = services.get(provider.id());
if (service != null && service instanceof AbstractProviderService) {
((AbstractProviderService) service).invalidate();
- services.remove(provider);
+ services.remove(provider.id());
}
}
+
+ @Override
+ public synchronized Set<ProviderId> getProviders() {
+ return ImmutableSet.copyOf(services.keySet());
+ }
+
}
diff --git a/net/api/src/main/java/org/onlab/onos/net/provider/ProviderRegistry.java b/net/api/src/main/java/org/onlab/onos/net/provider/ProviderRegistry.java
index 93436fc..08975e2 100644
--- a/net/api/src/main/java/org/onlab/onos/net/provider/ProviderRegistry.java
+++ b/net/api/src/main/java/org/onlab/onos/net/provider/ProviderRegistry.java
@@ -1,5 +1,7 @@
package org.onlab.onos.net.provider;
+import java.util.Set;
+
/**
* Registry for tracking information providers with the core.
*
@@ -29,4 +31,11 @@
*/
void unregister(P provider);
+ /**
+ * Returns a set of currently registered provider identities.
+ *
+ * @return set of provider identifiers
+ */
+ Set<ProviderId> getProviders();
+
}