protected void boxParameters(final Type[] parameterTypes) { for (int i = 0; i < parameterTypes.length; i++) { parameterTypes[i] = box(parameterTypes[i]); } }
protected Object[] getMemberArguments(final PicoContainer container, final AccessibleObject member, final Type[] parameterTypes, final Annotation[] bindings, final Type into) { boxParameters(parameterTypes); //Object[] result = new Object[parameterTypes.length]; List<Object> result = new ArrayList<Object>(parameterTypes.length); AccessibleObjectParameterSet objectParameterSet = this.getParameterToUseForObject(member, parameters); Parameter[] currentParameters = objectParameterSet.getParams(); for (int i = 0; i < currentParameters.length; i++) { try { Object parameterResult = getParameter(container, member, i, parameterTypes[i], bindings[i], currentParameters[i], null, into); if (parameterResult != Parameter.NULL_RESULT) { result.add(parameterResult); } } catch (AmbiguousComponentResolutionException e) { e.setComponent(getComponentImplementation()); e.setMember(member); e.setParameterNumber(i); throw e; } } return result.toArray(); }
protected Object getParameter(final PicoContainer container, final AccessibleObject member, final int i, final Type parameterType, final Annotation binding, final Parameter currentParameter, final ComponentAdapter<?> injecteeAdapter, final Type into) { ParameterNameBinding expectedNameBinding = new ParameterNameBinding(getParanamer(), member, i); Resolver resolver = currentParameter.resolve(container, this, injecteeAdapter, parameterType, expectedNameBinding, useNames(), binding); if (!resolver.isResolved()) { if (!this.useAllParameters) { return Parameter.NULL_RESULT; } } Object result = resolver.resolveInstance(into); nullCheck(member, i, expectedNameBinding, result); return result; }
protected Object[] getMemberArguments(final PicoContainer container, final Method method, final Type into) { return super.getMemberArguments(container, method, method.getGenericParameterTypes(), getBindings(method.getParameterAnnotations()), into); }
/** * Throws an exception if the "resolved" parameter is null <em>unless</em> * {@link #useAllParameters} is set to false. * * @param member * @param i * @param expectedNameBinding * @param result */ @SuppressWarnings("synthetic-access") protected void nullCheck(final AccessibleObject member, final int i, final ParameterNameBinding expectedNameBinding, final Object result) { if (result == null && !isNullParamAllowed(member, i)) { throw new ParameterCannotBeNullException(i, member, expectedNameBinding.getName()); } }
protected List<Method> getInjectorMethods() { Class<?> toIntrospect = null; //Method[] methods = new Method[0]; try { //methods = super.getComponentImplementation().getMethods(); toIntrospect = super.getComponentImplementation(); } catch (AmbiguousComponentResolutionException e) { e.setComponent(getComponentImplementation()); throw e; } if (toIntrospect == null) { throw new NullPointerException("No implementation class defined for " + this); } HashMap<String, Set<Method>> allMethodsAnalyzed = new HashMap<String,Set<Method>>(); List<Method> methodz = new ArrayList<Method>(); recursiveCheckInjectorMethods(toIntrospect, toIntrospect, methodz, allMethodsAnalyzed); //Inject in JSR330 compliant order. Collections.sort(methodz, new JSR330AccessibleObjectOrderComparator()); return methodz; }
protected Object[] getMemberArguments(final PicoContainer container, final AccessibleObject member, final Type[] parameterTypes, final Annotation[] bindings, final Type into) { boxParameters(parameterTypes); //Object[] result = new Object[parameterTypes.length]; List<Object> result = new ArrayList<Object>(parameterTypes.length); AccessibleObjectParameterSet objectParameterSet = this.getParameterToUseForObject(member, parameters); Parameter[] currentParameters = objectParameterSet.getParams(); for (int i = 0; i < currentParameters.length; i++) { try { Object parameterResult = getParameter(container, member, i, parameterTypes[i], bindings[i], currentParameters[i], null, into); if (parameterResult != Parameter.NULL_RESULT) { result.add(parameterResult); } } catch (AmbiguousComponentResolutionException e) { e.setComponent(getComponentImplementation()); e.setMember(member); e.setParameterNumber(i); throw e; } } return result.toArray(); }
protected Object getParameter(final PicoContainer container, final AccessibleObject member, final int i, final Type parameterType, final Annotation binding, final Parameter currentParameter, final ComponentAdapter<?> injecteeAdapter, final Type into) { ParameterNameBinding expectedNameBinding = new ParameterNameBinding(getParanamer(), member, i); Resolver resolver = currentParameter.resolve(container, this, injecteeAdapter, parameterType, expectedNameBinding, useNames(), binding); if (!resolver.isResolved()) { if (!this.useAllParameters) { return Parameter.NULL_RESULT; } } Object result = resolver.resolveInstance(into); nullCheck(member, i, expectedNameBinding, result); return result; }
protected Object[] getMemberArguments(final PicoContainer container, final Method method, final Type into) { return super.getMemberArguments(container, method, method.getGenericParameterTypes(), getBindings(method.getParameterAnnotations()), into); }
/** * Throws an exception if the "resolved" parameter is null <em>unless</em> * {@link #useAllParameters} is set to false. * * @param member * @param i * @param expectedNameBinding * @param result */ @SuppressWarnings("synthetic-access") protected void nullCheck(final AccessibleObject member, final int i, final ParameterNameBinding expectedNameBinding, final Object result) { if (result == null && !isNullParamAllowed(member, i)) { throw new ParameterCannotBeNullException(i, member, expectedNameBinding.getName()); } }
protected List<Method> getInjectorMethods() { Class<?> toIntrospect = null; //Method[] methods = new Method[0]; try { //methods = super.getComponentImplementation().getMethods(); toIntrospect = super.getComponentImplementation(); } catch (AmbiguousComponentResolutionException e) { e.setComponent(getComponentImplementation()); throw e; } if (toIntrospect == null) { throw new NullPointerException("No implementation class defined for " + this); } HashMap<String, Set<Method>> allMethodsAnalyzed = new HashMap<String,Set<Method>>(); List<Method> methodz = new ArrayList<Method>(); recursiveCheckInjectorMethods(toIntrospect, toIntrospect, methodz, allMethodsAnalyzed); //Inject in JSR330 compliant order. Collections.sort(methodz, new JSR330AccessibleObjectOrderComparator()); return methodz; }
protected void boxParameters(final Type[] parameterTypes) { for (int i = 0; i < parameterTypes.length; i++) { parameterTypes[i] = box(parameterTypes[i]); } }