@Override protected void initializeInjectionMembersAndTypeLists() { injectionMembers = new ArrayList<AccessibleObject>(); List<Annotation> bindingIds = new ArrayList<Annotation>(); final List<Type> typeList = new ArrayList<Type>(); Class<?> drillInto = getComponentImplementation(); while (drillInto != Object.class) { final Field[] fields = getFields(drillInto); for (final Field field : fields) { if (Modifier.isStatic(field.getModifiers())) { continue; } if (isAnnotatedForInjection(field)) { injectionMembers.add(field); } } drillInto = drillInto.getSuperclass(); } //Sort for injection. Collections.sort(injectionMembers, new JSR330AccessibleObjectOrderComparator()); for (AccessibleObject eachMember : injectionMembers) { Field field = (Field)eachMember; typeList.add(box(field.getGenericType())); bindingIds.add(getBinding(field)); } injectionTypes = typeList.toArray(new Type[0]); bindings = bindingIds.toArray(new Annotation[0]); }
@Override protected void initializeInjectionMembersAndTypeLists() { injectionMembers = new ArrayList<AccessibleObject>(); List<Annotation> bindingIds = new ArrayList<Annotation>(); final List<Type> typeList = new ArrayList<Type>(); Class<?> drillInto = getComponentImplementation(); while (drillInto != Object.class) { final Field[] fields = getFields(drillInto); for (final Field field : fields) { if (Modifier.isStatic(field.getModifiers())) { continue; } if (isAnnotatedForInjection(field)) { injectionMembers.add(field); } } drillInto = drillInto.getSuperclass(); } //Sort for injection. Collections.sort(injectionMembers, new JSR330AccessibleObjectOrderComparator()); for (AccessibleObject eachMember : injectionMembers) { Field field = (Field)eachMember; typeList.add(box(field.getGenericType())); bindingIds.add(getBinding(field)); } injectionTypes = typeList.toArray(new Type[0]); bindings = bindingIds.toArray(new Annotation[0]); }
@Override protected void initializeInjectionMembersAndTypeLists() { injectionMembers = new ArrayList<AccessibleObject>(); List<Annotation> bindingIds = new ArrayList<Annotation>(); final List<Type> typeList = new ArrayList<Type>(); for (Field eachFieldToInject : fieldsToInject) { injectionMembers.add(eachFieldToInject); } //Sort for injection. Collections.sort(injectionMembers, new JSR330AccessibleObjectOrderComparator()); for (AccessibleObject eachMember : injectionMembers) { Field field = (Field)eachMember; typeList.add(box(field.getGenericType())); bindingIds.add(AnnotatedFieldInjection.AnnotatedFieldInjector.getBinding(field)); } injectionTypes = typeList.toArray(new Type[0]); bindings = bindingIds.toArray(new Annotation[0]); }
@Override protected void initializeInjectionMembersAndTypeLists() { injectionMembers = new ArrayList<AccessibleObject>(); List<Annotation> bindingIds = new ArrayList<Annotation>(); final List<Type> typeList = new ArrayList<Type>(); for (Field eachFieldToInject : fieldsToInject) { injectionMembers.add(eachFieldToInject); } //Sort for injection. Collections.sort(injectionMembers, new JSR330AccessibleObjectOrderComparator()); for (AccessibleObject eachMember : injectionMembers) { Field field = (Field)eachMember; typeList.add(box(field.getGenericType())); bindingIds.add(AnnotatedFieldInjection.AnnotatedFieldInjector.getBinding(field)); } injectionTypes = typeList.toArray(new Type[0]); bindings = bindingIds.toArray(new Annotation[0]); }
/** * Convenience method to create annotated field injector * * @param key * @param impl * @param parameters * @param monitor * @param useNames * @param injectionAnnotations * @return annotated field injector instance. */ public static <T> ComponentAdapter<T> annotatedField(final Object key, final Class<T> impl, final FieldParameters[] parameters, final ComponentMonitor monitor, final boolean useNames, final Class<? extends Annotation>... injectionAnnotations) { return monitor.newInjector(new AnnotatedFieldInjection.AnnotatedFieldInjector<T>(key, impl, parameters, monitor, useNames, true, injectionAnnotations)); }
/** * Convenience method to create annotated field injector * * @param key * @param impl * @param parameters * @param monitor * @param useNames * @param injectionAnnotations * @return annotated field injector instance. */ public static <T> ComponentAdapter<T> annotatedField(final Object key, final Class<T> impl, final FieldParameters[] parameters, final ComponentMonitor monitor, final boolean useNames, final Class<? extends Annotation>... injectionAnnotations) { return monitor.newInjector(new AnnotatedFieldInjection.AnnotatedFieldInjector<T>(key, impl, parameters, monitor, useNames, true, injectionAnnotations)); }
@SuppressWarnings({ "rawtypes", "unchecked" }) 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); boolean requireConsumptionOfAllParameters = !(AbstractBehavior.arePropertiesPresent(componentProps, Characteristics.ALLOW_UNUSED_PARAMETERS, false)); return wrapLifeCycle(monitor.newInjector(new AnnotatedFieldInjector(key, impl, fieldParams, monitor, useNames, requireConsumptionOfAllParameters, injectionAnnotations)), lifecycle); }
@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"))) ); }
@SuppressWarnings({ "rawtypes", "unchecked" }) 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); boolean requireConsumptionOfAllParameters = !(AbstractBehavior.arePropertiesPresent(componentProps, Characteristics.ALLOW_UNUSED_PARAMETERS, false)); return wrapLifeCycle(monitor.newInjector(new AnnotatedFieldInjector(key, impl, fieldParams, monitor, useNames, requireConsumptionOfAllParameters, injectionAnnotations)), lifecycle); }