[picocontainer-scm] [5735] java/2.x/trunk/pico/container/src/java/org/picocontainer: work on PICO-373 as per Mark Sinke's suggestions

paul-yCVjj/[email protected] Sat, 28 Aug 2010 15:08:48 -0500 (CDT)
Newsgroups gmane.comp.java.picocontainer.cvs
Message-ID <[email protected]>
Revision 5735
Author paul
Date 2010-08-28 15:08:48 -0500 (Sat, 28 Aug 2010)

Log Message

work on PICO-373 as per Mark Sinke's suggestions

Modified Paths

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

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

Diff

Modified: java/2.x/trunk/pico/container/src/java/org/picocontainer/DefaultPicoContainer.java (5734 => 5735)

--- java/2.x/trunk/pico/container/src/java/org/picocontainer/DefaultPicoContainer.java 2010-07-12 03:06:20 UTC (rev 5734)
+++ java/2.x/trunk/pico/container/src/java/org/picocontainer/DefaultPicoContainer.java 2010-08-28 20:08:48 UTC (rev 5735)
@@ -133,7 +133,7 @@
protected final List<ComponentAdapter<?>> orderedComponentAdapters = new ArrayList<ComponentAdapter<?>>();

- private transient IntoThreadLocal intoThreadLocal = new IntoThreadLocal();
+ private transient IntoThreadLocal intoThreadLocal;
private Converters converters;

@@ -627,7 +627,11 @@
}
}
intoThreadLocal.set(into);
- return getComponent(componentKeyOrType, (Class<? extends Annotation>) null);
+ try {
+ return getComponent(componentKeyOrType, (Class<? extends Annotation>) null);
+ } finally {
+ intoThreadLocal.set(null);
+ }
}

public Object getComponent(final Object componentKeyOrType, final Class<? extends Annotation> annotation) {
@@ -682,14 +686,9 @@
Object instance;
try {
if (componentAdapter instanceof FactoryInjector) {
- instance = ((FactoryInjector) componentAdapter).getComponentInstance(this, intoThreadLocal.get());
+ instance = ((FactoryInjector) componentAdapter).getComponentInstance(this, getInto());
} else {
- synchronized (this) {
- if (intoThreadLocal == null) {
- intoThreadLocal = new IntoThreadLocal();
- }
- }
- instance = componentAdapter.getComponentInstance(this, intoThreadLocal.get());
+ instance = componentAdapter.getComponentInstance(this, getInto());
}
} catch (AbstractInjector.CyclicDependencyException e) {
if (parent != null) {
@@ -710,7 +709,14 @@
return null;
}

+ private Type getInto() {
+ if (intoThreadLocal == null) {
+ return null;
+ }
+ return intoThreadLocal.get();
+ }

+
/** {@inheritDoc} **/
public PicoContainer getParent() {
return parent;

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

--- java/2.x/trunk/pico/container/src/java/org/picocontainer/injectors/AbstractInjector.java 2010-07-12 03:06:20 UTC (rev 5734)
+++ java/2.x/trunk/pico/container/src/java/org/picocontainer/injectors/AbstractInjector.java 2010-08-28 20:08:48 UTC (rev 5735)
@@ -9,19 +9,8 @@
*****************************************************************************/
package org.picocontainer.injectors;

-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Member;
-import java.lang.reflect.Modifier;
-import java.lang.reflect.Type;
-import java.util.Arrays;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-
import org.picocontainer.ComponentAdapter;
import org.picocontainer.ComponentMonitor;
-import org.picocontainer.LifecycleStrategy;
import org.picocontainer.ObjectReference;
import org.picocontainer.Parameter;
import org.picocontainer.PicoCompositionException;
@@ -30,6 +19,16 @@
import org.picocontainer.adapters.AbstractAdapter;
import org.picocontainer.parameters.ComponentParameter;

+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Member;
+import java.lang.reflect.Modifier;
+import java.lang.reflect.Type;
+import java.util.Arrays;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+
/**
* This ComponentAdapter will instantiate a new object for each call to
* {@link org.picocontainer.ComponentAdapter#getComponentInstance(PicoContainer, Type)}.
@@ -242,11 +241,6 @@

protected PicoContainer guardedContainer;

- @Override
- protected Boolean initialValue() {
- return Boolean.FALSE;
- }
-
/**
* Derive from this class and implement this function with the functionality
* to observe for a dependency cycle.
@@ -276,7 +270,7 @@
e.push(stackFrame);
throw e;
} finally {
- set(Boolean.FALSE);
+ set(null);
}
return result;
}

----------

To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email