[picocontainer-scm] [scm-git][5] sync with pico 2 5795 threading issue bug.
Michael Rimov <git-yCVjj/[email protected]> Fri, 29 Jun 2012 12:26:13 -0500 (CDT)
| Newsgroups | gmane.comp.java.picocontainer.cvs |
|---|---|
| Message-ID | <[email protected]> |
commit eddc401ac5cdf484cd6bd391987fe651b0cf17a5 Author: Michael Rimov <[email protected]> AuthorDate: Mon Jun 25 06:29:25 2012 -0700 Commit: Michael Rimov <[email protected]> CommitDate: Mon Jun 25 06:29:25 2012 -0700 sync with pico 2 5795 threading issue bug. diff --git a/pico/container/src/java/org/picocontainer/injectors/IterativeInjector.java b/pico/container/src/java/org/picocontainer/injectors/IterativeInjector.java index 0ed57a1..6e3e5d5 100644 --- a/pico/container/src/java/org/picocontainer/injectors/IterativeInjector.java +++ b/pico/container/src/java/org/picocontainer/injectors/IterativeInjector.java @@ -35,7 +35,7 @@ public abstract class IterativeInjector<T> extends AbstractInjector<T> { private static final Object[] NONE = new Object[0]; private transient ThreadLocalCyclicDependencyGuard instantiationGuard; - protected transient List<AccessibleObject> injectionMembers; + protected volatile transient List<AccessibleObject> injectionMembers; protected transient Type[] injectionTypes; protected transient Annotation[] bindings; @@ -79,8 +79,12 @@ public abstract class IterativeInjector<T> extends AbstractInjector<T> { private Parameter[] getMatchingParameterListForSetters(PicoContainer container) throws PicoCompositionException { if (injectionMembers == null) { + synchronized(this) { + if (injectionMembers == null) { initializeInjectionMembersAndTypeLists(); } + } + } final List<Object> matchingParameterList = new ArrayList<Object>(Collections.nCopies(injectionMembers.size(), null));