in atomos.substrate.config/src/main/java/org/apache/felix/atomos/substrate/config/ReflectConfig.java [169:217]
private void discoverSeriviceComponents(Map<String, ClassConfig> classes)
{
for (Bundle b : context.getBundles())
{
if (b.equals(context.getBundle()))
{
continue;
}
runtime.getComponentDescriptionDTOs(b).forEach((c) -> {
Class<?> clazz;
try
{
clazz = b.loadClass(c.implementationClass);
}
catch (ClassNotFoundException e)
{
return;
}
ClassConfig config = classes.computeIfAbsent(clazz.getName(),
(n) -> new ClassConfig(n));
config.constructor = COMPONENT_CONSTRUCTOR;
Optional.ofNullable(c.activate).ifPresent(
(m) -> addMethod(m, clazz, classes));
Optional.ofNullable(c.modified).ifPresent(
(m) -> addMethod(m, clazz, classes));
Optional.ofNullable(c.deactivate).ifPresent(
(m) -> addMethod(m, clazz, classes));
for (String fName : c.activationFields)
{
addField(fName, clazz, classes);
}
for (ReferenceDTO r : c.references)
{
Optional.ofNullable(r.field).ifPresent(
(f) -> addField(f, clazz, classes));
Optional.ofNullable(r.bind).ifPresent(
(m) -> addMethod(m, clazz, classes));
Optional.ofNullable(r.updated).ifPresent(
(m) -> addMethod(m, clazz, classes));
Optional.ofNullable(r.unbind).ifPresent(
(m) -> addMethod(m, clazz, classes));
Optional.ofNullable(r.interfaceName).ifPresent(
(i) -> classes.computeIfAbsent(i, (n) -> new ClassConfig(n)));
}
});
}
}