public static InjectionType annotatedMethodDI(final Class<? extends Annotation> injectionAnnotation) { return new AnnotatedMethodInjection(injectionAnnotation, false); }
@SuppressWarnings("unchecked") public AnnotatedMethodInjection() { this(false, com.picocontainer.annotations.Inject.class, getInjectionAnnotation("javax.inject.Inject")); }
/** * Create a {@link com.picocontainer.injectors.SetterInjection.SetterInjector}. * * @param monitor * @param lifecycle * @param componentProps * @param key The component's key * @param impl The class of the bean. * @return Returns a new {@link com.picocontainer.injectors.SetterInjection.SetterInjector}. * @throws com.picocontainer.PicoCompositionException if dependencies cannot * be solved or if the implementation is an interface or an * abstract class. */ public <T> ComponentAdapter<T> createComponentAdapter(final ComponentMonitor monitor, final LifecycleStrategy lifecycle, final Properties componentProps, final Object key, final Class<T> impl, final ConstructorParameters constructorParams, final FieldParameters[] fieldParams, final MethodParameters[] methodParams) throws PicoCompositionException { boolean requireConsumptionOfAllParameters = !(AbstractBehavior.arePropertiesPresent(componentProps, Characteristics.ALLOW_UNUSED_PARAMETERS, false)); return wrapLifeCycle(monitor.newInjector(new AnnotatedMethodInjector<T>(key, impl, methodParams, monitor, useNames, requireConsumptionOfAllParameters, injectionAnnotations)), lifecycle); }
/** * Create a {@link com.picocontainer.injectors.SetterInjection.SetterInjector}. * * @param monitor * @param lifecycle * @param componentProps * @param key The component's key * @param impl The class of the bean. * @return Returns a new {@link com.picocontainer.injectors.SetterInjection.SetterInjector}. * @throws com.picocontainer.PicoCompositionException if dependencies cannot * be solved or if the implementation is an interface or an * abstract class. */ public <T> ComponentAdapter<T> createComponentAdapter(final ComponentMonitor monitor, final LifecycleStrategy lifecycle, final Properties componentProps, final Object key, final Class<T> impl, final ConstructorParameters constructorParams, final FieldParameters[] fieldParams, final MethodParameters[] methodParams) throws PicoCompositionException { boolean requireConsumptionOfAllParameters = !(AbstractBehavior.arePropertiesPresent(componentProps, Characteristics.ALLOW_UNUSED_PARAMETERS, false)); return wrapLifeCycle(monitor.newInjector(new AnnotatedMethodInjector<T>(key, impl, methodParams, monitor, useNames, requireConsumptionOfAllParameters, injectionAnnotations)), lifecycle); }
@SuppressWarnings("unchecked") public AnnotatedFieldInjection() { this(getInjectionAnnotation("javax.inject.Inject"), getInjectionAnnotation("com.picocontainer.annotations.Inject")); }
public static InjectionType annotatedMethodDI() { return new AnnotatedMethodInjection(); }
@SuppressWarnings("unchecked") public AnnotatedMethodInjection() { this(false, com.picocontainer.annotations.Inject.class, getInjectionAnnotation("javax.inject.Inject")); }
public static InjectionType annotatedMethodDI(final Class<? extends Annotation> injectionAnnotation) { return new AnnotatedMethodInjection(injectionAnnotation, false); }
@SuppressWarnings("unchecked") public AnnotatedFieldInjection() { this(getInjectionAnnotation("javax.inject.Inject"), getInjectionAnnotation("com.picocontainer.annotations.Inject")); }
public static InjectionType annotatedMethodDI() { return new AnnotatedMethodInjection(); }
private List<StaticInjector<?>> createListOfStaticInjectors(final Class<?> componentImplementation) { List<StaticInjector<?>> injectors = new ArrayList<StaticInjector<?>>(); Class<?> currentClass = componentImplementation; Class<? extends Annotation> injectionAnnotation = AnnotatedMethodInjection.getInjectionAnnotation("javax.inject.Inject"); while(!currentClass.equals(Object.class)) { // //Method first because we're going to reverse the entire collection //after building. // StaticInjector<?> methodInjector = constructStaticMethodInjections(injectionAnnotation, currentClass); if (methodInjector != null) { injectors.add(methodInjector); } StaticInjector<?> fieldInjector = constructStaticFieldInjections(injectionAnnotation, currentClass); if (fieldInjector != null) { injectors.add(fieldInjector); } currentClass = currentClass.getSuperclass(); } Collections.reverse(injectors); return injectors; }
public AdaptingInjection() { constructorInjection = new Jsr330ConstructorInjection(); methodInjection = new MethodInjection(); setterInjection = new SetterInjection(); annotatedMethodInjection = new AnnotatedMethodInjection(); annotatedFieldInjection = new AnnotatedFieldInjection(); }
private List<StaticInjector<?>> createListOfStaticInjectors(final Class<?> componentImplementation) { List<StaticInjector<?>> injectors = new ArrayList<StaticInjector<?>>(); Class<?> currentClass = componentImplementation; Class<? extends Annotation> injectionAnnotation = AnnotatedMethodInjection.getInjectionAnnotation("javax.inject.Inject"); while(!currentClass.equals(Object.class)) { // //Method first because we're going to reverse the entire collection //after building. // StaticInjector<?> methodInjector = constructStaticMethodInjections(injectionAnnotation, currentClass); if (methodInjector != null) { injectors.add(methodInjector); } StaticInjector<?> fieldInjector = constructStaticFieldInjections(injectionAnnotation, currentClass); if (fieldInjector != null) { injectors.add(fieldInjector); } currentClass = currentClass.getSuperclass(); } Collections.reverse(injectors); return injectors; }
public AdaptingInjection() { constructorInjection = new Jsr330ConstructorInjection(); methodInjection = new MethodInjection(); setterInjection = new SetterInjection(); annotatedMethodInjection = new AnnotatedMethodInjection(); annotatedFieldInjection = new AnnotatedFieldInjection(); }
private boolean injectionAnnotated(final AccessibleObject[] objects) { for (AccessibleObject object : objects) { if (object.getAnnotation(Inject.class) != null || object.getAnnotation(getInjectionAnnotation("javax.inject.Inject")) != null) { return true; } } return false; }
private boolean injectionAnnotated(final AccessibleObject[] objects) { for (AccessibleObject object : objects) { if (object.getAnnotation(Inject.class) != null || object.getAnnotation(getInjectionAnnotation("javax.inject.Inject")) != null) { return true; } } return false; }
@SuppressWarnings("unchecked") public MultiInjector(final Object key, final Class<T> impl, final ComponentMonitor monitor, final String setterPrefix, final boolean useNames, final boolean useAllParameter, final ConstructorParameters constructorParams, final FieldParameters[] fieldParams, final MethodParameters[] methodParams) { super(key, impl, monitor, useNames, monitor.newInjector(new ConstructorInjection.ConstructorInjector<T>(monitor, useNames, key, impl, constructorParams)), monitor.newInjector(new SetterInjection.SetterInjector<T>(key, impl, monitor, setterPrefix, useNames, "", false, methodParams)), monitor.newInjector(new AnnotatedMethodInjection.AnnotatedMethodInjector<T>(key, impl, methodParams, monitor, useNames, useAllParameter, Inject.class, getInjectionAnnotation("javax.inject.Inject"))), monitor.newInjector(new AnnotatedFieldInjection.AnnotatedFieldInjector<T>(key, impl, fieldParams, monitor, useNames, useAllParameter, Inject.class, getInjectionAnnotation("javax.inject.Inject"))) ); }
@SuppressWarnings("unchecked") public MultiInjector(final Object key, final Class<T> impl, final ComponentMonitor monitor, final String setterPrefix, final boolean useNames, final boolean useAllParameter, final ConstructorParameters constructorParams, final FieldParameters[] fieldParams, final MethodParameters[] methodParams) { super(key, impl, monitor, useNames, monitor.newInjector(new ConstructorInjection.ConstructorInjector<T>(monitor, useNames, key, impl, constructorParams)), monitor.newInjector(new SetterInjection.SetterInjector<T>(key, impl, monitor, setterPrefix, useNames, "", false, methodParams)), monitor.newInjector(new AnnotatedMethodInjection.AnnotatedMethodInjector<T>(key, impl, methodParams, monitor, useNames, useAllParameter, Inject.class, getInjectionAnnotation("javax.inject.Inject"))), monitor.newInjector(new AnnotatedFieldInjection.AnnotatedFieldInjector<T>(key, impl, fieldParams, monitor, useNames, useAllParameter, Inject.class, getInjectionAnnotation("javax.inject.Inject"))) ); }