Author: chirino
Date: Wed Dec  5 07:47:34 2007
New Revision: 601373

URL: http://svn.apache.org/viewvc?rev=601373&view=rev
Log:
- The main boot strap now registers a MainService object so that other bundles 
can find out
what the command line arguments were.

- The GShell service now uses that to execute the gshell command specified via 
those 
arguments.


Added:
    
servicemix/branches/servicemix-4.0/runtime/main/src/main/java/org/apache/servicemix/main/spi/
    
servicemix/branches/servicemix-4.0/runtime/main/src/main/java/org/apache/servicemix/main/spi/MainService.java
Modified:
    servicemix/branches/servicemix-4.0/runtime/gshell/gshell-core/pom.xml
    
servicemix/branches/servicemix-4.0/runtime/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/spring/GShell.java
    
servicemix/branches/servicemix-4.0/runtime/gshell/gshell-core/src/main/resources/META-INF/spring/gshell-local.xml
    servicemix/branches/servicemix-4.0/runtime/main/pom.xml
    
servicemix/branches/servicemix-4.0/runtime/main/src/main/java/org/apache/servicemix/main/Main.java
    
servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/bin/servicemix.bat
    
servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/bin/servicemix.sh
    
servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/config.properties

Modified: servicemix/branches/servicemix-4.0/runtime/gshell/gshell-core/pom.xml
URL: 
http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/runtime/gshell/gshell-core/pom.xml?rev=601373&r1=601372&r2=601373&view=diff
==============================================================================
--- servicemix/branches/servicemix-4.0/runtime/gshell/gshell-core/pom.xml 
(original)
+++ servicemix/branches/servicemix-4.0/runtime/gshell/gshell-core/pom.xml Wed 
Dec  5 07:47:34 2007
@@ -39,6 +39,7 @@
 
     <properties>
         <gshell.osgi.import>
+            org.apache.servicemix.main.spi.*;resolution:=optional,
             com.thoughtworks.xstream*;resolution:=optional,
             javax.xml.stream*;resolution:=optional,
             junit.framework*;resolution:=optional,
@@ -66,6 +67,11 @@
     </properties>
 
     <dependencies>
+        <dependency>
+            <groupId>org.apache.servicemix</groupId>
+            <artifactId>org.apache.servicemix.main</artifactId>
+            <version>4.0-SNAPSHOT</version>
+        </dependency>
         <dependency>
             <groupId>org.apache.geronimo.gshell</groupId>
             <artifactId>gshell-core</artifactId>

Modified: 
servicemix/branches/servicemix-4.0/runtime/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/spring/GShell.java
URL: 
http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/runtime/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/spring/GShell.java?rev=601373&r1=601372&r2=601373&view=diff
==============================================================================
--- 
servicemix/branches/servicemix-4.0/runtime/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/spring/GShell.java
 (original)
+++ 
servicemix/branches/servicemix-4.0/runtime/gshell/gshell-core/src/main/java/org/apache/geronimo/gshell/spring/GShell.java
 Wed Dec  5 07:47:34 2007
@@ -20,6 +20,7 @@
 import org.apache.geronimo.gshell.command.IO;
 import org.apache.geronimo.gshell.shell.Environment;
 import org.apache.geronimo.gshell.shell.InteractiveShell;
+import org.apache.servicemix.main.spi.MainService;
 
 /**
  * Created by IntelliJ IDEA.
@@ -35,6 +36,7 @@
     private IO io;
     private Environment env;
     private boolean start;
+    private MainService mainService;
 
     public GShell(InteractiveShell shell) {
         this.shell = shell;
@@ -62,13 +64,38 @@
     }
 
     public void run() {
-        IOTargetSource.setIO(io);
-        EnvironmentTargetSource.setEnvironment(env);
         try {
-            shell.run();
+            IOTargetSource.setIO(io);
+            EnvironmentTargetSource.setEnvironment(env);
+               
+               String[] args=null;
+               if( mainService != null ) {
+                       args = mainService.getArgs();                   
+               }
+               
+               // If a command was specified on the command line, then just 
execute that command.
+                       if( args!=null && args.length > 0 ) {
+                       System.out.println("Executing 1 command:");
+                               shell.execute((Object[])args);
+                       }
+//                     For now we don't know how to shutdown after executing 
the command so go into a shell loop
+//                     else {
+                       System.out.println("going int interactive loop:");
+                               // Otherwise go into a command shell.
+                   shell.run();
+//                     }
+                       
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
+
+       public MainService getMainService() {
+               return mainService;
+       }
+
+       public void setMainService(MainService main) {
+               this.mainService = main;
+       }
 
 }

Modified: 
servicemix/branches/servicemix-4.0/runtime/gshell/gshell-core/src/main/resources/META-INF/spring/gshell-local.xml
URL: 
http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/runtime/gshell/gshell-core/src/main/resources/META-INF/spring/gshell-local.xml?rev=601373&r1=601372&r2=601373&view=diff
==============================================================================
--- 
servicemix/branches/servicemix-4.0/runtime/gshell/gshell-core/src/main/resources/META-INF/spring/gshell-local.xml
 (original)
+++ 
servicemix/branches/servicemix-4.0/runtime/gshell/gshell-core/src/main/resources/META-INF/spring/gshell-local.xml
 Wed Dec  5 07:47:34 2007
@@ -19,17 +19,24 @@
 -->
 <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:util="http://www.springframework.org/schema/util";
+       xmlns:osgi="http://www.springframework.org/schema/osgi";
        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://www.springframework.org/schema/util/spring-util.xsd
+  http://www.springframework.org/schema/osgi
+  http://www.springframework.org/schema/osgi/spring-osgi.xsd";>
+
+
+    <osgi:reference id="mainService" 
interface="org.apache.servicemix.main.spi.MainService" />
 
     <bean id="gshell" class="org.apache.geronimo.gshell.spring.GShell"
                       init-method="start" destroy-method="stop">
         <constructor-arg ref="interactiveShell" />
         <property name="start" value="${startLocalConsole}" />
+        <property name="mainService" ref="mainService" />
     </bean>
     
 

Modified: servicemix/branches/servicemix-4.0/runtime/main/pom.xml
URL: 
http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/runtime/main/pom.xml?rev=601373&r1=601372&r2=601373&view=diff
==============================================================================
--- servicemix/branches/servicemix-4.0/runtime/main/pom.xml (original)
+++ servicemix/branches/servicemix-4.0/runtime/main/pom.xml Wed Dec  5 07:47:34 
2007
@@ -80,9 +80,18 @@
                         <_donotcopy>(CVS|.svn|config.properties)</_donotcopy>
                         
<Main-Class>org.apache.servicemix.main.Main</Main-Class>
                         <Bundle-Name>Apache ServiceMix</Bundle-Name>
-                        <Bundle-Description>OSGi R4 
framework.</Bundle-Description>
+                        <Bundle-Description>OSGi R4 
framework.</Bundle-Description>
+                        
<Export-Package>org.apache.servicemix.main.spi.*</Export-Package>
                         <Private-Package>
-                            
org.apache.servicemix.main.*,org.apache.felix.moduleloader.*,org.apache.felix.framework.*,org.osgi.framework,org.osgi.service.packageadmin,org.osgi.service.startlevel,org.osgi.service.event,org.osgi.service.url,org.osgi.util.tracker
+                            org.apache.servicemix.main,
+                            org.apache.felix.moduleloader.*,
+                            org.apache.felix.framework.*,
+                            org.osgi.framework,
+                            org.osgi.service.packageadmin,
+                            org.osgi.service.startlevel,
+                            org.osgi.service.event,
+                            org.osgi.service.url,
+                            org.osgi.util.tracker
                         </Private-Package>
                         <Import-Package>!*</Import-Package>
                         
<Include-Resource>{src/main/resources/}</Include-Resource>

Modified: 
servicemix/branches/servicemix-4.0/runtime/main/src/main/java/org/apache/servicemix/main/Main.java
URL: 
http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/runtime/main/src/main/java/org/apache/servicemix/main/Main.java?rev=601373&r1=601372&r2=601373&view=diff
==============================================================================
--- 
servicemix/branches/servicemix-4.0/runtime/main/src/main/java/org/apache/servicemix/main/Main.java
 (original)
+++ 
servicemix/branches/servicemix-4.0/runtime/main/src/main/java/org/apache/servicemix/main/Main.java
 Wed Dec  5 07:47:34 2007
@@ -26,6 +26,10 @@
 import org.apache.felix.framework.Felix;
 import org.apache.felix.framework.cache.BundleCache;
 import org.apache.felix.framework.util.StringMap;
+import org.apache.servicemix.main.spi.MainService;
+import org.osgi.framework.BundleActivator;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.ServiceRegistration;
 
 /**
  * <p>
@@ -38,7 +42,7 @@
  * the framework.
  * </p>
 **/
-public class Main
+public class Main implements MainService
 {
     /**
      * The system property name used to specify an URL to the system
@@ -64,8 +68,13 @@
     public static final String PROPERTY_AUTO_START = "felix.auto.start";
 
     private static Felix m_felix = null;
+       private final String[] args;
 
-    /**
+    public Main(String[] args) {
+               this.args = args;
+       }
+
+       /**
      * <p>
      * This method performs the main task of constructing an framework instance
      * and starting its execution. The following functions are performed
@@ -191,11 +200,29 @@
             System.err.println("You must specify a profile name or 
directory.");
             System.exit(-1);
         }
+        
+        // Register the Main class so that other bundles can inspect the 
command line args.
+        final MainService main = new Main(argv);        
+        BundleActivator activator = new BundleActivator() {
+            private ServiceRegistration registration;
+            public void start(BundleContext context)
+            {
+                registration = 
context.registerService(MainService.class.getName(), main, null);
+            }
 
+            public void stop(BundleContext context)
+            {
+               registration.unregister();
+            }
+        };        
+       List<BundleActivator> activations = new ArrayList<BundleActivator>();
+        activations.add(activator);
+        
         try
         {
             // Now create an instance of the framework.
-            m_felix = new Felix(new StringMap(configProps, false), null);
+            
+            m_felix = new Felix(new StringMap(configProps, false), 
activations);
             m_felix.start();
         }
         catch (Exception ex)
@@ -284,7 +311,7 @@
             is = propURL.openConnection().getInputStream();
             props.load(is);
             is.close();
-        }
+        }      
         catch (FileNotFoundException ex)
         {
             // Ignore file not found.
@@ -499,14 +526,14 @@
      *         property placeholder syntax or a recursive variable reference.
     **/
     public static String substVars(String val, String currentKey,
-        Map cycleMap, Properties configProps)
+        Map<String, String> cycleMap, Properties configProps)
         throws IllegalArgumentException
     {
         // If there is currently no cycle map, then create
         // one for detecting cycles for this invocation.
         if (cycleMap == null)
         {
-            cycleMap = new HashMap();
+            cycleMap = new HashMap<String, String>();
         }
 
         // Put the current key in the cycle map.
@@ -597,4 +624,11 @@
         // Return the value.
         return val;
     }
+
+       /* (non-Javadoc)
+        * @see org.apache.servicemix.main.MainService#getArgs()
+        */
+       public String[] getArgs() {
+               return args;
+       }
 }

Added: 
servicemix/branches/servicemix-4.0/runtime/main/src/main/java/org/apache/servicemix/main/spi/MainService.java
URL: 
http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/runtime/main/src/main/java/org/apache/servicemix/main/spi/MainService.java?rev=601373&view=auto
==============================================================================
--- 
servicemix/branches/servicemix-4.0/runtime/main/src/main/java/org/apache/servicemix/main/spi/MainService.java
 (added)
+++ 
servicemix/branches/servicemix-4.0/runtime/main/src/main/java/org/apache/servicemix/main/spi/MainService.java
 Wed Dec  5 07:47:34 2007
@@ -0,0 +1,25 @@
+/*
+ * 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.main.spi;
+
+public interface MainService {
+
+       public abstract String[] getArgs();
+
+}
\ No newline at end of file

Modified: 
servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/bin/servicemix.bat
URL: 
http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/bin/servicemix.bat?rev=601373&r1=601372&r2=601373&view=diff
==============================================================================
--- 
servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/bin/servicemix.bat
 (original)
+++ 
servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/bin/servicemix.bat
 Wed Dec  5 07:47:34 2007
@@ -73,7 +73,7 @@
     if "%JAVA_HOME%" == "" call :warn JAVA_HOME not set; results may vary
     if not "%JAVA_HOME%" == "" set JAVA=%JAVA_HOME%\bin\java
     if not exist "%JAVA_HOME%" (
-        call :warn JAVA_HOME is not valid: %JAVA_HOME%
+        call :warn JAVA_HOME is not valid: "%JAVA_HOME%"
         goto END
     )
 :Check_JAVA_END
@@ -114,7 +114,7 @@
 :EXECUTE
     rem Execute the Java Virtual Machine
     cd "%SERVICEMIX_HOME%"
-    "%JAVA%" %JAVA_OPTS% -Dservicemix.home="%SERVICEMIX_HOME%" 
-Dbundles.configuration.location="%SERVICEMIX_HOME%/conf" -jar 
"%SERVICEMIX_HOME%\bin\bootstrapper.jar" "%SERVICEMIX_HOME%" start
+    "%JAVA%" %JAVA_OPTS% -Dservicemix.home="%SERVICEMIX_HOME%" 
-Dbundles.configuration.location="%SERVICEMIX_HOME%/conf" -jar 
"%SERVICEMIX_HOME%\bin\servicemix.jar" %*
 
 rem # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
 

Modified: 
servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/bin/servicemix.sh
URL: 
http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/bin/servicemix.sh?rev=601373&r1=601372&r2=601373&view=diff
==============================================================================
--- 
servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/bin/servicemix.sh
 (original)
+++ 
servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/bin/servicemix.sh
 Wed Dec  5 07:47:34 2007
@@ -245,7 +245,7 @@
         SERVICEMIX_HOME=`cygpath --path --windows "$SERVICEMIX_HOME"`
     fi
     cd "$SERVICEMIX_HOME"
-    exec $JAVA $JAVA_OPTS -Dservicemix.home="$SERVICEMIX_HOME" 
-Dbundles.configuration.location="$SERVICEMIX_HOME/etc" -jar "$JAR" "$1" 
+    exec $JAVA $JAVA_OPTS -Dservicemix.home="$SERVICEMIX_HOME" 
-Dbundles.configuration.location="$SERVICEMIX_HOME/etc" -jar "$JAR" "$*" 
 }
 
 main() {

Modified: 
servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/config.properties
URL: 
http://svn.apache.org/viewvc/servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/config.properties?rev=601373&r1=601372&r2=601373&view=diff
==============================================================================
--- 
servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/config.properties
 (original)
+++ 
servicemix/branches/servicemix-4.0/runtime/minimum/src/main/release/etc/config.properties
 Wed Dec  5 07:47:34 2007
@@ -24,6 +24,7 @@
  org.osgi.service.packageadmin; version=1.2.0, \
  org.osgi.service.startlevel; version=1.0.0, \
  org.osgi.service.url; version=1.0.0, \
+ org.apache.servicemix.main.spi; version=1.0.0, \
  ${jre-${java.specification.version}}
 #org.osgi.framework.bootdelegation=sun.*,com.sun.*
 felix.auto.start=true


Reply via email to