You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jd...@apache.org on 2008/09/20 12:42:32 UTC

svn commit: r697348 - in /geronimo/gshell/trunk: ./ gshell-assembly/src/main/underlay/etc/ gshell-remote/gshell-remote-server/src/main/java/org/apache/geronimo/gshell/remote/server/handler/ gshell-remote/gshell-remote-server/src/main/resources/META-INF...

Author: jdillon
Date: Sat Sep 20 03:42:31 2008
New Revision: 697348

URL: http://svn.apache.org/viewvc?rev=697348&view=rev
Log:
Added BeanContainerSupport to support testing
Refactored to use shared SpringTestSupport
Added more BeanContainer related logging
Changed bootstrap classworlds to use the "gshell.bootstrap" realm
Have to use a named "remoteShell" bean to propertly lookup a RemoteShell instance

Added:
    geronimo/gshell/trunk/gshell-support/gshell-spring/src/main/java/org/apache/geronimo/gshell/spring/BeanContainerSupport.java   (contents, props changed)
      - copied, changed from r697337, geronimo/gshell/trunk/gshell-support/gshell-spring/src/main/java/org/apache/geronimo/gshell/spring/BeanContainerImpl.java
Removed:
    geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/test/java/org/apache/geronimo/gshell/whisper/SpringTestSupport.java
    geronimo/gshell/trunk/gshell-support/gshell-artifact/src/test/java/org/apache/geronimo/gshell/artifact/SpringTestSupport.java
Modified:
    geronimo/gshell/trunk/gshell-assembly/src/main/underlay/etc/gsh-classworlds.conf
    geronimo/gshell/trunk/gshell-remote/gshell-remote-server/src/main/java/org/apache/geronimo/gshell/remote/server/handler/OpenShellHandler.java
    geronimo/gshell/trunk/gshell-remote/gshell-remote-server/src/main/resources/META-INF/spring/components.xml
    geronimo/gshell/trunk/gshell-remote/gshell-whisper/pom.xml
    geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/test/java/org/apache/geronimo/gshell/whisper/message/PingPongProtocolTest.java
    geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/test/java/org/apache/geronimo/gshell/whisper/transport/TransportFactoryLocatorTest.java
    geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/test/java/org/apache/geronimo/gshell/whisper/transport/vm/VmTransportFactoryTest.java
    geronimo/gshell/trunk/gshell-support/gshell-artifact/pom.xml
    geronimo/gshell/trunk/gshell-support/gshell-artifact/src/test/java/org/apache/geronimo/gshell/artifact/ArtifactManagerFactoryTest.java
    geronimo/gshell/trunk/gshell-support/gshell-spring/src/main/java/org/apache/geronimo/gshell/spring/BeanContainer.java
    geronimo/gshell/trunk/gshell-support/gshell-spring/src/main/java/org/apache/geronimo/gshell/spring/BeanContainerImpl.java
    geronimo/gshell/trunk/gshell-support/gshell-spring/src/test/java/org/apache/geronimo/gshell/spring/SpringTestSupport.java
    geronimo/gshell/trunk/pom.xml

Modified: geronimo/gshell/trunk/gshell-assembly/src/main/underlay/etc/gsh-classworlds.conf
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-assembly/src/main/underlay/etc/gsh-classworlds.conf?rev=697348&r1=697347&r2=697348&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-assembly/src/main/underlay/etc/gsh-classworlds.conf (original)
+++ geronimo/gshell/trunk/gshell-assembly/src/main/underlay/etc/gsh-classworlds.conf Sat Sep 20 03:42:31 2008
@@ -25,9 +25,9 @@
 ## FIXME: Drop this file, or hide it as a resource
 ##
 
-main is org.apache.geronimo.gshell.cli.Main from gshell
+main is org.apache.geronimo.gshell.cli.Main from gshell.bootstrap
 
-[gshell]
+[gshell.bootstrap]
     load ${gshell.home}/etc
     load ${gshell.home}/lib/*.jar
 

Modified: geronimo/gshell/trunk/gshell-remote/gshell-remote-server/src/main/java/org/apache/geronimo/gshell/remote/server/handler/OpenShellHandler.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-remote/gshell-remote-server/src/main/java/org/apache/geronimo/gshell/remote/server/handler/OpenShellHandler.java?rev=697348&r1=697347&r2=697348&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-remote/gshell-remote-server/src/main/java/org/apache/geronimo/gshell/remote/server/handler/OpenShellHandler.java (original)
+++ geronimo/gshell/trunk/gshell-remote/gshell-remote-server/src/main/java/org/apache/geronimo/gshell/remote/server/handler/OpenShellHandler.java Sat Sep 20 03:42:31 2008
@@ -65,7 +65,7 @@
         // context.variables =
         
         // Create a new shell instance
-        context.shell = context.container.getBean(RemoteShell.class);
+        context.shell = context.container.getBean("remoteShell", RemoteShell.class);
 
         //
         // TODO: Send a meaningful response

Modified: geronimo/gshell/trunk/gshell-remote/gshell-remote-server/src/main/resources/META-INF/spring/components.xml
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-remote/gshell-remote-server/src/main/resources/META-INF/spring/components.xml?rev=697348&r1=697347&r2=697348&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-remote/gshell-remote-server/src/main/resources/META-INF/spring/components.xml (original)
+++ geronimo/gshell/trunk/gshell-remote/gshell-remote-server/src/main/resources/META-INF/spring/components.xml Sat Sep 20 03:42:31 2008
@@ -72,6 +72,6 @@
         </constructor-arg>
     </bean>
 
-    <bean class="org.apache.geronimo.gshell.remote.server.RemoteShellImpl" scope="prototype"/>
+    <bean id="remoteShell" class="org.apache.geronimo.gshell.remote.server.RemoteShellImpl" scope="prototype"/>
 
 </beans>
\ No newline at end of file

Modified: geronimo/gshell/trunk/gshell-remote/gshell-whisper/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-remote/gshell-whisper/pom.xml?rev=697348&r1=697347&r2=697348&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-remote/gshell-whisper/pom.xml (original)
+++ geronimo/gshell/trunk/gshell-remote/gshell-whisper/pom.xml Sat Sep 20 03:42:31 2008
@@ -89,6 +89,13 @@
             <artifactId>spring-test</artifactId>
             <scope>test</scope>
         </dependency>
+
+        <dependency>
+            <groupId>org.apache.geronimo.gshell.support</groupId>
+            <artifactId>gshell-spring</artifactId>
+            <classifier>tests</classifier>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
 </project>

Modified: geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/test/java/org/apache/geronimo/gshell/whisper/message/PingPongProtocolTest.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/test/java/org/apache/geronimo/gshell/whisper/message/PingPongProtocolTest.java?rev=697348&r1=697347&r2=697348&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/test/java/org/apache/geronimo/gshell/whisper/message/PingPongProtocolTest.java (original)
+++ geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/test/java/org/apache/geronimo/gshell/whisper/message/PingPongProtocolTest.java Sat Sep 20 03:42:31 2008
@@ -27,7 +27,7 @@
 import org.apache.geronimo.gshell.whisper.transport.TransportFactory;
 import org.apache.geronimo.gshell.whisper.transport.TransportFactoryLocator;
 import org.apache.geronimo.gshell.whisper.transport.TransportServer;
-import org.apache.geronimo.gshell.whisper.SpringTestSupport;
+import org.apache.geronimo.gshell.spring.SpringTestSupport;
 import org.apache.mina.common.IoSession;
 import org.apache.mina.handler.demux.DemuxingIoHandler;
 import org.apache.mina.handler.demux.MessageHandler;

Modified: geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/test/java/org/apache/geronimo/gshell/whisper/transport/TransportFactoryLocatorTest.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/test/java/org/apache/geronimo/gshell/whisper/transport/TransportFactoryLocatorTest.java?rev=697348&r1=697347&r2=697348&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/test/java/org/apache/geronimo/gshell/whisper/transport/TransportFactoryLocatorTest.java (original)
+++ geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/test/java/org/apache/geronimo/gshell/whisper/transport/TransportFactoryLocatorTest.java Sat Sep 20 03:42:31 2008
@@ -24,7 +24,7 @@
 import org.apache.geronimo.gshell.whisper.transport.ssl.SslTransportFactory;
 import org.apache.geronimo.gshell.whisper.transport.tcp.TcpTransportFactory;
 import org.apache.geronimo.gshell.whisper.transport.vm.VmTransportFactory;
-import org.apache.geronimo.gshell.whisper.SpringTestSupport;
+import org.apache.geronimo.gshell.spring.SpringTestSupport;
 
 /**
  * Tests for the {@link TransportFactoryLocator} class.

Modified: geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/test/java/org/apache/geronimo/gshell/whisper/transport/vm/VmTransportFactoryTest.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/test/java/org/apache/geronimo/gshell/whisper/transport/vm/VmTransportFactoryTest.java?rev=697348&r1=697347&r2=697348&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/test/java/org/apache/geronimo/gshell/whisper/transport/vm/VmTransportFactoryTest.java (original)
+++ geronimo/gshell/trunk/gshell-remote/gshell-whisper/src/test/java/org/apache/geronimo/gshell/whisper/transport/vm/VmTransportFactoryTest.java Sat Sep 20 03:42:31 2008
@@ -24,7 +24,7 @@
 import org.apache.geronimo.gshell.whisper.transport.TransportFactory;
 import org.apache.geronimo.gshell.whisper.transport.TransportFactoryLocator;
 import org.apache.geronimo.gshell.whisper.transport.TransportServer;
-import org.apache.geronimo.gshell.whisper.SpringTestSupport;
+import org.apache.geronimo.gshell.spring.SpringTestSupport;
 import org.apache.mina.common.IoHandlerAdapter;
 
 /**

Modified: geronimo/gshell/trunk/gshell-support/gshell-artifact/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-support/gshell-artifact/pom.xml?rev=697348&r1=697347&r2=697348&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-support/gshell-artifact/pom.xml (original)
+++ geronimo/gshell/trunk/gshell-support/gshell-artifact/pom.xml Sat Sep 20 03:42:31 2008
@@ -84,6 +84,13 @@
             <artifactId>spring-test</artifactId>
             <scope>test</scope>
         </dependency>
+
+        <dependency>
+            <groupId>org.apache.geronimo.gshell.support</groupId>
+            <artifactId>gshell-spring</artifactId>
+            <classifier>tests</classifier>
+            <scope>test</scope>
+        </dependency>
     </dependencies>
 
     <build>

Modified: geronimo/gshell/trunk/gshell-support/gshell-artifact/src/test/java/org/apache/geronimo/gshell/artifact/ArtifactManagerFactoryTest.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-support/gshell-artifact/src/test/java/org/apache/geronimo/gshell/artifact/ArtifactManagerFactoryTest.java?rev=697348&r1=697347&r2=697348&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-support/gshell-artifact/src/test/java/org/apache/geronimo/gshell/artifact/ArtifactManagerFactoryTest.java (original)
+++ geronimo/gshell/trunk/gshell-support/gshell-artifact/src/test/java/org/apache/geronimo/gshell/artifact/ArtifactManagerFactoryTest.java Sat Sep 20 03:42:31 2008
@@ -19,6 +19,8 @@
 
 package org.apache.geronimo.gshell.artifact;
 
+import org.apache.geronimo.gshell.spring.SpringTestSupport;
+
 /**
  * Unit tests for the {@link ArtifactManagerFactory} class.
  *

Modified: geronimo/gshell/trunk/gshell-support/gshell-spring/src/main/java/org/apache/geronimo/gshell/spring/BeanContainer.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-support/gshell-spring/src/main/java/org/apache/geronimo/gshell/spring/BeanContainer.java?rev=697348&r1=697347&r2=697348&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-support/gshell-spring/src/main/java/org/apache/geronimo/gshell/spring/BeanContainer.java (original)
+++ geronimo/gshell/trunk/gshell-support/gshell-spring/src/main/java/org/apache/geronimo/gshell/spring/BeanContainer.java Sat Sep 20 03:42:31 2008
@@ -57,5 +57,5 @@
 
     BeanContainer createChild(String id);
 
-    // TODO: Add wire(Object obj)
+    // Object configure(Object bean);
 }

Modified: geronimo/gshell/trunk/gshell-support/gshell-spring/src/main/java/org/apache/geronimo/gshell/spring/BeanContainerImpl.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-support/gshell-spring/src/main/java/org/apache/geronimo/gshell/spring/BeanContainerImpl.java?rev=697348&r1=697347&r2=697348&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-support/gshell-spring/src/main/java/org/apache/geronimo/gshell/spring/BeanContainerImpl.java (original)
+++ geronimo/gshell/trunk/gshell-support/gshell-spring/src/main/java/org/apache/geronimo/gshell/spring/BeanContainerImpl.java Sat Sep 20 03:42:31 2008
@@ -22,15 +22,11 @@
 import org.codehaus.plexus.classworlds.ClassWorld;
 import org.codehaus.plexus.classworlds.realm.ClassRealm;
 import org.codehaus.plexus.classworlds.realm.DuplicateRealmException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
 import org.springframework.beans.FatalBeanException;
-import org.springframework.beans.factory.NoSuchBeanDefinitionException;
+import org.springframework.context.ConfigurableApplicationContext;
 
 import java.net.URL;
-import java.util.Arrays;
 import java.util.List;
-import java.util.Map;
 
 /**
  * Default {@link BeanContainer} implementation.
@@ -38,12 +34,10 @@
  * @version $Rev$ $Date$
  */
 public class BeanContainerImpl
-    implements BeanContainer
+    extends BeanContainerSupport
 {
     private static final String REALM_ID = "gshell";
 
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
     private BeanContainer parent;
 
     private BeanContainerContext context;
@@ -91,6 +85,10 @@
         context.refresh();
     }
 
+    protected ConfigurableApplicationContext getContext() {
+        return context;
+    }
+
     public BeanContainer getParent() {
         return parent;
     }
@@ -99,69 +97,19 @@
         return classRealm;
     }
 
-    public void start() {
-        log.debug("Starting");
-
-        context.start();
-    }
-
-    public void stop() {
-        log.debug("Stopping");
-
-        context.stop();
-    }
-
-    public void close() {
-        log.debug("Closing");
-        
-        context.close();
-    }
-
-    public <T> T getBean(final Class<T> type) {
-        assert type != null;
-
-        String[] names = context.getBeanNamesForType(type);
-
-        if (names.length == 0) {
-            throw new NoSuchBeanDefinitionException(type, "No bean defined for type: " + type);
-        }
-        if (names.length > 1) {
-            throw new NoSuchBeanDefinitionException(type, "No unique bean defined for type: " + type + ", found matches: " + Arrays.asList(names));
-        }
-
-        return getBean(names[0], type);
-    }
-
-    @SuppressWarnings({"unchecked"})
-    public <T> T getBean(final String name, final Class<T> requiredType) {
-        assert name != null;
-        assert requiredType != null;
-
-        return (T) context.getBean(name, requiredType);
-    }
-
-    @SuppressWarnings({"unchecked"})
-    public <T> Map<String,T> getBeans(final Class<T> type) {
-        assert type != null;
-
-        return (Map<String,T>)context.getBeansOfType(type);
-    }
-
-    public String[] getBeanNames() {
-        return context.getBeanDefinitionNames();
-    }
-
-    public String[] getBeanNames(final Class type) {
-        assert type != null;
-
-        return context.getBeanNamesForType(type);
-    }
-
     public BeanContainer createChild(final String id, final List<URL> classPath) {
         assert id != null;
         // classPath may be null
 
-        log.debug("Creating child container: {}", id);
+        if (log.isTraceEnabled()) {
+            log.trace("Creating child container: {}", id);
+            if (classPath != null) {
+                log.trace("Classpath:");
+                for (URL url : classPath) {
+                    log.trace("    {}", url);
+                }
+            }
+        }
 
         ClassRealm childRealm;
         try {
@@ -180,9 +128,13 @@
         return new BeanContainerImpl(childRealm, this);
     }
 
-    public BeanContainer createChild(final String id) {
-        assert id != null;
+    /*
+    public Object configure(final Object bean) {
+        assert bean != null;
+
+        context.getAutowireCapableBeanFactory().autowireBean(bean);
 
-        return createChild(id, null);
+        return bean;
     }
+    */
 }
\ No newline at end of file

Copied: geronimo/gshell/trunk/gshell-support/gshell-spring/src/main/java/org/apache/geronimo/gshell/spring/BeanContainerSupport.java (from r697337, geronimo/gshell/trunk/gshell-support/gshell-spring/src/main/java/org/apache/geronimo/gshell/spring/BeanContainerImpl.java)
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-support/gshell-spring/src/main/java/org/apache/geronimo/gshell/spring/BeanContainerSupport.java?p2=geronimo/gshell/trunk/gshell-support/gshell-spring/src/main/java/org/apache/geronimo/gshell/spring/BeanContainerSupport.java&p1=geronimo/gshell/trunk/gshell-support/gshell-spring/src/main/java/org/apache/geronimo/gshell/spring/BeanContainerImpl.java&r1=697337&r2=697348&rev=697348&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-support/gshell-spring/src/main/java/org/apache/geronimo/gshell/spring/BeanContainerImpl.java (original)
+++ geronimo/gshell/trunk/gshell-support/gshell-spring/src/main/java/org/apache/geronimo/gshell/spring/BeanContainerSupport.java Sat Sep 20 03:42:31 2008
@@ -19,108 +19,50 @@
 
 package org.apache.geronimo.gshell.spring;
 
-import org.codehaus.plexus.classworlds.ClassWorld;
-import org.codehaus.plexus.classworlds.realm.ClassRealm;
-import org.codehaus.plexus.classworlds.realm.DuplicateRealmException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.springframework.beans.FatalBeanException;
 import org.springframework.beans.factory.NoSuchBeanDefinitionException;
+import org.springframework.context.ConfigurableApplicationContext;
 
-import java.net.URL;
 import java.util.Arrays;
-import java.util.List;
 import java.util.Map;
 
 /**
- * Default {@link BeanContainer} implementation.
+ * Support for {@link BeanContainer} implementations.
  *
  * @version $Rev$ $Date$
  */
-public class BeanContainerImpl
+public abstract class BeanContainerSupport
     implements BeanContainer
 {
-    private static final String REALM_ID = "gshell";
+    protected final Logger log = LoggerFactory.getLogger(getClass());
 
-    private final Logger log = LoggerFactory.getLogger(getClass());
-
-    private BeanContainer parent;
-
-    private BeanContainerContext context;
-
-    private ClassRealm classRealm;
-    
-    public BeanContainerImpl(final ClassLoader classLoader) {
-        assert classLoader != null;
-
-        ClassRealm realm;
-        try {
-            realm = new ClassWorld().newRealm(REALM_ID, classLoader);
-        }
-        catch (DuplicateRealmException e) {
-            // Should never happen
-            throw new Error(e);
-        }
-
-        configureContext(realm, null);
-    }
-
-    /**
-     * Child container constructor.
-     */
-    private BeanContainerImpl(final ClassRealm classRealm, final BeanContainerImpl parent) {
-        assert parent != null;
-        assert classRealm != null;
-
-        configureContext(classRealm, parent);
-    }
-
-    private void configureContext(final ClassRealm classRealm, final BeanContainerImpl parent) {
-        assert classRealm != null;
-        // parent may be null
-
-        this.parent = parent;
-        this.classRealm = classRealm;
-
-        // Construct the container and add customizations
-        context = new BeanContainerContext(classRealm, parent != null ? parent.context : null);
-        context.registerShutdownHook();
-        context.addBeanPostProcessor(new BeanContainerAwareProcessor(this));
-
-        // Refresh to load things up
-        context.refresh();
-    }
-
-    public BeanContainer getParent() {
-        return parent;
-    }
-
-    public ClassRealm getClassRealm() {
-        return classRealm;
-    }
+    protected abstract ConfigurableApplicationContext getContext();
 
     public void start() {
-        log.debug("Starting");
+        log.trace("Starting");
 
-        context.start();
+        getContext().start();
     }
 
     public void stop() {
-        log.debug("Stopping");
+        log.trace("Stopping");
 
-        context.stop();
+        getContext().stop();
     }
 
     public void close() {
-        log.debug("Closing");
-        
-        context.close();
+        log.trace("Closing");
+
+        getContext().close();
     }
 
     public <T> T getBean(final Class<T> type) {
         assert type != null;
 
-        String[] names = context.getBeanNamesForType(type);
+        log.trace("Getting bean of type: {}", type);
+
+        String[] names = getContext().getBeanNamesForType(type);
 
         if (names.length == 0) {
             throw new NoSuchBeanDefinitionException(type, "No bean defined for type: " + type);
@@ -137,47 +79,32 @@
         assert name != null;
         assert requiredType != null;
 
-        return (T) context.getBean(name, requiredType);
+        log.trace("Getting bean named '{}' of type: {}", name, requiredType);
+
+        return (T) getContext().getBean(name, requiredType);
     }
 
     @SuppressWarnings({"unchecked"})
     public <T> Map<String,T> getBeans(final Class<T> type) {
         assert type != null;
 
-        return (Map<String,T>)context.getBeansOfType(type);
+        log.trace("Getting beans of type: {}", type);
+
+        return (Map<String,T>)getContext().getBeansOfType(type);
     }
 
     public String[] getBeanNames() {
-        return context.getBeanDefinitionNames();
+        log.trace("Getting bean names");
+
+        return getContext().getBeanDefinitionNames();
     }
 
     public String[] getBeanNames(final Class type) {
         assert type != null;
 
-        return context.getBeanNamesForType(type);
-    }
-
-    public BeanContainer createChild(final String id, final List<URL> classPath) {
-        assert id != null;
-        // classPath may be null
-
-        log.debug("Creating child container: {}", id);
-
-        ClassRealm childRealm;
-        try {
-            childRealm = classRealm.createChildRealm(id);
-        }
-        catch (DuplicateRealmException e) {
-            throw new FatalBeanException("Failed to create child container realm: " + id, e);
-        }
-
-        if (classPath != null) {
-            for (URL url : classPath) {
-                childRealm.addURL(url);
-            }
-        }
+        log.trace("Getting bean names of type: {}", type);
 
-        return new BeanContainerImpl(childRealm, this);
+        return getContext().getBeanNamesForType(type);
     }
 
     public BeanContainer createChild(final String id) {

Propchange: geronimo/gshell/trunk/gshell-support/gshell-spring/src/main/java/org/apache/geronimo/gshell/spring/BeanContainerSupport.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: geronimo/gshell/trunk/gshell-support/gshell-spring/src/main/java/org/apache/geronimo/gshell/spring/BeanContainerSupport.java
------------------------------------------------------------------------------
    svn:keywords = Date Author Id Revision HeadURL

Propchange: geronimo/gshell/trunk/gshell-support/gshell-spring/src/main/java/org/apache/geronimo/gshell/spring/BeanContainerSupport.java
------------------------------------------------------------------------------
    svn:mergeinfo = 

Propchange: geronimo/gshell/trunk/gshell-support/gshell-spring/src/main/java/org/apache/geronimo/gshell/spring/BeanContainerSupport.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: geronimo/gshell/trunk/gshell-support/gshell-spring/src/test/java/org/apache/geronimo/gshell/spring/SpringTestSupport.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-support/gshell-spring/src/test/java/org/apache/geronimo/gshell/spring/SpringTestSupport.java?rev=697348&r1=697347&r2=697348&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-support/gshell-spring/src/test/java/org/apache/geronimo/gshell/spring/SpringTestSupport.java (original)
+++ geronimo/gshell/trunk/gshell-support/gshell-spring/src/test/java/org/apache/geronimo/gshell/spring/SpringTestSupport.java Sat Sep 20 03:42:31 2008
@@ -20,6 +20,16 @@
 package org.apache.geronimo.gshell.spring;
 
 import org.springframework.test.AbstractDependencyInjectionSpringContextTests;
+import org.springframework.context.support.GenericApplicationContext;
+import org.springframework.context.ConfigurableApplicationContext;
+import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.codehaus.plexus.classworlds.realm.ClassRealm;
+
+import java.util.Map;
+import java.util.List;
+import java.net.URL;
 
 /**
  * Suport for Spring-based tests.
@@ -29,9 +39,46 @@
 public abstract class SpringTestSupport
     extends AbstractDependencyInjectionSpringContextTests
 {
+    protected final Logger log = LoggerFactory.getLogger(getClass());
+
     protected String[] getConfigLocations() {
         return new String[] {
             "classpath:" + getClass().getName().replace('.', '/') + "-context.xml"
         };
     }
+
+    private BeanContainer container;
+
+    protected void prepareApplicationContext(final GenericApplicationContext context) {
+        assert context != null;
+
+	    log.debug("Prepare applciation context");
+
+        container = new BeanContainerSupport() {
+            protected ConfigurableApplicationContext getContext() {
+                return context;
+            }
+
+            public BeanContainer getParent() {
+                return null;
+            }
+
+            public ClassRealm getClassRealm() {
+                throw new UnsupportedOperationException();
+            }
+
+            public BeanContainer createChild(final String id, final List<URL> classPath) {
+                throw new UnsupportedOperationException();
+            }
+        };
+    }
+
+    protected void customizeBeanFactory(final DefaultListableBeanFactory beanFactory) {
+        assert beanFactory != null;
+
+        log.debug("Customize bean factory");
+
+        assert container != null;
+        beanFactory.addBeanPostProcessor(new BeanContainerAwareProcessor(container));
+	}
 }
\ No newline at end of file

Modified: geronimo/gshell/trunk/pom.xml
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/pom.xml?rev=697348&r1=697347&r2=697348&view=diff
==============================================================================
--- geronimo/gshell/trunk/pom.xml (original)
+++ geronimo/gshell/trunk/pom.xml Sat Sep 20 03:42:31 2008
@@ -462,6 +462,13 @@
 
             <dependency>
                 <groupId>org.apache.geronimo.gshell.support</groupId>
+                <artifactId>gshell-spring</artifactId>
+                <classifier>tests</classifier>
+                <version>1.0-alpha-2-SNAPSHOT</version>
+            </dependency>
+
+            <dependency>
+                <groupId>org.apache.geronimo.gshell.support</groupId>
                 <artifactId>gshell-artifact</artifactId>
                 <version>1.0-alpha-2-SNAPSHOT</version>
             </dependency>