public Method[] run() { return getComponentImplementation().getMethods(); } });
public Method[] run() { return getComponentImplementation().getMethods(); } });
public Object run() { try { return getComponentImplementation().getConstructor((Class[])null); } catch (NoSuchMethodException e) { return new PicoCompositionException(e); } catch (SecurityException e) { return new PicoCompositionException(e); } } });
public Object run() { try { return getComponentImplementation().getConstructor((Class[])null); } catch (NoSuchMethodException e) { return new PicoCompositionException(e); } catch (SecurityException e) { return new PicoCompositionException(e); } } });
ParameterToAccessibleObjectPair[] getMatchingParameterListForMembers(final PicoContainer container) throws PicoCompositionException { if (initialized == false) { synchronized(this) { if (initialized == false) { initializeInjectionMembersAndTypeLists(); } } } final List<Object> matchingParameterList = new ArrayList<Object>(Collections.nCopies(injectionMembers.size(), null)); final Set<AccessibleObjectParameterSet> notMatchingParameters = matchParameters(container, matchingParameterList, parameters); final Set<Type> unsatisfiableDependencyTypes = new HashSet<Type>(); final List<AccessibleObject> unsatisfiableDependencyMembers = new ArrayList<AccessibleObject>(); for (int i = 0; i < matchingParameterList.size(); i++) { ParameterToAccessibleObjectPair param = (ParameterToAccessibleObjectPair)matchingParameterList.get(i); if (param == null || !param.isResolved()) { unsatisfiableDependencyTypes.add(injectionTypes[i]); unsatisfiableDependencyMembers.add(injectionMembers.get(i)); } } if (unsatisfiableDependencyTypes.size() > 0) { unsatisfiedDependencies(container, unsatisfiableDependencyTypes, unsatisfiableDependencyMembers); } else if (notMatchingParameters.size() > 0 && this.requireConsumptionOfAllParameters) { throw new PicoCompositionException("Following parameters do not match any of the injectionMembers for " + getComponentImplementation() + ": " + notMatchingParameters.toString()); } return matchingParameterList.toArray(new ParameterToAccessibleObjectPair[matchingParameterList.size()]); }
ParameterToAccessibleObjectPair[] getMatchingParameterListForMembers(final PicoContainer container) throws PicoCompositionException { if (initialized == false) { synchronized(this) { if (initialized == false) { initializeInjectionMembersAndTypeLists(); } } } final List<Object> matchingParameterList = new ArrayList<Object>(Collections.nCopies(injectionMembers.size(), null)); final Set<AccessibleObjectParameterSet> notMatchingParameters = matchParameters(container, matchingParameterList, parameters); final Set<Type> unsatisfiableDependencyTypes = new HashSet<Type>(); final List<AccessibleObject> unsatisfiableDependencyMembers = new ArrayList<AccessibleObject>(); for (int i = 0; i < matchingParameterList.size(); i++) { ParameterToAccessibleObjectPair param = (ParameterToAccessibleObjectPair)matchingParameterList.get(i); if (param == null || !param.isResolved()) { unsatisfiableDependencyTypes.add(injectionTypes[i]); unsatisfiableDependencyMembers.add(injectionMembers.get(i)); } } if (unsatisfiableDependencyTypes.size() > 0) { unsatisfiedDependencies(container, unsatisfiableDependencyTypes, unsatisfiableDependencyMembers); } else if (notMatchingParameters.size() > 0 && this.requireConsumptionOfAllParameters) { throw new PicoCompositionException("Following parameters do not match any of the injectionMembers for " + getComponentImplementation() + ": " + notMatchingParameters.toString()); } return matchingParameterList.toArray(new ParameterToAccessibleObjectPair[matchingParameterList.size()]); }
@Override public Object partiallyDecorateComponentInstance(final PicoContainer container, final Type into, final T instance, final Class<?> superclassPortion) { boolean iInstantiated = false; T result; try { if (instantiationGuard == null) { iInstantiated = true; instantiationGuard = new ThreadLocalCyclicDependencyGuard<T>() { @Override public T run(final Object inst) { final ParameterToAccessibleObjectPair[] matchingParameters = getMatchingParameterListForMembers(guardedContainer); return decorateComponentInstance(matchingParameters, currentMonitor(), inst, container, guardedContainer, into, superclassPortion); } }; } instantiationGuard.setGuardedContainer(container); result = instantiationGuard.observe(getComponentImplementation(), instance); } finally { if (iInstantiated) { instantiationGuard.remove(); instantiationGuard = null; } } return result; }
@Override public Object partiallyDecorateComponentInstance(final PicoContainer container, final Type into, final T instance, final Class<?> superclassPortion) { boolean iInstantiated = false; T result; try { if (instantiationGuard == null) { iInstantiated = true; instantiationGuard = new ThreadLocalCyclicDependencyGuard<T>() { @Override public T run(final Object inst) { final ParameterToAccessibleObjectPair[] matchingParameters = getMatchingParameterListForMembers(guardedContainer); return decorateComponentInstance(matchingParameters, currentMonitor(), inst, container, guardedContainer, into, superclassPortion); } }; } instantiationGuard.setGuardedContainer(container); result = instantiationGuard.observe(getComponentImplementation(), instance); } finally { if (iInstantiated) { instantiationGuard.remove(); instantiationGuard = null; } } return result; }
@Override @SuppressWarnings("unchecked") public void verify(final PicoContainer container) throws PicoCompositionException { boolean i_Instantiated = false; try { if (verifyingGuard == null) { i_Instantiated = true; verifyingGuard = new ThreadLocalCyclicDependencyGuard<T>() { @Override public T run(final Object inst) { final ParameterToAccessibleObjectPair[] currentParameters = getMatchingParameterListForMembers(guardedContainer); for (int i = 0; i < currentParameters.length; i++) { currentParameters[i].getAccessibleObjectParameters().getParams()[0].verify(container, IterativeInjector.this, injectionTypes[i], makeParameterNameImpl(currentParameters[i].getAccessibleObject()), useNames(), bindings[i]); } return null; } }; } verifyingGuard.setGuardedContainer(container); verifyingGuard.observe(getComponentImplementation(), null); } finally { if (i_Instantiated) { verifyingGuard.remove(); verifyingGuard = null; } } }
@Override @SuppressWarnings("unchecked") public void verify(final PicoContainer container) throws PicoCompositionException { boolean i_Instantiated = false; try { if (verifyingGuard == null) { i_Instantiated = true; verifyingGuard = new ThreadLocalCyclicDependencyGuard<T>() { @Override public T run(final Object inst) { final ParameterToAccessibleObjectPair[] currentParameters = getMatchingParameterListForMembers(guardedContainer); for (int i = 0; i < currentParameters.length; i++) { currentParameters[i].getAccessibleObjectParameters().getParams()[0].verify(container, IterativeInjector.this, injectionTypes[i], makeParameterNameImpl(currentParameters[i].getAccessibleObject()), useNames(), bindings[i]); } return null; } }; } verifyingGuard.setGuardedContainer(container); verifyingGuard.observe(getComponentImplementation(), null); } finally { if (i_Instantiated) { verifyingGuard.remove(); verifyingGuard = null; } } }
@Override public T getComponentInstance(final PicoContainer container, final Type into) throws PicoCompositionException { final Constructor<?> constructor = getConstructor(); boolean iInstantiated = false; T result; try { if (instantiationGuard == null) { iInstantiated = true; instantiationGuard = new ThreadLocalCyclicDependencyGuard<T>() { @Override public T run(final Object instance) { final ParameterToAccessibleObjectPair[] matchingParameters = getMatchingParameterListForMembers(guardedContainer); Object componentInstance = makeInstance(container, constructor, currentMonitor()); return decorateComponentInstance(matchingParameters, currentMonitor(), componentInstance, container, guardedContainer, into, null); } }; } instantiationGuard.setGuardedContainer(container); result = instantiationGuard.observe(getComponentImplementation(), null); } finally { if (iInstantiated) { instantiationGuard.remove(); instantiationGuard = null; } } return result; }
@Override public T getComponentInstance(final PicoContainer container, final Type into) throws PicoCompositionException { final Constructor<?> constructor = getConstructor(); boolean iInstantiated = false; T result; try { if (instantiationGuard == null) { iInstantiated = true; instantiationGuard = new ThreadLocalCyclicDependencyGuard<T>() { @Override public T run(final Object instance) { final ParameterToAccessibleObjectPair[] matchingParameters = getMatchingParameterListForMembers(guardedContainer); Object componentInstance = makeInstance(container, constructor, currentMonitor()); return decorateComponentInstance(matchingParameters, currentMonitor(), componentInstance, container, guardedContainer, into, null); } }; } instantiationGuard.setGuardedContainer(container); result = instantiationGuard.observe(getComponentImplementation(), null); } finally { if (iInstantiated) { instantiationGuard.remove(); instantiationGuard = null; } } return result; }
private boolean matchParameter(final PicoContainer container, final List<Object> matchingParameterList, final AccessibleObjectParameterSet parameter) { for (int j = 0; j < injectionTypes.length; j++) { Object o = matchingParameterList.get(j); AccessibleObject targetInjectionMember = getTargetInjectionMember(injectionMembers, j, parameter.getParams()[0]); if (targetInjectionMember == null) { return false; } AccessibleObjectParameterSet paramToUse = getParameterToUseForObject(targetInjectionMember, parameter); if (paramToUse == null) { paramToUse = constructAccessibleObjectParameterSet(targetInjectionMember); } try { if (o == null && paramToUse.getParams()[0].resolve(container, this, null, injectionTypes[j], makeParameterNameImpl(targetInjectionMember), useNames(), bindings[j]).isResolved()) { matchingParameterList.set(j, new ParameterToAccessibleObjectPair(targetInjectionMember, paramToUse)); return true; } } catch (AmbiguousComponentResolutionException e) { e.setComponent(getComponentImplementation()); e.setMember(injectionMembers.get(j)); throw e; } } return false; }
private boolean matchParameter(final PicoContainer container, final List<Object> matchingParameterList, final AccessibleObjectParameterSet parameter) { for (int j = 0; j < injectionTypes.length; j++) { Object o = matchingParameterList.get(j); AccessibleObject targetInjectionMember = getTargetInjectionMember(injectionMembers, j, parameter.getParams()[0]); if (targetInjectionMember == null) { return false; } AccessibleObjectParameterSet paramToUse = getParameterToUseForObject(targetInjectionMember, parameter); if (paramToUse == null) { paramToUse = constructAccessibleObjectParameterSet(targetInjectionMember); } try { if (o == null && paramToUse.getParams()[0].resolve(container, this, null, injectionTypes[j], makeParameterNameImpl(targetInjectionMember), useNames(), bindings[j]).isResolved()) { matchingParameterList.set(j, new ParameterToAccessibleObjectPair(targetInjectionMember, paramToUse)); return true; } } catch (AmbiguousComponentResolutionException e) { e.setComponent(getComponentImplementation()); e.setMember(injectionMembers.get(j)); throw e; } } return false; }