in dosgi/src/main/java/org/apache/karaf/cellar/dosgi/ExportServiceListener.java [198:228]
public Set<String> getServiceInterfaces(Object service, String[] services) {
Set<String> interfaceList = new LinkedHashSet<String>();
if (service != null && services != null && services.length > 0) {
for (String s : services) {
if (Constants.ALL_INTERFACES.equals(s)) {
Class[] classes = service.getClass().getInterfaces();
if (classes != null && classes.length > 0) {
for (Class c : classes) {
interfaceList.add(c.getCanonicalName());
}
}
} else {
try {
ClassLoader classLoader = null;
if (service.getClass() != null && service.getClass().getClassLoader() != null) {
classLoader = service.getClass().getClassLoader();
} else {
classLoader = ClassLoader.getSystemClassLoader();
}
Class clazz = classLoader.loadClass(s);
String ifaceName = clazz.getCanonicalName();
interfaceList.add(ifaceName);
} catch (ClassNotFoundException e) {
LOGGER.error("CELLAR DOSGI: could not load class", e);
}
}
}
}
return interfaceList;
}