You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by gn...@apache.org on 2008/10/23 19:47:26 UTC

svn commit: r707425 - in /servicemix/smx4/kernel/trunk/gshell/gshell-core: ./ src/main/java/org/apache/servicemix/kernel/gshell/core/ src/main/java/org/apache/servicemix/kernel/gshell/core/remote/ src/main/resources/META-INF/spring/ src/test/java/org/a...

Author: gnodet
Date: Thu Oct 23 10:47:25 2008
New Revision: 707425

URL: http://svn.apache.org/viewvc?rev=707425&view=rev
Log:
Support for remote shell

Added:
    servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/java/org/apache/servicemix/kernel/gshell/core/remote/
    servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/java/org/apache/servicemix/kernel/gshell/core/remote/KeystoreSSLContextFactory.java
    servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/java/org/apache/servicemix/kernel/gshell/core/remote/RshServerFactory.java
    servicemix/smx4/kernel/trunk/gshell/gshell-core/src/test/resources/org/
    servicemix/smx4/kernel/trunk/gshell/gshell-core/src/test/resources/org/apache/
    servicemix/smx4/kernel/trunk/gshell/gshell-core/src/test/resources/org/apache/servicemix/
    servicemix/smx4/kernel/trunk/gshell/gshell-core/src/test/resources/org/apache/servicemix/kernel/
    servicemix/smx4/kernel/trunk/gshell/gshell-core/src/test/resources/org/apache/servicemix/kernel/gshell/
    servicemix/smx4/kernel/trunk/gshell/gshell-core/src/test/resources/org/apache/servicemix/kernel/gshell/core/
    servicemix/smx4/kernel/trunk/gshell/gshell-core/src/test/resources/org/apache/servicemix/kernel/gshell/core/gshell-test.xml
Modified:
    servicemix/smx4/kernel/trunk/gshell/gshell-core/pom.xml
    servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/java/org/apache/servicemix/kernel/gshell/core/ApplicationManagerImpl.java
    servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/resources/META-INF/spring/gshell-commands.xml
    servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/resources/META-INF/spring/gshell-osgi.xml
    servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/resources/META-INF/spring/gshell-remote.xml
    servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/resources/META-INF/spring/gshell.xml
    servicemix/smx4/kernel/trunk/gshell/gshell-core/src/test/java/org/apache/servicemix/kernel/gshell/core/Test.java

Modified: servicemix/smx4/kernel/trunk/gshell/gshell-core/pom.xml
URL: http://svn.apache.org/viewvc/servicemix/smx4/kernel/trunk/gshell/gshell-core/pom.xml?rev=707425&r1=707424&r2=707425&view=diff
==============================================================================
--- servicemix/smx4/kernel/trunk/gshell/gshell-core/pom.xml (original)
+++ servicemix/smx4/kernel/trunk/gshell/gshell-core/pom.xml Thu Oct 23 10:47:25 2008
@@ -89,6 +89,11 @@
             <version>${gshell.version}</version>
         </dependency>
         <dependency>
+            <groupId>org.apache.geronimo.gshell.commands</groupId>
+            <artifactId>gshell-remote</artifactId>
+            <version>${gshell.version}</version>
+        </dependency>
+        <dependency>
             <groupId>org.apache.geronimo.gshell.wisdom</groupId>
             <artifactId>gshell-wisdom-core</artifactId>
             <version>${gshell.version}</version>

Modified: servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/java/org/apache/servicemix/kernel/gshell/core/ApplicationManagerImpl.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/java/org/apache/servicemix/kernel/gshell/core/ApplicationManagerImpl.java?rev=707425&r1=707424&r2=707425&view=diff
==============================================================================
--- servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/java/org/apache/servicemix/kernel/gshell/core/ApplicationManagerImpl.java (original)
+++ servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/java/org/apache/servicemix/kernel/gshell/core/ApplicationManagerImpl.java Thu Oct 23 10:47:25 2008
@@ -55,6 +55,14 @@
 
     private boolean createLocalShell = true;
 
+    public boolean isCreateLocalShell() {
+        return createLocalShell;
+    }
+
+    public void setCreateLocalShell(boolean createLocalShell) {
+        this.createLocalShell = createLocalShell;
+    }
+
     @PostConstruct
     public void init() throws Exception {
         if (!SystemOutputHijacker.isInstalled()) {
@@ -93,7 +101,7 @@
     }
 
     public Shell create() throws Exception {
-        final Shell shell = (Shell) getBean(Shell.class);
+        final Shell shell = (Shell) applicationContext.getBean("shell");
 
         log.debug("Created shell instance: {}", shell);
 
@@ -144,30 +152,4 @@
         return proxy;
     }
 
-    public <T> T getBean(Class<T> type) {
-        assert type != null;
-
-        log.trace("Getting bean of type: {}", type);
-
-        String[] names = applicationContext.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);
-    }
-
-    public <T> T getBean(String name, Class<T> requiredType) {
-        assert name != null;
-        assert requiredType != null;
-
-        log.trace("Getting bean named '{}' of type: {}", name, requiredType);
-
-        return (T) applicationContext.getBean(name, requiredType);
-    }
-
 }

Added: servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/java/org/apache/servicemix/kernel/gshell/core/remote/KeystoreSSLContextFactory.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/java/org/apache/servicemix/kernel/gshell/core/remote/KeystoreSSLContextFactory.java?rev=707425&view=auto
==============================================================================
--- servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/java/org/apache/servicemix/kernel/gshell/core/remote/KeystoreSSLContextFactory.java (added)
+++ servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/java/org/apache/servicemix/kernel/gshell/core/remote/KeystoreSSLContextFactory.java Thu Oct 23 10:47:25 2008
@@ -0,0 +1,140 @@
+package org.apache.servicemix.kernel.gshell.core.remote;
+
+import java.security.GeneralSecurityException;
+
+import javax.net.ssl.SSLContext;
+
+import org.apache.geronimo.gshell.whisper.ssl.SSLContextFactory;
+import org.apache.servicemix.kernel.jaas.config.KeystoreManager;
+
+public class KeystoreSSLContextFactory implements SSLContextFactory {
+
+    private KeystoreManager keystoreManager;
+    private String clientProvider;
+    private String clientProtocol = "TLS";
+    private String clientAlgorithm = "SunX509";
+    private String clientKeystore;
+    private String clientKeyAlias;
+    private String clientTruststore;
+    private String serverProvider;
+    private String serverProtocol = "TLS";
+    private String serverAlgorithm = "SunX509";
+    private String serverKeystore;
+    private String serverKeyAlias;
+    private String serverTruststore;
+
+    public KeystoreManager getKeystoreManager() {
+        return keystoreManager;
+    }
+
+    public void setKeystoreManager(KeystoreManager keystoreManager) {
+        this.keystoreManager = keystoreManager;
+    }
+
+    public String getClientProvider() {
+        return clientProvider;
+    }
+
+    public void setClientProvider(String clientProvider) {
+        this.clientProvider = clientProvider;
+    }
+
+    public String getClientProtocol() {
+        return clientProtocol;
+    }
+
+    public void setClientProtocol(String clientProtocol) {
+        this.clientProtocol = clientProtocol;
+    }
+
+    public String getClientAlgorithm() {
+        return clientAlgorithm;
+    }
+
+    public void setClientAlgorithm(String clientAlgorithm) {
+        this.clientAlgorithm = clientAlgorithm;
+    }
+
+    public String getClientKeystore() {
+        return clientKeystore;
+    }
+
+    public void setClientKeystore(String clientKeystore) {
+        this.clientKeystore = clientKeystore;
+    }
+
+    public String getClientKeyAlias() {
+        return clientKeyAlias;
+    }
+
+    public void setClientKeyAlias(String clientKeyAlias) {
+        this.clientKeyAlias = clientKeyAlias;
+    }
+
+    public String getClientTruststore() {
+        return clientTruststore;
+    }
+
+    public void setClientTruststore(String clientTruststore) {
+        this.clientTruststore = clientTruststore;
+    }
+
+    public String getServerProvider() {
+        return serverProvider;
+    }
+
+    public void setServerProvider(String serverProvider) {
+        this.serverProvider = serverProvider;
+    }
+
+    public String getServerProtocol() {
+        return serverProtocol;
+    }
+
+    public void setServerProtocol(String serverProtocol) {
+        this.serverProtocol = serverProtocol;
+    }
+
+    public String getServerAlgorithm() {
+        return serverAlgorithm;
+    }
+
+    public void setServerAlgorithm(String serverAlgorithm) {
+        this.serverAlgorithm = serverAlgorithm;
+    }
+
+    public String getServerKeystore() {
+        return serverKeystore;
+    }
+
+    public void setServerKeystore(String serverKeystore) {
+        this.serverKeystore = serverKeystore;
+    }
+
+    public String getServerKeyAlias() {
+        return serverKeyAlias;
+    }
+
+    public void setServerKeyAlias(String serverKeyAlias) {
+        this.serverKeyAlias = serverKeyAlias;
+    }
+
+    public String getServerTruststore() {
+        return serverTruststore;
+    }
+
+    public void setServerTruststore(String serverTruststore) {
+        this.serverTruststore = serverTruststore;
+    }
+
+    public SSLContext createClientContext() throws GeneralSecurityException {
+        return keystoreManager.createSSLContext(clientProvider, clientProtocol, clientAlgorithm,
+                                                clientKeystore, clientKeyAlias, clientTruststore);
+    }
+
+    public SSLContext createServerContext() throws GeneralSecurityException {
+        return keystoreManager.createSSLContext(serverProvider, serverProtocol, serverAlgorithm,
+                                                serverKeystore, serverKeyAlias, serverTruststore);
+    }
+
+}

Added: servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/java/org/apache/servicemix/kernel/gshell/core/remote/RshServerFactory.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/java/org/apache/servicemix/kernel/gshell/core/remote/RshServerFactory.java?rev=707425&view=auto
==============================================================================
--- servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/java/org/apache/servicemix/kernel/gshell/core/remote/RshServerFactory.java (added)
+++ servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/java/org/apache/servicemix/kernel/gshell/core/remote/RshServerFactory.java Thu Oct 23 10:47:25 2008
@@ -0,0 +1,55 @@
+package org.apache.servicemix.kernel.gshell.core.remote;
+
+import java.net.URI;
+
+import javax.annotation.PostConstruct;
+import javax.annotation.PreDestroy;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.apache.geronimo.gshell.remote.server.RshServer;
+
+public class RshServerFactory {
+
+    @Autowired
+    private RshServer server;
+
+    private String location;
+
+    private boolean start;
+
+    public String getLocation() {
+        return location;
+    }
+
+    public void setLocation(String location) {
+        this.location = location;
+    }
+
+    public boolean isStart() {
+        return start;
+    }
+
+    public void setStart(boolean start) {
+        this.start = start;
+    }
+
+    @PostConstruct
+    public void start() throws Exception {
+        if (start) {
+            try {
+                server.bind(URI.create(location));
+            } catch (Exception e) {
+                e.printStackTrace();
+                throw e;
+            }
+        }
+    }
+
+    @PreDestroy
+    public void stop() throws Exception {
+        if (start) {
+            server.close();
+        }
+    }
+
+}

Modified: servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/resources/META-INF/spring/gshell-commands.xml
URL: http://svn.apache.org/viewvc/servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/resources/META-INF/spring/gshell-commands.xml?rev=707425&r1=707424&r2=707425&view=diff
==============================================================================
--- servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/resources/META-INF/spring/gshell-commands.xml (original)
+++ servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/resources/META-INF/spring/gshell-commands.xml Thu Oct 23 10:47:25 2008
@@ -112,6 +112,18 @@
         </gshell:command>
     </gshell:command-bundle>
 
+    <gshell:command-bundle>
+        <gshell:command name="remote/rsh">
+            <gshell:action class="org.apache.geronimo.gshell.commands.remote.RshAction"/>
+        </gshell:command>
+
+        <gshell:command name="remote/rsh-server">
+            <gshell:action class="org.apache.geronimo.gshell.commands.remote.RshServerAction"/>
+        </gshell:command>
+
+        <gshell:link name="remote/rshd" target="remote/rsh-server"/>
+    </gshell:command-bundle>
+
     <!--
     <bean id="clear" class="org.apache.geronimo.gshell.commands.builtins.ClearCommand">
         <constructor-arg ref="terminal" />

Modified: servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/resources/META-INF/spring/gshell-osgi.xml
URL: http://svn.apache.org/viewvc/servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/resources/META-INF/spring/gshell-osgi.xml?rev=707425&r1=707424&r2=707425&view=diff
==============================================================================
--- servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/resources/META-INF/spring/gshell-osgi.xml (original)
+++ servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/resources/META-INF/spring/gshell-osgi.xml Thu Oct 23 10:47:25 2008
@@ -41,6 +41,7 @@
     <!--
     <osgi:service ref="commandExecutor" interface="org.apache.geronimo.gshell.command.CommandExecutor">
     </osgi:service>
+    -->
 
     <osgix:property-placeholder persistent-id="org.apache.servicemix.shell">
         <osgix:default-properties>
@@ -55,6 +56,5 @@
             <prop key="serverTruststore">RshTruststore</prop>
         </osgix:default-properties>
     </osgix:property-placeholder>
-    -->
     
 </beans>
\ No newline at end of file

Modified: servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/resources/META-INF/spring/gshell-remote.xml
URL: http://svn.apache.org/viewvc/servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/resources/META-INF/spring/gshell-remote.xml?rev=707425&r1=707424&r2=707425&view=diff
==============================================================================
--- servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/resources/META-INF/spring/gshell-remote.xml (original)
+++ servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/resources/META-INF/spring/gshell-remote.xml Thu Oct 23 10:47:25 2008
@@ -32,6 +32,100 @@
   http://servicemix.apache.org/jaas
   http://servicemix.apache.org/schema/servicemix-jaas.xsd">
 
+    <bean id="timeoutManager" class="org.apache.geronimo.gshell.remote.server.timeout.TimeoutManagerImpl" lazy-init="true"/>
+
+    <bean id="rshServer" class="org.apache.geronimo.gshell.remote.server.RshServer" scope="prototype">
+        <constructor-arg>
+            <list>
+                <bean class="org.apache.geronimo.gshell.remote.server.handler.ConnectHandler"/>
+                <bean class="org.apache.geronimo.gshell.remote.server.handler.LoginHandler"/>
+                <bean class="org.apache.geronimo.gshell.remote.server.handler.OpenShellHandler"/>
+                <bean class="org.apache.geronimo.gshell.remote.server.handler.ExecuteHandler"/>
+                <bean class="org.apache.geronimo.gshell.remote.server.handler.CloseShellHandler"/>
+                <bean class="org.apache.geronimo.gshell.remote.server.handler.EchoHandler"/>
+            </list>
+        </constructor-arg>
+    </bean>
+
+    <bean id="remoteShell" class="org.apache.geronimo.gshell.remote.server.RemoteShellImpl" scope="prototype"/>
+
+    <bean class="org.apache.geronimo.gshell.remote.client.RshClient" scope="prototype">
+        <constructor-arg>
+            <list>
+                <bean class="org.apache.geronimo.gshell.remote.client.handler.EchoHandler"/>
+            </list>
+        </constructor-arg>
+    </bean>
+
+    <bean id="transportFactoryLocator" class="org.apache.geronimo.gshell.whisper.transport.TransportFactoryLocatorImpl" lazy-init="true">
+        <property name="factories">
+            <set>
+                <ref bean="vmTransportFactory"/>
+                <ref bean="tcpTransportFactory"/>
+                <ref bean="sslTransportFactory"/>
+            </set>
+        </property>
+    </bean>
+
+    <!-- vm:// -->
+
+    <bean id="vmTransportFactory" class="org.apache.geronimo.gshell.whisper.transport.vm.VmTransportFactory" lazy-init="true"/>
+
+    <bean id="vmTransport" class="org.apache.geronimo.gshell.whisper.transport.vm.VmTransport" scope="prototype"/>
+
+    <bean id="vmTransportServer" class="org.apache.geronimo.gshell.whisper.transport.vm.VmTransportServer" scope="prototype"/>
+
+    <!-- tcp:// -->
+
+    <bean id="tcpTransportFactory" class="org.apache.geronimo.gshell.whisper.transport.tcp.TcpTransportFactory" lazy-init="true"/>
+
+    <bean id="tcpTransport" class="org.apache.geronimo.gshell.whisper.transport.tcp.TcpTransport" scope="prototype"/>
+
+    <bean id="tcpTransportServer" class="org.apache.geronimo.gshell.whisper.transport.tcp.TcpTransportServer" scope="prototype"/>
+
+    <!-- ssl:// -->
+
+    <bean id="sslTransportFactory" class="org.apache.geronimo.gshell.whisper.transport.ssl.SslTransportFactory" lazy-init="true"/>
+
+    <bean id="sslContextFactory" class="org.apache.servicemix.kernel.gshell.core.remote.KeystoreSSLContextFactory" lazy-init="true">
+        <property name="keystoreManager" ref="keystoreManager" />
+        <property name="clientKeystore" value="${clientKeystore}" />
+        <property name="clientKeyAlias" value="${clientKeyAlias}" />
+        <property name="clientTruststore" value="${clientTruststore}" />
+        <property name="serverKeystore" value="${serverKeystore}" />
+        <property name="serverKeyAlias" value="${serverKeyAlias}" />
+        <property name="serverTruststore" value="${serverTruststore}" />
+     </bean>
+
+    <bean id="sslTransport" class="org.apache.geronimo.gshell.whisper.transport.ssl.SslTransport" scope="prototype">
+        <property name="sslContextFactory" ref="sslContextFactory"/>
+    </bean>
+
+    <bean id="sslTransportServer" class="org.apache.geronimo.gshell.whisper.transport.ssl.SslTransportServer" scope="prototype">
+        <property name="sslContextFactory" ref="sslContextFactory"/>
+    </bean>
+
+
+    <bean id="rshServerFactory" class="org.apache.servicemix.kernel.gshell.core.remote.RshServerFactory">
+        <property name="location" value="${remoteShellLocation}" />
+        <property name="start" value="${startRemoteShell}" />
+    </bean>
+
+    <osgi:reference id="keystoreManager" interface="org.apache.servicemix.kernel.jaas.config.KeystoreManager" cardinality="1..1" />
+
+    <jaas:config id="RshClient">
+        <jaas:module className="org.apache.geronimo.gshell.remote.client.auth.RemoteLoginModule" flags="required" />
+    </jaas:config>
+
+    <jaas:config id="RshServer" rank="-1">
+        <jaas:module className="org.apache.geronimo.gshell.remote.server.auth.BogusLoginModule" flags="required" />
+    </jaas:config>
+
+    <bean id="cryptoContext" class="org.apache.geronimo.gshell.security.crypto.CryptoContextImpl" lazy-init="true">
+        <property name="transformation" value="RSA"/>
+        <property name="provider" value="default"/>
+    </bean>
+
     <!--
     <bean id="rshServer" class="org.apache.geronimo.gshell.remote.server.RshServer" destroy-method="close">
         <constructor-arg ref="timeoutManager" />

Modified: servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/resources/META-INF/spring/gshell.xml
URL: http://svn.apache.org/viewvc/servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/resources/META-INF/spring/gshell.xml?rev=707425&r1=707424&r2=707425&view=diff
==============================================================================
--- servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/resources/META-INF/spring/gshell.xml (original)
+++ servicemix/smx4/kernel/trunk/gshell/gshell-core/src/main/resources/META-INF/spring/gshell.xml Thu Oct 23 10:47:25 2008
@@ -100,6 +100,8 @@
 
     <bean id="metaDataRegistry" class="org.apache.geronimo.gshell.vfs.provider.meta.data.MetaDataRegistryImpl"/>
 
-    <bean id="applicationManager" class="org.apache.servicemix.kernel.gshell.core.ApplicationManagerImpl"/>
+    <bean id="applicationManager" class="org.apache.servicemix.kernel.gshell.core.ApplicationManagerImpl">
+        <property name="createLocalShell" value="${startLocalConsole}" />
+    </bean>
 
 </beans>
\ No newline at end of file

Modified: servicemix/smx4/kernel/trunk/gshell/gshell-core/src/test/java/org/apache/servicemix/kernel/gshell/core/Test.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/kernel/trunk/gshell/gshell-core/src/test/java/org/apache/servicemix/kernel/gshell/core/Test.java?rev=707425&r1=707424&r2=707425&view=diff
==============================================================================
--- servicemix/smx4/kernel/trunk/gshell/gshell-core/src/test/java/org/apache/servicemix/kernel/gshell/core/Test.java (original)
+++ servicemix/smx4/kernel/trunk/gshell/gshell-core/src/test/java/org/apache/servicemix/kernel/gshell/core/Test.java Thu Oct 23 10:47:25 2008
@@ -9,10 +9,14 @@
 public class Test extends TestCase {
 
     public void test() throws Exception {
+
+        System.setProperty("startLocalConsole", "true");
+
         ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
                 new String[] { "META-INF/spring/gshell.xml",
                                "META-INF/spring/gshell-vfs.xml",
-                               "META-INF/spring/gshell-commands.xml" });
+                               "META-INF/spring/gshell-commands.xml",
+                               "org/apache/servicemix/kernel/gshell/core/gshell-test.xml" });
         ApplicationManager appMgr = (ApplicationManager) context.getBean("applicationManager");
         assertNotNull(appMgr);
         Shell shell = appMgr.create();

Added: servicemix/smx4/kernel/trunk/gshell/gshell-core/src/test/resources/org/apache/servicemix/kernel/gshell/core/gshell-test.xml
URL: http://svn.apache.org/viewvc/servicemix/smx4/kernel/trunk/gshell/gshell-core/src/test/resources/org/apache/servicemix/kernel/gshell/core/gshell-test.xml?rev=707425&view=auto
==============================================================================
--- servicemix/smx4/kernel/trunk/gshell/gshell-core/src/test/resources/org/apache/servicemix/kernel/gshell/core/gshell-test.xml (added)
+++ servicemix/smx4/kernel/trunk/gshell/gshell-core/src/test/resources/org/apache/servicemix/kernel/gshell/core/gshell-test.xml Thu Oct 23 10:47:25 2008
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xmlns:util="http://www.springframework.org/schema/util"
+       xmlns:gshell="http://servicemix.apache.org/schema/servicemix-gshell"
+       xsi:schemaLocation="
+  http://www.springframework.org/schema/beans
+  http://www.springframework.org/schema/beans/spring-beans.xsd
+  http://www.springframework.org/schema/util
+  http://www.springframework.org/schema/util/spring-util.xsd
+  http://servicemix.apache.org/schema/servicemix-gshell
+  http://servicemix.apache.org/schema/servicemix-gshell/servicemix-gshell.xsd">
+
+    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer" />
+
+</beans>
\ No newline at end of file