[picocontainer-scm] [5720] java/2.x/trunk/pico/container/src/test/org/picocontainer/injectors: PICO-371 fix; reported by Ronald Blaschke

paul-yCVjj/[email protected] Wed, 30 Jun 2010 00:52:22 -0500 (CDT)
Newsgroups gmane.comp.java.picocontainer.cvs
Message-ID <[email protected]>
Revision 5720
Author paul
Date 2010-06-30 00:52:21 -0500 (Wed, 30 Jun 2010)

Log Message

PICO-371 fix; reported by Ronald Blaschke

Modified Paths

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

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

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

Diff

Modified: java/2.x/trunk/pico/container/src/java/org/picocontainer/injectors/AbstractInjectionFactory.java (5719 => 5720)

--- java/2.x/trunk/pico/container/src/java/org/picocontainer/injectors/AbstractInjectionFactory.java 2010-06-27 21:39:45 UTC (rev 5719)
+++ java/2.x/trunk/pico/container/src/java/org/picocontainer/injectors/AbstractInjectionFactory.java 2010-06-30 05:52:21 UTC (rev 5720)
@@ -31,45 +31,45 @@
}
}

- private static class LifecycleAdapter implements ComponentAdapter, LifecycleStrategy, ComponentMonitorStrategy, Serializable {
- private final Injector injector;
+ private static class LifecycleAdapter implements Injector, LifecycleStrategy, ComponentMonitorStrategy, Serializable {
+ private final Injector delegate;
private final LifecycleStrategy lifecycleStrategy;

- public LifecycleAdapter(Injector injector, LifecycleStrategy lifecycleStrategy) {
- this.injector = injector;
+ public LifecycleAdapter(Injector delegate, LifecycleStrategy lifecycleStrategy) {
+ this.delegate = delegate;
this.lifecycleStrategy = lifecycleStrategy;
}

public Object getComponentKey() {
- return injector.getComponentKey();
+ return delegate.getComponentKey();
}

public Class getComponentImplementation() {
- return injector.getComponentImplementation();
+ return delegate.getComponentImplementation();
}

public Object getComponentInstance(PicoContainer container) throws PicoCompositionException {
- return injector.getComponentInstance(container);
+ return delegate.getComponentInstance(container);
}

public Object getComponentInstance(PicoContainer container, Type into) throws PicoCompositionException {
- return injector.getComponentInstance(container, into);
+ return delegate.getComponentInstance(container, into);
}

public void verify(PicoContainer container) throws PicoCompositionException {
- injector.verify(container);
+ delegate.verify(container);
}

public void accept(PicoVisitor visitor) {
- injector.accept(visitor);
+ delegate.accept(visitor);
}

public ComponentAdapter getDelegate() {
- return injector;
+ return delegate;
}

public ComponentAdapter findAdapterOfType(Class adapterType) {
- return injector.findAdapterOfType(adapterType);
+ return delegate.findAdapterOfType(adapterType);
}

public String getDescriptor() {
@@ -77,7 +77,7 @@
}

public String toString() {
- return getDescriptor() + ":" + injector.toString();
+ return getDescriptor() + ":" + delegate.toString();
}

public void start(Object component) {
@@ -101,16 +101,20 @@
}

public void changeMonitor(ComponentMonitor monitor) {
- if (injector instanceof ComponentMonitorStrategy) {
- ((ComponentMonitorStrategy) injector).changeMonitor(monitor);
+ if (delegate instanceof ComponentMonitorStrategy) {
+ ((ComponentMonitorStrategy) delegate).changeMonitor(monitor);
}
}

public ComponentMonitor currentMonitor() {
- if (injector instanceof ComponentMonitorStrategy) {
- return ((ComponentMonitorStrategy) injector).currentMonitor();
+ if (delegate instanceof ComponentMonitorStrategy) {
+ return ((ComponentMonitorStrategy) delegate).currentMonitor();
}
return null;
}
+
+ public Object decorateComponentInstance(PicoContainer container, Type into, Object instance) {
+ return delegate.decorateComponentInstance(container, into, instance);
+ }
}
}

Modified: java/2.x/trunk/pico/container/src/java/org/picocontainer/injectors/CompositeInjection.java (5719 => 5720)

--- java/2.x/trunk/pico/container/src/java/org/picocontainer/injectors/CompositeInjection.java 2010-06-27 21:39:45 UTC (rev 5719)
+++ java/2.x/trunk/pico/container/src/java/org/picocontainer/injectors/CompositeInjection.java 2010-06-30 05:52:21 UTC (rev 5720)
@@ -8,8 +8,6 @@
*****************************************************************************/
package org.picocontainer.injectors;

-import java.util.Properties;
-
import org.picocontainer.Characteristics;
import org.picocontainer.ComponentAdapter;
import org.picocontainer.ComponentMonitor;
@@ -20,6 +18,8 @@
import org.picocontainer.PicoCompositionException;
import org.picocontainer.behaviors.AbstractBehaviorFactory;

+import java.util.Properties;
+
/**
* A Composite of other types on InjectionFactories - pass them into the varargs constructor.
*
@@ -45,8 +45,9 @@

for (int i = 0; i < injectionFactories.length; i++) {
InjectionFactory injectionFactory = injectionFactories[i];
- injectors[i] = (Injector) injectionFactory.createComponentAdapter(monitor,
+ ComponentAdapter<T> adapter = injectionFactory.createComponentAdapter(monitor,
lifecycleStrategy, componentProperties, componentKey, componentImplementation, parameters);
+ injectors[i] = (Injector) adapter;
}

boolean useNames = AbstractBehaviorFactory.arePropertiesPresent(componentProperties, Characteristics.USE_NAMES, true);

Modified: java/2.x/trunk/pico/container/src/test/org/picocontainer/injectors/CompositeInjectionTestCase.java (5719 => 5720)

--- java/2.x/trunk/pico/container/src/test/org/picocontainer/injectors/CompositeInjectionTestCase.java 2010-06-27 21:39:45 UTC (rev 5719)
+++ java/2.x/trunk/pico/container/src/test/org/picocontainer/injectors/CompositeInjectionTestCase.java 2010-06-30 05:52:21 UTC (rev 5720)
@@ -12,10 +12,12 @@
import static org.junit.Assert.assertEquals;

import org.junit.Test;
+import org.picocontainer.ComponentAdapter;
import org.picocontainer.DefaultPicoContainer;
import static org.picocontainer.injectors.NamedFieldInjection.injectionFieldNames;
import org.picocontainer.annotations.Inject;
import org.picocontainer.containers.EmptyPicoContainer;
+import org.picocontainer.LifecycleStrategy;
import org.picocontainer.lifecycle.NullLifecycleStrategy;

/**
@@ -131,4 +133,32 @@
assertEquals("2", foo4.two);
}

+ @Test public void testWithNonNullLifecycleStrategy() {
+ DefaultPicoContainer dpc = new DefaultPicoContainer(
+ new CompositeInjection(new ConstructorInjection(), new AnnotatedMethodInjection()),
+ new NonNullLifecycleStrategy(),
+ new EmptyPicoContainer()
+ );
+ dpc.addComponent(Bar.class);
+ assertNotNull(dpc.getComponent(Bar.class));
+ }
+
+ private static class NonNullLifecycleStrategy implements LifecycleStrategy {
+ public void start(Object component) {
+ }
+
+ public void stop(Object component) {
+ }
+
+ public void dispose(Object component) {
+ }
+
+ public boolean hasLifecycle(Class<?> type) {
+ return false;
+ }
+
+ public boolean isLazy(ComponentAdapter<?> adapter) {
+ return false;
+ }
+ }
}
\ No newline at end of file

----------

To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email