[picocontainer-scm] [5831] java/2.x/trunk/pico/container/src/java/org/picocontainer: PICO-392 - improved ambiguous messaging

paul-yCVjj/[email protected] Thu, 18 Oct 2012 10:29:50 -0500 (CDT)
Newsgroups gmane.comp.java.picocontainer.cvs
Message-ID <[email protected]>
Revision 5831
Author paul
Date 2012-10-18 10:29:49 -0500 (Thu, 18 Oct 2012)

Log Message

PICO-392 - improved ambiguous messaging

Modified Paths

- java/2.x/trunk/pico/container/src/java/org/picocontainer/injectors/AbstractInjector.java

- java/2.x/trunk/pico/container/src/java/org/picocontainer/injectors/SingleMemberInjector.java

- java/2.x/trunk/pico/container/src/java/org/picocontainer/parameters/BasicComponentParameter.java

Diff

Modified: java/2.x/trunk/pico/container/src/java/org/picocontainer/injectors/AbstractInjector.java (5830 => 5831)

--- java/2.x/trunk/pico/container/src/java/org/picocontainer/injectors/AbstractInjector.java 2012-10-18 15:10:59 UTC (rev 5830)
+++ java/2.x/trunk/pico/container/src/java/org/picocontainer/injectors/AbstractInjector.java 2012-10-18 15:29:49 UTC (rev 5831)
@@ -373,7 +373,9 @@
}

public void setMember(AccessibleObject accessibleObject) {
- this.accessibleObject = accessibleObject;
+ if (this.accessibleObject == null) {
+ this.accessibleObject = accessibleObject;
+ }
}
}

Modified: java/2.x/trunk/pico/container/src/java/org/picocontainer/injectors/SingleMemberInjector.java (5830 => 5831)

--- java/2.x/trunk/pico/container/src/java/org/picocontainer/injectors/SingleMemberInjector.java 2012-10-18 15:10:59 UTC (rev 5830)
+++ java/2.x/trunk/pico/container/src/java/org/picocontainer/injectors/SingleMemberInjector.java 2012-10-18 15:29:49 UTC (rev 5831)
@@ -12,9 +12,6 @@
import com.thoughtworks.paranamer.AnnotationParanamer;
import com.thoughtworks.paranamer.CachingParanamer;
import com.thoughtworks.paranamer.Paranamer;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.AccessibleObject;
-import java.lang.reflect.Type;
import org.picocontainer.ComponentAdapter;
import org.picocontainer.ComponentMonitor;
import org.picocontainer.Parameter;
@@ -22,6 +19,10 @@
import org.picocontainer.PicoContainer;
import org.picocontainer.annotations.Bind;

+import java.lang.annotation.Annotation;
+import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.Type;
+
import static org.picocontainer.injectors.PrimitiveMemberChecker.isPrimitiveArgument;

/**
@@ -72,7 +73,13 @@
protected Object getParameter(PicoContainer container, AccessibleObject member, int i, Type parameterType, Annotation binding,
Parameter currentParameter, ComponentAdapter<?> injecteeAdapter) {
ParameterNameBinding expectedNameBinding = new ParameterNameBinding(getParanamer(), member, i);
- Object result = currentParameter.resolve(container, this, injecteeAdapter, parameterType, expectedNameBinding, useNames(), binding).resolveInstance();
+ Object result = null;
+ try {
+ result = currentParameter.resolve(container, this, injecteeAdapter, parameterType, expectedNameBinding, useNames(), binding).resolveInstance();
+ } catch (AmbiguousComponentResolutionException e) {
+ e.setMember(member);
+ throw e;
+ }
nullCheck(member, i, expectedNameBinding, result);
return result;
}

Modified: java/2.x/trunk/pico/container/src/java/org/picocontainer/parameters/BasicComponentParameter.java (5830 => 5831)

--- java/2.x/trunk/pico/container/src/java/org/picocontainer/parameters/BasicComponentParameter.java 2012-10-18 15:10:59 UTC (rev 5830)
+++ java/2.x/trunk/pico/container/src/java/org/picocontainer/parameters/BasicComponentParameter.java 2012-10-18 15:29:49 UTC (rev 5831)
@@ -22,6 +22,7 @@
import org.picocontainer.adapters.InstanceAdapter;
import org.picocontainer.injectors.AbstractInjector;
import org.picocontainer.injectors.InjectInto;
+import org.picocontainer.injectors.Provider;

import java.io.Serializable;
import java.lang.annotation.Annotation;
@@ -270,7 +271,8 @@
}

public static ComponentAdapter<?> findInjectorOrInstanceAdapter(ComponentAdapter<?> f) {
- while (f instanceof Behavior || (f instanceof LifecycleStrategy && !(f instanceof InstanceAdapter))) {
+ while (f instanceof Behavior
+ || (f instanceof LifecycleStrategy && !(f instanceof InstanceAdapter) && !(f instanceof Provider))) {
f = f.getDelegate();
}
return f;

----------

To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email