Author: gnodet
Date: Sun Sep 21 23:59:57 2008
New Revision: 697688

URL: http://svn.apache.org/viewvc?rev=697688&view=rev
Log:
SMX4KNL-36: Provide a client jar to connect to a servicemix kernel instance

Added:
    servicemix/smx4/kernel/trunk/client/   (with props)
    servicemix/smx4/kernel/trunk/client/pom.xml
    servicemix/smx4/kernel/trunk/client/src/
    servicemix/smx4/kernel/trunk/client/src/main/
    servicemix/smx4/kernel/trunk/client/src/main/java/
    servicemix/smx4/kernel/trunk/client/src/main/java/org/
    servicemix/smx4/kernel/trunk/client/src/main/java/org/apache/
    servicemix/smx4/kernel/trunk/client/src/main/java/org/apache/servicemix/
    
servicemix/smx4/kernel/trunk/client/src/main/java/org/apache/servicemix/kernel/
    
servicemix/smx4/kernel/trunk/client/src/main/java/org/apache/servicemix/kernel/client/
    
servicemix/smx4/kernel/trunk/client/src/main/java/org/apache/servicemix/kernel/client/Main.java
    servicemix/smx4/kernel/trunk/client/src/main/resources/
    servicemix/smx4/kernel/trunk/client/src/main/resources/client.login.conf
Modified:
    servicemix/smx4/kernel/trunk/assembly/pom.xml
    servicemix/smx4/kernel/trunk/pom.xml

Modified: servicemix/smx4/kernel/trunk/assembly/pom.xml
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/kernel/trunk/assembly/pom.xml?rev=697688&r1=697687&r2=697688&view=diff
==============================================================================
--- servicemix/smx4/kernel/trunk/assembly/pom.xml (original)
+++ servicemix/smx4/kernel/trunk/assembly/pom.xml Sun Sep 21 23:59:57 2008
@@ -40,6 +40,11 @@
         </dependency>
         <dependency>
             <groupId>org.apache.servicemix.kernel</groupId>
+            <artifactId>org.apache.servicemix.kernel.client</artifactId>
+            <version>${pom.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.kernel</groupId>
             <artifactId>org.apache.servicemix.kernel.filemonitor</artifactId>
             <version>${pom.version}</version>
         </dependency>
@@ -238,6 +243,13 @@
                                     <destFileName>servicemix.jar</destFileName>
                                 </artifactItem>
                                 <artifactItem>
+                                    
<groupId>org.apache.servicemix.kernel</groupId>
+                                    
<artifactId>org.apache.servicemix.kernel.client</artifactId>
+                                    <version>${pom.version}</version>
+                                    
<outputDirectory>target/dependencies</outputDirectory>
+                                    
<destFileName>servicemix-client.jar</destFileName>
+                                </artifactItem>
+                                <artifactItem>
                                     
<groupId>org.apache.servicemix.kernel.jaas</groupId>
                                     
<artifactId>org.apache.servicemix.kernel.jaas.boot</artifactId>
                                     <version>${pom.version}</version>

Propchange: servicemix/smx4/kernel/trunk/client/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Sun Sep 21 23:59:57 2008
@@ -0,0 +1,8 @@
+target
+*.iml
+*.ipr
+*.iws
+.classpath
+.project
+.settings
+eclipse-classes

Added: servicemix/smx4/kernel/trunk/client/pom.xml
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/kernel/trunk/client/pom.xml?rev=697688&view=auto
==============================================================================
--- servicemix/smx4/kernel/trunk/client/pom.xml (added)
+++ servicemix/smx4/kernel/trunk/client/pom.xml Sun Sep 21 23:59:57 2008
@@ -0,0 +1,136 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+      <groupId>org.apache.servicemix.kernel</groupId>
+      <artifactId>kernel</artifactId>
+      <version>1.1.0-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.apache.servicemix.kernel</groupId>
+    <artifactId>org.apache.servicemix.kernel.client</artifactId>
+    <packaging>bundle</packaging>
+    <version>1.1.0-SNAPSHOT</version>
+    <name>Apache ServiceMix Kernel :: Client</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.servicemix.kernel.gshell</groupId>
+            <artifactId>org.apache.servicemix.kernel.gshell.core</artifactId>
+            <version>${pom.version}</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>org.slf4j</groupId>
+                    <artifactId>slf4j-jdk14</artifactId>
+                </exclusion>
+            </exclusions>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+            <version>1.5.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-nop</artifactId>
+            <version>1.5.0</version>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <configuration>
+                    <instructions>
+                        <_donotcopy>(CVS|.svn|config.properties)</_donotcopy>
+                        
<Main-Class>org.apache.servicemix.kernel.client.Main</Main-Class>
+                        <Class-Path>
+                            
../system/org/apache/servicemix/kernel/gshell/org.apache.servicemix.kernel.gshell.core/${pom.version}/org.apache.servicemix.kernel.gshell.core-${pom.version}.jar
+                            
../system/org/apache/servicemix/bundles/org.apache.servicemix.bundles.mina/${mina.version}/org.apache.servicemix.bundles.mina-${mina.version}.jar
+                        </Class-Path>
+                        <Bundle-Name>Apache ServiceMix Shell 
Client</Bundle-Name>
+                        <Bundle-Description>Shell client bundle for Apache 
ServiceMix Kernel.</Bundle-Description>
+                                   
<Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
+                        
<Export-Package>org.apache.servicemix.kernel.client</Export-Package>
+                        <Private-Package>
+                            
org.apache.servicemix.kernel.client;-split-package:=merge-first,
+                            org.slf4j;-split-package:=merge-first,
+                            org.slf4j.spi;-split-package:=merge-first,
+                            org.slf4j.helpers;-split-package:=merge-first,
+                            org.slf4j.impl;-split-package:=merge-first,
+                            META-INF;-split-package:=merge-first
+                        </Private-Package>
+                        <Import-Package>!*</Import-Package>
+                    </instructions>
+                    <unpackBundle>true</unpackBundle>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-shade-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>shade</goal>
+                        </goals>
+                        <configuration>
+                            <artifactSet>
+                                <includes>
+                                    
<include>org.apache.felix:org.apache.felix.framework</include>
+                                    
<include>org.apache.felix:org.osgi.core</include>
+                                    
<include>${project.groupId}:${project.artifactId}</include>
+                                </includes>
+                            </artifactSet>
+                            <filters>
+                                <filter>
+                                    
<artifact>org.apache.felix:org.apache.felix.framework</artifact>
+                                    <excludes>
+                                        <exclude>org/apache/felix/**</exclude>
+                                        <exclude>org/osgi/**</exclude>
+                                    </excludes>
+                                </filter>
+                                <filter>
+                                    
<artifact>org.apache.felix:org.osgi.core</artifact>
+                                    <excludes>
+                                        <exclude>org/osgi/**</exclude>
+                                    </excludes>
+                                </filter>
+                            </filters>
+                            
<createSourcesJar>${createSourcesJar}</createSourcesJar>
+                            
<promoteTransitiveDependencies>true</promoteTransitiveDependencies>
+                            
<createDependencyReducedPom>true</createDependencyReducedPom>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <filtering>true</filtering>
+            </resource>
+        </resources>
+    </build>
+
+</project>
\ No newline at end of file

Added: 
servicemix/smx4/kernel/trunk/client/src/main/java/org/apache/servicemix/kernel/client/Main.java
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/kernel/trunk/client/src/main/java/org/apache/servicemix/kernel/client/Main.java?rev=697688&view=auto
==============================================================================
--- 
servicemix/smx4/kernel/trunk/client/src/main/java/org/apache/servicemix/kernel/client/Main.java
 (added)
+++ 
servicemix/smx4/kernel/trunk/client/src/main/java/org/apache/servicemix/kernel/client/Main.java
 Sun Sep 21 23:59:57 2008
@@ -0,0 +1,134 @@
+/*
+ * 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.
+ */
+package org.apache.servicemix.kernel.client;
+
+import java.net.URI;
+import java.util.List;
+import java.util.LinkedList;
+import java.io.Reader;
+import java.io.InputStreamReader;
+import java.io.BufferedReader;
+
+import org.apache.geronimo.gshell.remote.crypto.CryptoContext;
+import org.apache.geronimo.gshell.remote.client.RshClient;
+import org.apache.geronimo.gshell.remote.client.RemoteExecuteException;
+import org.apache.geronimo.gshell.remote.client.handler.EchoHandler;
+import org.apache.geronimo.gshell.remote.client.handler.ClientMessageHandler;
+import org.apache.geronimo.gshell.whisper.transport.TransportException;
+import org.apache.geronimo.gshell.whisper.transport.TransportFactory;
+import org.apache.geronimo.gshell.whisper.transport.TransportFactoryLocator;
+import 
org.apache.geronimo.gshell.whisper.transport.tcp.SpringTcpTransportFactory;
+import org.apache.geronimo.gshell.whisper.stream.StreamFeeder;
+import org.apache.geronimo.gshell.layout.NotFoundException;
+import org.apache.geronimo.gshell.ExitNotification;
+
+/**
+ * A very simple
+ */
+public class Main {
+
+    public static void main(String[] args) throws Exception {
+        URI address = new URI("tcp://127.0.0.1:8101/");
+        String user = "smx";
+        String password = "smx";
+        StringBuilder sb = new StringBuilder();
+
+        boolean options = true;
+        for (int i = 0; i < args.length; i++) {
+            if (args[i].charAt(0) == '-') {
+                if (args[i].equals("-a")) {
+                    address = new URI(args[++i]);
+                } else if (args[i].equals("-u")) {
+                    user = args[++i];
+                } else if (args[i].equals("-p")) {
+                    password = args[++i];
+                } else if (args[i].equals("--help")) {
+                    System.out.println("Apache ServiceMix Kernel client");
+                    System.out.println("  -a [address]  specify the URL to 
connect to");
+                    System.out.println("  -u [user]     specify the user 
name");
+                    System.out.println("  -p [password] specify the password");
+                    System.out.println("  --help        shows this help 
message");
+                    System.out.println("  [commands]    commands to run");
+                    System.out.println("If no commands are specified, the 
client will be put in an interactive mode");
+                } else {
+                    System.err.println("Unknown option: " + args[i]);
+                    System.err.println("Run with --help for usage");
+                    System.exit(1);
+                }
+            } else {
+                sb.append(args[i]);
+                sb.append(' ');
+                options = false;
+            }
+        }
+        RshClient client = null;
+        try {
+            CryptoContext context = new CryptoContext("RSA", null);
+            List<ClientMessageHandler> handlers = new 
LinkedList<ClientMessageHandler>();
+            handlers.add(new EchoHandler());
+            client = new RshClient(context, new Locator(), handlers);
+
+            client.initialize();
+            client.connect(address, new URI("tcp://0.0.0.0:0"));
+            client.login(user, password);
+            StreamFeeder outputFeeder = new 
StreamFeeder(client.getInputStream(), System.out);
+            outputFeeder.createThread().start();
+            client.openShell();
+            System.out.println("Connected");
+
+            String commandLine = sb.toString().trim();
+            if (commandLine.length() > 0) {
+                client.execute(commandLine);
+            } else {
+                BufferedReader r = new BufferedReader(new 
InputStreamReader(System.in));
+                for (;;) {
+                    System.out.print("> ");
+                    String s = r.readLine().trim();
+                    if (s.length() > 0) {
+                        try {
+                            client.execute(s);
+                        } catch (RemoteExecuteException e) {
+                            String name = e.getCause().getClass().getName();
+                            name = name.substring(name.lastIndexOf('.') + 1);
+                            System.err.println(name + ": " + 
e.getCause().getMessage());
+                        }
+                    }
+                }
+            }
+        } catch (ExitNotification e) {
+            System.exit(0);
+        } catch (Throwable t) {
+            t.printStackTrace();
+            System.exit(1);
+        } finally {
+            try {
+                client.closeShell();
+                client.close();
+            } catch (Throwable t) { }
+        }
+        System.exit(0);
+    }
+
+    private static class Locator implements TransportFactoryLocator {
+        SpringTcpTransportFactory factory = new SpringTcpTransportFactory();
+
+        public TransportFactory locate(URI arg0) throws TransportException {
+            return factory;
+        }
+
+    }
+}

Added: servicemix/smx4/kernel/trunk/client/src/main/resources/client.login.conf
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/kernel/trunk/client/src/main/resources/client.login.conf?rev=697688&view=auto
==============================================================================
--- servicemix/smx4/kernel/trunk/client/src/main/resources/client.login.conf 
(added)
+++ servicemix/smx4/kernel/trunk/client/src/main/resources/client.login.conf 
Sun Sep 21 23:59:57 2008
@@ -0,0 +1,26 @@
+/*
+ * 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.
+ */
+
+//
+// $Rev: 580717 $ $Date: 2007-09-30 14:47:55 +0200 (Sun, 30 Sep 2007) $
+//
+
+RshClient {
+    org.apache.geronimo.gshell.remote.client.auth.RemoteLoginModule required;
+};

Modified: servicemix/smx4/kernel/trunk/pom.xml
URL: 
http://svn.apache.org/viewvc/servicemix/smx4/kernel/trunk/pom.xml?rev=697688&r1=697687&r2=697688&view=diff
==============================================================================
--- servicemix/smx4/kernel/trunk/pom.xml (original)
+++ servicemix/smx4/kernel/trunk/pom.xml Sun Sep 21 23:59:57 2008
@@ -40,6 +40,7 @@
     <module>gshell</module>
     <module>spring</module>
     <module>jaas</module>
+    <module>client</module>
     <module>assembly</module>
   </modules>
 
@@ -65,6 +66,7 @@
       <cglib.version>2.1_3_1</cglib.version>
       <commons.io.version>1.3.2_1</commons.io.version>
       <commons.logging.version>1.1.1</commons.logging.version>
+      <depends.maven.plugin.version>1.0</depends.maven.plugin.version>
       <felix.configadmin.version>1.0.0</felix.configadmin.version>
       <felix.main.version>1.0.4</felix.main.version>
       <felix.plugin.version>1.4.1</felix.plugin.version>
@@ -82,8 +84,10 @@
       <pax.logging.version>1.1.1</pax.logging.version>
       <pax.url.version>0.3.2</pax.url.version>
       <servicemix.legal.version>1.0</servicemix.legal.version>
+      <servicemix.specs.version>1.1.0</servicemix.specs.version>
       <spring.osgi.version>1.1.0</spring.osgi.version>
       <spring.version>2.5.5</spring.version>
+      <woodstox.version>3.2.7_1</woodstox.version>
   </properties>
 
    <repositories>


Reply via email to