Added onos-test.
Refactored the CLI classes.
diff --git a/utils/osgi/src/main/java/org/onlab/osgi/DefaultServiceDirectory.java b/utils/osgi/src/main/java/org/onlab/osgi/DefaultServiceDirectory.java
index d483991..bc401fb 100644
--- a/utils/osgi/src/main/java/org/onlab/osgi/DefaultServiceDirectory.java
+++ b/utils/osgi/src/main/java/org/onlab/osgi/DefaultServiceDirectory.java
@@ -2,6 +2,7 @@
import org.osgi.framework.BundleContext;
import org.osgi.framework.FrameworkUtil;
+import org.osgi.framework.ServiceReference;
/**
* Default implementation of the service directory using OSGi framework utilities.
@@ -17,11 +18,16 @@
*/
public static <T> T getService(Class<T> serviceClass) {
BundleContext bc = FrameworkUtil.getBundle(serviceClass).getBundleContext();
- T impl = bc.getService(bc.getServiceReference(serviceClass));
- if (impl == null) {
- throw new ServiceNotFoundException("Service " + serviceClass.getName() + " not found");
+ if (bc != null) {
+ ServiceReference<T> reference = bc.getServiceReference(serviceClass);
+ if (reference != null) {
+ T impl = bc.getService(reference);
+ if (impl != null) {
+ return impl;
+ }
+ }
}
- return impl;
+ throw new ServiceNotFoundException("Service " + serviceClass.getName() + " not found");
}
@Override