in winegrower-core/src/main/java/org/apache/winegrower/service/OSGiServices.java [95:131]
private <T> void doInject(final Class<?> typeScope, final T instance) {
if (typeScope == null || typeScope == Object.class) {
return;
}
Stream.of(typeScope.getDeclaredFields())
.filter(field -> field.isAnnotationPresent(InjectedService.class))
.peek(field -> {
if (!field.isAccessible()) {
field.setAccessible(true);
}
})
.forEach(field -> {
if (Ripener.class == field.getType()) {
try {
field.set(instance, framework);
} catch (final IllegalAccessException e) {
throw new IllegalStateException(e);
}
} else if (OSGiServices.class == field.getType()) {
try {
field.set(instance, framework.getServices());
} catch (final IllegalAccessException e) {
throw new IllegalStateException(e);
}
} else {
findService(field.getType())
.ifPresent(value -> {
try {
field.set(instance, value);
} catch (final IllegalAccessException e) {
throw new IllegalStateException(e);
}
});
}
});
doInject(typeScope.getSuperclass(), instance);
}