org.osgl.inject.ValueLoaderFactory Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of genie Show documentation
Show all versions of genie Show documentation
A JSR330 style dependency injection solution
package org.osgl.inject;
import org.osgl.$;
import org.osgl.inject.annotation.LoadValue;
import org.osgl.util.E;
import javax.inject.Provider;
import java.lang.annotation.Annotation;
import java.util.Map;
/**
* `ValueLoaderFactory` load the bean instance directly from
* {@link ValueLoader} based on the option data specified in
* {@link org.osgl.inject.annotation.LoadValue} annotation
*/
class ValueLoaderFactory {
static Provider create(BeanSpec spec, Genie genie) {
Annotation anno = spec.valueLoader();
E.illegalArgumentIf(null == anno);
Map options = $.evaluate(anno);
Class extends Annotation> annoType = anno.annotationType();
LoadValue loadValue;
if (LoadValue.class == annoType) {
loadValue = (LoadValue) anno;
} else {
loadValue = annoType.getAnnotation(LoadValue.class);
}
ValueLoader valueLoader = genie.get(loadValue.value());
valueLoader.init(options, spec);
return valueLoader;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy