You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by dj...@apache.org on 2006/05/12 23:29:26 UTC

svn commit: r405881 - in /geronimo/branches/1.1: assemblies/j2ee-jetty-server/src/var/config/ assemblies/j2ee-tomcat-server/src/var/config/ assemblies/minimal-jetty-server/src/var/config/ assemblies/minimal-tomcat-server/src/var/config/ etc/ modules/de...

Author: djencks
Date: Fri May 12 14:29:24 2006
New Revision: 405881

URL: http://svn.apache.org/viewcvs?rev=405881&view=rev
Log:
GERONIMO-1507 offline deployer.  Also GERONIMO-1861 make a backup copy of config.xml

Added:
    geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/offline-deployer-list
    geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/offline-deployer-list
    geronimo/branches/1.1/assemblies/minimal-jetty-server/src/var/config/offline-deployer-list
    geronimo/branches/1.1/assemblies/minimal-tomcat-server/src/var/config/offline-deployer-list
    geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/LocalServer.java
Removed:
    geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/GBeanDataRegistry.java
Modified:
    geronimo/branches/1.1/etc/explicit_versions.properties
    geronimo/branches/1.1/etc/project.properties
    geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/ServerConnection.java
    geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentConfigurationManager.java
    geronimo/branches/1.1/modules/deployment/src/test/org/apache/geronimo/deployment/SingleFileHotDeployerTest.java
    geronimo/branches/1.1/modules/kernel/project.xml
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/KernelConfigurationManager.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/MultiParentClassLoader.java
    geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java
    geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLine.java
    geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLineManifest.java
    geronimo/branches/1.1/modules/system/src/test/org/apache/geronimo/system/plugin/PluginInstallerTest.java
    geronimo/branches/1.1/plugins/geronimo-assembly-plugin/plugin.jelly
    geronimo/branches/1.1/plugins/geronimo-assembly-plugin/project.xml

Added: geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/offline-deployer-list
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/offline-deployer-list?rev=405881&view=auto
==============================================================================
--- geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/offline-deployer-list (added)
+++ geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/offline-deployer-list Fri May 12 14:29:24 2006
@@ -0,0 +1,7 @@
+#list of deployers to be started for offline deployment
+geronimo/geronimo-gbean-deployer/${pom.currentVersion}/car
+geronimo/j2ee-deployer/${pom.currentVersion}/car
+geronimo/openejb-deployer/${pom.currentVersion}/car
+geronimo/client-deployer/${pom.currentVersion}/car
+geronimo/axis-deployer/${pom.currentVersion}/car
+geronimo/jetty-deployer/${pom.currentVersion}/car

Added: geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/offline-deployer-list
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/offline-deployer-list?rev=405881&view=auto
==============================================================================
--- geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/offline-deployer-list (added)
+++ geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/offline-deployer-list Fri May 12 14:29:24 2006
@@ -0,0 +1,7 @@
+#list of deployers to be started for offline deployment
+geronimo/geronimo-gbean-deployer/${pom.currentVersion}/car
+geronimo/j2ee-deployer/${pom.currentVersion}/car
+geronimo/openejb-deployer/${pom.currentVersion}/car
+geronimo/client-deployer/${pom.currentVersion}/car
+geronimo/axis-deployer/${pom.currentVersion}/car
+geronimo/tomcat-deployer/${pom.currentVersion}/car

Added: geronimo/branches/1.1/assemblies/minimal-jetty-server/src/var/config/offline-deployer-list
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/assemblies/minimal-jetty-server/src/var/config/offline-deployer-list?rev=405881&view=auto
==============================================================================
--- geronimo/branches/1.1/assemblies/minimal-jetty-server/src/var/config/offline-deployer-list (added)
+++ geronimo/branches/1.1/assemblies/minimal-jetty-server/src/var/config/offline-deployer-list Fri May 12 14:29:24 2006
@@ -0,0 +1,7 @@
+#list of deployers to be started for offline deployment
+geronimo/geronimo-gbean-deployer/${pom.currentVersion}/car
+geronimo/j2ee-deployer/${pom.currentVersion}/car
+geronimo/jetty-deployer/${pom.currentVersion}/car
+geronimo/unavailable-ejb-deployer/${pom.currentVersion}/car
+geronimo/unavailable-webservices-deployer/${pom.currentVersion}/car
+geronimo/unavailable-client-deployer/${pom.currentVersion}/car

Added: geronimo/branches/1.1/assemblies/minimal-tomcat-server/src/var/config/offline-deployer-list
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/assemblies/minimal-tomcat-server/src/var/config/offline-deployer-list?rev=405881&view=auto
==============================================================================
--- geronimo/branches/1.1/assemblies/minimal-tomcat-server/src/var/config/offline-deployer-list (added)
+++ geronimo/branches/1.1/assemblies/minimal-tomcat-server/src/var/config/offline-deployer-list Fri May 12 14:29:24 2006
@@ -0,0 +1,7 @@
+#list of deployers to be started for offline deployment
+geronimo/geronimo-gbean-deployer/${pom.currentVersion}/car
+geronimo/j2ee-deployer/${pom.currentVersion}/car
+geronimo/tomcat-deployer/${pom.currentVersion}/car
+geronimo/unavailable-ejb-deployer/${pom.currentVersion}/car
+geronimo/unavailable-webservices-deployer/${pom.currentVersion}/car
+geronimo/unavailable-client-deployer/${pom.currentVersion}/car

Modified: geronimo/branches/1.1/etc/explicit_versions.properties
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/etc/explicit_versions.properties?rev=405881&r1=405880&r2=405881&view=diff
==============================================================================
--- geronimo/branches/1.1/etc/explicit_versions.properties (original)
+++ geronimo/branches/1.1/etc/explicit_versions.properties Fri May 12 14:29:24 2006
@@ -42,7 +42,7 @@
 dom4j///=1.4
 dwr///=1.0
 eclipse_compiler///=3.0.1
-howl///=0.1.11
+howl///=1.0.1
 #security:
 hsqldb///=1.7.2.2
 jasper///=5.5.15

Modified: geronimo/branches/1.1/etc/project.properties
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/etc/project.properties?rev=405881&r1=405880&r2=405881&view=diff
==============================================================================
--- geronimo/branches/1.1/etc/project.properties (original)
+++ geronimo/branches/1.1/etc/project.properties Fri May 12 14:29:24 2006
@@ -97,7 +97,7 @@
 release_notes_version=1.0
 
 geronimo_packaging_plugin_version=1.1.0-8
-geronimo_assembly_plugin_version=1.1.0-11
+geronimo_assembly_plugin_version=1.1.0-12
 geronimo_deployment_plugin_version=1.1.0-3
 geronimo_dependency_plugin_version=1.1.0-3
 
@@ -153,7 +153,7 @@
 dom4j_version=1.4
 dwr_version=1.1.1
 eclipse_compiler_version=3.0.1
-howl_version=0.1.11
+howl_version=1.0.1
 #security:
 hsqldb_version=1.7.2.2
 jasper_version=5.5.15

Added: geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/LocalServer.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/LocalServer.java?rev=405881&view=auto
==============================================================================
--- geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/LocalServer.java (added)
+++ geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/LocalServer.java Fri May 12 14:29:24 2006
@@ -0,0 +1,80 @@
+/**
+ *
+ * Copyright 2006 The Apache Software Foundation
+ *
+ *  Licensed 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.geronimo.deployment.cli;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.apache.geronimo.gbean.AbstractName;
+import org.apache.geronimo.gbean.AbstractNameQuery;
+import org.apache.geronimo.kernel.GBeanNotFoundException;
+import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.kernel.config.PersistentConfigurationList;
+import org.apache.geronimo.kernel.repository.Artifact;
+import org.apache.geronimo.system.main.CommandLine;
+import org.apache.geronimo.system.serverinfo.ServerInfo;
+
+/**
+ * @version $Rev:$ $Date:$
+ */
+public class LocalServer extends CommandLine {
+
+    public LocalServer(String configListLocation) throws Exception {
+        startKernel(Artifact.create("geronimo/j2ee-system//car"));
+        Runtime.getRuntime().addShutdownHook(new Thread("Geronimo shutdown thread") {
+            public void run() {
+                getKernel().shutdown();
+            }
+        });
+        List configs = getConfigurationList(configListLocation);
+        loadConfigurations(configs);
+    }
+
+    public Kernel getKernel() {
+        return super.getKernel();
+    }
+
+    protected List getConfigurationList(String path) throws GBeanNotFoundException, IOException {
+        ServerInfo serverInfo = (ServerInfo) getKernel().getGBean(ServerInfo.class);
+        File configFile = serverInfo.resolve(path);
+        List modules = new ArrayList();
+        BufferedReader in = new BufferedReader(new FileReader(configFile));
+        try {
+            String artifactString;
+            while ((artifactString = in.readLine()) != null) {
+                artifactString = artifactString.trim();
+                if (!artifactString.startsWith("#") && artifactString.length() > 0) {
+                    Artifact artifact = Artifact.create(artifactString);
+                    modules.add(artifact);
+                }
+            }
+        } finally {
+            in.close();
+        }
+        return modules;
+    }
+
+}

Modified: geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/ServerConnection.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/ServerConnection.java?rev=405881&r1=405880&r2=405881&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/ServerConnection.java (original)
+++ geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/ServerConnection.java Fri May 12 14:29:24 2006
@@ -31,6 +31,7 @@
 import java.util.Map;
 import java.util.Properties;
 import java.util.jar.JarFile;
+
 import javax.enterprise.deploy.shared.factories.DeploymentFactoryManager;
 import javax.enterprise.deploy.spi.DeploymentManager;
 import javax.enterprise.deploy.spi.exceptions.DeploymentManagerCreationException;
@@ -40,7 +41,12 @@
 import org.apache.geronimo.deployment.plugin.factories.AuthenticationFailedException;
 import org.apache.geronimo.deployment.plugin.factories.DeploymentFactoryImpl;
 import org.apache.geronimo.deployment.plugin.jmx.JMXDeploymentManager;
+import org.apache.geronimo.deployment.plugin.jmx.LocalDeploymentManager;
 import org.apache.geronimo.util.SimpleEncryption;
+import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.kernel.config.ConfigurationManager;
+import org.apache.geronimo.kernel.config.ConfigurationUtil;
+import org.apache.geronimo.kernel.config.KernelConfigurationManager;
 
 /**
  * Supports online connections to the server, via JSR-88, valid only
@@ -50,6 +56,7 @@
  */
 public class ServerConnection {
     private final static Map OPTION_HELP = new LinkedHashMap(9);
+
     static {
         OPTION_HELP.put("--uri", "A URI to contact the server.  If not specified, the deployer defaults to " +
                 "operating on a Geronimo server running on the standard port on localhost.\n" +
@@ -69,7 +76,9 @@
         OPTION_HELP.put("--password", "Specifies a password to use to authenticate to the server.");
         OPTION_HELP.put("--syserr", "Enables error logging to syserr.  Disabled by default.");
         OPTION_HELP.put("--verbose", "Enables verbose execution mode.  Disabled by default.");
+        OPTION_HELP.put("--offline", "Deploy offline to a local server, using whatever deployers are available in the local server");
     }
+
     public static Map getOptionHelp() {
         return OPTION_HELP;
     }
@@ -80,19 +89,18 @@
      * argument).  For example, if the arguments were "--user bob foo" then
      * this should return true for "--user" and "bob" and false for "foo".
      *
-     * @param args The previous arguments on the command line
+     * @param args   The previous arguments on the command line
      * @param option The argument we're checking at the moment
-     *
      * @return True if the argument we're checking is part of a general argument
      */
     public static boolean isGeneralOption(List args, String option) {
-        if(OPTION_HELP.containsKey(option) || option.equals("--url")) {
+        if (OPTION_HELP.containsKey(option) || option.equals("--url")) {
             return true;
         }
-        if(args.size() == 0) {
+        if (args.size() == 0) {
             return false;
         }
-        String last = (String) args.get(args.size()-1);
+        String last = (String) args.get(args.size() - 1);
         return last.equals("--uri") || last.equals("--url") || last.equals("--driver") || last.equals("--user") ||
                 last.equals("--password") || last.equals("--host") || last.equals("--port");
     }
@@ -111,62 +119,64 @@
         Integer port = null;
         this.out = out;
         this.in = in;
-        for(int i = 0; i < args.length; i++) {
+        boolean offline = false;
+        for (int i = 0; i < args.length; i++) {
             String arg = args[i];
-            if(arg.equals("--uri") || arg.equals("--url")) {
-                if(uri != null) {
+            if (arg.equals("--uri") || arg.equals("--url")) {
+                if (uri != null) {
                     throw new DeploymentSyntaxException("Cannot specify more than one URI");
-                } else if(i >= args.length-1) {
+                } else if (i >= args.length - 1) {
                     throw new DeploymentSyntaxException("Must specify a URI (e.g. --uri deployer:...)");
                 }
-                if(host != null || port != null) {
+                if (host != null || port != null) {
                     throw new DeploymentSyntaxException("Cannot specify a URI as well as a host/port");
                 }
                 uri = args[++i];
-            } else if(arg.equals("--host")) {
-                if(host != null) {
+            } else if (arg.equals("--host")) {
+                if (host != null) {
                     throw new DeploymentSyntaxException("Cannot specify more than one host");
-                } else if(i >= args.length-1) {
+                } else if (i >= args.length - 1) {
                     throw new DeploymentSyntaxException("Must specify a hostname (e.g. --host localhost)");
                 }
-                if(uri != null) {
+                if (uri != null) {
                     throw new DeploymentSyntaxException("Cannot specify a URI as well as a host/port");
                 }
                 host = args[++i];
-            } else if(arg.equals("--port")) {
-                if(port != null) {
+            } else if (arg.equals("--port")) {
+                if (port != null) {
                     throw new DeploymentSyntaxException("Cannot specify more than one port");
-                } else if(i >= args.length-1) {
+                } else if (i >= args.length - 1) {
                     throw new DeploymentSyntaxException("Must specify a port (e.g. --port 1099)");
                 }
-                if(uri != null) {
+                if (uri != null) {
                     throw new DeploymentSyntaxException("Cannot specify a URI as well as a host/port");
                 }
                 try {
                     port = new Integer(args[++i]);
                 } catch (NumberFormatException e) {
-                    throw new DeploymentSyntaxException("Port must be a number ("+e.getMessage()+")");
+                    throw new DeploymentSyntaxException("Port must be a number (" + e.getMessage() + ")");
                 }
-            } else if(arg.equals("--driver")) {
-                if(driver != null) {
+            } else if (arg.equals("--driver")) {
+                if (driver != null) {
                     throw new DeploymentSyntaxException("Cannot specify more than one driver");
-                } else if(i >= args.length-1) {
+                } else if (i >= args.length - 1) {
                     throw new DeploymentSyntaxException("Must specify a driver JAR (--driver jarfile)");
                 }
                 driver = args[++i];
-            } else if(arg.equals("--offline")) {
-                throw new DeploymentSyntaxException("This tool no longer handles offline deployment");
-            } else if(arg.equals("--user")) {
-                if(user != null) {
+            } else if (arg.equals("--offline")) {
+                //throw new DeploymentSyntaxException("This tool no longer handles offline deployment");
+                offline = true;
+            } else if (arg.equals("--user")) {
+                if (user != null) {
                     throw new DeploymentSyntaxException("Cannot specify more than one user name");
-                } else if(i >= args.length-1) {
+                } else if (i >= args.length - 1) {
                     throw new DeploymentSyntaxException("Must specify a username (--user username)");
                 }
                 user = args[++i];
-            } else if(arg.equals("--password")) {
-                if(password != null) {
+            } else if (arg.equals("--password")) {
+                if (password != null) {
                     throw new DeploymentSyntaxException("Cannot specify more than one password");
-                } else if(i >= args.length-1) {
+                } else if (i >= args.length - 1) {
                     throw new DeploymentSyntaxException("Must specify a password (--password password)");
                 }
                 password = args[++i];
@@ -175,23 +185,37 @@
             } else if (arg.equals("--syserr")) {
                 logToSysErr = true;
             } else {
-                throw new DeploymentException("Invalid option "+arg);
+                throw new DeploymentException("Invalid option " + arg);
             }
         }
-        if((driver != null) && uri == null) {
+        if ((driver != null) && uri == null) {
             throw new DeploymentSyntaxException("A custom driver requires a custom URI");
         }
-        if(host != null || port != null) {
-            uri = DEFAULT_URI+"://"+(host == null ? "" : host)+(port == null ? "" : ":"+port);
+        if (host != null || port != null) {
+            uri = DEFAULT_URI + "://" + (host == null ? "" : host) + (port == null ? "" : ":" + port);
+        }
+        if (offline) {
+            LocalServer localServer;
+            try {
+                localServer = new LocalServer("var/config/offline-deployer-list");
+            } catch (Exception e) {
+                throw new DeploymentException("Could not start local server", e);
+            }
+            Kernel kernel = localServer.getKernel();
+            ConfigurationManager configurationManager = ConfigurationUtil.getConfigurationManager(kernel);
+            configurationManager.setOnline(false);
+
+            manager = new LocalDeploymentManager(localServer.getKernel());
+        } else {
+            tryToConnect(uri, driver, user, password, true);
         }
-        tryToConnect(uri, driver, user, password, true);
-        if(manager == null) {
+        if (manager == null) {
             throw new DeploymentException("Unexpected error; connection failed.");
         }
     }
 
     public void close() throws DeploymentException {
-        if(manager != null) {
+        if (manager != null) {
             manager.release();
         }
     }
@@ -206,55 +230,59 @@
 
     private void tryToConnect(String argURI, String driver, String user, String password, boolean authPrompt) throws DeploymentException {
         DeploymentFactoryManager mgr = DeploymentFactoryManager.getInstance();
-        if(driver != null) {
+        if (driver != null) {
             loadDriver(driver, mgr);
         } else {
             mgr.registerDeploymentFactory(new DeploymentFactoryImpl());
         }
         String useURI = argURI == null ? DEFAULT_URI : argURI;
 
-        if(authPrompt && user == null && password == null) {
+        if (authPrompt && user == null && password == null) {
             InputStream in;
             // First check for .geronimo-deployer on class path (e.g. packaged in deployer.jar)
             in = ServerConnection.class.getResourceAsStream("/.geronimo-deployer");
             // If not there, check in home directory
-            if(in == null) {
+            if (in == null) {
                 File authFile = new File(System.getProperty("user.home"), ".geronimo-deployer");
-                if(authFile.exists() && authFile.canRead()) {
+                if (authFile.exists() && authFile.canRead()) {
                     try {
                         in = new BufferedInputStream(new FileInputStream(authFile));
-                    } catch (FileNotFoundException e) {}
+                    } catch (FileNotFoundException e) {
+                    }
                 }
             }
-            if(in != null) {
+            if (in != null) {
                 try {
                     Properties props = new Properties();
                     props.load(in);
-                    String encryped = props.getProperty("login."+useURI);
-                    if(encryped != null) {
-                        if(encryped.startsWith("{Standard}")) {
+                    String encryped = props.getProperty("login." + useURI);
+                    if (encryped != null) {
+                        if (encryped.startsWith("{Standard}")) {
                             SavedAuthentication auth = (SavedAuthentication) SimpleEncryption.decrypt(encryped.substring(10));
-                            if(auth.uri.equals(useURI)) {
+                            if (auth.uri.equals(useURI)) {
                                 user = auth.user;
                                 password = new String(auth.password);
                             }
-                        } else if(encryped.startsWith("{Plain}")) {
+                        } else if (encryped.startsWith("{Plain}")) {
                             int pos = encryped.indexOf("/");
                             user = encryped.substring(7, pos);
-                            password = encryped.substring(pos+1);
+                            password = encryped.substring(pos + 1);
                         } else {
                             System.out.print(DeployUtils.reformat("Unknown encryption used in saved login file", 4, 72));
                         }
                     }
                 } catch (IOException e) {
-                    System.out.print(DeployUtils.reformat("Unable to read authentication from saved login file: "+e.getMessage(), 4, 72));
+                    System.out.print(DeployUtils.reformat("Unable to read authentication from saved login file: " + e.getMessage(), 4, 72));
                 } finally {
-                    try {in.close();}catch(IOException e) {}
+                    try {
+                        in.close();
+                    } catch (IOException e) {
+                    }
                 }
             }
         }
 
-        if(authPrompt && !useURI.equals(DEFAULT_URI) && user == null && password == null) {
+        if (authPrompt && !useURI.equals(DEFAULT_URI) && user == null && password == null) {
             // Non-standard URI, but no authentication information
             doAuthPromptAndRetry(useURI, user, password);
             return;
@@ -262,15 +290,15 @@
             try {
                 manager = mgr.getDeploymentManager(useURI, user, password);
                 auth = new SavedAuthentication(useURI, user, password == null ? null : password.toCharArray());
-            } catch(AuthenticationFailedException e) { // server's there, you just can't talk to it
-                if(authPrompt) {
+            } catch (AuthenticationFailedException e) { // server's there, you just can't talk to it
+                if (authPrompt) {
                     doAuthPromptAndRetry(useURI, user, password);
                     return;
                 } else {
                     throw new DeploymentException("Login Failed");
                 }
-            } catch(DeploymentManagerCreationException e) {
-                throw new DeploymentException("Unable to connect to server at "+useURI+" -- "+e.getMessage());
+            } catch (DeploymentManagerCreationException e) {
+                throw new DeploymentException("Unable to connect to server at " + useURI + " -- " + e.getMessage());
             }
         }
 
@@ -282,37 +310,37 @@
 
     private void loadDriver(String driver, DeploymentFactoryManager mgr) throws DeploymentException {
         File file = new File(driver);
-        if(!file.exists() || !file.canRead() || !DeployUtils.isJarFile(file)) {
-            throw new DeploymentSyntaxException("Driver '"+file.getAbsolutePath()+"' is not a readable JAR file");
+        if (!file.exists() || !file.canRead() || !DeployUtils.isJarFile(file)) {
+            throw new DeploymentSyntaxException("Driver '" + file.getAbsolutePath() + "' is not a readable JAR file");
         }
         String className = null;
         try {
             JarFile jar = new JarFile(file);
             className = jar.getManifest().getMainAttributes().getValue("J2EE-DeploymentFactory-Implementation-Class");
-            if(className == null) {
-                throw new DeploymentException("The driver JAR "+file.getAbsolutePath()+" does not specify a J2EE-DeploymentFactory-Implementation-Class; cannot load driver.");
+            if (className == null) {
+                throw new DeploymentException("The driver JAR " + file.getAbsolutePath() + " does not specify a J2EE-DeploymentFactory-Implementation-Class; cannot load driver.");
             }
             jar.close();
             DeploymentFactory factory = (DeploymentFactory) Class.forName(className).newInstance();
             mgr.registerDeploymentFactory(factory);
-        } catch(DeploymentException e) {
+        } catch (DeploymentException e) {
             throw e;
-        } catch(Exception e) {
-            throw new DeploymentSyntaxException("Unable to load driver class "+className+" from JAR "+file.getAbsolutePath(), e);
+        } catch (Exception e) {
+            throw new DeploymentSyntaxException("Unable to load driver class " + className + " from JAR " + file.getAbsolutePath(), e);
         }
     }
 
     private void doAuthPromptAndRetry(String uri, String user, String password) throws DeploymentException {
         try {
-            if(user == null) {
+            if (user == null) {
                 out.print("Username: ");
                 out.flush();
                 user = in.readLine();
             }
-            if(password == null) {
+            if (password == null) {
                 password = new PasswordPrompt("Password: ", out).getPassword(in);
             }
-        } catch(IOException e) {
+        } catch (IOException e) {
             throw new DeploymentException("Unable to prompt for login", e);
         }
         tryToConnect(uri, null, user, password, false);
@@ -349,13 +377,13 @@
             int priority = Thread.currentThread().getPriority();
             try {
                 Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
-                String fullPrompt = "\r"+prompt+"          "+"\r"+prompt;
+                String fullPrompt = "\r" + prompt + "          " + "\r" + prompt;
                 StringBuffer clearline = new StringBuffer();
                 clearline.append('\r');
-                for(int i=prompt.length()+10; i>=0; i--) {
+                for (int i = prompt.length() + 10; i >= 0; i--) {
                     clearline.append(' ');
                 }
-                while(!done) {
+                while (!done) {
                     out.print(fullPrompt);
                     out.flush();
                     Thread.sleep(1);
@@ -377,7 +405,7 @@
          * the entered password.  For this to make sense, the input reader
          * here must be part of the same console as the output writer passed
          * to the constructor.
-         *
+         * <p/>
          * For higher security, should return a char[], but that will just
          * be defeated by the JSR-88 call that takes a String anyway, so
          * why bother?

Modified: geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentConfigurationManager.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentConfigurationManager.java?rev=405881&r1=405880&r2=405881&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentConfigurationManager.java (original)
+++ geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentConfigurationManager.java Fri May 12 14:29:24 2006
@@ -84,6 +84,16 @@
         return super.getArtifactResolver();
     }
 
+    /**
+     * This configuration manager never starts any configurations
+     * @return false
+     */
+    public boolean isOnline() {
+        return false;
+    }
+
+    public void setOnline(boolean online) {
+    }
 
     //
     // LOAD

Modified: geronimo/branches/1.1/modules/deployment/src/test/org/apache/geronimo/deployment/SingleFileHotDeployerTest.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/deployment/src/test/org/apache/geronimo/deployment/SingleFileHotDeployerTest.java?rev=405881&r1=405880&r2=405881&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/deployment/src/test/org/apache/geronimo/deployment/SingleFileHotDeployerTest.java (original)
+++ geronimo/branches/1.1/modules/deployment/src/test/org/apache/geronimo/deployment/SingleFileHotDeployerTest.java Fri May 12 14:29:24 2006
@@ -453,5 +453,12 @@
         public ArtifactResolver getArtifactResolver() {
             return artifactResolver;
         }
+
+        public boolean isOnline() {
+            return true;
+        }
+
+        public void setOnline(boolean online) {
+        }
     }
 }

Modified: geronimo/branches/1.1/modules/kernel/project.xml
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/project.xml?rev=405881&r1=405880&r2=405881&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/kernel/project.xml (original)
+++ geronimo/branches/1.1/modules/kernel/project.xml Fri May 12 14:29:24 2006
@@ -103,33 +103,4 @@
         </dependency>
     </dependencies>
 
-    <build>
-        <resources>
-            <resource>
-                <directory>${basedir}/src/java</directory>
-                <includes>
-                    <include>**/*.xml</include>
-                    <include>**/*.properties</include>
-                </includes>
-            </resource>
-        </resources>
-        <unitTest>
-            <includes>
-                <include>**/*Test.java</include>
-            </includes>
-            <excludes>
-                <exclude>**/Abstract*.java</exclude>
-            </excludes>
-            <resources>
-                <resource>
-                    <directory>${basedir}/target/test-xdoclet/jmx/org/apache/geronimo/tools/xdoclet</directory>
-                    <targetPath>org/apache/geronimo/tools/xdoclet</targetPath>
-                    <includes>
-                        <include>*.xml</include>
-                    </includes>
-                </resource>
-            </resources>
-        </unitTest>
-    </build>
-
 </project>

Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java?rev=405881&r1=405880&r2=405881&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java (original)
+++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java Fri May 12 14:29:24 2006
@@ -463,4 +463,13 @@
      * configuration manager, etc.
      */
     ArtifactResolver getArtifactResolver();
+
+    /**
+     * Online means full functionality.  Offline typically means that configurations will never be started,
+     * although they may be marked in the persistent configuration list.
+     *
+     * @return online status of ConfigurationManager
+     */
+    boolean isOnline();
+    void setOnline(boolean online);
 }

Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/KernelConfigurationManager.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/KernelConfigurationManager.java?rev=405881&r1=405880&r2=405881&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/KernelConfigurationManager.java (original)
+++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/KernelConfigurationManager.java Fri May 12 14:29:24 2006
@@ -57,6 +57,7 @@
     private final ArtifactManager artifactManager;
     protected final ClassLoader classLoader;
     private final ShutdownHook shutdownHook;
+    private boolean online = true;
 
     public KernelConfigurationManager(Kernel kernel,
             Collection stores,
@@ -178,11 +179,21 @@
     }
 
     public void start(Configuration configuration) throws InvalidConfigException {
-        ConfigurationUtil.startConfigurationGBeans(configuration.getAbstractName(), configuration, kernel);
+        if (online) {
+            ConfigurationUtil.startConfigurationGBeans(configuration.getAbstractName(), configuration, kernel);
+        }
 
         if (configurationList != null && configuration.getConfigurationData().isAutoStart()) {
             configurationList.startConfiguration(configuration.getId());
         }
+    }
+
+    public boolean isOnline() {
+        return online;
+    }
+
+    public void setOnline(boolean online) {
+        this.online = online;
     }
 
     protected void stop(Configuration configuration) {

Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/MultiParentClassLoader.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/MultiParentClassLoader.java?rev=405881&r1=405880&r2=405881&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/MultiParentClassLoader.java (original)
+++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/MultiParentClassLoader.java Fri May 12 14:29:24 2006
@@ -246,7 +246,7 @@
             }
         }
 
-        throw new ClassNotFoundException(name);
+        throw new ClassNotFoundException(name + " in classloader " + id);
     }
 
     private boolean isNonOverridableClass(String name) {

Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java?rev=405881&r1=405880&r2=405881&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java (original)
+++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java Fri May 12 14:29:24 2006
@@ -1226,6 +1226,17 @@
         return artifactResolver;
     }
 
+    /**
+     * this configuration manager never starts configurations.
+     * @return false
+     */
+    public boolean isOnline() {
+        return false;
+    }
+
+    public void setOnline(boolean online) {
+    }
+
     private List getStoreList() {
         return new ArrayList(stores);
     }

Modified: geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLine.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLine.java?rev=405881&r1=405880&r2=405881&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLine.java (original)
+++ geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLine.java Fri May 12 14:29:24 2006
@@ -20,6 +20,9 @@
 import java.io.InputStream;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Enumeration;
+import java.net.URL;
+
 import javax.management.ObjectName;
 
 import org.apache.commons.logging.Log;
@@ -31,6 +34,9 @@
 import org.apache.geronimo.kernel.KernelFactory;
 import org.apache.geronimo.kernel.config.ConfigurationManager;
 import org.apache.geronimo.kernel.config.ConfigurationUtil;
+import org.apache.geronimo.kernel.config.NoSuchConfigException;
+import org.apache.geronimo.kernel.config.LifecycleException;
+import org.apache.geronimo.kernel.config.ConfigurationData;
 import org.apache.geronimo.kernel.log.GeronimoLogging;
 import org.apache.geronimo.kernel.repository.Artifact;
 import org.apache.geronimo.gbean.AbstractName;
@@ -61,7 +67,7 @@
             // the interesting entries from the manifest
             CommandLineManifest manifest = CommandLineManifest.getManifestEntries();
             List configurations = manifest.getConfigurations();
-            ObjectName mainGBean = manifest.getMainGBean();
+            AbstractName mainGBean = manifest.getMainGBean();
             String mainMethod = manifest.getMainMethod();
 
             new CommandLine().invokeMainGBean(configurations, mainGBean, mainMethod, args);
@@ -78,34 +84,9 @@
     private Kernel kernel;
     private AbstractName configurationName;
 
-    /**
-     * @deprecated use the next one with AbstractName
-     *
-     * @param configurations
-     * @param mainGBean
-     * @param mainMethod
-     * @param args
-     * @throws Exception
-     */
-    public void invokeMainGBean(List configurations, ObjectName mainGBean, String mainMethod, String[] args) throws Exception {
-        startKernel(configurations);
-
-        log.info("Server startup completed");
-
-        // invoke the main method
-        kernel.invoke(
-                mainGBean,
-                mainMethod,
-                new Object[]{args},
-                new String[]{String[].class.getName()});
-
-        log.info("Server shutdown begun");
-
-        stopKernel();
-    }
-
     public void invokeMainGBean(List configurations, AbstractName mainGBean, String mainMethod, String[] args) throws Exception {
-        startKernel(configurations);
+        startKernel();
+        loadConfigurations(configurations);
 
         log.info("Server startup completed");
 
@@ -121,7 +102,7 @@
         stopKernel();
     }
 
-    protected void startKernel(List configurations) throws Exception {
+    protected void startKernel() throws Exception {
         ClassLoader classLoader = CommandLine.class.getClassLoader();
         InputStream in = classLoader.getResourceAsStream("META-INF/config.ser");
 
@@ -132,6 +113,31 @@
         // load the configuration
         configurationName = ConfigurationUtil.loadBootstrapConfiguration(kernel, in, classLoader);
 
+    }
+
+    protected void startKernel(Artifact moduleId) throws Exception {
+        // boot the kernel
+        kernel = KernelFactory.newInstance().createKernel("geronimo");
+        kernel.boot();
+        ClassLoader classLoader = CommandLine.class.getClassLoader();
+        for (Enumeration modules = classLoader.getResources("META-INF/config.ser"); modules.hasMoreElements(); ) {
+            URL moduleDataURL = (URL) modules.nextElement();
+            InputStream in = moduleDataURL.openStream();
+            try {
+                ConfigurationData moduleData = ConfigurationUtil.readConfigurationData(in);
+                if (moduleId.matches(moduleData.getId())) {
+                    // load the configuration
+                    configurationName = ConfigurationUtil.loadBootstrapConfiguration(kernel, moduleData, classLoader);
+                    return;
+                }
+            } finally {
+                in.close();
+            }
+        }
+        throw new NoSuchConfigException(moduleId);
+    }
+
+    protected void loadConfigurations(List configurations) throws NoSuchConfigException, LifecycleException {
         // load and start the configurations
         ConfigurationManager configurationManager = ConfigurationUtil.getConfigurationManager(kernel);
         try {

Modified: geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLineManifest.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLineManifest.java?rev=405881&r1=405880&r2=405881&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLineManifest.java (original)
+++ geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLineManifest.java Fri May 12 14:29:24 2006
@@ -30,6 +30,8 @@
 import javax.management.ObjectName;
 import javax.management.MalformedObjectNameException;
 
+import org.apache.geronimo.gbean.AbstractName;
+
 /**
  *
  *
@@ -65,11 +67,11 @@
         // get the main gbean class
         String mainGBeanString = mainAttributes.getValue(MAIN_GBEAN);
 
-        ObjectName mainGBean = null;
+        AbstractName mainGBean = null;
         if(mainGBeanString != null) {
             try {
-                mainGBean = new ObjectName(mainGBeanString);
-            } catch (MalformedObjectNameException e) {
+                mainGBean = new AbstractName(new URI(mainGBeanString));
+            } catch (URISyntaxException e) {
                 System.err.println("Invalid Main-GBean name: " + mainGBeanString);
                 System.exit(1);
                 throw new AssertionError();
@@ -119,13 +121,13 @@
         return commandLineManifest;
     }
 
-    private final ObjectName mainGBean;
+    private final AbstractName mainGBean;
     private final String mainMethod;
     private final List configurations;
     private final List endorsedDirs;
     private final List extensionDirs;
 
-    public CommandLineManifest(ObjectName mainGBean, String mainMethod, List configurations, List endorsedDirs, List extensionDirs) {
+    public CommandLineManifest(AbstractName mainGBean, String mainMethod, List configurations, List endorsedDirs, List extensionDirs) {
         this.mainGBean = mainGBean;
         this.mainMethod = mainMethod;
         this.configurations = Collections.unmodifiableList(configurations);
@@ -133,7 +135,7 @@
         this.extensionDirs = extensionDirs;
     }
 
-    public ObjectName getMainGBean() {
+    public AbstractName getMainGBean() {
         return mainGBean;
     }
 

Modified: geronimo/branches/1.1/modules/system/src/test/org/apache/geronimo/system/plugin/PluginInstallerTest.java
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/system/src/test/org/apache/geronimo/system/plugin/PluginInstallerTest.java?rev=405881&r1=405880&r2=405881&view=diff
==============================================================================
--- geronimo/branches/1.1/modules/system/src/test/org/apache/geronimo/system/plugin/PluginInstallerTest.java (original)
+++ geronimo/branches/1.1/modules/system/src/test/org/apache/geronimo/system/plugin/PluginInstallerTest.java Fri May 12 14:29:24 2006
@@ -123,6 +123,7 @@
     }
 
     private static class MockConfigManager implements ConfigurationManager {
+
         public boolean isInstalled(Artifact configurationId) {
             return false;
         }
@@ -253,6 +254,13 @@
 
         public ArtifactResolver getArtifactResolver() {
             return null;
+        }
+
+        public boolean isOnline() {
+            return true;
+        }
+
+        public void setOnline(boolean online) {
         }
     }
 }

Modified: geronimo/branches/1.1/plugins/geronimo-assembly-plugin/plugin.jelly
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/plugins/geronimo-assembly-plugin/plugin.jelly?rev=405881&r1=405880&r2=405881&view=diff
==============================================================================
--- geronimo/branches/1.1/plugins/geronimo-assembly-plugin/plugin.jelly (original)
+++ geronimo/branches/1.1/plugins/geronimo-assembly-plugin/plugin.jelly Fri May 12 14:29:24 2006
@@ -43,6 +43,10 @@
         <ant:mkdir dir="${geronimo.assembly.dest}/var/config"/>
         <velocity:merge basedir="${geronimo.assembly.src}/var/config" template="config.xml"
                         name="${geronimo.assembly.dest}/var/config/config.xml"/>
+        <velocity:merge basedir="${geronimo.assembly.src}/var/config" template="config.xml"
+                        name="${geronimo.assembly.dest}/var/config/config.xml.original"/>
+        <velocity:merge basedir="${geronimo.assembly.src}/var/config" template="offline-deployer-list"
+                        name="${geronimo.assembly.dest}/var/config/offline-deployer-list"/>
     </goal>
 
     <goal name="assemble:assemble-lib">

Modified: geronimo/branches/1.1/plugins/geronimo-assembly-plugin/project.xml
URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/plugins/geronimo-assembly-plugin/project.xml?rev=405881&r1=405880&r2=405881&view=diff
==============================================================================
--- geronimo/branches/1.1/plugins/geronimo-assembly-plugin/project.xml (original)
+++ geronimo/branches/1.1/plugins/geronimo-assembly-plugin/project.xml Fri May 12 14:29:24 2006
@@ -23,7 +23,7 @@
     <id>geronimo-assembly-plugin</id>
     <name>Geronimo :: Maven Assembly Plugin</name>
     <description>A plugin used to assemble a distribution of Geronimo</description>
-    <currentVersion>1.1.0-11</currentVersion>
+    <currentVersion>1.1.0-12</currentVersion>
 
     <dependencies>
         <dependency>



Re: svn commit: r405881 - in /geronimo/branches/1.1: assemblies/j2ee-jetty-server/src/var/config/ assemblies/j2ee-tomcat-server/src/var/config/ assemblies/minimal-jetty-server/src/var/config/ assemblies/minimal-tomcat-server/src/var/config/ etc/ modules/de...

Posted by Joe Bohn <jo...@earthlink.net>.
Actually, I see that David has this on his personal "repo" so we can 
pick it up from there until there is an official version.  But I guess 
we still need to get this on a more public repo before we release 1.1.

Joe


Joe Bohn wrote:
> Was it intended that this change would upgrade howl to 1.0.1?
> 
> I know this was discussed with the package upgrades and David even 
> mentioned that the jar wasn't published on any of the repos yet.  That's 
> the last I can find on the topic.
> 
> It is in fact causing a problem since this version can't be found on any 
> of the repos.
> 
> Joe
> 
> 
> 
> djencks@apache.org wrote:
> 
>> Author: djencks
>> Date: Fri May 12 14:29:24 2006
>> New Revision: 405881
>>
>> URL: http://svn.apache.org/viewcvs?rev=405881&view=rev
>> Log:
>> GERONIMO-1507 offline deployer.  Also GERONIMO-1861 make a backup copy 
>> of config.xml
>>
>> Added:
>>     
>> geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/offline-deployer-list 
>>
>>     
>> geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/offline-deployer-list 
>>
>>     
>> geronimo/branches/1.1/assemblies/minimal-jetty-server/src/var/config/offline-deployer-list 
>>
>>     
>> geronimo/branches/1.1/assemblies/minimal-tomcat-server/src/var/config/offline-deployer-list 
>>
>>     
>> geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/LocalServer.java 
>>
>> Removed:
>>     
>> geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/GBeanDataRegistry.java 
>>
>> Modified:
>>     geronimo/branches/1.1/etc/explicit_versions.properties
>>     geronimo/branches/1.1/etc/project.properties
>>     
>> geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/ServerConnection.java 
>>
>>     
>> geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentConfigurationManager.java 
>>
>>     
>> geronimo/branches/1.1/modules/deployment/src/test/org/apache/geronimo/deployment/SingleFileHotDeployerTest.java 
>>
>>     geronimo/branches/1.1/modules/kernel/project.xml
>>     
>> geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java 
>>
>>     
>> geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/KernelConfigurationManager.java 
>>
>>     
>> geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/MultiParentClassLoader.java 
>>
>>     
>> geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java 
>>
>>     
>> geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLine.java 
>>
>>     
>> geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLineManifest.java 
>>
>>     
>> geronimo/branches/1.1/modules/system/src/test/org/apache/geronimo/system/plugin/PluginInstallerTest.java 
>>
>>     geronimo/branches/1.1/plugins/geronimo-assembly-plugin/plugin.jelly
>>     geronimo/branches/1.1/plugins/geronimo-assembly-plugin/project.xml
>>
>> Added: 
>> geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/offline-deployer-list 
>>
>> URL: 
>> http://svn.apache.org/viewcvs/geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/offline-deployer-list?rev=405881&view=auto 
>>
>> ============================================================================== 
>>
>> --- 
>> geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/offline-deployer-list 
>> (added)
>> +++ 
>> geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/offline-deployer-list 
>> Fri May 12 14:29:24 2006
>> @@ -0,0 +1,7 @@
>> +#list of deployers to be started for offline deployment
>> +geronimo/geronimo-gbean-deployer/${pom.currentVersion}/car
>> +geronimo/j2ee-deployer/${pom.currentVersion}/car
>> +geronimo/openejb-deployer/${pom.currentVersion}/car
>> +geronimo/client-deployer/${pom.currentVersion}/car
>> +geronimo/axis-deployer/${pom.currentVersion}/car
>> +geronimo/jetty-deployer/${pom.currentVersion}/car
>>
>> Added: 
>> geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/offline-deployer-list 
>>
>> URL: 
>> http://svn.apache.org/viewcvs/geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/offline-deployer-list?rev=405881&view=auto 
>>
>> ============================================================================== 
>>
>> --- 
>> geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/offline-deployer-list 
>> (added)
>> +++ 
>> geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/offline-deployer-list 
>> Fri May 12 14:29:24 2006
>> @@ -0,0 +1,7 @@
>> +#list of deployers to be started for offline deployment
>> +geronimo/geronimo-gbean-deployer/${pom.currentVersion}/car
>> +geronimo/j2ee-deployer/${pom.currentVersion}/car
>> +geronimo/openejb-deployer/${pom.currentVersion}/car
>> +geronimo/client-deployer/${pom.currentVersion}/car
>> +geronimo/axis-deployer/${pom.currentVersion}/car
>> +geronimo/tomcat-deployer/${pom.currentVersion}/car
>>
>> Added: 
>> geronimo/branches/1.1/assemblies/minimal-jetty-server/src/var/config/offline-deployer-list 
>>
>> URL: 
>> http://svn.apache.org/viewcvs/geronimo/branches/1.1/assemblies/minimal-jetty-server/src/var/config/offline-deployer-list?rev=405881&view=auto 
>>
>> ============================================================================== 
>>
>> --- 
>> geronimo/branches/1.1/assemblies/minimal-jetty-server/src/var/config/offline-deployer-list 
>> (added)
>> +++ 
>> geronimo/branches/1.1/assemblies/minimal-jetty-server/src/var/config/offline-deployer-list 
>> Fri May 12 14:29:24 2006
>> @@ -0,0 +1,7 @@
>> +#list of deployers to be started for offline deployment
>> +geronimo/geronimo-gbean-deployer/${pom.currentVersion}/car
>> +geronimo/j2ee-deployer/${pom.currentVersion}/car
>> +geronimo/jetty-deployer/${pom.currentVersion}/car
>> +geronimo/unavailable-ejb-deployer/${pom.currentVersion}/car
>> +geronimo/unavailable-webservices-deployer/${pom.currentVersion}/car
>> +geronimo/unavailable-client-deployer/${pom.currentVersion}/car
>>
>> Added: 
>> geronimo/branches/1.1/assemblies/minimal-tomcat-server/src/var/config/offline-deployer-list 
>>
>> URL: 
>> http://svn.apache.org/viewcvs/geronimo/branches/1.1/assemblies/minimal-tomcat-server/src/var/config/offline-deployer-list?rev=405881&view=auto 
>>
>> ============================================================================== 
>>
>> --- 
>> geronimo/branches/1.1/assemblies/minimal-tomcat-server/src/var/config/offline-deployer-list 
>> (added)
>> +++ 
>> geronimo/branches/1.1/assemblies/minimal-tomcat-server/src/var/config/offline-deployer-list 
>> Fri May 12 14:29:24 2006
>> @@ -0,0 +1,7 @@
>> +#list of deployers to be started for offline deployment
>> +geronimo/geronimo-gbean-deployer/${pom.currentVersion}/car
>> +geronimo/j2ee-deployer/${pom.currentVersion}/car
>> +geronimo/tomcat-deployer/${pom.currentVersion}/car
>> +geronimo/unavailable-ejb-deployer/${pom.currentVersion}/car
>> +geronimo/unavailable-webservices-deployer/${pom.currentVersion}/car
>> +geronimo/unavailable-client-deployer/${pom.currentVersion}/car
>>
>> Modified: geronimo/branches/1.1/etc/explicit_versions.properties
>> URL: 
>> http://svn.apache.org/viewcvs/geronimo/branches/1.1/etc/explicit_versions.properties?rev=405881&r1=405880&r2=405881&view=diff 
>>
>> ============================================================================== 
>>
>> --- geronimo/branches/1.1/etc/explicit_versions.properties (original)
>> +++ geronimo/branches/1.1/etc/explicit_versions.properties Fri May 12 
>> 14:29:24 2006
>> @@ -42,7 +42,7 @@
>>  dom4j///=1.4
>>  dwr///=1.0
>>  eclipse_compiler///=3.0.1
>> -howl///=0.1.11
>> +howl///=1.0.1
>>  #security:
>>  hsqldb///=1.7.2.2
>>  jasper///=5.5.15
>>
>> Modified: geronimo/branches/1.1/etc/project.properties
>> URL: 
>> http://svn.apache.org/viewcvs/geronimo/branches/1.1/etc/project.properties?rev=405881&r1=405880&r2=405881&view=diff 
>>
>> ============================================================================== 
>>
>> --- geronimo/branches/1.1/etc/project.properties (original)
>> +++ geronimo/branches/1.1/etc/project.properties Fri May 12 14:29:24 2006
>> @@ -97,7 +97,7 @@
>>  release_notes_version=1.0
>>  
>>  geronimo_packaging_plugin_version=1.1.0-8
>> -geronimo_assembly_plugin_version=1.1.0-11
>> +geronimo_assembly_plugin_version=1.1.0-12
>>  geronimo_deployment_plugin_version=1.1.0-3
>>  geronimo_dependency_plugin_version=1.1.0-3
>>  
>> @@ -153,7 +153,7 @@
>>  dom4j_version=1.4
>>  dwr_version=1.1.1
>>  eclipse_compiler_version=3.0.1
>> -howl_version=0.1.11
>> +howl_version=1.0.1
>>  #security:
>>  hsqldb_version=1.7.2.2
>>  jasper_version=5.5.15
>>
>> Added: 
>> geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/LocalServer.java 
>>
>> URL: 
>> http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/LocalServer.java?rev=405881&view=auto 
>>
>> ============================================================================== 
>>
>> --- 
>> geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/LocalServer.java 
>> (added)
>> +++ 
>> geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/LocalServer.java 
>> Fri May 12 14:29:24 2006
>> @@ -0,0 +1,80 @@
>> +/**
>> + *
>> + * Copyright 2006 The Apache Software Foundation
>> + *
>> + *  Licensed 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.geronimo.deployment.cli;
>> +
>> +import java.io.BufferedReader;
>> +import java.io.File;
>> +import java.io.FileReader;
>> +import java.io.IOException;
>> +import java.util.ArrayList;
>> +import java.util.Iterator;
>> +import java.util.List;
>> +import java.util.Set;
>> +import java.util.regex.Matcher;
>> +import java.util.regex.Pattern;
>> +
>> +import org.apache.geronimo.gbean.AbstractName;
>> +import org.apache.geronimo.gbean.AbstractNameQuery;
>> +import org.apache.geronimo.kernel.GBeanNotFoundException;
>> +import org.apache.geronimo.kernel.Kernel;
>> +import org.apache.geronimo.kernel.config.PersistentConfigurationList;
>> +import org.apache.geronimo.kernel.repository.Artifact;
>> +import org.apache.geronimo.system.main.CommandLine;
>> +import org.apache.geronimo.system.serverinfo.ServerInfo;
>> +
>> +/**
>> + * @version $Rev:$ $Date:$
>> + */
>> +public class LocalServer extends CommandLine {
>> +
>> +    public LocalServer(String configListLocation) throws Exception {
>> +        startKernel(Artifact.create("geronimo/j2ee-system//car"));
>> +        Runtime.getRuntime().addShutdownHook(new Thread("Geronimo 
>> shutdown thread") {
>> +            public void run() {
>> +                getKernel().shutdown();
>> +            }
>> +        });
>> +        List configs = getConfigurationList(configListLocation);
>> +        loadConfigurations(configs);
>> +    }
>> +
>> +    public Kernel getKernel() {
>> +        return super.getKernel();
>> +    }
>> +
>> +    protected List getConfigurationList(String path) throws 
>> GBeanNotFoundException, IOException {
>> +        ServerInfo serverInfo = (ServerInfo) 
>> getKernel().getGBean(ServerInfo.class);
>> +        File configFile = serverInfo.resolve(path);
>> +        List modules = new ArrayList();
>> +        BufferedReader in = new BufferedReader(new 
>> FileReader(configFile));
>> +        try {
>> +            String artifactString;
>> +            while ((artifactString = in.readLine()) != null) {
>> +                artifactString = artifactString.trim();
>> +                if (!artifactString.startsWith("#") && 
>> artifactString.length() > 0) {
>> +                    Artifact artifact = Artifact.create(artifactString);
>> +                    modules.add(artifact);
>> +                }
>> +            }
>> +        } finally {
>> +            in.close();
>> +        }
>> +        return modules;
>> +    }
>> +
>> +}
>>
>> Modified: 
>> geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/ServerConnection.java 
>>
>> URL: 
>> http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/ServerConnection.java?rev=405881&r1=405880&r2=405881&view=diff 
>>
>> ============================================================================== 
>>
>> --- 
>> geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/ServerConnection.java 
>> (original)
>> +++ 
>> geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/ServerConnection.java 
>> Fri May 12 14:29:24 2006
>> @@ -31,6 +31,7 @@
>>  import java.util.Map;
>>  import java.util.Properties;
>>  import java.util.jar.JarFile;
>> +
>>  import 
>> javax.enterprise.deploy.shared.factories.DeploymentFactoryManager;
>>  import javax.enterprise.deploy.spi.DeploymentManager;
>>  import 
>> javax.enterprise.deploy.spi.exceptions.DeploymentManagerCreationException; 
>>
>> @@ -40,7 +41,12 @@
>>  import 
>> org.apache.geronimo.deployment.plugin.factories.AuthenticationFailedException; 
>>
>>  import 
>> org.apache.geronimo.deployment.plugin.factories.DeploymentFactoryImpl;
>>  import org.apache.geronimo.deployment.plugin.jmx.JMXDeploymentManager;
>> +import org.apache.geronimo.deployment.plugin.jmx.LocalDeploymentManager;
>>  import org.apache.geronimo.util.SimpleEncryption;
>> +import org.apache.geronimo.kernel.Kernel;
>> +import org.apache.geronimo.kernel.config.ConfigurationManager;
>> +import org.apache.geronimo.kernel.config.ConfigurationUtil;
>> +import org.apache.geronimo.kernel.config.KernelConfigurationManager;
>>  
>>  /**
>>   * Supports online connections to the server, via JSR-88, valid only
>> @@ -50,6 +56,7 @@
>>   */
>>  public class ServerConnection {
>>      private final static Map OPTION_HELP = new LinkedHashMap(9);
>> +
>>      static {
>>          OPTION_HELP.put("--uri", "A URI to contact the server.  If 
>> not specified, the deployer defaults to " +
>>                  "operating on a Geronimo server running on the 
>> standard port on localhost.\n" +
>> @@ -69,7 +76,9 @@
>>          OPTION_HELP.put("--password", "Specifies a password to use to 
>> authenticate to the server.");
>>          OPTION_HELP.put("--syserr", "Enables error logging to 
>> syserr.  Disabled by default.");
>>          OPTION_HELP.put("--verbose", "Enables verbose execution 
>> mode.  Disabled by default.");
>> +        OPTION_HELP.put("--offline", "Deploy offline to a local 
>> server, using whatever deployers are available in the local server");
>>      }
>> +
>>      public static Map getOptionHelp() {
>>          return OPTION_HELP;
>>      }
>> @@ -80,19 +89,18 @@
>>       * argument).  For example, if the arguments were "--user bob 
>> foo" then
>>       * this should return true for "--user" and "bob" and false for 
>> "foo".
>>       *
>> -     * @param args The previous arguments on the command line
>> +     * @param args   The previous arguments on the command line
>>       * @param option The argument we're checking at the moment
>> -     *
>>       * @return True if the argument we're checking is part of a 
>> general argument
>>       */
>>      public static boolean isGeneralOption(List args, String option) {
>> -        if(OPTION_HELP.containsKey(option) || option.equals("--url")) {
>> +        if (OPTION_HELP.containsKey(option) || option.equals("--url")) {
>>              return true;
>>          }
>> -        if(args.size() == 0) {
>> +        if (args.size() == 0) {
>>              return false;
>>          }
>> -        String last = (String) args.get(args.size()-1);
>> +        String last = (String) args.get(args.size() - 1);
>>          return last.equals("--uri") || last.equals("--url") || 
>> last.equals("--driver") || last.equals("--user") ||
>>                  last.equals("--password") || last.equals("--host") || 
>> last.equals("--port");
>>      }
>> @@ -111,62 +119,64 @@
>>          Integer port = null;
>>          this.out = out;
>>          this.in = in;
>> -        for(int i = 0; i < args.length; i++) {
>> +        boolean offline = false;
>> +        for (int i = 0; i < args.length; i++) {
>>              String arg = args[i];
>> -            if(arg.equals("--uri") || arg.equals("--url")) {
>> -                if(uri != null) {
>> +            if (arg.equals("--uri") || arg.equals("--url")) {
>> +                if (uri != null) {
>>                      throw new DeploymentSyntaxException("Cannot 
>> specify more than one URI");
>> -                } else if(i >= args.length-1) {
>> +                } else if (i >= args.length - 1) {
>>                      throw new DeploymentSyntaxException("Must specify 
>> a URI (e.g. --uri deployer:...)");
>>                  }
>> -                if(host != null || port != null) {
>> +                if (host != null || port != null) {
>>                      throw new DeploymentSyntaxException("Cannot 
>> specify a URI as well as a host/port");
>>                  }
>>                  uri = args[++i];
>> -            } else if(arg.equals("--host")) {
>> -                if(host != null) {
>> +            } else if (arg.equals("--host")) {
>> +                if (host != null) {
>>                      throw new DeploymentSyntaxException("Cannot 
>> specify more than one host");
>> -                } else if(i >= args.length-1) {
>> +                } else if (i >= args.length - 1) {
>>                      throw new DeploymentSyntaxException("Must specify 
>> a hostname (e.g. --host localhost)");
>>                  }
>> -                if(uri != null) {
>> +                if (uri != null) {
>>                      throw new DeploymentSyntaxException("Cannot 
>> specify a URI as well as a host/port");
>>                  }
>>                  host = args[++i];
>> -            } else if(arg.equals("--port")) {
>> -                if(port != null) {
>> +            } else if (arg.equals("--port")) {
>> +                if (port != null) {
>>                      throw new DeploymentSyntaxException("Cannot 
>> specify more than one port");
>> -                } else if(i >= args.length-1) {
>> +                } else if (i >= args.length - 1) {
>>                      throw new DeploymentSyntaxException("Must specify 
>> a port (e.g. --port 1099)");
>>                  }
>> -                if(uri != null) {
>> +                if (uri != null) {
>>                      throw new DeploymentSyntaxException("Cannot 
>> specify a URI as well as a host/port");
>>                  }
>>                  try {
>>                      port = new Integer(args[++i]);
>>                  } catch (NumberFormatException e) {
>> -                    throw new DeploymentSyntaxException("Port must be 
>> a number ("+e.getMessage()+")");
>> +                    throw new DeploymentSyntaxException("Port must be 
>> a number (" + e.getMessage() + ")");
>>                  }
>> -            } else if(arg.equals("--driver")) {
>> -                if(driver != null) {
>> +            } else if (arg.equals("--driver")) {
>> +                if (driver != null) {
>>                      throw new DeploymentSyntaxException("Cannot 
>> specify more than one driver");
>> -                } else if(i >= args.length-1) {
>> +                } else if (i >= args.length - 1) {
>>                      throw new DeploymentSyntaxException("Must specify 
>> a driver JAR (--driver jarfile)");
>>                  }
>>                  driver = args[++i];
>> -            } else if(arg.equals("--offline")) {
>> -                throw new DeploymentSyntaxException("This tool no 
>> longer handles offline deployment");
>> -            } else if(arg.equals("--user")) {
>> -                if(user != null) {
>> +            } else if (arg.equals("--offline")) {
>> +                //throw new DeploymentSyntaxException("This tool no 
>> longer handles offline deployment");
>> +                offline = true;
>> +            } else if (arg.equals("--user")) {
>> +                if (user != null) {
>>                      throw new DeploymentSyntaxException("Cannot 
>> specify more than one user name");
>> -                } else if(i >= args.length-1) {
>> +                } else if (i >= args.length - 1) {
>>                      throw new DeploymentSyntaxException("Must specify 
>> a username (--user username)");
>>                  }
>>                  user = args[++i];
>> -            } else if(arg.equals("--password")) {
>> -                if(password != null) {
>> +            } else if (arg.equals("--password")) {
>> +                if (password != null) {
>>                      throw new DeploymentSyntaxException("Cannot 
>> specify more than one password");
>> -                } else if(i >= args.length-1) {
>> +                } else if (i >= args.length - 1) {
>>                      throw new DeploymentSyntaxException("Must specify 
>> a password (--password password)");
>>                  }
>>                  password = args[++i];
>> @@ -175,23 +185,37 @@
>>              } else if (arg.equals("--syserr")) {
>>                  logToSysErr = true;
>>              } else {
>> -                throw new DeploymentException("Invalid option "+arg);
>> +                throw new DeploymentException("Invalid option " + arg);
>>              }
>>          }
>> -        if((driver != null) && uri == null) {
>> +        if ((driver != null) && uri == null) {
>>              throw new DeploymentSyntaxException("A custom driver 
>> requires a custom URI");
>>          }
>> -        if(host != null || port != null) {
>> -            uri = DEFAULT_URI+"://"+(host == null ? "" : host)+(port 
>> == null ? "" : ":"+port);
>> +        if (host != null || port != null) {
>> +            uri = DEFAULT_URI + "://" + (host == null ? "" : host) + 
>> (port == null ? "" : ":" + port);
>> +        }
>> +        if (offline) {
>> +            LocalServer localServer;
>> +            try {
>> +                localServer = new 
>> LocalServer("var/config/offline-deployer-list");
>> +            } catch (Exception e) {
>> +                throw new DeploymentException("Could not start local 
>> server", e);
>> +            }
>> +            Kernel kernel = localServer.getKernel();
>> +            ConfigurationManager configurationManager = 
>> ConfigurationUtil.getConfigurationManager(kernel);
>> +            configurationManager.setOnline(false);
>> +
>> +            manager = new 
>> LocalDeploymentManager(localServer.getKernel());
>> +        } else {
>> +            tryToConnect(uri, driver, user, password, true);
>>          }
>> -        tryToConnect(uri, driver, user, password, true);
>> -        if(manager == null) {
>> +        if (manager == null) {
>>              throw new DeploymentException("Unexpected error; 
>> connection failed.");
>>          }
>>      }
>>  
>>      public void close() throws DeploymentException {
>> -        if(manager != null) {
>> +        if (manager != null) {
>>              manager.release();
>>          }
>>      }
>> @@ -206,55 +230,59 @@
>>  
>>      private void tryToConnect(String argURI, String driver, String 
>> user, String password, boolean authPrompt) throws DeploymentException {
>>          DeploymentFactoryManager mgr = 
>> DeploymentFactoryManager.getInstance();
>> -        if(driver != null) {
>> +        if (driver != null) {
>>              loadDriver(driver, mgr);
>>          } else {
>>              mgr.registerDeploymentFactory(new DeploymentFactoryImpl());
>>          }
>>          String useURI = argURI == null ? DEFAULT_URI : argURI;
>>  
>> -        if(authPrompt && user == null && password == null) {
>> +        if (authPrompt && user == null && password == null) {
>>              InputStream in;
>>              // First check for .geronimo-deployer on class path (e.g. 
>> packaged in deployer.jar)
>>              in = 
>> ServerConnection.class.getResourceAsStream("/.geronimo-deployer");
>>              // If not there, check in home directory
>> -            if(in == null) {
>> +            if (in == null) {
>>                  File authFile = new 
>> File(System.getProperty("user.home"), ".geronimo-deployer");
>> -                if(authFile.exists() && authFile.canRead()) {
>> +                if (authFile.exists() && authFile.canRead()) {
>>                      try {
>>                          in = new BufferedInputStream(new 
>> FileInputStream(authFile));
>> -                    } catch (FileNotFoundException e) {}
>> +                    } catch (FileNotFoundException e) {
>> +                    }
>>                  }
>>              }
>> -            if(in != null) {
>> +            if (in != null) {
>>                  try {
>>                      Properties props = new Properties();
>>                      props.load(in);
>> -                    String encryped = 
>> props.getProperty("login."+useURI);
>> -                    if(encryped != null) {
>> -                        if(encryped.startsWith("{Standard}")) {
>> +                    String encryped = props.getProperty("login." + 
>> useURI);
>> +                    if (encryped != null) {
>> +                        if (encryped.startsWith("{Standard}")) {
>>                              SavedAuthentication auth = 
>> (SavedAuthentication) SimpleEncryption.decrypt(encryped.substring(10));
>> -                            if(auth.uri.equals(useURI)) {
>> +                            if (auth.uri.equals(useURI)) {
>>                                  user = auth.user;
>>                                  password = new String(auth.password);
>>                              }
>> -                        } else if(encryped.startsWith("{Plain}")) {
>> +                        } else if (encryped.startsWith("{Plain}")) {
>>                              int pos = encryped.indexOf("/");
>>                              user = encryped.substring(7, pos);
>> -                            password = encryped.substring(pos+1);
>> +                            password = encryped.substring(pos + 1);
>>                          } else {
>>                              
>> System.out.print(DeployUtils.reformat("Unknown encryption used in 
>> saved login file", 4, 72));
>>                          }
>>                      }
>>                  } catch (IOException e) {
>> -                    System.out.print(DeployUtils.reformat("Unable to 
>> read authentication from saved login file: "+e.getMessage(), 4, 72));
>> +                    System.out.print(DeployUtils.reformat("Unable to 
>> read authentication from saved login file: " + e.getMessage(), 4, 72));
>>                  } finally {
>> -                    try {in.close();}catch(IOException e) {}
>> +                    try {
>> +                        in.close();
>> +                    } catch (IOException e) {
>> +                    }
>>                  }
>>              }
>>          }
>>  
>> -        if(authPrompt && !useURI.equals(DEFAULT_URI) && user == null 
>> && password == null) {
>> +        if (authPrompt && !useURI.equals(DEFAULT_URI) && user == null 
>> && password == null) {
>>              // Non-standard URI, but no authentication information
>>              doAuthPromptAndRetry(useURI, user, password);
>>              return;
>> @@ -262,15 +290,15 @@
>>              try {
>>                  manager = mgr.getDeploymentManager(useURI, user, 
>> password);
>>                  auth = new SavedAuthentication(useURI, user, password 
>> == null ? null : password.toCharArray());
>> -            } catch(AuthenticationFailedException e) { // server's 
>> there, you just can't talk to it
>> -                if(authPrompt) {
>> +            } catch (AuthenticationFailedException e) { // server's 
>> there, you just can't talk to it
>> +                if (authPrompt) {
>>                      doAuthPromptAndRetry(useURI, user, password);
>>                      return;
>>                  } else {
>>                      throw new DeploymentException("Login Failed");
>>                  }
>> -            } catch(DeploymentManagerCreationException e) {
>> -                throw new DeploymentException("Unable to connect to 
>> server at "+useURI+" -- "+e.getMessage());
>> +            } catch (DeploymentManagerCreationException e) {
>> +                throw new DeploymentException("Unable to connect to 
>> server at " + useURI + " -- " + e.getMessage());
>>              }
>>          }
>>  
>> @@ -282,37 +310,37 @@
>>  
>>      private void loadDriver(String driver, DeploymentFactoryManager 
>> mgr) throws DeploymentException {
>>          File file = new File(driver);
>> -        if(!file.exists() || !file.canRead() || 
>> !DeployUtils.isJarFile(file)) {
>> -            throw new DeploymentSyntaxException("Driver 
>> '"+file.getAbsolutePath()+"' is not a readable JAR file");
>> +        if (!file.exists() || !file.canRead() || 
>> !DeployUtils.isJarFile(file)) {
>> +            throw new DeploymentSyntaxException("Driver '" + 
>> file.getAbsolutePath() + "' is not a readable JAR file");
>>          }
>>          String className = null;
>>          try {
>>              JarFile jar = new JarFile(file);
>>              className = 
>> jar.getManifest().getMainAttributes().getValue("J2EE-DeploymentFactory-Implementation-Class"); 
>>
>> -            if(className == null) {
>> -                throw new DeploymentException("The driver JAR 
>> "+file.getAbsolutePath()+" does not specify a 
>> J2EE-DeploymentFactory-Implementation-Class; cannot load driver.");
>> +            if (className == null) {
>> +                throw new DeploymentException("The driver JAR " + 
>> file.getAbsolutePath() + " does not specify a 
>> J2EE-DeploymentFactory-Implementation-Class; cannot load driver.");
>>              }
>>              jar.close();
>>              DeploymentFactory factory = (DeploymentFactory) 
>> Class.forName(className).newInstance();
>>              mgr.registerDeploymentFactory(factory);
>> -        } catch(DeploymentException e) {
>> +        } catch (DeploymentException e) {
>>              throw e;
>> -        } catch(Exception e) {
>> -            throw new DeploymentSyntaxException("Unable to load 
>> driver class "+className+" from JAR "+file.getAbsolutePath(), e);
>> +        } catch (Exception e) {
>> +            throw new DeploymentSyntaxException("Unable to load 
>> driver class " + className + " from JAR " + file.getAbsolutePath(), e);
>>          }
>>      }
>>  
>>      private void doAuthPromptAndRetry(String uri, String user, String 
>> password) throws DeploymentException {
>>          try {
>> -            if(user == null) {
>> +            if (user == null) {
>>                  out.print("Username: ");
>>                  out.flush();
>>                  user = in.readLine();
>>              }
>> -            if(password == null) {
>> +            if (password == null) {
>>                  password = new PasswordPrompt("Password: ", 
>> out).getPassword(in);
>>              }
>> -        } catch(IOException e) {
>> +        } catch (IOException e) {
>>              throw new DeploymentException("Unable to prompt for 
>> login", e);
>>          }
>>          tryToConnect(uri, null, user, password, false);
>> @@ -349,13 +377,13 @@
>>              int priority = Thread.currentThread().getPriority();
>>              try {
>>                  Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
>> -                String fullPrompt = "\r"+prompt+"          
>> "+"\r"+prompt;
>> +                String fullPrompt = "\r" + prompt + "          " + 
>> "\r" + prompt;
>>                  StringBuffer clearline = new StringBuffer();
>>                  clearline.append('\r');
>> -                for(int i=prompt.length()+10; i>=0; i--) {
>> +                for (int i = prompt.length() + 10; i >= 0; i--) {
>>                      clearline.append(' ');
>>                  }
>> -                while(!done) {
>> +                while (!done) {
>>                      out.print(fullPrompt);
>>                      out.flush();
>>                      Thread.sleep(1);
>> @@ -377,7 +405,7 @@
>>           * the entered password.  For this to make sense, the input 
>> reader
>>           * here must be part of the same console as the output writer 
>> passed
>>           * to the constructor.
>> -         *
>> +         * <p/>
>>           * For higher security, should return a char[], but that will 
>> just
>>           * be defeated by the JSR-88 call that takes a String anyway, so
>>           * why bother?
>>
>> Modified: 
>> geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentConfigurationManager.java 
>>
>> URL: 
>> http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentConfigurationManager.java?rev=405881&r1=405880&r2=405881&view=diff 
>>
>> ============================================================================== 
>>
>> --- 
>> geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentConfigurationManager.java 
>> (original)
>> +++ 
>> geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentConfigurationManager.java 
>> Fri May 12 14:29:24 2006
>> @@ -84,6 +84,16 @@
>>          return super.getArtifactResolver();
>>      }
>>  
>> +    /**
>> +     * This configuration manager never starts any configurations
>> +     * @return false
>> +     */
>> +    public boolean isOnline() {
>> +        return false;
>> +    }
>> +
>> +    public void setOnline(boolean online) {
>> +    }
>>  
>>      //
>>      // LOAD
>>
>> Modified: 
>> geronimo/branches/1.1/modules/deployment/src/test/org/apache/geronimo/deployment/SingleFileHotDeployerTest.java 
>>
>> URL: 
>> http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/deployment/src/test/org/apache/geronimo/deployment/SingleFileHotDeployerTest.java?rev=405881&r1=405880&r2=405881&view=diff 
>>
>> ============================================================================== 
>>
>> --- 
>> geronimo/branches/1.1/modules/deployment/src/test/org/apache/geronimo/deployment/SingleFileHotDeployerTest.java 
>> (original)
>> +++ 
>> geronimo/branches/1.1/modules/deployment/src/test/org/apache/geronimo/deployment/SingleFileHotDeployerTest.java 
>> Fri May 12 14:29:24 2006
>> @@ -453,5 +453,12 @@
>>          public ArtifactResolver getArtifactResolver() {
>>              return artifactResolver;
>>          }
>> +
>> +        public boolean isOnline() {
>> +            return true;
>> +        }
>> +
>> +        public void setOnline(boolean online) {
>> +        }
>>      }
>>  }
>>
>> Modified: geronimo/branches/1.1/modules/kernel/project.xml
>> URL: 
>> http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/project.xml?rev=405881&r1=405880&r2=405881&view=diff 
>>
>> ============================================================================== 
>>
>> --- geronimo/branches/1.1/modules/kernel/project.xml (original)
>> +++ geronimo/branches/1.1/modules/kernel/project.xml Fri May 12 
>> 14:29:24 2006
>> @@ -103,33 +103,4 @@
>>          </dependency>
>>      </dependencies>
>>  
>> -    <build>
>> -        <resources>
>> -            <resource>
>> -                <directory>${basedir}/src/java</directory>
>> -                <includes>
>> -                    <include>**/*.xml</include>
>> -                    <include>**/*.properties</include>
>> -                </includes>
>> -            </resource>
>> -        </resources>
>> -        <unitTest>
>> -            <includes>
>> -                <include>**/*Test.java</include>
>> -            </includes>
>> -            <excludes>
>> -                <exclude>**/Abstract*.java</exclude>
>> -            </excludes>
>> -            <resources>
>> -                <resource>
>> -                    
>> <directory>${basedir}/target/test-xdoclet/jmx/org/apache/geronimo/tools/xdoclet</directory> 
>>
>> -                    
>> <targetPath>org/apache/geronimo/tools/xdoclet</targetPath>
>> -                    <includes>
>> -                        <include>*.xml</include>
>> -                    </includes>
>> -                </resource>
>> -            </resources>
>> -        </unitTest>
>> -    </build>
>> -
>>  </project>
>>
>> Modified: 
>> geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java 
>>
>> URL: 
>> http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java?rev=405881&r1=405880&r2=405881&view=diff 
>>
>> ============================================================================== 
>>
>> --- 
>> geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java 
>> (original)
>> +++ 
>> geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java 
>> Fri May 12 14:29:24 2006
>> @@ -463,4 +463,13 @@
>>       * configuration manager, etc.
>>       */
>>      ArtifactResolver getArtifactResolver();
>> +
>> +    /**
>> +     * Online means full functionality.  Offline typically means that 
>> configurations will never be started,
>> +     * although they may be marked in the persistent configuration list.
>> +     *
>> +     * @return online status of ConfigurationManager
>> +     */
>> +    boolean isOnline();
>> +    void setOnline(boolean online);
>>  }
>>
>> Modified: 
>> geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/KernelConfigurationManager.java 
>>
>> URL: 
>> http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/KernelConfigurationManager.java?rev=405881&r1=405880&r2=405881&view=diff 
>>
>> ============================================================================== 
>>
>> --- 
>> geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/KernelConfigurationManager.java 
>> (original)
>> +++ 
>> geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/KernelConfigurationManager.java 
>> Fri May 12 14:29:24 2006
>> @@ -57,6 +57,7 @@
>>      private final ArtifactManager artifactManager;
>>      protected final ClassLoader classLoader;
>>      private final ShutdownHook shutdownHook;
>> +    private boolean online = true;
>>  
>>      public KernelConfigurationManager(Kernel kernel,
>>              Collection stores,
>> @@ -178,11 +179,21 @@
>>      }
>>  
>>      public void start(Configuration configuration) throws 
>> InvalidConfigException {
>> -        
>> ConfigurationUtil.startConfigurationGBeans(configuration.getAbstractName(), 
>> configuration, kernel);
>> +        if (online) {
>> +            
>> ConfigurationUtil.startConfigurationGBeans(configuration.getAbstractName(), 
>> configuration, kernel);
>> +        }
>>  
>>          if (configurationList != null && 
>> configuration.getConfigurationData().isAutoStart()) {
>>              configurationList.startConfiguration(configuration.getId());
>>          }
>> +    }
>> +
>> +    public boolean isOnline() {
>> +        return online;
>> +    }
>> +
>> +    public void setOnline(boolean online) {
>> +        this.online = online;
>>      }
>>  
>>      protected void stop(Configuration configuration) {
>>
>> Modified: 
>> geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/MultiParentClassLoader.java 
>>
>> URL: 
>> http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/MultiParentClassLoader.java?rev=405881&r1=405880&r2=405881&view=diff 
>>
>> ============================================================================== 
>>
>> --- 
>> geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/MultiParentClassLoader.java 
>> (original)
>> +++ 
>> geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/MultiParentClassLoader.java 
>> Fri May 12 14:29:24 2006
>> @@ -246,7 +246,7 @@
>>              }
>>          }
>>  
>> -        throw new ClassNotFoundException(name);
>> +        throw new ClassNotFoundException(name + " in classloader " + 
>> id);
>>      }
>>  
>>      private boolean isNonOverridableClass(String name) {
>>
>> Modified: 
>> geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java 
>>
>> URL: 
>> http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java?rev=405881&r1=405880&r2=405881&view=diff 
>>
>> ============================================================================== 
>>
>> --- 
>> geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java 
>> (original)
>> +++ 
>> geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java 
>> Fri May 12 14:29:24 2006
>> @@ -1226,6 +1226,17 @@
>>          return artifactResolver;
>>      }
>>  
>> +    /**
>> +     * this configuration manager never starts configurations.
>> +     * @return false
>> +     */
>> +    public boolean isOnline() {
>> +        return false;
>> +    }
>> +
>> +    public void setOnline(boolean online) {
>> +    }
>> +
>>      private List getStoreList() {
>>          return new ArrayList(stores);
>>      }
>>
>> Modified: 
>> geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLine.java 
>>
>> URL: 
>> http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLine.java?rev=405881&r1=405880&r2=405881&view=diff 
>>
>> ============================================================================== 
>>
>> --- 
>> geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLine.java 
>> (original)
>> +++ 
>> geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLine.java 
>> Fri May 12 14:29:24 2006
>> @@ -20,6 +20,9 @@
>>  import java.io.InputStream;
>>  import java.util.Iterator;
>>  import java.util.List;
>> +import java.util.Enumeration;
>> +import java.net.URL;
>> +
>>  import javax.management.ObjectName;
>>  
>>  import org.apache.commons.logging.Log;
>> @@ -31,6 +34,9 @@
>>  import org.apache.geronimo.kernel.KernelFactory;
>>  import org.apache.geronimo.kernel.config.ConfigurationManager;
>>  import org.apache.geronimo.kernel.config.ConfigurationUtil;
>> +import org.apache.geronimo.kernel.config.NoSuchConfigException;
>> +import org.apache.geronimo.kernel.config.LifecycleException;
>> +import org.apache.geronimo.kernel.config.ConfigurationData;
>>  import org.apache.geronimo.kernel.log.GeronimoLogging;
>>  import org.apache.geronimo.kernel.repository.Artifact;
>>  import org.apache.geronimo.gbean.AbstractName;
>> @@ -61,7 +67,7 @@
>>              // the interesting entries from the manifest
>>              CommandLineManifest manifest = 
>> CommandLineManifest.getManifestEntries();
>>              List configurations = manifest.getConfigurations();
>> -            ObjectName mainGBean = manifest.getMainGBean();
>> +            AbstractName mainGBean = manifest.getMainGBean();
>>              String mainMethod = manifest.getMainMethod();
>>  
>>              new CommandLine().invokeMainGBean(configurations, 
>> mainGBean, mainMethod, args);
>> @@ -78,34 +84,9 @@
>>      private Kernel kernel;
>>      private AbstractName configurationName;
>>  
>> -    /**
>> -     * @deprecated use the next one with AbstractName
>> -     *
>> -     * @param configurations
>> -     * @param mainGBean
>> -     * @param mainMethod
>> -     * @param args
>> -     * @throws Exception
>> -     */
>> -    public void invokeMainGBean(List configurations, ObjectName 
>> mainGBean, String mainMethod, String[] args) throws Exception {
>> -        startKernel(configurations);
>> -
>> -        log.info("Server startup completed");
>> -
>> -        // invoke the main method
>> -        kernel.invoke(
>> -                mainGBean,
>> -                mainMethod,
>> -                new Object[]{args},
>> -                new String[]{String[].class.getName()});
>> -
>> -        log.info("Server shutdown begun");
>> -
>> -        stopKernel();
>> -    }
>> -
>>      public void invokeMainGBean(List configurations, AbstractName 
>> mainGBean, String mainMethod, String[] args) throws Exception {
>> -        startKernel(configurations);
>> +        startKernel();
>> +        loadConfigurations(configurations);
>>  
>>          log.info("Server startup completed");
>>  
>> @@ -121,7 +102,7 @@
>>          stopKernel();
>>      }
>>  
>> -    protected void startKernel(List configurations) throws Exception {
>> +    protected void startKernel() throws Exception {
>>          ClassLoader classLoader = CommandLine.class.getClassLoader();
>>          InputStream in = 
>> classLoader.getResourceAsStream("META-INF/config.ser");
>>  
>> @@ -132,6 +113,31 @@
>>          // load the configuration
>>          configurationName = 
>> ConfigurationUtil.loadBootstrapConfiguration(kernel, in, classLoader);
>>  
>> +    }
>> +
>> +    protected void startKernel(Artifact moduleId) throws Exception {
>> +        // boot the kernel
>> +        kernel = KernelFactory.newInstance().createKernel("geronimo");
>> +        kernel.boot();
>> +        ClassLoader classLoader = CommandLine.class.getClassLoader();
>> +        for (Enumeration modules = 
>> classLoader.getResources("META-INF/config.ser"); 
>> modules.hasMoreElements(); ) {
>> +            URL moduleDataURL = (URL) modules.nextElement();
>> +            InputStream in = moduleDataURL.openStream();
>> +            try {
>> +                ConfigurationData moduleData = 
>> ConfigurationUtil.readConfigurationData(in);
>> +                if (moduleId.matches(moduleData.getId())) {
>> +                    // load the configuration
>> +                    configurationName = 
>> ConfigurationUtil.loadBootstrapConfiguration(kernel, moduleData, 
>> classLoader);
>> +                    return;
>> +                }
>> +            } finally {
>> +                in.close();
>> +            }
>> +        }
>> +        throw new NoSuchConfigException(moduleId);
>> +    }
>> +
>> +    protected void loadConfigurations(List configurations) throws 
>> NoSuchConfigException, LifecycleException {
>>          // load and start the configurations
>>          ConfigurationManager configurationManager = 
>> ConfigurationUtil.getConfigurationManager(kernel);
>>          try {
>>
>> Modified: 
>> geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLineManifest.java 
>>
>> URL: 
>> http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLineManifest.java?rev=405881&r1=405880&r2=405881&view=diff 
>>
>> ============================================================================== 
>>
>> --- 
>> geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLineManifest.java 
>> (original)
>> +++ 
>> geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLineManifest.java 
>> Fri May 12 14:29:24 2006
>> @@ -30,6 +30,8 @@
>>  import javax.management.ObjectName;
>>  import javax.management.MalformedObjectNameException;
>>  
>> +import org.apache.geronimo.gbean.AbstractName;
>> +
>>  /**
>>   *
>>   *
>> @@ -65,11 +67,11 @@
>>          // get the main gbean class
>>          String mainGBeanString = mainAttributes.getValue(MAIN_GBEAN);
>>  
>> -        ObjectName mainGBean = null;
>> +        AbstractName mainGBean = null;
>>          if(mainGBeanString != null) {
>>              try {
>> -                mainGBean = new ObjectName(mainGBeanString);
>> -            } catch (MalformedObjectNameException e) {
>> +                mainGBean = new AbstractName(new URI(mainGBeanString));
>> +            } catch (URISyntaxException e) {
>>                  System.err.println("Invalid Main-GBean name: " + 
>> mainGBeanString);
>>                  System.exit(1);
>>                  throw new AssertionError();
>> @@ -119,13 +121,13 @@
>>          return commandLineManifest;
>>      }
>>  
>> -    private final ObjectName mainGBean;
>> +    private final AbstractName mainGBean;
>>      private final String mainMethod;
>>      private final List configurations;
>>      private final List endorsedDirs;
>>      private final List extensionDirs;
>>  
>> -    public CommandLineManifest(ObjectName mainGBean, String 
>> mainMethod, List configurations, List endorsedDirs, List extensionDirs) {
>> +    public CommandLineManifest(AbstractName mainGBean, String 
>> mainMethod, List configurations, List endorsedDirs, List extensionDirs) {
>>          this.mainGBean = mainGBean;
>>          this.mainMethod = mainMethod;
>>          this.configurations = 
>> Collections.unmodifiableList(configurations);
>> @@ -133,7 +135,7 @@
>>          this.extensionDirs = extensionDirs;
>>      }
>>  
>> -    public ObjectName getMainGBean() {
>> +    public AbstractName getMainGBean() {
>>          return mainGBean;
>>      }
>>  
>>
>> Modified: 
>> geronimo/branches/1.1/modules/system/src/test/org/apache/geronimo/system/plugin/PluginInstallerTest.java 
>>
>> URL: 
>> http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/system/src/test/org/apache/geronimo/system/plugin/PluginInstallerTest.java?rev=405881&r1=405880&r2=405881&view=diff 
>>
>> ============================================================================== 
>>
>> --- 
>> geronimo/branches/1.1/modules/system/src/test/org/apache/geronimo/system/plugin/PluginInstallerTest.java 
>> (original)
>> +++ 
>> geronimo/branches/1.1/modules/system/src/test/org/apache/geronimo/system/plugin/PluginInstallerTest.java 
>> Fri May 12 14:29:24 2006
>> @@ -123,6 +123,7 @@
>>      }
>>  
>>      private static class MockConfigManager implements 
>> ConfigurationManager {
>> +
>>          public boolean isInstalled(Artifact configurationId) {
>>              return false;
>>          }
>> @@ -253,6 +254,13 @@
>>  
>>          public ArtifactResolver getArtifactResolver() {
>>              return null;
>> +        }
>> +
>> +        public boolean isOnline() {
>> +            return true;
>> +        }
>> +
>> +        public void setOnline(boolean online) {
>>          }
>>      }
>>  }
>>
>> Modified: 
>> geronimo/branches/1.1/plugins/geronimo-assembly-plugin/plugin.jelly
>> URL: 
>> http://svn.apache.org/viewcvs/geronimo/branches/1.1/plugins/geronimo-assembly-plugin/plugin.jelly?rev=405881&r1=405880&r2=405881&view=diff 
>>
>> ============================================================================== 
>>
>> --- 
>> geronimo/branches/1.1/plugins/geronimo-assembly-plugin/plugin.jelly 
>> (original)
>> +++ 
>> geronimo/branches/1.1/plugins/geronimo-assembly-plugin/plugin.jelly 
>> Fri May 12 14:29:24 2006
>> @@ -43,6 +43,10 @@
>>          <ant:mkdir dir="${geronimo.assembly.dest}/var/config"/>
>>          <velocity:merge basedir="${geronimo.assembly.src}/var/config" 
>> template="config.xml"
>>                          
>> name="${geronimo.assembly.dest}/var/config/config.xml"/>
>> +        <velocity:merge basedir="${geronimo.assembly.src}/var/config" 
>> template="config.xml"
>> +                        
>> name="${geronimo.assembly.dest}/var/config/config.xml.original"/>
>> +        <velocity:merge basedir="${geronimo.assembly.src}/var/config" 
>> template="offline-deployer-list"
>> +                        
>> name="${geronimo.assembly.dest}/var/config/offline-deployer-list"/>
>>      </goal>
>>  
>>      <goal name="assemble:assemble-lib">
>>
>> Modified: 
>> geronimo/branches/1.1/plugins/geronimo-assembly-plugin/project.xml
>> URL: 
>> http://svn.apache.org/viewcvs/geronimo/branches/1.1/plugins/geronimo-assembly-plugin/project.xml?rev=405881&r1=405880&r2=405881&view=diff 
>>
>> ============================================================================== 
>>
>> --- geronimo/branches/1.1/plugins/geronimo-assembly-plugin/project.xml 
>> (original)
>> +++ geronimo/branches/1.1/plugins/geronimo-assembly-plugin/project.xml 
>> Fri May 12 14:29:24 2006
>> @@ -23,7 +23,7 @@
>>      <id>geronimo-assembly-plugin</id>
>>      <name>Geronimo :: Maven Assembly Plugin</name>
>>      <description>A plugin used to assemble a distribution of 
>> Geronimo</description>
>> -    <currentVersion>1.1.0-11</currentVersion>
>> +    <currentVersion>1.1.0-12</currentVersion>
>>  
>>      <dependencies>
>>          <dependency>
>>
>>
>>
>>
> 

-- 
Joe Bohn
joe.bohn at earthlink.net

"He is no fool who gives what he cannot keep, to gain what he cannot 
lose."   -- Jim Elliot

Re: svn commit: r405881 - in /geronimo/branches/1.1: assemblies/j2ee-jetty-server/src/var/config/assemblies/j2ee-tomcat-server/src/var/config/ assemblies/minimal-jetty-server/src/var/config/assemblies/minimal-tomcat-server/src/var/config/ etc/ modules/de.

Posted by Jason Dillon <ja...@planet57.com>.
More reason we need our own repo to track jars. 

--jason


-----Original Message-----
From: Joe Bohn <jo...@earthlink.net>
Date: Tue, 16 May 2006 15:58:24 
To:dev@geronimo.apache.org
Subject: Re: svn commit: r405881 - in /geronimo/branches/1.1: assemblies/j2ee-jetty-server/src/var/config/
 assemblies/j2ee-tomcat-server/src/var/config/ assemblies/minimal-jetty-server/src/var/config/
 assemblies/minimal-tomcat-server/src/var/config/ etc/ modules/de...

Was it intended that this change would upgrade howl to 1.0.1?

I know this was discussed with the package upgrades and David even 
mentioned that the jar wasn't published on any of the repos yet.  That's 
the last I can find on the topic.

It is in fact causing a problem since this version can't be found on any 
of the repos.

Joe



djencks@apache.org wrote:
> Author: djencks
> Date: Fri May 12 14:29:24 2006
> New Revision: 405881
> 
> URL: http://svn.apache.org/viewcvs?rev=405881&view=rev
> Log:
> GERONIMO-1507 offline deployer.  Also GERONIMO-1861 make a backup copy of config.xml
> 
> Added:
>     geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/offline-deployer-list
>     geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/offline-deployer-list
>     geronimo/branches/1.1/assemblies/minimal-jetty-server/src/var/config/offline-deployer-list
>     geronimo/branches/1.1/assemblies/minimal-tomcat-server/src/var/config/offline-deployer-list
>     geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/LocalServer.java
> Removed:
>     geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/GBeanDataRegistry.java
> Modified:
>     geronimo/branches/1.1/etc/explicit_versions.properties
>     geronimo/branches/1.1/etc/project.properties
>     geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/ServerConnection.java
>     geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentConfigurationManager.java
>     geronimo/branches/1.1/modules/deployment/src/test/org/apache/geronimo/deployment/SingleFileHotDeployerTest.java
>     geronimo/branches/1.1/modules/kernel/project.xml
>     geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java
>     geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/KernelConfigurationManager.java
>     geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/MultiParentClassLoader.java
>     geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java
>     geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLine.java
>     geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLineManifest.java
>     geronimo/branches/1.1/modules/system/src/test/org/apache/geronimo/system/plugin/PluginInstallerTest.java
>     geronimo/branches/1.1/plugins/geronimo-assembly-plugin/plugin.jelly
>     geronimo/branches/1.1/plugins/geronimo-assembly-plugin/project.xml
> 
> Added: geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/offline-deployer-list
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/offline-deployer-list?rev=405881&view=auto
> ==============================================================================
> --- geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/offline-deployer-list (added)
> +++ geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/offline-deployer-list Fri May 12 14:29:24 2006
> @@ -0,0 +1,7 @@
> +#list of deployers to be started for offline deployment
> +geronimo/geronimo-gbean-deployer/${pom.currentVersion}/car
> +geronimo/j2ee-deployer/${pom.currentVersion}/car
> +geronimo/openejb-deployer/${pom.currentVersion}/car
> +geronimo/client-deployer/${pom.currentVersion}/car
> +geronimo/axis-deployer/${pom.currentVersion}/car
> +geronimo/jetty-deployer/${pom.currentVersion}/car
> 
> Added: geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/offline-deployer-list
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/offline-deployer-list?rev=405881&view=auto
> ==============================================================================
> --- geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/offline-deployer-list (added)
> +++ geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/offline-deployer-list Fri May 12 14:29:24 2006
> @@ -0,0 +1,7 @@
> +#list of deployers to be started for offline deployment
> +geronimo/geronimo-gbean-deployer/${pom.currentVersion}/car
> +geronimo/j2ee-deployer/${pom.currentVersion}/car
> +geronimo/openejb-deployer/${pom.currentVersion}/car
> +geronimo/client-deployer/${pom.currentVersion}/car
> +geronimo/axis-deployer/${pom.currentVersion}/car
> +geronimo/tomcat-deployer/${pom.currentVersion}/car
> 
> Added: geronimo/branches/1.1/assemblies/minimal-jetty-server/src/var/config/offline-deployer-list
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/assemblies/minimal-jetty-server/src/var/config/offline-deployer-list?rev=405881&view=auto
> ==============================================================================
> --- geronimo/branches/1.1/assemblies/minimal-jetty-server/src/var/config/offline-deployer-list (added)
> +++ geronimo/branches/1.1/assemblies/minimal-jetty-server/src/var/config/offline-deployer-list Fri May 12 14:29:24 2006
> @@ -0,0 +1,7 @@
> +#list of deployers to be started for offline deployment
> +geronimo/geronimo-gbean-deployer/${pom.currentVersion}/car
> +geronimo/j2ee-deployer/${pom.currentVersion}/car
> +geronimo/jetty-deployer/${pom.currentVersion}/car
> +geronimo/unavailable-ejb-deployer/${pom.currentVersion}/car
> +geronimo/unavailable-webservices-deployer/${pom.currentVersion}/car
> +geronimo/unavailable-client-deployer/${pom.currentVersion}/car
> 
> Added: geronimo/branches/1.1/assemblies/minimal-tomcat-server/src/var/config/offline-deployer-list
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/assemblies/minimal-tomcat-server/src/var/config/offline-deployer-list?rev=405881&view=auto
> ==============================================================================
> --- geronimo/branches/1.1/assemblies/minimal-tomcat-server/src/var/config/offline-deployer-list (added)
> +++ geronimo/branches/1.1/assemblies/minimal-tomcat-server/src/var/config/offline-deployer-list Fri May 12 14:29:24 2006
> @@ -0,0 +1,7 @@
> +#list of deployers to be started for offline deployment
> +geronimo/geronimo-gbean-deployer/${pom.currentVersion}/car
> +geronimo/j2ee-deployer/${pom.currentVersion}/car
> +geronimo/tomcat-deployer/${pom.currentVersion}/car
> +geronimo/unavailable-ejb-deployer/${pom.currentVersion}/car
> +geronimo/unavailable-webservices-deployer/${pom.currentVersion}/car
> +geronimo/unavailable-client-deployer/${pom.currentVersion}/car
> 
> Modified: geronimo/branches/1.1/etc/explicit_versions.properties
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/etc/explicit_versions.properties?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/etc/explicit_versions.properties (original)
> +++ geronimo/branches/1.1/etc/explicit_versions.properties Fri May 12 14:29:24 2006
> @@ -42,7 +42,7 @@
>  dom4j///=1.4
>  dwr///=1.0
>  eclipse_compiler///=3.0.1
> -howl///=0.1.11
> +howl///=1.0.1
>  #security:
>  hsqldb///=1.7.2.2
>  jasper///=5.5.15
> 
> Modified: geronimo/branches/1.1/etc/project.properties
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/etc/project.properties?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/etc/project.properties (original)
> +++ geronimo/branches/1.1/etc/project.properties Fri May 12 14:29:24 2006
> @@ -97,7 +97,7 @@
>  release_notes_version=1.0
>  
>  geronimo_packaging_plugin_version=1.1.0-8
> -geronimo_assembly_plugin_version=1.1.0-11
> +geronimo_assembly_plugin_version=1.1.0-12
>  geronimo_deployment_plugin_version=1.1.0-3
>  geronimo_dependency_plugin_version=1.1.0-3
>  
> @@ -153,7 +153,7 @@
>  dom4j_version=1.4
>  dwr_version=1.1.1
>  eclipse_compiler_version=3.0.1
> -howl_version=0.1.11
> +howl_version=1.0.1
>  #security:
>  hsqldb_version=1.7.2.2
>  jasper_version=5.5.15
> 
> Added: geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/LocalServer.java
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/LocalServer.java?rev=405881&view=auto
> ==============================================================================
> --- geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/LocalServer.java (added)
> +++ geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/LocalServer.java Fri May 12 14:29:24 2006
> @@ -0,0 +1,80 @@
> +/**
> + *
> + * Copyright 2006 The Apache Software Foundation
> + *
> + *  Licensed 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.geronimo.deployment.cli;
> +
> +import java.io.BufferedReader;
> +import java.io.File;
> +import java.io.FileReader;
> +import java.io.IOException;
> +import java.util.ArrayList;
> +import java.util.Iterator;
> +import java.util.List;
> +import java.util.Set;
> +import java.util.regex.Matcher;
> +import java.util.regex.Pattern;
> +
> +import org.apache.geronimo.gbean.AbstractName;
> +import org.apache.geronimo.gbean.AbstractNameQuery;
> +import org.apache.geronimo.kernel.GBeanNotFoundException;
> +import org.apache.geronimo.kernel.Kernel;
> +import org.apache.geronimo.kernel.config.PersistentConfigurationList;
> +import org.apache.geronimo.kernel.repository.Artifact;
> +import org.apache.geronimo.system.main.CommandLine;
> +import org.apache.geronimo.system.serverinfo.ServerInfo;
> +
> +/**
> + * @version $Rev:$ $Date:$
> + */
> +public class LocalServer extends CommandLine {
> +
> +    public LocalServer(String configListLocation) throws Exception {
> +        startKernel(Artifact.create("geronimo/j2ee-system//car"));
> +        Runtime.getRuntime().addShutdownHook(new Thread("Geronimo shutdown thread") {
> +            public void run() {
> +                getKernel().shutdown();
> +            }
> +        });
> +        List configs = getConfigurationList(configListLocation);
> +        loadConfigurations(configs);
> +    }
> +
> +    public Kernel getKernel() {
> +        return super.getKernel();
> +    }
> +
> +    protected List getConfigurationList(String path) throws GBeanNotFoundException, IOException {
> +        ServerInfo serverInfo = (ServerInfo) getKernel().getGBean(ServerInfo.class);
> +        File configFile = serverInfo.resolve(path);
> +        List modules = new ArrayList();
> +        BufferedReader in = new BufferedReader(new FileReader(configFile));
> +        try {
> +            String artifactString;
> +            while ((artifactString = in.readLine()) != null) {
> +                artifactString = artifactString.trim();
> +                if (!artifactString.startsWith("#") && artifactString.length() > 0) {
> +                    Artifact artifact = Artifact.create(artifactString);
> +                    modules.add(artifact);
> +                }
> +            }
> +        } finally {
> +            in.close();
> +        }
> +        return modules;
> +    }
> +
> +}
> 
> Modified: geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/ServerConnection.java
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/ServerConnection.java?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/ServerConnection.java (original)
> +++ geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/ServerConnection.java Fri May 12 14:29:24 2006
> @@ -31,6 +31,7 @@
>  import java.util.Map;
>  import java.util.Properties;
>  import java.util.jar.JarFile;
> +
>  import javax.enterprise.deploy.shared.factories.DeploymentFactoryManager;
>  import javax.enterprise.deploy.spi.DeploymentManager;
>  import javax.enterprise.deploy.spi.exceptions.DeploymentManagerCreationException;
> @@ -40,7 +41,12 @@
>  import org.apache.geronimo.deployment.plugin.factories.AuthenticationFailedException;
>  import org.apache.geronimo.deployment.plugin.factories.DeploymentFactoryImpl;
>  import org.apache.geronimo.deployment.plugin.jmx.JMXDeploymentManager;
> +import org.apache.geronimo.deployment.plugin.jmx.LocalDeploymentManager;
>  import org.apache.geronimo.util.SimpleEncryption;
> +import org.apache.geronimo.kernel.Kernel;
> +import org.apache.geronimo.kernel.config.ConfigurationManager;
> +import org.apache.geronimo.kernel.config.ConfigurationUtil;
> +import org.apache.geronimo.kernel.config.KernelConfigurationManager;
>  
>  /**
>   * Supports online connections to the server, via JSR-88, valid only
> @@ -50,6 +56,7 @@
>   */
>  public class ServerConnection {
>      private final static Map OPTION_HELP = new LinkedHashMap(9);
> +
>      static {
>          OPTION_HELP.put("--uri", "A URI to contact the server.  If not specified, the deployer defaults to " +
>                  "operating on a Geronimo server running on the standard port on localhost.\n" +
> @@ -69,7 +76,9 @@
>          OPTION_HELP.put("--password", "Specifies a password to use to authenticate to the server.");
>          OPTION_HELP.put("--syserr", "Enables error logging to syserr.  Disabled by default.");
>          OPTION_HELP.put("--verbose", "Enables verbose execution mode.  Disabled by default.");
> +        OPTION_HELP.put("--offline", "Deploy offline to a local server, using whatever deployers are available in the local server");
>      }
> +
>      public static Map getOptionHelp() {
>          return OPTION_HELP;
>      }
> @@ -80,19 +89,18 @@
>       * argument).  For example, if the arguments were "--user bob foo" then
>       * this should return true for "--user" and "bob" and false for "foo".
>       *
> -     * @param args The previous arguments on the command line
> +     * @param args   The previous arguments on the command line
>       * @param option The argument we're checking at the moment
> -     *
>       * @return True if the argument we're checking is part of a general argument
>       */
>      public static boolean isGeneralOption(List args, String option) {
> -        if(OPTION_HELP.containsKey(option) || option.equals("--url")) {
> +        if (OPTION_HELP.containsKey(option) || option.equals("--url")) {
>              return true;
>          }
> -        if(args.size() == 0) {
> +        if (args.size() == 0) {
>              return false;
>          }
> -        String last = (String) args.get(args.size()-1);
> +        String last = (String) args.get(args.size() - 1);
>          return last.equals("--uri") || last.equals("--url") || last.equals("--driver") || last.equals("--user") ||
>                  last.equals("--password") || last.equals("--host") || last.equals("--port");
>      }
> @@ -111,62 +119,64 @@
>          Integer port = null;
>          this.out = out;
>          this.in = in;
> -        for(int i = 0; i < args.length; i++) {
> +        boolean offline = false;
> +        for (int i = 0; i < args.length; i++) {
>              String arg = args[i];
> -            if(arg.equals("--uri") || arg.equals("--url")) {
> -                if(uri != null) {
> +            if (arg.equals("--uri") || arg.equals("--url")) {
> +                if (uri != null) {
>                      throw new DeploymentSyntaxException("Cannot specify more than one URI");
> -                } else if(i >= args.length-1) {
> +                } else if (i >= args.length - 1) {
>                      throw new DeploymentSyntaxException("Must specify a URI (e.g. --uri deployer:...)");
>                  }
> -                if(host != null || port != null) {
> +                if (host != null || port != null) {
>                      throw new DeploymentSyntaxException("Cannot specify a URI as well as a host/port");
>                  }
>                  uri = args[++i];
> -            } else if(arg.equals("--host")) {
> -                if(host != null) {
> +            } else if (arg.equals("--host")) {
> +                if (host != null) {
>                      throw new DeploymentSyntaxException("Cannot specify more than one host");
> -                } else if(i >= args.length-1) {
> +                } else if (i >= args.length - 1) {
>                      throw new DeploymentSyntaxException("Must specify a hostname (e.g. --host localhost)");
>                  }
> -                if(uri != null) {
> +                if (uri != null) {
>                      throw new DeploymentSyntaxException("Cannot specify a URI as well as a host/port");
>                  }
>                  host = args[++i];
> -            } else if(arg.equals("--port")) {
> -                if(port != null) {
> +            } else if (arg.equals("--port")) {
> +                if (port != null) {
>                      throw new DeploymentSyntaxException("Cannot specify more than one port");
> -                } else if(i >= args.length-1) {
> +                } else if (i >= args.length - 1) {
>                      throw new DeploymentSyntaxException("Must specify a port (e.g. --port 1099)");
>                  }
> -                if(uri != null) {
> +                if (uri != null) {
>                      throw new DeploymentSyntaxException("Cannot specify a URI as well as a host/port");
>                  }
>                  try {
>                      port = new Integer(args[++i]);
>                  } catch (NumberFormatException e) {
> -                    throw new DeploymentSyntaxException("Port must be a number ("+e.getMessage()+")");
> +                    throw new DeploymentSyntaxException("Port must be a number (" + e.getMessage() + ")");
>                  }
> -            } else if(arg.equals("--driver")) {
> -                if(driver != null) {
> +            } else if (arg.equals("--driver")) {
> +                if (driver != null) {
>                      throw new DeploymentSyntaxException("Cannot specify more than one driver");
> -                } else if(i >= args.length-1) {
> +                } else if (i >= args.length - 1) {
>                      throw new DeploymentSyntaxException("Must specify a driver JAR (--driver jarfile)");
>                  }
>                  driver = args[++i];
> -            } else if(arg.equals("--offline")) {
> -                throw new DeploymentSyntaxException("This tool no longer handles offline deployment");
> -            } else if(arg.equals("--user")) {
> -                if(user != null) {
> +            } else if (arg.equals("--offline")) {
> +                //throw new DeploymentSyntaxException("This tool no longer handles offline deployment");
> +                offline = true;
> +            } else if (arg.equals("--user")) {
> +                if (user != null) {
>                      throw new DeploymentSyntaxException("Cannot specify more than one user name");
> -                } else if(i >= args.length-1) {
> +                } else if (i >= args.length - 1) {
>                      throw new DeploymentSyntaxException("Must specify a username (--user username)");
>                  }
>                  user = args[++i];
> -            } else if(arg.equals("--password")) {
> -                if(password != null) {
> +            } else if (arg.equals("--password")) {
> +                if (password != null) {
>                      throw new DeploymentSyntaxException("Cannot specify more than one password");
> -                } else if(i >= args.length-1) {
> +                } else if (i >= args.length - 1) {
>                      throw new DeploymentSyntaxException("Must specify a password (--password password)");
>                  }
>                  password = args[++i];
> @@ -175,23 +185,37 @@
>              } else if (arg.equals("--syserr")) {
>                  logToSysErr = true;
>              } else {
> -                throw new DeploymentException("Invalid option "+arg);
> +                throw new DeploymentException("Invalid option " + arg);
>              }
>          }
> -        if((driver != null) && uri == null) {
> +        if ((driver != null) && uri == null) {
>              throw new DeploymentSyntaxException("A custom driver requires a custom URI");
>          }
> -        if(host != null || port != null) {
> -            uri = DEFAULT_URI+"://"+(host == null ? "" : host)+(port == null ? "" : ":"+port);
> +        if (host != null || port != null) {
> +            uri = DEFAULT_URI + "://" + (host == null ? "" : host) + (port == null ? "" : ":" + port);
> +        }
> +        if (offline) {
> +            LocalServer localServer;
> +            try {
> +                localServer = new LocalServer("var/config/offline-deployer-list");
> +            } catch (Exception e) {
> +                throw new DeploymentException("Could not start local server", e);
> +            }
> +            Kernel kernel = localServer.getKernel();
> +            ConfigurationManager configurationManager = ConfigurationUtil.getConfigurationManager(kernel);
> +            configurationManager.setOnline(false);
> +
> +            manager = new LocalDeploymentManager(localServer.getKernel());
> +        } else {
> +            tryToConnect(uri, driver, user, password, true);
>          }
> -        tryToConnect(uri, driver, user, password, true);
> -        if(manager == null) {
> +        if (manager == null) {
>              throw new DeploymentException("Unexpected error; connection failed.");
>          }
>      }
>  
>      public void close() throws DeploymentException {
> -        if(manager != null) {
> +        if (manager != null) {
>              manager.release();
>          }
>      }
> @@ -206,55 +230,59 @@
>  
>      private void tryToConnect(String argURI, String driver, String user, String password, boolean authPrompt) throws DeploymentException {
>          DeploymentFactoryManager mgr = DeploymentFactoryManager.getInstance();
> -        if(driver != null) {
> +        if (driver != null) {
>              loadDriver(driver, mgr);
>          } else {
>              mgr.registerDeploymentFactory(new DeploymentFactoryImpl());
>          }
>          String useURI = argURI == null ? DEFAULT_URI : argURI;
>  
> -        if(authPrompt && user == null && password == null) {
> +        if (authPrompt && user == null && password == null) {
>              InputStream in;
>              // First check for .geronimo-deployer on class path (e.g. packaged in deployer.jar)
>              in = ServerConnection.class.getResourceAsStream("/.geronimo-deployer");
>              // If not there, check in home directory
> -            if(in == null) {
> +            if (in == null) {
>                  File authFile = new File(System.getProperty("user.home"), ".geronimo-deployer");
> -                if(authFile.exists() && authFile.canRead()) {
> +                if (authFile.exists() && authFile.canRead()) {
>                      try {
>                          in = new BufferedInputStream(new FileInputStream(authFile));
> -                    } catch (FileNotFoundException e) {}
> +                    } catch (FileNotFoundException e) {
> +                    }
>                  }
>              }
> -            if(in != null) {
> +            if (in != null) {
>                  try {
>                      Properties props = new Properties();
>                      props.load(in);
> -                    String encryped = props.getProperty("login."+useURI);
> -                    if(encryped != null) {
> -                        if(encryped.startsWith("{Standard}")) {
> +                    String encryped = props.getProperty("login." + useURI);
> +                    if (encryped != null) {
> +                        if (encryped.startsWith("{Standard}")) {
>                              SavedAuthentication auth = (SavedAuthentication) SimpleEncryption.decrypt(encryped.substring(10));
> -                            if(auth.uri.equals(useURI)) {
> +                            if (auth.uri.equals(useURI)) {
>                                  user = auth.user;
>                                  password = new String(auth.password);
>                              }
> -                        } else if(encryped.startsWith("{Plain}")) {
> +                        } else if (encryped.startsWith("{Plain}")) {
>                              int pos = encryped.indexOf("/");
>                              user = encryped.substring(7, pos);
> -                            password = encryped.substring(pos+1);
> +                            password = encryped.substring(pos + 1);
>                          } else {
>                              System.out.print(DeployUtils.reformat("Unknown encryption used in saved login file", 4, 72));
>                          }
>                      }
>                  } catch (IOException e) {
> -                    System.out.print(DeployUtils.reformat("Unable to read authentication from saved login file: "+e.getMessage(), 4, 72));
> +                    System.out.print(DeployUtils.reformat("Unable to read authentication from saved login file: " + e.getMessage(), 4, 72));
>                  } finally {
> -                    try {in.close();}catch(IOException e) {}
> +                    try {
> +                        in.close();
> +                    } catch (IOException e) {
> +                    }
>                  }
>              }
>          }
>  
> -        if(authPrompt && !useURI.equals(DEFAULT_URI) && user == null && password == null) {
> +        if (authPrompt && !useURI.equals(DEFAULT_URI) && user == null && password == null) {
>              // Non-standard URI, but no authentication information
>              doAuthPromptAndRetry(useURI, user, password);
>              return;
> @@ -262,15 +290,15 @@
>              try {
>                  manager = mgr.getDeploymentManager(useURI, user, password);
>                  auth = new SavedAuthentication(useURI, user, password == null ? null : password.toCharArray());
> -            } catch(AuthenticationFailedException e) { // server's there, you just can't talk to it
> -                if(authPrompt) {
> +            } catch (AuthenticationFailedException e) { // server's there, you just can't talk to it
> +                if (authPrompt) {
>                      doAuthPromptAndRetry(useURI, user, password);
>                      return;
>                  } else {
>                      throw new DeploymentException("Login Failed");
>                  }
> -            } catch(DeploymentManagerCreationException e) {
> -                throw new DeploymentException("Unable to connect to server at "+useURI+" -- "+e.getMessage());
> +            } catch (DeploymentManagerCreationException e) {
> +                throw new DeploymentException("Unable to connect to server at " + useURI + " -- " + e.getMessage());
>              }
>          }
>  
> @@ -282,37 +310,37 @@
>  
>      private void loadDriver(String driver, DeploymentFactoryManager mgr) throws DeploymentException {
>          File file = new File(driver);
> -        if(!file.exists() || !file.canRead() || !DeployUtils.isJarFile(file)) {
> -            throw new DeploymentSyntaxException("Driver '"+file.getAbsolutePath()+"' is not a readable JAR file");
> +        if (!file.exists() || !file.canRead() || !DeployUtils.isJarFile(file)) {
> +            throw new DeploymentSyntaxException("Driver '" + file.getAbsolutePath() + "' is not a readable JAR file");
>          }
>          String className = null;
>          try {
>              JarFile jar = new JarFile(file);
>              className = jar.getManifest().getMainAttributes().getValue("J2EE-DeploymentFactory-Implementation-Class");
> -            if(className == null) {
> -                throw new DeploymentException("The driver JAR "+file.getAbsolutePath()+" does not specify a J2EE-DeploymentFactory-Implementation-Class; cannot load driver.");
> +            if (className == null) {
> +                throw new DeploymentException("The driver JAR " + file.getAbsolutePath() + " does not specify a J2EE-DeploymentFactory-Implementation-Class; cannot load driver.");
>              }
>              jar.close();
>              DeploymentFactory factory = (DeploymentFactory) Class.forName(className).newInstance();
>              mgr.registerDeploymentFactory(factory);
> -        } catch(DeploymentException e) {
> +        } catch (DeploymentException e) {
>              throw e;
> -        } catch(Exception e) {
> -            throw new DeploymentSyntaxException("Unable to load driver class "+className+" from JAR "+file.getAbsolutePath(), e);
> +        } catch (Exception e) {
> +            throw new DeploymentSyntaxException("Unable to load driver class " + className + " from JAR " + file.getAbsolutePath(), e);
>          }
>      }
>  
>      private void doAuthPromptAndRetry(String uri, String user, String password) throws DeploymentException {
>          try {
> -            if(user == null) {
> +            if (user == null) {
>                  out.print("Username: ");
>                  out.flush();
>                  user = in.readLine();
>              }
> -            if(password == null) {
> +            if (password == null) {
>                  password = new PasswordPrompt("Password: ", out).getPassword(in);
>              }
> -        } catch(IOException e) {
> +        } catch (IOException e) {
>              throw new DeploymentException("Unable to prompt for login", e);
>          }
>          tryToConnect(uri, null, user, password, false);
> @@ -349,13 +377,13 @@
>              int priority = Thread.currentThread().getPriority();
>              try {
>                  Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
> -                String fullPrompt = "\r"+prompt+"          "+"\r"+prompt;
> +                String fullPrompt = "\r" + prompt + "          " + "\r" + prompt;
>                  StringBuffer clearline = new StringBuffer();
>                  clearline.append('\r');
> -                for(int i=prompt.length()+10; i>=0; i--) {
> +                for (int i = prompt.length() + 10; i >= 0; i--) {
>                      clearline.append(' ');
>                  }
> -                while(!done) {
> +                while (!done) {
>                      out.print(fullPrompt);
>                      out.flush();
>                      Thread.sleep(1);
> @@ -377,7 +405,7 @@
>           * the entered password.  For this to make sense, the input reader
>           * here must be part of the same console as the output writer passed
>           * to the constructor.
> -         *
> +         * <p/>
>           * For higher security, should return a char[], but that will just
>           * be defeated by the JSR-88 call that takes a String anyway, so
>           * why bother?
> 
> Modified: geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentConfigurationManager.java
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentConfigurationManager.java?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentConfigurationManager.java (original)
> +++ geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentConfigurationManager.java Fri May 12 14:29:24 2006
> @@ -84,6 +84,16 @@
>          return super.getArtifactResolver();
>      }
>  
> +    /**
> +     * This configuration manager never starts any configurations
> +     * @return false
> +     */
> +    public boolean isOnline() {
> +        return false;
> +    }
> +
> +    public void setOnline(boolean online) {
> +    }
>  
>      //
>      // LOAD
> 
> Modified: geronimo/branches/1.1/modules/deployment/src/test/org/apache/geronimo/deployment/SingleFileHotDeployerTest.java
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/deployment/src/test/org/apache/geronimo/deployment/SingleFileHotDeployerTest.java?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/modules/deployment/src/test/org/apache/geronimo/deployment/SingleFileHotDeployerTest.java (original)
> +++ geronimo/branches/1.1/modules/deployment/src/test/org/apache/geronimo/deployment/SingleFileHotDeployerTest.java Fri May 12 14:29:24 2006
> @@ -453,5 +453,12 @@
>          public ArtifactResolver getArtifactResolver() {
>              return artifactResolver;
>          }
> +
> +        public boolean isOnline() {
> +            return true;
> +        }
> +
> +        public void setOnline(boolean online) {
> +        }
>      }
>  }
> 
> Modified: geronimo/branches/1.1/modules/kernel/project.xml
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/project.xml?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/modules/kernel/project.xml (original)
> +++ geronimo/branches/1.1/modules/kernel/project.xml Fri May 12 14:29:24 2006
> @@ -103,33 +103,4 @@
>          </dependency>
>      </dependencies>
>  
> -    <build>
> -        <resources>
> -            <resource>
> -                <directory>${basedir}/src/java</directory>
> -                <includes>
> -                    <include>**/*.xml</include>
> -                    <include>**/*.properties</include>
> -                </includes>
> -            </resource>
> -        </resources>
> -        <unitTest>
> -            <includes>
> -                <include>**/*Test.java</include>
> -            </includes>
> -            <excludes>
> -                <exclude>**/Abstract*.java</exclude>
> -            </excludes>
> -            <resources>
> -                <resource>
> -                    <directory>${basedir}/target/test-xdoclet/jmx/org/apache/geronimo/tools/xdoclet</directory>
> -                    <targetPath>org/apache/geronimo/tools/xdoclet</targetPath>
> -                    <includes>
> -                        <include>*.xml</include>
> -                    </includes>
> -                </resource>
> -            </resources>
> -        </unitTest>
> -    </build>
> -
>  </project>
> 
> Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java (original)
> +++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java Fri May 12 14:29:24 2006
> @@ -463,4 +463,13 @@
>       * configuration manager, etc.
>       */
>      ArtifactResolver getArtifactResolver();
> +
> +    /**
> +     * Online means full functionality.  Offline typically means that configurations will never be started,
> +     * although they may be marked in the persistent configuration list.
> +     *
> +     * @return online status of ConfigurationManager
> +     */
> +    boolean isOnline();
> +    void setOnline(boolean online);
>  }
> 
> Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/KernelConfigurationManager.java
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/KernelConfigurationManager.java?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/KernelConfigurationManager.java (original)
> +++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/KernelConfigurationManager.java Fri May 12 14:29:24 2006
> @@ -57,6 +57,7 @@
>      private final ArtifactManager artifactManager;
>      protected final ClassLoader classLoader;
>      private final ShutdownHook shutdownHook;
> +    private boolean online = true;
>  
>      public KernelConfigurationManager(Kernel kernel,
>              Collection stores,
> @@ -178,11 +179,21 @@
>      }
>  
>      public void start(Configuration configuration) throws InvalidConfigException {
> -        ConfigurationUtil.startConfigurationGBeans(configuration.getAbstractName(), configuration, kernel);
> +        if (online) {
> +            ConfigurationUtil.startConfigurationGBeans(configuration.getAbstractName(), configuration, kernel);
> +        }
>  
>          if (configurationList != null && configuration.getConfigurationData().isAutoStart()) {
>              configurationList.startConfiguration(configuration.getId());
>          }
> +    }
> +
> +    public boolean isOnline() {
> +        return online;
> +    }
> +
> +    public void setOnline(boolean online) {
> +        this.online = online;
>      }
>  
>      protected void stop(Configuration configuration) {
> 
> Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/MultiParentClassLoader.java
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/MultiParentClassLoader.java?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/MultiParentClassLoader.java (original)
> +++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/MultiParentClassLoader.java Fri May 12 14:29:24 2006
> @@ -246,7 +246,7 @@
>              }
>          }
>  
> -        throw new ClassNotFoundException(name);
> +        throw new ClassNotFoundException(name + " in classloader " + id);
>      }
>  
>      private boolean isNonOverridableClass(String name) {
> 
> Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java (original)
> +++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java Fri May 12 14:29:24 2006
> @@ -1226,6 +1226,17 @@
>          return artifactResolver;
>      }
>  
> +    /**
> +     * this configuration manager never starts configurations.
> +     * @return false
> +     */
> +    public boolean isOnline() {
> +        return false;
> +    }
> +
> +    public void setOnline(boolean online) {
> +    }
> +
>      private List getStoreList() {
>          return new ArrayList(stores);
>      }
> 
> Modified: geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLine.java
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLine.java?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLine.java (original)
> +++ geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLine.java Fri May 12 14:29:24 2006
> @@ -20,6 +20,9 @@
>  import java.io.InputStream;
>  import java.util.Iterator;
>  import java.util.List;
> +import java.util.Enumeration;
> +import java.net.URL;
> +
>  import javax.management.ObjectName;
>  
>  import org.apache.commons.logging.Log;
> @@ -31,6 +34,9 @@
>  import org.apache.geronimo.kernel.KernelFactory;
>  import org.apache.geronimo.kernel.config.ConfigurationManager;
>  import org.apache.geronimo.kernel.config.ConfigurationUtil;
> +import org.apache.geronimo.kernel.config.NoSuchConfigException;
> +import org.apache.geronimo.kernel.config.LifecycleException;
> +import org.apache.geronimo.kernel.config.ConfigurationData;
>  import org.apache.geronimo.kernel.log.GeronimoLogging;
>  import org.apache.geronimo.kernel.repository.Artifact;
>  import org.apache.geronimo.gbean.AbstractName;
> @@ -61,7 +67,7 @@
>              // the interesting entries from the manifest
>              CommandLineManifest manifest = CommandLineManifest.getManifestEntries();
>              List configurations = manifest.getConfigurations();
> -            ObjectName mainGBean = manifest.getMainGBean();
> +            AbstractName mainGBean = manifest.getMainGBean();
>              String mainMethod = manifest.getMainMethod();
>  
>              new CommandLine().invokeMainGBean(configurations, mainGBean, mainMethod, args);
> @@ -78,34 +84,9 @@
>      private Kernel kernel;
>      private AbstractName configurationName;
>  
> -    /**
> -     * @deprecated use the next one with AbstractName
> -     *
> -     * @param configurations
> -     * @param mainGBean
> -     * @param mainMethod
> -     * @param args
> -     * @throws Exception
> -     */
> -    public void invokeMainGBean(List configurations, ObjectName mainGBean, String mainMethod, String[] args) throws Exception {
> -        startKernel(configurations);
> -
> -        log.info("Server startup completed");
> -
> -        // invoke the main method
> -        kernel.invoke(
> -                mainGBean,
> -                mainMethod,
> -                new Object[]{args},
> -                new String[]{String[].class.getName()});
> -
> -        log.info("Server shutdown begun");
> -
> -        stopKernel();
> -    }
> -
>      public void invokeMainGBean(List configurations, AbstractName mainGBean, String mainMethod, String[] args) throws Exception {
> -        startKernel(configurations);
> +        startKernel();
> +        loadConfigurations(configurations);
>  
>          log.info("Server startup completed");
>  
> @@ -121,7 +102,7 @@
>          stopKernel();
>      }
>  
> -    protected void startKernel(List configurations) throws Exception {
> +    protected void startKernel() throws Exception {
>          ClassLoader classLoader = CommandLine.class.getClassLoader();
>          InputStream in = classLoader.getResourceAsStream("META-INF/config.ser");
>  
> @@ -132,6 +113,31 @@
>          // load the configuration
>          configurationName = ConfigurationUtil.loadBootstrapConfiguration(kernel, in, classLoader);
>  
> +    }
> +
> +    protected void startKernel(Artifact moduleId) throws Exception {
> +        // boot the kernel
> +        kernel = KernelFactory.newInstance().createKernel("geronimo");
> +        kernel.boot();
> +        ClassLoader classLoader = CommandLine.class.getClassLoader();
> +        for (Enumeration modules = classLoader.getResources("META-INF/config.ser"); modules.hasMoreElements(); ) {
> +            URL moduleDataURL = (URL) modules.nextElement();
> +            InputStream in = moduleDataURL.openStream();
> +            try {
> +                ConfigurationData moduleData = ConfigurationUtil.readConfigurationData(in);
> +                if (moduleId.matches(moduleData.getId())) {
> +                    // load the configuration
> +                    configurationName = ConfigurationUtil.loadBootstrapConfiguration(kernel, moduleData, classLoader);
> +                    return;
> +                }
> +            } finally {
> +                in.close();
> +            }
> +        }
> +        throw new NoSuchConfigException(moduleId);
> +    }
> +
> +    protected void loadConfigurations(List configurations) throws NoSuchConfigException, LifecycleException {
>          // load and start the configurations
>          ConfigurationManager configurationManager = ConfigurationUtil.getConfigurationManager(kernel);
>          try {
> 
> Modified: geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLineManifest.java
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLineManifest.java?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLineManifest.java (original)
> +++ geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLineManifest.java Fri May 12 14:29:24 2006
> @@ -30,6 +30,8 @@
>  import javax.management.ObjectName;
>  import javax.management.MalformedObjectNameException;
>  
> +import org.apache.geronimo.gbean.AbstractName;
> +
>  /**
>   *
>   *
> @@ -65,11 +67,11 @@
>          // get the main gbean class
>          String mainGBeanString = mainAttributes.getValue(MAIN_GBEAN);
>  
> -        ObjectName mainGBean = null;
> +        AbstractName mainGBean = null;
>          if(mainGBeanString != null) {
>              try {
> -                mainGBean = new ObjectName(mainGBeanString);
> -            } catch (MalformedObjectNameException e) {
> +                mainGBean = new AbstractName(new URI(mainGBeanString));
> +            } catch (URISyntaxException e) {
>                  System.err.println("Invalid Main-GBean name: " + mainGBeanString);
>                  System.exit(1);
>                  throw new AssertionError();
> @@ -119,13 +121,13 @@
>          return commandLineManifest;
>      }
>  
> -    private final ObjectName mainGBean;
> +    private final AbstractName mainGBean;
>      private final String mainMethod;
>      private final List configurations;
>      private final List endorsedDirs;
>      private final List extensionDirs;
>  
> -    public CommandLineManifest(ObjectName mainGBean, String mainMethod, List configurations, List endorsedDirs, List extensionDirs) {
> +    public CommandLineManifest(AbstractName mainGBean, String mainMethod, List configurations, List endorsedDirs, List extensionDirs) {
>          this.mainGBean = mainGBean;
>          this.mainMethod = mainMethod;
>          this.configurations = Collections.unmodifiableList(configurations);
> @@ -133,7 +135,7 @@
>          this.extensionDirs = extensionDirs;
>      }
>  
> -    public ObjectName getMainGBean() {
> +    public AbstractName getMainGBean() {
>          return mainGBean;
>      }
>  
> 
> Modified: geronimo/branches/1.1/modules/system/src/test/org/apache/geronimo/system/plugin/PluginInstallerTest.java
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/system/src/test/org/apache/geronimo/system/plugin/PluginInstallerTest.java?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/modules/system/src/test/org/apache/geronimo/system/plugin/PluginInstallerTest.java (original)
> +++ geronimo/branches/1.1/modules/system/src/test/org/apache/geronimo/system/plugin/PluginInstallerTest.java Fri May 12 14:29:24 2006
> @@ -123,6 +123,7 @@
>      }
>  
>      private static class MockConfigManager implements ConfigurationManager {
> +
>          public boolean isInstalled(Artifact configurationId) {
>              return false;
>          }
> @@ -253,6 +254,13 @@
>  
>          public ArtifactResolver getArtifactResolver() {
>              return null;
> +        }
> +
> +        public boolean isOnline() {
> +            return true;
> +        }
> +
> +        public void setOnline(boolean online) {
>          }
>      }
>  }
> 
> Modified: geronimo/branches/1.1/plugins/geronimo-assembly-plugin/plugin.jelly
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/plugins/geronimo-assembly-plugin/plugin.jelly?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/plugins/geronimo-assembly-plugin/plugin.jelly (original)
> +++ geronimo/branches/1.1/plugins/geronimo-assembly-plugin/plugin.jelly Fri May 12 14:29:24 2006
> @@ -43,6 +43,10 @@
>          <ant:mkdir dir="${geronimo.assembly.dest}/var/config"/>
>          <velocity:merge basedir="${geronimo.assembly.src}/var/config" template="config.xml"
>                          name="${geronimo.assembly.dest}/var/config/config.xml"/>
> +        <velocity:merge basedir="${geronimo.assembly.src}/var/config" template="config.xml"
> +                        name="${geronimo.assembly.dest}/var/config/config.xml.original"/>
> +        <velocity:merge basedir="${geronimo.assembly.src}/var/config" template="offline-deployer-list"
> +                        name="${geronimo.assembly.dest}/var/config/offline-deployer-list"/>
>      </goal>
>  
>      <goal name="assemble:assemble-lib">
> 
> Modified: geronimo/branches/1.1/plugins/geronimo-assembly-plugin/project.xml
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/plugins/geronimo-assembly-plugin/project.xml?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/plugins/geronimo-assembly-plugin/project.xml (original)
> +++ geronimo/branches/1.1/plugins/geronimo-assembly-plugin/project.xml Fri May 12 14:29:24 2006
> @@ -23,7 +23,7 @@
>      <id>geronimo-assembly-plugin</id>
>      <name>Geronimo :: Maven Assembly Plugin</name>
>      <description>A plugin used to assemble a distribution of Geronimo</description>
> -    <currentVersion>1.1.0-11</currentVersion>
> +    <currentVersion>1.1.0-12</currentVersion>
>  
>      <dependencies>
>          <dependency>
> 
> 
> 
> 

-- 
Joe Bohn
joe.bohn at earthlink.net

"He is no fool who gives what he cannot keep, to gain what he cannot 
lose."   -- Jim Elliot

Re: svn commit: r405881 - in /geronimo/branches/1.1: assemblies/j2ee-jetty-server/src/var/config/ assemblies/j2ee-tomcat-server/src/var/config/ assemblies/minimal-jetty-server/src/var/config/ assemblies/minimal-tomcat-server/src/var/config/ etc/ modules/de...

Posted by Joe Bohn <jo...@earthlink.net>.
Was it intended that this change would upgrade howl to 1.0.1?

I know this was discussed with the package upgrades and David even 
mentioned that the jar wasn't published on any of the repos yet.  That's 
the last I can find on the topic.

It is in fact causing a problem since this version can't be found on any 
of the repos.

Joe



djencks@apache.org wrote:
> Author: djencks
> Date: Fri May 12 14:29:24 2006
> New Revision: 405881
> 
> URL: http://svn.apache.org/viewcvs?rev=405881&view=rev
> Log:
> GERONIMO-1507 offline deployer.  Also GERONIMO-1861 make a backup copy of config.xml
> 
> Added:
>     geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/offline-deployer-list
>     geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/offline-deployer-list
>     geronimo/branches/1.1/assemblies/minimal-jetty-server/src/var/config/offline-deployer-list
>     geronimo/branches/1.1/assemblies/minimal-tomcat-server/src/var/config/offline-deployer-list
>     geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/LocalServer.java
> Removed:
>     geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/GBeanDataRegistry.java
> Modified:
>     geronimo/branches/1.1/etc/explicit_versions.properties
>     geronimo/branches/1.1/etc/project.properties
>     geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/ServerConnection.java
>     geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentConfigurationManager.java
>     geronimo/branches/1.1/modules/deployment/src/test/org/apache/geronimo/deployment/SingleFileHotDeployerTest.java
>     geronimo/branches/1.1/modules/kernel/project.xml
>     geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java
>     geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/KernelConfigurationManager.java
>     geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/MultiParentClassLoader.java
>     geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java
>     geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLine.java
>     geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLineManifest.java
>     geronimo/branches/1.1/modules/system/src/test/org/apache/geronimo/system/plugin/PluginInstallerTest.java
>     geronimo/branches/1.1/plugins/geronimo-assembly-plugin/plugin.jelly
>     geronimo/branches/1.1/plugins/geronimo-assembly-plugin/project.xml
> 
> Added: geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/offline-deployer-list
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/offline-deployer-list?rev=405881&view=auto
> ==============================================================================
> --- geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/offline-deployer-list (added)
> +++ geronimo/branches/1.1/assemblies/j2ee-jetty-server/src/var/config/offline-deployer-list Fri May 12 14:29:24 2006
> @@ -0,0 +1,7 @@
> +#list of deployers to be started for offline deployment
> +geronimo/geronimo-gbean-deployer/${pom.currentVersion}/car
> +geronimo/j2ee-deployer/${pom.currentVersion}/car
> +geronimo/openejb-deployer/${pom.currentVersion}/car
> +geronimo/client-deployer/${pom.currentVersion}/car
> +geronimo/axis-deployer/${pom.currentVersion}/car
> +geronimo/jetty-deployer/${pom.currentVersion}/car
> 
> Added: geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/offline-deployer-list
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/offline-deployer-list?rev=405881&view=auto
> ==============================================================================
> --- geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/offline-deployer-list (added)
> +++ geronimo/branches/1.1/assemblies/j2ee-tomcat-server/src/var/config/offline-deployer-list Fri May 12 14:29:24 2006
> @@ -0,0 +1,7 @@
> +#list of deployers to be started for offline deployment
> +geronimo/geronimo-gbean-deployer/${pom.currentVersion}/car
> +geronimo/j2ee-deployer/${pom.currentVersion}/car
> +geronimo/openejb-deployer/${pom.currentVersion}/car
> +geronimo/client-deployer/${pom.currentVersion}/car
> +geronimo/axis-deployer/${pom.currentVersion}/car
> +geronimo/tomcat-deployer/${pom.currentVersion}/car
> 
> Added: geronimo/branches/1.1/assemblies/minimal-jetty-server/src/var/config/offline-deployer-list
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/assemblies/minimal-jetty-server/src/var/config/offline-deployer-list?rev=405881&view=auto
> ==============================================================================
> --- geronimo/branches/1.1/assemblies/minimal-jetty-server/src/var/config/offline-deployer-list (added)
> +++ geronimo/branches/1.1/assemblies/minimal-jetty-server/src/var/config/offline-deployer-list Fri May 12 14:29:24 2006
> @@ -0,0 +1,7 @@
> +#list of deployers to be started for offline deployment
> +geronimo/geronimo-gbean-deployer/${pom.currentVersion}/car
> +geronimo/j2ee-deployer/${pom.currentVersion}/car
> +geronimo/jetty-deployer/${pom.currentVersion}/car
> +geronimo/unavailable-ejb-deployer/${pom.currentVersion}/car
> +geronimo/unavailable-webservices-deployer/${pom.currentVersion}/car
> +geronimo/unavailable-client-deployer/${pom.currentVersion}/car
> 
> Added: geronimo/branches/1.1/assemblies/minimal-tomcat-server/src/var/config/offline-deployer-list
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/assemblies/minimal-tomcat-server/src/var/config/offline-deployer-list?rev=405881&view=auto
> ==============================================================================
> --- geronimo/branches/1.1/assemblies/minimal-tomcat-server/src/var/config/offline-deployer-list (added)
> +++ geronimo/branches/1.1/assemblies/minimal-tomcat-server/src/var/config/offline-deployer-list Fri May 12 14:29:24 2006
> @@ -0,0 +1,7 @@
> +#list of deployers to be started for offline deployment
> +geronimo/geronimo-gbean-deployer/${pom.currentVersion}/car
> +geronimo/j2ee-deployer/${pom.currentVersion}/car
> +geronimo/tomcat-deployer/${pom.currentVersion}/car
> +geronimo/unavailable-ejb-deployer/${pom.currentVersion}/car
> +geronimo/unavailable-webservices-deployer/${pom.currentVersion}/car
> +geronimo/unavailable-client-deployer/${pom.currentVersion}/car
> 
> Modified: geronimo/branches/1.1/etc/explicit_versions.properties
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/etc/explicit_versions.properties?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/etc/explicit_versions.properties (original)
> +++ geronimo/branches/1.1/etc/explicit_versions.properties Fri May 12 14:29:24 2006
> @@ -42,7 +42,7 @@
>  dom4j///=1.4
>  dwr///=1.0
>  eclipse_compiler///=3.0.1
> -howl///=0.1.11
> +howl///=1.0.1
>  #security:
>  hsqldb///=1.7.2.2
>  jasper///=5.5.15
> 
> Modified: geronimo/branches/1.1/etc/project.properties
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/etc/project.properties?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/etc/project.properties (original)
> +++ geronimo/branches/1.1/etc/project.properties Fri May 12 14:29:24 2006
> @@ -97,7 +97,7 @@
>  release_notes_version=1.0
>  
>  geronimo_packaging_plugin_version=1.1.0-8
> -geronimo_assembly_plugin_version=1.1.0-11
> +geronimo_assembly_plugin_version=1.1.0-12
>  geronimo_deployment_plugin_version=1.1.0-3
>  geronimo_dependency_plugin_version=1.1.0-3
>  
> @@ -153,7 +153,7 @@
>  dom4j_version=1.4
>  dwr_version=1.1.1
>  eclipse_compiler_version=3.0.1
> -howl_version=0.1.11
> +howl_version=1.0.1
>  #security:
>  hsqldb_version=1.7.2.2
>  jasper_version=5.5.15
> 
> Added: geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/LocalServer.java
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/LocalServer.java?rev=405881&view=auto
> ==============================================================================
> --- geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/LocalServer.java (added)
> +++ geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/LocalServer.java Fri May 12 14:29:24 2006
> @@ -0,0 +1,80 @@
> +/**
> + *
> + * Copyright 2006 The Apache Software Foundation
> + *
> + *  Licensed 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.geronimo.deployment.cli;
> +
> +import java.io.BufferedReader;
> +import java.io.File;
> +import java.io.FileReader;
> +import java.io.IOException;
> +import java.util.ArrayList;
> +import java.util.Iterator;
> +import java.util.List;
> +import java.util.Set;
> +import java.util.regex.Matcher;
> +import java.util.regex.Pattern;
> +
> +import org.apache.geronimo.gbean.AbstractName;
> +import org.apache.geronimo.gbean.AbstractNameQuery;
> +import org.apache.geronimo.kernel.GBeanNotFoundException;
> +import org.apache.geronimo.kernel.Kernel;
> +import org.apache.geronimo.kernel.config.PersistentConfigurationList;
> +import org.apache.geronimo.kernel.repository.Artifact;
> +import org.apache.geronimo.system.main.CommandLine;
> +import org.apache.geronimo.system.serverinfo.ServerInfo;
> +
> +/**
> + * @version $Rev:$ $Date:$
> + */
> +public class LocalServer extends CommandLine {
> +
> +    public LocalServer(String configListLocation) throws Exception {
> +        startKernel(Artifact.create("geronimo/j2ee-system//car"));
> +        Runtime.getRuntime().addShutdownHook(new Thread("Geronimo shutdown thread") {
> +            public void run() {
> +                getKernel().shutdown();
> +            }
> +        });
> +        List configs = getConfigurationList(configListLocation);
> +        loadConfigurations(configs);
> +    }
> +
> +    public Kernel getKernel() {
> +        return super.getKernel();
> +    }
> +
> +    protected List getConfigurationList(String path) throws GBeanNotFoundException, IOException {
> +        ServerInfo serverInfo = (ServerInfo) getKernel().getGBean(ServerInfo.class);
> +        File configFile = serverInfo.resolve(path);
> +        List modules = new ArrayList();
> +        BufferedReader in = new BufferedReader(new FileReader(configFile));
> +        try {
> +            String artifactString;
> +            while ((artifactString = in.readLine()) != null) {
> +                artifactString = artifactString.trim();
> +                if (!artifactString.startsWith("#") && artifactString.length() > 0) {
> +                    Artifact artifact = Artifact.create(artifactString);
> +                    modules.add(artifact);
> +                }
> +            }
> +        } finally {
> +            in.close();
> +        }
> +        return modules;
> +    }
> +
> +}
> 
> Modified: geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/ServerConnection.java
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/ServerConnection.java?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/ServerConnection.java (original)
> +++ geronimo/branches/1.1/modules/deploy-tool/src/java/org/apache/geronimo/deployment/cli/ServerConnection.java Fri May 12 14:29:24 2006
> @@ -31,6 +31,7 @@
>  import java.util.Map;
>  import java.util.Properties;
>  import java.util.jar.JarFile;
> +
>  import javax.enterprise.deploy.shared.factories.DeploymentFactoryManager;
>  import javax.enterprise.deploy.spi.DeploymentManager;
>  import javax.enterprise.deploy.spi.exceptions.DeploymentManagerCreationException;
> @@ -40,7 +41,12 @@
>  import org.apache.geronimo.deployment.plugin.factories.AuthenticationFailedException;
>  import org.apache.geronimo.deployment.plugin.factories.DeploymentFactoryImpl;
>  import org.apache.geronimo.deployment.plugin.jmx.JMXDeploymentManager;
> +import org.apache.geronimo.deployment.plugin.jmx.LocalDeploymentManager;
>  import org.apache.geronimo.util.SimpleEncryption;
> +import org.apache.geronimo.kernel.Kernel;
> +import org.apache.geronimo.kernel.config.ConfigurationManager;
> +import org.apache.geronimo.kernel.config.ConfigurationUtil;
> +import org.apache.geronimo.kernel.config.KernelConfigurationManager;
>  
>  /**
>   * Supports online connections to the server, via JSR-88, valid only
> @@ -50,6 +56,7 @@
>   */
>  public class ServerConnection {
>      private final static Map OPTION_HELP = new LinkedHashMap(9);
> +
>      static {
>          OPTION_HELP.put("--uri", "A URI to contact the server.  If not specified, the deployer defaults to " +
>                  "operating on a Geronimo server running on the standard port on localhost.\n" +
> @@ -69,7 +76,9 @@
>          OPTION_HELP.put("--password", "Specifies a password to use to authenticate to the server.");
>          OPTION_HELP.put("--syserr", "Enables error logging to syserr.  Disabled by default.");
>          OPTION_HELP.put("--verbose", "Enables verbose execution mode.  Disabled by default.");
> +        OPTION_HELP.put("--offline", "Deploy offline to a local server, using whatever deployers are available in the local server");
>      }
> +
>      public static Map getOptionHelp() {
>          return OPTION_HELP;
>      }
> @@ -80,19 +89,18 @@
>       * argument).  For example, if the arguments were "--user bob foo" then
>       * this should return true for "--user" and "bob" and false for "foo".
>       *
> -     * @param args The previous arguments on the command line
> +     * @param args   The previous arguments on the command line
>       * @param option The argument we're checking at the moment
> -     *
>       * @return True if the argument we're checking is part of a general argument
>       */
>      public static boolean isGeneralOption(List args, String option) {
> -        if(OPTION_HELP.containsKey(option) || option.equals("--url")) {
> +        if (OPTION_HELP.containsKey(option) || option.equals("--url")) {
>              return true;
>          }
> -        if(args.size() == 0) {
> +        if (args.size() == 0) {
>              return false;
>          }
> -        String last = (String) args.get(args.size()-1);
> +        String last = (String) args.get(args.size() - 1);
>          return last.equals("--uri") || last.equals("--url") || last.equals("--driver") || last.equals("--user") ||
>                  last.equals("--password") || last.equals("--host") || last.equals("--port");
>      }
> @@ -111,62 +119,64 @@
>          Integer port = null;
>          this.out = out;
>          this.in = in;
> -        for(int i = 0; i < args.length; i++) {
> +        boolean offline = false;
> +        for (int i = 0; i < args.length; i++) {
>              String arg = args[i];
> -            if(arg.equals("--uri") || arg.equals("--url")) {
> -                if(uri != null) {
> +            if (arg.equals("--uri") || arg.equals("--url")) {
> +                if (uri != null) {
>                      throw new DeploymentSyntaxException("Cannot specify more than one URI");
> -                } else if(i >= args.length-1) {
> +                } else if (i >= args.length - 1) {
>                      throw new DeploymentSyntaxException("Must specify a URI (e.g. --uri deployer:...)");
>                  }
> -                if(host != null || port != null) {
> +                if (host != null || port != null) {
>                      throw new DeploymentSyntaxException("Cannot specify a URI as well as a host/port");
>                  }
>                  uri = args[++i];
> -            } else if(arg.equals("--host")) {
> -                if(host != null) {
> +            } else if (arg.equals("--host")) {
> +                if (host != null) {
>                      throw new DeploymentSyntaxException("Cannot specify more than one host");
> -                } else if(i >= args.length-1) {
> +                } else if (i >= args.length - 1) {
>                      throw new DeploymentSyntaxException("Must specify a hostname (e.g. --host localhost)");
>                  }
> -                if(uri != null) {
> +                if (uri != null) {
>                      throw new DeploymentSyntaxException("Cannot specify a URI as well as a host/port");
>                  }
>                  host = args[++i];
> -            } else if(arg.equals("--port")) {
> -                if(port != null) {
> +            } else if (arg.equals("--port")) {
> +                if (port != null) {
>                      throw new DeploymentSyntaxException("Cannot specify more than one port");
> -                } else if(i >= args.length-1) {
> +                } else if (i >= args.length - 1) {
>                      throw new DeploymentSyntaxException("Must specify a port (e.g. --port 1099)");
>                  }
> -                if(uri != null) {
> +                if (uri != null) {
>                      throw new DeploymentSyntaxException("Cannot specify a URI as well as a host/port");
>                  }
>                  try {
>                      port = new Integer(args[++i]);
>                  } catch (NumberFormatException e) {
> -                    throw new DeploymentSyntaxException("Port must be a number ("+e.getMessage()+")");
> +                    throw new DeploymentSyntaxException("Port must be a number (" + e.getMessage() + ")");
>                  }
> -            } else if(arg.equals("--driver")) {
> -                if(driver != null) {
> +            } else if (arg.equals("--driver")) {
> +                if (driver != null) {
>                      throw new DeploymentSyntaxException("Cannot specify more than one driver");
> -                } else if(i >= args.length-1) {
> +                } else if (i >= args.length - 1) {
>                      throw new DeploymentSyntaxException("Must specify a driver JAR (--driver jarfile)");
>                  }
>                  driver = args[++i];
> -            } else if(arg.equals("--offline")) {
> -                throw new DeploymentSyntaxException("This tool no longer handles offline deployment");
> -            } else if(arg.equals("--user")) {
> -                if(user != null) {
> +            } else if (arg.equals("--offline")) {
> +                //throw new DeploymentSyntaxException("This tool no longer handles offline deployment");
> +                offline = true;
> +            } else if (arg.equals("--user")) {
> +                if (user != null) {
>                      throw new DeploymentSyntaxException("Cannot specify more than one user name");
> -                } else if(i >= args.length-1) {
> +                } else if (i >= args.length - 1) {
>                      throw new DeploymentSyntaxException("Must specify a username (--user username)");
>                  }
>                  user = args[++i];
> -            } else if(arg.equals("--password")) {
> -                if(password != null) {
> +            } else if (arg.equals("--password")) {
> +                if (password != null) {
>                      throw new DeploymentSyntaxException("Cannot specify more than one password");
> -                } else if(i >= args.length-1) {
> +                } else if (i >= args.length - 1) {
>                      throw new DeploymentSyntaxException("Must specify a password (--password password)");
>                  }
>                  password = args[++i];
> @@ -175,23 +185,37 @@
>              } else if (arg.equals("--syserr")) {
>                  logToSysErr = true;
>              } else {
> -                throw new DeploymentException("Invalid option "+arg);
> +                throw new DeploymentException("Invalid option " + arg);
>              }
>          }
> -        if((driver != null) && uri == null) {
> +        if ((driver != null) && uri == null) {
>              throw new DeploymentSyntaxException("A custom driver requires a custom URI");
>          }
> -        if(host != null || port != null) {
> -            uri = DEFAULT_URI+"://"+(host == null ? "" : host)+(port == null ? "" : ":"+port);
> +        if (host != null || port != null) {
> +            uri = DEFAULT_URI + "://" + (host == null ? "" : host) + (port == null ? "" : ":" + port);
> +        }
> +        if (offline) {
> +            LocalServer localServer;
> +            try {
> +                localServer = new LocalServer("var/config/offline-deployer-list");
> +            } catch (Exception e) {
> +                throw new DeploymentException("Could not start local server", e);
> +            }
> +            Kernel kernel = localServer.getKernel();
> +            ConfigurationManager configurationManager = ConfigurationUtil.getConfigurationManager(kernel);
> +            configurationManager.setOnline(false);
> +
> +            manager = new LocalDeploymentManager(localServer.getKernel());
> +        } else {
> +            tryToConnect(uri, driver, user, password, true);
>          }
> -        tryToConnect(uri, driver, user, password, true);
> -        if(manager == null) {
> +        if (manager == null) {
>              throw new DeploymentException("Unexpected error; connection failed.");
>          }
>      }
>  
>      public void close() throws DeploymentException {
> -        if(manager != null) {
> +        if (manager != null) {
>              manager.release();
>          }
>      }
> @@ -206,55 +230,59 @@
>  
>      private void tryToConnect(String argURI, String driver, String user, String password, boolean authPrompt) throws DeploymentException {
>          DeploymentFactoryManager mgr = DeploymentFactoryManager.getInstance();
> -        if(driver != null) {
> +        if (driver != null) {
>              loadDriver(driver, mgr);
>          } else {
>              mgr.registerDeploymentFactory(new DeploymentFactoryImpl());
>          }
>          String useURI = argURI == null ? DEFAULT_URI : argURI;
>  
> -        if(authPrompt && user == null && password == null) {
> +        if (authPrompt && user == null && password == null) {
>              InputStream in;
>              // First check for .geronimo-deployer on class path (e.g. packaged in deployer.jar)
>              in = ServerConnection.class.getResourceAsStream("/.geronimo-deployer");
>              // If not there, check in home directory
> -            if(in == null) {
> +            if (in == null) {
>                  File authFile = new File(System.getProperty("user.home"), ".geronimo-deployer");
> -                if(authFile.exists() && authFile.canRead()) {
> +                if (authFile.exists() && authFile.canRead()) {
>                      try {
>                          in = new BufferedInputStream(new FileInputStream(authFile));
> -                    } catch (FileNotFoundException e) {}
> +                    } catch (FileNotFoundException e) {
> +                    }
>                  }
>              }
> -            if(in != null) {
> +            if (in != null) {
>                  try {
>                      Properties props = new Properties();
>                      props.load(in);
> -                    String encryped = props.getProperty("login."+useURI);
> -                    if(encryped != null) {
> -                        if(encryped.startsWith("{Standard}")) {
> +                    String encryped = props.getProperty("login." + useURI);
> +                    if (encryped != null) {
> +                        if (encryped.startsWith("{Standard}")) {
>                              SavedAuthentication auth = (SavedAuthentication) SimpleEncryption.decrypt(encryped.substring(10));
> -                            if(auth.uri.equals(useURI)) {
> +                            if (auth.uri.equals(useURI)) {
>                                  user = auth.user;
>                                  password = new String(auth.password);
>                              }
> -                        } else if(encryped.startsWith("{Plain}")) {
> +                        } else if (encryped.startsWith("{Plain}")) {
>                              int pos = encryped.indexOf("/");
>                              user = encryped.substring(7, pos);
> -                            password = encryped.substring(pos+1);
> +                            password = encryped.substring(pos + 1);
>                          } else {
>                              System.out.print(DeployUtils.reformat("Unknown encryption used in saved login file", 4, 72));
>                          }
>                      }
>                  } catch (IOException e) {
> -                    System.out.print(DeployUtils.reformat("Unable to read authentication from saved login file: "+e.getMessage(), 4, 72));
> +                    System.out.print(DeployUtils.reformat("Unable to read authentication from saved login file: " + e.getMessage(), 4, 72));
>                  } finally {
> -                    try {in.close();}catch(IOException e) {}
> +                    try {
> +                        in.close();
> +                    } catch (IOException e) {
> +                    }
>                  }
>              }
>          }
>  
> -        if(authPrompt && !useURI.equals(DEFAULT_URI) && user == null && password == null) {
> +        if (authPrompt && !useURI.equals(DEFAULT_URI) && user == null && password == null) {
>              // Non-standard URI, but no authentication information
>              doAuthPromptAndRetry(useURI, user, password);
>              return;
> @@ -262,15 +290,15 @@
>              try {
>                  manager = mgr.getDeploymentManager(useURI, user, password);
>                  auth = new SavedAuthentication(useURI, user, password == null ? null : password.toCharArray());
> -            } catch(AuthenticationFailedException e) { // server's there, you just can't talk to it
> -                if(authPrompt) {
> +            } catch (AuthenticationFailedException e) { // server's there, you just can't talk to it
> +                if (authPrompt) {
>                      doAuthPromptAndRetry(useURI, user, password);
>                      return;
>                  } else {
>                      throw new DeploymentException("Login Failed");
>                  }
> -            } catch(DeploymentManagerCreationException e) {
> -                throw new DeploymentException("Unable to connect to server at "+useURI+" -- "+e.getMessage());
> +            } catch (DeploymentManagerCreationException e) {
> +                throw new DeploymentException("Unable to connect to server at " + useURI + " -- " + e.getMessage());
>              }
>          }
>  
> @@ -282,37 +310,37 @@
>  
>      private void loadDriver(String driver, DeploymentFactoryManager mgr) throws DeploymentException {
>          File file = new File(driver);
> -        if(!file.exists() || !file.canRead() || !DeployUtils.isJarFile(file)) {
> -            throw new DeploymentSyntaxException("Driver '"+file.getAbsolutePath()+"' is not a readable JAR file");
> +        if (!file.exists() || !file.canRead() || !DeployUtils.isJarFile(file)) {
> +            throw new DeploymentSyntaxException("Driver '" + file.getAbsolutePath() + "' is not a readable JAR file");
>          }
>          String className = null;
>          try {
>              JarFile jar = new JarFile(file);
>              className = jar.getManifest().getMainAttributes().getValue("J2EE-DeploymentFactory-Implementation-Class");
> -            if(className == null) {
> -                throw new DeploymentException("The driver JAR "+file.getAbsolutePath()+" does not specify a J2EE-DeploymentFactory-Implementation-Class; cannot load driver.");
> +            if (className == null) {
> +                throw new DeploymentException("The driver JAR " + file.getAbsolutePath() + " does not specify a J2EE-DeploymentFactory-Implementation-Class; cannot load driver.");
>              }
>              jar.close();
>              DeploymentFactory factory = (DeploymentFactory) Class.forName(className).newInstance();
>              mgr.registerDeploymentFactory(factory);
> -        } catch(DeploymentException e) {
> +        } catch (DeploymentException e) {
>              throw e;
> -        } catch(Exception e) {
> -            throw new DeploymentSyntaxException("Unable to load driver class "+className+" from JAR "+file.getAbsolutePath(), e);
> +        } catch (Exception e) {
> +            throw new DeploymentSyntaxException("Unable to load driver class " + className + " from JAR " + file.getAbsolutePath(), e);
>          }
>      }
>  
>      private void doAuthPromptAndRetry(String uri, String user, String password) throws DeploymentException {
>          try {
> -            if(user == null) {
> +            if (user == null) {
>                  out.print("Username: ");
>                  out.flush();
>                  user = in.readLine();
>              }
> -            if(password == null) {
> +            if (password == null) {
>                  password = new PasswordPrompt("Password: ", out).getPassword(in);
>              }
> -        } catch(IOException e) {
> +        } catch (IOException e) {
>              throw new DeploymentException("Unable to prompt for login", e);
>          }
>          tryToConnect(uri, null, user, password, false);
> @@ -349,13 +377,13 @@
>              int priority = Thread.currentThread().getPriority();
>              try {
>                  Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
> -                String fullPrompt = "\r"+prompt+"          "+"\r"+prompt;
> +                String fullPrompt = "\r" + prompt + "          " + "\r" + prompt;
>                  StringBuffer clearline = new StringBuffer();
>                  clearline.append('\r');
> -                for(int i=prompt.length()+10; i>=0; i--) {
> +                for (int i = prompt.length() + 10; i >= 0; i--) {
>                      clearline.append(' ');
>                  }
> -                while(!done) {
> +                while (!done) {
>                      out.print(fullPrompt);
>                      out.flush();
>                      Thread.sleep(1);
> @@ -377,7 +405,7 @@
>           * the entered password.  For this to make sense, the input reader
>           * here must be part of the same console as the output writer passed
>           * to the constructor.
> -         *
> +         * <p/>
>           * For higher security, should return a char[], but that will just
>           * be defeated by the JSR-88 call that takes a String anyway, so
>           * why bother?
> 
> Modified: geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentConfigurationManager.java
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentConfigurationManager.java?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentConfigurationManager.java (original)
> +++ geronimo/branches/1.1/modules/deployment/src/java/org/apache/geronimo/deployment/DeploymentConfigurationManager.java Fri May 12 14:29:24 2006
> @@ -84,6 +84,16 @@
>          return super.getArtifactResolver();
>      }
>  
> +    /**
> +     * This configuration manager never starts any configurations
> +     * @return false
> +     */
> +    public boolean isOnline() {
> +        return false;
> +    }
> +
> +    public void setOnline(boolean online) {
> +    }
>  
>      //
>      // LOAD
> 
> Modified: geronimo/branches/1.1/modules/deployment/src/test/org/apache/geronimo/deployment/SingleFileHotDeployerTest.java
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/deployment/src/test/org/apache/geronimo/deployment/SingleFileHotDeployerTest.java?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/modules/deployment/src/test/org/apache/geronimo/deployment/SingleFileHotDeployerTest.java (original)
> +++ geronimo/branches/1.1/modules/deployment/src/test/org/apache/geronimo/deployment/SingleFileHotDeployerTest.java Fri May 12 14:29:24 2006
> @@ -453,5 +453,12 @@
>          public ArtifactResolver getArtifactResolver() {
>              return artifactResolver;
>          }
> +
> +        public boolean isOnline() {
> +            return true;
> +        }
> +
> +        public void setOnline(boolean online) {
> +        }
>      }
>  }
> 
> Modified: geronimo/branches/1.1/modules/kernel/project.xml
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/project.xml?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/modules/kernel/project.xml (original)
> +++ geronimo/branches/1.1/modules/kernel/project.xml Fri May 12 14:29:24 2006
> @@ -103,33 +103,4 @@
>          </dependency>
>      </dependencies>
>  
> -    <build>
> -        <resources>
> -            <resource>
> -                <directory>${basedir}/src/java</directory>
> -                <includes>
> -                    <include>**/*.xml</include>
> -                    <include>**/*.properties</include>
> -                </includes>
> -            </resource>
> -        </resources>
> -        <unitTest>
> -            <includes>
> -                <include>**/*Test.java</include>
> -            </includes>
> -            <excludes>
> -                <exclude>**/Abstract*.java</exclude>
> -            </excludes>
> -            <resources>
> -                <resource>
> -                    <directory>${basedir}/target/test-xdoclet/jmx/org/apache/geronimo/tools/xdoclet</directory>
> -                    <targetPath>org/apache/geronimo/tools/xdoclet</targetPath>
> -                    <includes>
> -                        <include>*.xml</include>
> -                    </includes>
> -                </resource>
> -            </resources>
> -        </unitTest>
> -    </build>
> -
>  </project>
> 
> Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java (original)
> +++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/ConfigurationManager.java Fri May 12 14:29:24 2006
> @@ -463,4 +463,13 @@
>       * configuration manager, etc.
>       */
>      ArtifactResolver getArtifactResolver();
> +
> +    /**
> +     * Online means full functionality.  Offline typically means that configurations will never be started,
> +     * although they may be marked in the persistent configuration list.
> +     *
> +     * @return online status of ConfigurationManager
> +     */
> +    boolean isOnline();
> +    void setOnline(boolean online);
>  }
> 
> Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/KernelConfigurationManager.java
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/KernelConfigurationManager.java?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/KernelConfigurationManager.java (original)
> +++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/KernelConfigurationManager.java Fri May 12 14:29:24 2006
> @@ -57,6 +57,7 @@
>      private final ArtifactManager artifactManager;
>      protected final ClassLoader classLoader;
>      private final ShutdownHook shutdownHook;
> +    private boolean online = true;
>  
>      public KernelConfigurationManager(Kernel kernel,
>              Collection stores,
> @@ -178,11 +179,21 @@
>      }
>  
>      public void start(Configuration configuration) throws InvalidConfigException {
> -        ConfigurationUtil.startConfigurationGBeans(configuration.getAbstractName(), configuration, kernel);
> +        if (online) {
> +            ConfigurationUtil.startConfigurationGBeans(configuration.getAbstractName(), configuration, kernel);
> +        }
>  
>          if (configurationList != null && configuration.getConfigurationData().isAutoStart()) {
>              configurationList.startConfiguration(configuration.getId());
>          }
> +    }
> +
> +    public boolean isOnline() {
> +        return online;
> +    }
> +
> +    public void setOnline(boolean online) {
> +        this.online = online;
>      }
>  
>      protected void stop(Configuration configuration) {
> 
> Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/MultiParentClassLoader.java
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/MultiParentClassLoader.java?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/MultiParentClassLoader.java (original)
> +++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/MultiParentClassLoader.java Fri May 12 14:29:24 2006
> @@ -246,7 +246,7 @@
>              }
>          }
>  
> -        throw new ClassNotFoundException(name);
> +        throw new ClassNotFoundException(name + " in classloader " + id);
>      }
>  
>      private boolean isNonOverridableClass(String name) {
> 
> Modified: geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java (original)
> +++ geronimo/branches/1.1/modules/kernel/src/java/org/apache/geronimo/kernel/config/SimpleConfigurationManager.java Fri May 12 14:29:24 2006
> @@ -1226,6 +1226,17 @@
>          return artifactResolver;
>      }
>  
> +    /**
> +     * this configuration manager never starts configurations.
> +     * @return false
> +     */
> +    public boolean isOnline() {
> +        return false;
> +    }
> +
> +    public void setOnline(boolean online) {
> +    }
> +
>      private List getStoreList() {
>          return new ArrayList(stores);
>      }
> 
> Modified: geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLine.java
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLine.java?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLine.java (original)
> +++ geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLine.java Fri May 12 14:29:24 2006
> @@ -20,6 +20,9 @@
>  import java.io.InputStream;
>  import java.util.Iterator;
>  import java.util.List;
> +import java.util.Enumeration;
> +import java.net.URL;
> +
>  import javax.management.ObjectName;
>  
>  import org.apache.commons.logging.Log;
> @@ -31,6 +34,9 @@
>  import org.apache.geronimo.kernel.KernelFactory;
>  import org.apache.geronimo.kernel.config.ConfigurationManager;
>  import org.apache.geronimo.kernel.config.ConfigurationUtil;
> +import org.apache.geronimo.kernel.config.NoSuchConfigException;
> +import org.apache.geronimo.kernel.config.LifecycleException;
> +import org.apache.geronimo.kernel.config.ConfigurationData;
>  import org.apache.geronimo.kernel.log.GeronimoLogging;
>  import org.apache.geronimo.kernel.repository.Artifact;
>  import org.apache.geronimo.gbean.AbstractName;
> @@ -61,7 +67,7 @@
>              // the interesting entries from the manifest
>              CommandLineManifest manifest = CommandLineManifest.getManifestEntries();
>              List configurations = manifest.getConfigurations();
> -            ObjectName mainGBean = manifest.getMainGBean();
> +            AbstractName mainGBean = manifest.getMainGBean();
>              String mainMethod = manifest.getMainMethod();
>  
>              new CommandLine().invokeMainGBean(configurations, mainGBean, mainMethod, args);
> @@ -78,34 +84,9 @@
>      private Kernel kernel;
>      private AbstractName configurationName;
>  
> -    /**
> -     * @deprecated use the next one with AbstractName
> -     *
> -     * @param configurations
> -     * @param mainGBean
> -     * @param mainMethod
> -     * @param args
> -     * @throws Exception
> -     */
> -    public void invokeMainGBean(List configurations, ObjectName mainGBean, String mainMethod, String[] args) throws Exception {
> -        startKernel(configurations);
> -
> -        log.info("Server startup completed");
> -
> -        // invoke the main method
> -        kernel.invoke(
> -                mainGBean,
> -                mainMethod,
> -                new Object[]{args},
> -                new String[]{String[].class.getName()});
> -
> -        log.info("Server shutdown begun");
> -
> -        stopKernel();
> -    }
> -
>      public void invokeMainGBean(List configurations, AbstractName mainGBean, String mainMethod, String[] args) throws Exception {
> -        startKernel(configurations);
> +        startKernel();
> +        loadConfigurations(configurations);
>  
>          log.info("Server startup completed");
>  
> @@ -121,7 +102,7 @@
>          stopKernel();
>      }
>  
> -    protected void startKernel(List configurations) throws Exception {
> +    protected void startKernel() throws Exception {
>          ClassLoader classLoader = CommandLine.class.getClassLoader();
>          InputStream in = classLoader.getResourceAsStream("META-INF/config.ser");
>  
> @@ -132,6 +113,31 @@
>          // load the configuration
>          configurationName = ConfigurationUtil.loadBootstrapConfiguration(kernel, in, classLoader);
>  
> +    }
> +
> +    protected void startKernel(Artifact moduleId) throws Exception {
> +        // boot the kernel
> +        kernel = KernelFactory.newInstance().createKernel("geronimo");
> +        kernel.boot();
> +        ClassLoader classLoader = CommandLine.class.getClassLoader();
> +        for (Enumeration modules = classLoader.getResources("META-INF/config.ser"); modules.hasMoreElements(); ) {
> +            URL moduleDataURL = (URL) modules.nextElement();
> +            InputStream in = moduleDataURL.openStream();
> +            try {
> +                ConfigurationData moduleData = ConfigurationUtil.readConfigurationData(in);
> +                if (moduleId.matches(moduleData.getId())) {
> +                    // load the configuration
> +                    configurationName = ConfigurationUtil.loadBootstrapConfiguration(kernel, moduleData, classLoader);
> +                    return;
> +                }
> +            } finally {
> +                in.close();
> +            }
> +        }
> +        throw new NoSuchConfigException(moduleId);
> +    }
> +
> +    protected void loadConfigurations(List configurations) throws NoSuchConfigException, LifecycleException {
>          // load and start the configurations
>          ConfigurationManager configurationManager = ConfigurationUtil.getConfigurationManager(kernel);
>          try {
> 
> Modified: geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLineManifest.java
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLineManifest.java?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLineManifest.java (original)
> +++ geronimo/branches/1.1/modules/system/src/java/org/apache/geronimo/system/main/CommandLineManifest.java Fri May 12 14:29:24 2006
> @@ -30,6 +30,8 @@
>  import javax.management.ObjectName;
>  import javax.management.MalformedObjectNameException;
>  
> +import org.apache.geronimo.gbean.AbstractName;
> +
>  /**
>   *
>   *
> @@ -65,11 +67,11 @@
>          // get the main gbean class
>          String mainGBeanString = mainAttributes.getValue(MAIN_GBEAN);
>  
> -        ObjectName mainGBean = null;
> +        AbstractName mainGBean = null;
>          if(mainGBeanString != null) {
>              try {
> -                mainGBean = new ObjectName(mainGBeanString);
> -            } catch (MalformedObjectNameException e) {
> +                mainGBean = new AbstractName(new URI(mainGBeanString));
> +            } catch (URISyntaxException e) {
>                  System.err.println("Invalid Main-GBean name: " + mainGBeanString);
>                  System.exit(1);
>                  throw new AssertionError();
> @@ -119,13 +121,13 @@
>          return commandLineManifest;
>      }
>  
> -    private final ObjectName mainGBean;
> +    private final AbstractName mainGBean;
>      private final String mainMethod;
>      private final List configurations;
>      private final List endorsedDirs;
>      private final List extensionDirs;
>  
> -    public CommandLineManifest(ObjectName mainGBean, String mainMethod, List configurations, List endorsedDirs, List extensionDirs) {
> +    public CommandLineManifest(AbstractName mainGBean, String mainMethod, List configurations, List endorsedDirs, List extensionDirs) {
>          this.mainGBean = mainGBean;
>          this.mainMethod = mainMethod;
>          this.configurations = Collections.unmodifiableList(configurations);
> @@ -133,7 +135,7 @@
>          this.extensionDirs = extensionDirs;
>      }
>  
> -    public ObjectName getMainGBean() {
> +    public AbstractName getMainGBean() {
>          return mainGBean;
>      }
>  
> 
> Modified: geronimo/branches/1.1/modules/system/src/test/org/apache/geronimo/system/plugin/PluginInstallerTest.java
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/modules/system/src/test/org/apache/geronimo/system/plugin/PluginInstallerTest.java?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/modules/system/src/test/org/apache/geronimo/system/plugin/PluginInstallerTest.java (original)
> +++ geronimo/branches/1.1/modules/system/src/test/org/apache/geronimo/system/plugin/PluginInstallerTest.java Fri May 12 14:29:24 2006
> @@ -123,6 +123,7 @@
>      }
>  
>      private static class MockConfigManager implements ConfigurationManager {
> +
>          public boolean isInstalled(Artifact configurationId) {
>              return false;
>          }
> @@ -253,6 +254,13 @@
>  
>          public ArtifactResolver getArtifactResolver() {
>              return null;
> +        }
> +
> +        public boolean isOnline() {
> +            return true;
> +        }
> +
> +        public void setOnline(boolean online) {
>          }
>      }
>  }
> 
> Modified: geronimo/branches/1.1/plugins/geronimo-assembly-plugin/plugin.jelly
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/plugins/geronimo-assembly-plugin/plugin.jelly?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/plugins/geronimo-assembly-plugin/plugin.jelly (original)
> +++ geronimo/branches/1.1/plugins/geronimo-assembly-plugin/plugin.jelly Fri May 12 14:29:24 2006
> @@ -43,6 +43,10 @@
>          <ant:mkdir dir="${geronimo.assembly.dest}/var/config"/>
>          <velocity:merge basedir="${geronimo.assembly.src}/var/config" template="config.xml"
>                          name="${geronimo.assembly.dest}/var/config/config.xml"/>
> +        <velocity:merge basedir="${geronimo.assembly.src}/var/config" template="config.xml"
> +                        name="${geronimo.assembly.dest}/var/config/config.xml.original"/>
> +        <velocity:merge basedir="${geronimo.assembly.src}/var/config" template="offline-deployer-list"
> +                        name="${geronimo.assembly.dest}/var/config/offline-deployer-list"/>
>      </goal>
>  
>      <goal name="assemble:assemble-lib">
> 
> Modified: geronimo/branches/1.1/plugins/geronimo-assembly-plugin/project.xml
> URL: http://svn.apache.org/viewcvs/geronimo/branches/1.1/plugins/geronimo-assembly-plugin/project.xml?rev=405881&r1=405880&r2=405881&view=diff
> ==============================================================================
> --- geronimo/branches/1.1/plugins/geronimo-assembly-plugin/project.xml (original)
> +++ geronimo/branches/1.1/plugins/geronimo-assembly-plugin/project.xml Fri May 12 14:29:24 2006
> @@ -23,7 +23,7 @@
>      <id>geronimo-assembly-plugin</id>
>      <name>Geronimo :: Maven Assembly Plugin</name>
>      <description>A plugin used to assemble a distribution of Geronimo</description>
> -    <currentVersion>1.1.0-11</currentVersion>
> +    <currentVersion>1.1.0-12</currentVersion>
>  
>      <dependencies>
>          <dependency>
> 
> 
> 
> 

-- 
Joe Bohn
joe.bohn at earthlink.net

"He is no fool who gives what he cannot keep, to gain what he cannot 
lose."   -- Jim Elliot