[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