/** * Create a {@link 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 SetterInjector}. * @throws PicoCompositionException if dependencies cannot be solved */ 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 useNames = AbstractBehavior.arePropertiesPresent(componentProps, Characteristics.USE_NAMES, true); SetterInjector<T> setterInjector = new SetterInjector<T>(key, impl, monitor, prefix, useNames, notThisOneThough != null ? notThisOneThough : "", optional, methodParams); Injector<T> injector = monitor.newInjector(setterInjector); return wrapLifeCycle(injector, lifecycle); }
/** * Create a {@link 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 SetterInjector}. * @throws PicoCompositionException if dependencies cannot be solved */ 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 useNames = AbstractBehavior.arePropertiesPresent(componentProps, Characteristics.USE_NAMES, true); SetterInjector<T> setterInjector = new SetterInjector<T>(key, impl, monitor, prefix, useNames, notThisOneThough != null ? notThisOneThough : "", optional, methodParams); Injector<T> injector = monitor.newInjector(setterInjector); return wrapLifeCycle(injector, lifecycle); }
/** * convenience method to create setter injector * * @param key * @param impl * @param monitor * @param prefix * @param useNames * @param parameters * @return setter injector instance. * @throws AbstractInjector.NotConcreteRegistrationException * */ public static <T> ComponentAdapter<T> setter(final Object key, final Class<T> impl, final ComponentMonitor monitor, final String prefix, final boolean useNames, final boolean requireConsumptionOfAllParameters, final MethodParameters... parameters) { return monitor.newInjector(new SetterInjection.SetterInjector<T>(key, impl, monitor, prefix, useNames, "", requireConsumptionOfAllParameters, parameters)); }
/** * convenience method to create setter injector * * @param key * @param impl * @param monitor * @param prefix * @param useNames * @param parameters * @return setter injector instance. * @throws AbstractInjector.NotConcreteRegistrationException * */ public static <T> ComponentAdapter<T> setter(final Object key, final Class<T> impl, final ComponentMonitor monitor, final String prefix, final boolean useNames, final boolean requireConsumptionOfAllParameters, final MethodParameters... parameters) { return monitor.newInjector(new SetterInjection.SetterInjector<T>(key, impl, monitor, prefix, useNames, "", requireConsumptionOfAllParameters, parameters)); }
@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"))) ); }