You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2011/07/17 07:17:26 UTC

svn commit: r1147527 - in /geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core: ./ src/main/java/org/apache/geronimo/st/v30/core/

Author: gawor
Date: Sun Jul 17 05:17:23 2011
New Revision: 1147527

URL: http://svn.apache.org/viewvc?rev=1147527&view=rev
Log:
reduce number of classes

Removed:
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoRuntime.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoServer.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoServerBehaviour.java
Modified:
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/plugin.xml
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoRuntimeDelegate.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoServerBehaviourDelegate.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoServerDelegate.java
    geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/IGeronimoServer.java

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/plugin.xml
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/plugin.xml?rev=1147527&r1=1147526&r2=1147527&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/plugin.xml (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/plugin.xml Sun Jul 17 05:17:23 2011
@@ -34,7 +34,7 @@
                 name="%runtimeTypeName"
                 description="%runtimeTypeDescription"
                 vendor="%runtimeTypeVendor"
-                class="org.apache.geronimo.st.v30.core.GeronimoRuntime">
+                class="org.apache.geronimo.st.v30.core.GeronimoRuntimeDelegate">
             <moduleType types="jst.web"       versions="2.2, 2.3, 2.4, 2.5, 3.0"/>
             <moduleType types="jst.ejb"       versions="1.1, 2.0, 2.1, 3.0, 3.1"/>
             <moduleType types="jst.connector" versions="1.0, 1.5"/>
@@ -62,7 +62,7 @@
             name="%serverTypeName"
             description="%serverTypeDescription"
             runtime="true"
-            class="org.apache.geronimo.st.v30.core.GeronimoServer"
+            class="org.apache.geronimo.st.v30.core.GeronimoServerDelegate"
             initialState="stopped"
             supportsRemoteHosts="true"
             startTimeout="240000"
@@ -70,7 +70,7 @@
             startBeforePublish="true"
             runtimeTypeId="org.apache.geronimo.runtime.30"
             launchConfigId="org.apache.geronimo.st.v30.core.launchConfigurationType"
-            behaviourClass="org.apache.geronimo.st.v30.core.GeronimoServerBehaviour"
+            behaviourClass="org.apache.geronimo.st.v30.core.GeronimoServerBehaviourDelegate"
             hasConfiguration="false"
             launchModes="run,debug,profile">
         </serverType>

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoRuntimeDelegate.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoRuntimeDelegate.java?rev=1147527&r1=1147526&r2=1147527&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoRuntimeDelegate.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoRuntimeDelegate.java Sun Jul 17 05:17:23 2011
@@ -45,7 +45,7 @@ import org.eclipse.wst.server.core.model
 /**
  * @version $Rev$ $Date$
  */
-abstract public class GeronimoRuntimeDelegate extends RuntimeDelegate implements IGeronimoRuntime {
+public class GeronimoRuntimeDelegate extends RuntimeDelegate implements IGeronimoRuntime {
 
     private static final String PROP_VM_INSTALL_TYPE_ID = "vm-install-type-id";
 

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoServerBehaviourDelegate.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoServerBehaviourDelegate.java?rev=1147527&r1=1147526&r2=1147527&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoServerBehaviourDelegate.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoServerBehaviourDelegate.java Sun Jul 17 05:17:23 2011
@@ -25,6 +25,7 @@ import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
@@ -37,17 +38,29 @@ import java.util.concurrent.locks.Lock;
 import java.util.concurrent.locks.ReentrantLock;
 
 import javax.enterprise.deploy.spi.Target;
+import javax.enterprise.deploy.spi.exceptions.DeploymentManagerCreationException;
 import javax.management.MBeanServerConnection;
 import javax.management.ObjectName;
 import javax.management.remote.JMXConnector;
 import javax.management.remote.JMXConnectorFactory;
 import javax.management.remote.JMXServiceURL;
+import javax.naming.directory.NoSuchAttributeException;
 
 import org.apache.geronimo.deployment.plugin.jmx.ExtendedDeploymentManager;
+import org.apache.geronimo.deployment.plugin.jmx.JMXDeploymentManager;
 import org.apache.geronimo.gbean.AbstractName;
+import org.apache.geronimo.gbean.AbstractNameQuery;
+import org.apache.geronimo.gbean.GBeanData;
+import org.apache.geronimo.kernel.GBeanNotFoundException;
+import org.apache.geronimo.kernel.InternalKernelException;
+import org.apache.geronimo.kernel.Kernel;
+import org.apache.geronimo.kernel.config.Configuration;
+import org.apache.geronimo.kernel.config.InvalidConfigException;
+import org.apache.geronimo.kernel.config.PersistentConfigurationList;
 import org.apache.geronimo.kernel.repository.Artifact;
 import org.apache.geronimo.st.v30.core.UpdateServerStateTask;
 import org.apache.geronimo.st.v30.core.commands.DeploymentCommandFactory;
+import org.apache.geronimo.st.v30.core.internal.DependencyHelper;
 import org.apache.geronimo.st.v30.core.internal.Messages;
 import org.apache.geronimo.st.v30.core.internal.Trace;
 import org.apache.geronimo.st.v30.core.operations.ISharedLibEntryCreationDataModelProperties;
@@ -55,6 +68,7 @@ import org.apache.geronimo.st.v30.core.o
 import org.apache.geronimo.st.v30.core.operations.SharedLibEntryDataModelProvider;
 import org.apache.geronimo.st.v30.core.osgi.AriesHelper;
 import org.apache.geronimo.st.v30.core.osgi.OSGiModuleHandler;
+import org.apache.geronimo.system.jmx.KernelDelegate;
 import org.eclipse.core.commands.ExecutionException;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.runtime.CoreException;
@@ -65,6 +79,7 @@ import org.eclipse.core.runtime.MultiSta
 import org.eclipse.core.runtime.NullProgressMonitor;
 import org.eclipse.core.runtime.Path;
 import org.eclipse.core.runtime.Status;
+import org.eclipse.core.runtime.jobs.Job;
 import org.eclipse.debug.core.DebugEvent;
 import org.eclipse.debug.core.DebugPlugin;
 import org.eclipse.debug.core.IDebugEventSetListener;
@@ -81,6 +96,7 @@ import org.eclipse.jdt.launching.IJavaLa
 import org.eclipse.jdt.launching.IRuntimeClasspathEntry;
 import org.eclipse.jdt.launching.IVMInstall;
 import org.eclipse.jdt.launching.JavaRuntime;
+import org.eclipse.osgi.util.NLS;
 import org.eclipse.wst.common.frameworks.datamodel.DataModelFactory;
 import org.eclipse.wst.common.frameworks.datamodel.IDataModel;
 import org.eclipse.wst.common.frameworks.datamodel.IDataModelOperation;
@@ -89,6 +105,7 @@ import org.eclipse.wst.server.core.IServ
 import org.eclipse.wst.server.core.IServerListener;
 import org.eclipse.wst.server.core.ServerEvent;
 import org.eclipse.wst.server.core.ServerPort;
+import org.eclipse.wst.server.core.internal.IModulePublishHelper;
 import org.eclipse.wst.server.core.internal.ProgressUtil;
 import org.eclipse.wst.server.core.model.IModuleFile;
 import org.eclipse.wst.server.core.model.IModuleResourceDelta;
@@ -98,12 +115,14 @@ import org.eclipse.wst.server.core.util.
 /**
  * @version $Rev$ $Date$
  */
-abstract public class GeronimoServerBehaviourDelegate extends ServerBehaviourDelegate implements IGeronimoServerBehavior {
+public class GeronimoServerBehaviourDelegate extends ServerBehaviourDelegate implements IGeronimoServerBehavior, IModulePublishHelper {
 
     public static final int TIMER_TASK_INTERVAL = 20;
     
     public static final int TIMER_TASK_DELAY = 20;
 
+    private Kernel kernel = null;
+    
     protected Timer stateTimer = null;
     
     protected Timer synchronizerTimer = null;
@@ -114,10 +133,6 @@ abstract public class GeronimoServerBeha
 
     public static final String ERROR_SETUP_LAUNCH_CONFIGURATION = "errorInSetupLaunchConfiguration";
 
-    abstract protected ClassLoader getContextClassLoader();
-    
-    abstract protected String getWebModuleDocumentBase(String contextPath);
-
     private PublishStateListener publishStateListener;
     
     private Lock publishLock = new ReentrantLock();
@@ -127,6 +142,10 @@ abstract public class GeronimoServerBeha
     private DefaultModuleHandler defaultModuleHandler;
     private OSGiModuleHandler osgiModuleHandler;
 
+    protected ClassLoader getContextClassLoader() {
+        return Kernel.class.getClassLoader();
+    }
+    
     /*
      * (non-Javadoc)
      * 
@@ -628,8 +647,11 @@ abstract public class GeronimoServerBeha
     /*
      * This method is used to invoke DependencyHelper of different version
      */
-    abstract protected List getOrderedModules(IServer server, List modules, List deltaKind);
-
+    protected List getOrderedModules(IServer server, List modules, List deltaKind) {
+        DependencyHelper dh = new DependencyHelper();
+        List list = dh.reorderModules(this.getServer(),modules, deltaKind);
+        return list;
+   }
 
     /*
      * (non-Javadoc)
@@ -794,7 +816,9 @@ abstract public class GeronimoServerBeha
         Trace.tracePoint("Exit", Activator.traceCore, "GeronimoServerBehaviourDelegate.dispose");
     }
 
-    public abstract String getRuntimeClass();
+    public String getRuntimeClass() {
+        return "org.apache.geronimo.cli.daemon.DaemonCLI";
+    }
 
     public void setServerStarted() {
         setServerState(IServer.STATE_STARTED);
@@ -1158,8 +1182,107 @@ abstract public class GeronimoServerBeha
         Trace.tracePoint("Exit ", Activator.traceCore, "GeronimoServerBehaviourDelegate.stopPingThread");
     }
     
-    protected abstract void stopKernel();
+    protected Kernel getKernel() throws SecurityException {
+        if (kernel == null) {
+            try {
+                MBeanServerConnection connection = getServerConnection();
+                if (connection != null)
+                    kernel = new KernelDelegate(connection);
+            } catch (SecurityException e) {
+                throw e;
+            } catch (Exception e) {
+                Trace.trace(Trace.INFO, "Kernel connection failed. "
+                        + e.getMessage(), Activator.traceCore);
+            }
+        }
+        return kernel;
+    }
+    
+    protected void stopKernel() {
+        try {
+            MBeanServerConnection connection = getServerConnection();
+            Trace.trace(Trace.INFO, "Server shutdown starting...", Activator.traceCore);
+            connection.invoke(getFrameworkMBean(connection), "stopBundle",
+                     new Object[] { 0 }, new String[] { long.class.getName() });
+            Trace.trace(Trace.INFO, "Server shutdown completed", Activator.traceCore);          
+        } catch (Exception e) {
+            Trace.trace(Trace.ERROR, e.getMessage(), e, Activator.traceCore);
+        }
+    }
+
+    public boolean isKernelAlive() {
+        try {
+            return getKernel() != null && kernel.isRunning();
+        } catch (SecurityException e) {
+            Trace.trace(Trace.ERROR, "Invalid username and/or password.", e, Activator.logCore);
 
+            pingThread.interrupt();
+            if (getServer().getServerState() != IServer.STATE_STOPPED) {
+                forceStopJob(true,e);
+            }
+        } catch (Exception e) {
+            Trace.trace(Trace.WARNING, "Geronimo Server may have been terminated manually outside of workspace.", e, Activator.logCore);
+            kernel = null;
+        }
+        return false;
+    }
+    
+    private void forceStopJob(boolean b, final SecurityException e) {
+        /* 
+         *
+         * Currently, there is another Status is returned by StartJob in Server. 
+         * The message doesn't contain reason for the exception. 
+         * So this job is created to show a message(Invalid username and/or password) to user.
+         *  
+         * TODO: Need a method to remove the error message thrown by StartJob in Server.
+         * 
+         */
+        
+        String jobName = NLS.bind(org.eclipse.wst.server.core.internal.Messages.errorStartFailed, getServer().getName());                       
+        
+        //This message has different variable names in WTP 3.0 and 3.1, so we define it here instead of using that in WTP
+        final String jobStartingName =  NLS.bind("Starting {0}", getServer().getName());
+
+        new Job(jobName) {
+            @Override
+            protected IStatus run(IProgressMonitor monitor) {
+                MultiStatus multiStatus = new  MultiStatus(Activator.PLUGIN_ID, 0, jobStartingName, null);
+                multiStatus.add(new Status(IStatus.ERROR,Activator.PLUGIN_ID,0,"Invalid username and/or password.",e));
+                try {
+                    stop(true);
+                } catch (Exception e){
+                    multiStatus.add(new Status(IStatus.ERROR,Activator.PLUGIN_ID,0,"Failed to stop server",e));
+                }
+            
+                return multiStatus;
+            }
+        }.schedule();
+        
+    }
+    
+    public boolean isFullyStarted() {
+        if (isKernelAlive()) {
+            AbstractNameQuery query = new AbstractNameQuery(PersistentConfigurationList.class.getName());
+            Set<AbstractName> configLists = kernel.listGBeans(query);
+            if (!configLists.isEmpty()) {
+                AbstractName on = (AbstractName) configLists.toArray()[0];
+                try {
+                    Boolean b = (Boolean) kernel.getAttribute(on, "kernelFullyStarted");
+                    return b.booleanValue();
+                } catch (GBeanNotFoundException e) {
+                    // ignore
+                } catch (NoSuchAttributeException e) {
+                    // ignore
+                } catch (Exception e) {
+                    e.printStackTrace();
+                }
+            } else {
+                Trace.trace(Trace.INFO, "configLists is empty", Activator.traceCore);
+            }
+        }
+        return false;
+    }
+    
     public void startUpdateServerStateTask() {
         Trace.tracePoint("Entry", Activator.traceCore, "GeronimoServerBehaviourDelegate.startUpdateServerStateTask", getServer().getName());
 
@@ -1225,6 +1348,18 @@ abstract public class GeronimoServerBeha
         return modulePath;
     }
 
+    private Kernel getDeploymentManagerKernel() {
+        GeronimoConnectionFactory connectionFactory = GeronimoConnectionFactory.getInstance();
+        try {
+            JMXDeploymentManager manager =
+                (JMXDeploymentManager) connectionFactory.getDeploymentManager(getServer());
+            return manager.getKernel();
+        } catch (DeploymentManagerCreationException e) {
+            Trace.trace(Trace.WARNING, "Error getting kernel from deployment manager", e, Activator.logCore);
+            return null;
+        }
+    }
+    
     public MBeanServerConnection getServerConnection() throws Exception {
         Map<String, Object> map = new HashMap<String, Object>();
         String user = getGeronimoServer().getAdminID();
@@ -1270,6 +1405,10 @@ abstract public class GeronimoServerBeha
         }
     }
     
+    private ObjectName getFrameworkMBean(MBeanServerConnection connection) throws Exception {
+        return getMBean(connection, "osgi.core:type=framework,*", "Framework");
+    }
+    
     public Target[] getTargets() {
         return null;
     }
@@ -1374,4 +1513,69 @@ abstract public class GeronimoServerBeha
     public void setModulesState(IModule[] module, int state) {
         setModuleState(module, state);
     }
+    
+    public IPath getPublishDirectory(IModule[] module) {
+        if (module == null || module.length == 0)
+            return null;
+
+        if (getGeronimoServer().isRunFromWorkspace()) {
+            // TODO fix me, see if project root, component root, or output
+            // container should be returned
+            return module[module.length - 1].getProject().getLocation();
+        } else {
+            ClassLoader old = Thread.currentThread().getContextClassLoader();
+            try {
+                Thread.currentThread().setContextClassLoader(getContextClassLoader());
+                String configId = getConfigId(module[0]);
+                Artifact artifact = Artifact.create(configId);
+                AbstractName name = Configuration.getConfigurationAbstractName(artifact);
+                GBeanData data = kernel.getGBeanData(name);
+                URL url = (URL) data.getAttribute("baseURL");
+                return getModulePath(module, url);
+            } catch (InvalidConfigException e) {
+                e.printStackTrace();
+            } catch (GBeanNotFoundException e) {
+                e.printStackTrace();
+            } catch (InternalKernelException e) {
+                e.printStackTrace();
+            } catch (Exception e) {
+                e.printStackTrace();
+            } finally {
+                Thread.currentThread().setContextClassLoader(old);
+            }
+        }
+
+        return null;
+    }
+    
+    // TODO: this can be cached 
+    public String getWebModuleDocumentBase(String contextPath) {
+        Kernel kernel = getDeploymentManagerKernel();
+        if (kernel == null) {
+            Trace.trace(Trace.WARNING, "Error getting web module document base - no kernel", null, Activator.logCore);
+            return null;
+        }
+        Map<String, String> map = Collections.singletonMap("j2eeType", "WebModule");
+        if (!contextPath.startsWith("/")) {
+            contextPath = "/" + contextPath;
+        }
+        AbstractNameQuery query = new AbstractNameQuery(null, map, Collections.EMPTY_SET);
+        Set<AbstractName> webModuleNames = kernel.listGBeans(query);
+        for (AbstractName name : webModuleNames) {
+            try {
+                String moduleContextPath = (String) kernel.getAttribute(name, "contextPath");
+                if (contextPath.equals(moduleContextPath)) {
+                    String docBase = (String) kernel.getAttribute(name, "docBase");
+                    return docBase;
+                }
+            } catch (GBeanNotFoundException e) {
+                // ignore
+            } catch (NoSuchAttributeException e) {
+                // ignore
+            } catch (Exception e) {
+                Trace.trace(Trace.WARNING, "Error getting web module document base", e, Activator.logCore);
+            }
+        }
+        return null;
+    }
 }

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoServerDelegate.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoServerDelegate.java?rev=1147527&r1=1147526&r2=1147527&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoServerDelegate.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/GeronimoServerDelegate.java Sun Jul 17 05:17:23 2011
@@ -32,7 +32,12 @@ import java.util.jar.Manifest;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import javax.enterprise.deploy.spi.DeploymentManager;
+import javax.enterprise.deploy.spi.factories.DeploymentFactory;
+
 import org.apache.geronimo.crypto.EncryptionManager;
+import org.apache.geronimo.deployment.plugin.factories.DeploymentFactoryImpl;
+import org.apache.geronimo.deployment.plugin.jmx.JMXDeploymentManager;
 import org.apache.geronimo.st.v30.core.internal.Trace;
 import org.apache.geronimo.st.v30.core.osgi.AriesHelper;
 import org.apache.geronimo.st.v30.core.osgi.OsgiConstants;
@@ -52,6 +57,7 @@ import org.eclipse.wst.server.core.Serve
 import org.eclipse.wst.server.core.ServerUtil;
 import org.eclipse.wst.server.core.internal.ServerMonitorManager;
 import org.eclipse.wst.server.core.model.ServerDelegate;
+import org.eclipse.wst.server.core.util.SocketUtil;
 import org.eclipse.wst.web.internal.deployables.FlatComponentDeployable;
 
 
@@ -65,7 +71,7 @@ import org.eclipse.wst.web.internal.depl
  * 
  * @version $Rev$ $Date$
  */
-abstract public class GeronimoServerDelegate extends ServerDelegate implements IGeronimoServer {
+public class GeronimoServerDelegate extends ServerDelegate implements IGeronimoServer {
 
     public static final List<String> DEFAULT_NOREDEPLOY_INCLUDE_PATTERNS = 
         Arrays.asList("**/*.html", "**/*.xhtml", "**/*.css", "**/*.js", "**/*.jsp", "**/*.jspx", "**/*.gif", "**/*.jpg", "**/*.png", "**/*.swt", "**/*.properties", "**/*.xml");
@@ -128,7 +134,65 @@ abstract public class GeronimoServerDele
     // required to avoid error start, and work nicely on windows, when Karaf shell is enabled.
     public static final String JLINE_UNSUPPORTED_TERMINAL = "-Djline.terminal=jline.UnsupportedTerminal";
 
+    private static IGeronimoVersionHandler versionHandler = null;
+
+    private static DeploymentFactory deploymentFactory = new DeploymentFactoryImpl();
+    
     private boolean suspendArgUpdates;
+    
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.geronimo.st.v30.core.IGeronimoServer#getDeployerURL()
+     */
+    public String getDeployerURL() {
+        return "deployer:geronimo:jmx://" + getServer().getHost() + ":" + getRMINamingPort();
+    }
+    
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.geronimo.st.v30.core.IGeronimoServer#getJMXServiceURL()
+     */
+    public String getJMXServiceURL() {
+        String host = getServer().getHost();
+        return "service:jmx:rmi://" + host + "/jndi/rmi://" + host + ":" + getRMINamingPort() + "/JMXConnector";
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.geronimo.st.v30.core.IGeronimoServer#getDeploymentFactory()
+     */
+    public DeploymentFactory getDeploymentFactory() {
+        return deploymentFactory;
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.geronimo.st.v30.core.IGeronimoServer#configureDeploymentManager(javax.enterprise.deploy.spi.DeploymentManager)
+     */
+    public void configureDeploymentManager(DeploymentManager dm) {
+        ((JMXDeploymentManager) dm).setLogConfiguration(true, true);
+        boolean enableInPlace = SocketUtil.isLocalhost(getServer().getHost()) && isRunFromWorkspace();
+        setInPlaceDeployment(dm, enableInPlace);
+    }
+
+    /*
+     * (non-Javadoc)
+     *
+     * @see org.apache.geronimo.st.v30.core.IGeronimoServer#getVersionHandler()
+     */
+    public IGeronimoVersionHandler getVersionHandler() {
+        if (versionHandler == null)
+            versionHandler = new GeronimoVersionHandler();
+        return versionHandler;
+    }
+
+    public void setInPlaceDeployment(DeploymentManager dm, boolean enable) {
+        ((JMXDeploymentManager) dm).setInPlace(enable);
+    }
 
     /**
      * Determines whether the specified module modifications can be made to the server at this time
@@ -263,6 +327,78 @@ abstract public class GeronimoServerDele
         return new IModule[] {};
     }
 
+    /**
+     * Return all parent module(s) of this module
+     * 
+     * @param module
+     * 
+     * @return 
+     */
+    private IModule[] doGetParentModules(IModule module) {
+        Trace.tracePoint("Entry", Activator.traceCore, "GeronimoServerDelegate.doGetParentModules", module);
+
+        ArrayList<IModule> parents = new ArrayList<IModule>();
+        parents.addAll(getApplicationModules(module));
+
+        // also check to see if the module is a utility module for a stand-alone
+        // web module
+        for (IModule war : J2EEUtil.getWebModules(module, null)) {
+            if (getApplicationModules(war).isEmpty()) {
+                parents.add(war);
+            }
+        }
+        IModule[] modules = (IModule[]) parents.toArray(new IModule[parents.size()]);
+        Trace.tracePoint("Exit ", Activator.traceCore, "GeronimoServerDelegate.doGetParentModules", modules);
+        return modules;
+    }
+
+    /**
+     * Return all applications this module is contained in
+     * 
+     * @param module
+     * 
+     * @return 
+     */
+    private List<IModule> getApplicationModules(IModule module) {
+        Trace.tracePoint("Entry", Activator.traceCore, "GeronimoServerDelegate.getApplicationModules", module);
+
+        ArrayList<IModule> list = new ArrayList<IModule>();
+
+        IModule[] ears = ServerUtil.getModules(IModuleConstants.JST_EAR_MODULE);
+        for (int i = 0; i < ears.length; i++) {
+            IEnterpriseApplication ear = (IEnterpriseApplication) ears[i].loadAdapter(IEnterpriseApplication.class, null);
+            IModule[] modules = ear.getModules();
+            for (int j = 0; j < modules.length; j++) {
+                if (modules[j].equals(module))
+                    list.add(ears[i]);
+            }
+        }
+
+        if (AriesHelper.isAriesInstalled()) {
+            IModule[] applications = ServerUtil.getModules(OsgiConstants.APPLICATION);
+            for (int i = 0; i < applications.length; i++) {
+                FlatComponentDeployable application = (FlatComponentDeployable) applications[i].loadAdapter(FlatComponentDeployable.class,  null);
+                IModule[] modules = application.getModules();
+                for (int j = 0; j < modules.length; j++) {
+                    if (modules[j].equals(module))
+                        list.add(applications[i]);
+                }
+            }
+  
+            IModule[] composites = ServerUtil.getModules(OsgiConstants.COMPOSITE_BUNDLE);
+            for (int i = 0; i < composites.length; i++) {
+                FlatComponentDeployable composite = (FlatComponentDeployable) composites[i].loadAdapter(FlatComponentDeployable.class,  null);
+                IModule[] modules = composite.getModules();
+                for (int j = 0; j < modules.length; j++) {
+                    if (modules[j].equals(module))
+                        list.add(composites[i]);
+                }
+            }
+        }
+
+        Trace.tracePoint("Exit ", Activator.traceCore, "GeronimoServerDelegate.getApplicationModules", list);
+        return list;
+    }
 
     /**
      * Return an array of ServerPorts associated with this server
@@ -277,7 +413,7 @@ abstract public class GeronimoServerDele
         ports.add(new ServerPort(PROPERTY_RMI_PORT, "RMI Naming", Integer.parseInt(getRMINamingPort()), "rmi"));
 
         ServerPort[] serverPorts = ports.toArray(new ServerPort[ports.size()]);
-        Trace.tracePoint("Entry", Activator.traceCore, "GeronimoServerDelegate.getServerPorts;", serverPorts);
+        Trace.tracePoint("Entry", Activator.traceCore, "GeronimoServerDelegate.getServerPorts", serverPorts);
         return serverPorts;
     }
 
@@ -391,18 +527,18 @@ abstract public class GeronimoServerDele
 
     @Override
     public void saveConfiguration(IProgressMonitor monitor) throws CoreException {
-        Trace.tracePoint("Enter", Activator.traceCore, "GeronimoServerDelegate.v30.saveConfiguration", monitor);
+        Trace.tracePoint("Enter", Activator.traceCore, "GeronimoServerDelegate.saveConfiguration", monitor);
         super.saveConfiguration(monitor);
-        Trace.tracePoint("Exit", Activator.traceCore, "GeronimoServerDelegate.v30.saveConfiguration", monitor);
+        Trace.tracePoint("Exit", Activator.traceCore, "GeronimoServerDelegate.saveConfiguration", monitor);
     }
     
     
 
     @Override
     public void configurationChanged() {
-        Trace.tracePoint("Enter", Activator.traceCore, "GeronimoServerDelegate.v30.configurationChanged");
+        Trace.tracePoint("Enter", Activator.traceCore, "GeronimoServerDelegate.configurationChanged");
         super.configurationChanged();
-        Trace.tracePoint("Exit", Activator.traceCore, "GeronimoServerDelegate.v30.configurationChanged");
+        Trace.tracePoint("Exit", Activator.traceCore, "GeronimoServerDelegate.configurationChanged");
     }
 
     // 
@@ -681,11 +817,13 @@ abstract public class GeronimoServerDele
         resumeArgUpdates();
     }
 
-    private void addParm(StringBuilder sb, String parm) {
+    private void addParm(StringBuilder sb, Object... args) {
         if (sb.length() > 0) {
             sb.append(" ");
         }
-        sb.append(parm);
+        for (Object arg : args) {
+            sb.append(arg);
+        }
     }
 
     public String getCleanOSGiBundleCacheArgs() {
@@ -748,8 +886,43 @@ abstract public class GeronimoServerDele
     // PROPERTY_VM_ARGS
     // 
     public String getVMArgs() {
-        return getInstanceProperty(PROPERTY_VM_ARGS);
+        String superVMArgs = getInstanceProperty(PROPERTY_VM_ARGS);
+        if (superVMArgs != null && superVMArgs.trim().length() > 0) {
+            return superVMArgs;
+        }
+  
+        StringBuilder args = new StringBuilder();
+
+        addParm(args, "-javaagent:\"$(GERONIMO_HOME)/lib/agent/transformer.jar\"");
+
+        String pS = System.getProperty("path.separator");
+        
+        //-Djava.ext.dirs="GERONIMO_BASE/lib/ext;JRE_HOME/lib/ext"
+        addParm(args, "-Djava.ext.dirs=\"$(GERONIMO_HOME)/lib/ext", pS, "$(JRE_HOME)/lib/ext\"");
+
+        //-Djava.endorsed.dirs="GERONIMO_BASE/lib/endorsed;JRE_HOME/lib/endorsed"
+        addParm(args, "-Djava.endorsed.dirs=\"$(GERONIMO_HOME)/lib/endorsed", pS, "$(JRE_HOME)/lib/endorsed\"");
+
+        // Specify the minimum memory options for the Geronimo server
+        addParm(args, "-Xms256m -Xmx512m -XX:MaxPermSize=128m");
+
+        // Specify GERONIMO_BASE
+        addParm(args, "-Dorg.apache.geronimo.home.dir=\"$(GERONIMO_HOME)\"");
+                
+        addParm(args, "-Dkaraf.home=\"$(GERONIMO_HOME)\"");
+        addParm(args, "-Dkaraf.base=\"$(GERONIMO_HOME)\"");
+        addParm(args, "-Djava.util.logging.config.file=\"$(GERONIMO_HOME)/etc/java.util.logging.properties\"");
+               
+        // Karaf arguments
+        addParm(args, getKarafShellArgs());
+        addParm(args, "-Dkaraf.startRemoteShell=true");
+        
+        String vmArgs = args.toString();
+        Trace.tracePoint("Exit", Activator.traceCore, "GeronimoServer.getVMArgs", vmArgs);
+        
+        return vmArgs;
     }
+    
     public void setVMArgs(String value) {
         setInstanceProperty(PROPERTY_VM_ARGS, value);
     }
@@ -766,8 +939,26 @@ abstract public class GeronimoServerDele
     // PROPERTY_PROGRAM_ARGS
     // 
     public String getProgramArgs() {
-        return getInstanceProperty(PROPERTY_PROGRAM_ARGS);
+        String superVMArgs = getInstanceProperty(PROPERTY_PROGRAM_ARGS);
+        if (superVMArgs != null && superVMArgs.trim().length() > 0) {
+            return superVMArgs;
+        }
+        
+        StringBuilder args = new StringBuilder();
+
+        addParm(args, getConsoleLogLevel());
+        
+        if (isCleanOSGiBundleCache()) {
+            addParm(args, getCleanOSGiBundleCacheArgs());
+        }
+
+        String programArgs = args.toString();
+        
+        Trace.tracePoint("Exit", Activator.traceCore, "GeronimoServerDelegate.getProgramArgs", programArgs);
+        
+        return programArgs;
     }
+    
     public void setProgramArgs(String value) {
         setInstanceProperty(PROPERTY_PROGRAM_ARGS, value);
     }
@@ -922,78 +1113,4 @@ abstract public class GeronimoServerDele
         setAttribute(GeronimoRuntimeDelegate.SERVER_INSTANCE_PROPERTIES, map);
     }
 
-
-    /**
-     * Return all parent module(s) of this module
-     * 
-     * @param module
-     * 
-     * @return 
-     */
-    private IModule[] doGetParentModules(IModule module) {
-        Trace.tracePoint("Entry", Activator.traceCore, "GeronimoServerDelegate.v30.doGetParentModules", module);
-
-        ArrayList<IModule> parents = new ArrayList<IModule>();
-        parents.addAll(getApplicationModules(module));
-
-        // also check to see if the module is a utility module for a stand-alone
-        // web module
-        for (IModule war : J2EEUtil.getWebModules(module, null)) {
-            if (getApplicationModules(war).isEmpty()) {
-                parents.add(war);
-            }
-        }
-        IModule[] modules = (IModule[]) parents.toArray(new IModule[parents.size()]);
-        Trace.tracePoint("Exit ", Activator.traceCore, "GeronimoServerDelegate.v30.doGetParentModules", modules);
-        return modules;
-    }
-
-
-    /**
-     * Return all applications this module is contained in
-     * 
-     * @param module
-     * 
-     * @return 
-     */
-    private List<IModule> getApplicationModules(IModule module) {
-        Trace.tracePoint("Entry", Activator.traceCore, "GeronimoServerDelegate.getApplicationModules", module);
-
-        ArrayList<IModule> list = new ArrayList<IModule>();
-
-        IModule[] ears = ServerUtil.getModules(IModuleConstants.JST_EAR_MODULE);
-        for (int i = 0; i < ears.length; i++) {
-            IEnterpriseApplication ear = (IEnterpriseApplication) ears[i].loadAdapter(IEnterpriseApplication.class, null);
-            IModule[] modules = ear.getModules();
-            for (int j = 0; j < modules.length; j++) {
-                if (modules[j].equals(module))
-                    list.add(ears[i]);
-            }
-        }
-
-        if (AriesHelper.isAriesInstalled()) {
-            IModule[] applications = ServerUtil.getModules(OsgiConstants.APPLICATION);
-            for (int i = 0; i < applications.length; i++) {
-                FlatComponentDeployable application = (FlatComponentDeployable) applications[i].loadAdapter(FlatComponentDeployable.class,  null);
-                IModule[] modules = application.getModules();
-                for (int j = 0; j < modules.length; j++) {
-                    if (modules[j].equals(module))
-                        list.add(applications[i]);
-                }
-            }
-  
-            IModule[] composites = ServerUtil.getModules(OsgiConstants.COMPOSITE_BUNDLE);
-            for (int i = 0; i < composites.length; i++) {
-                FlatComponentDeployable composite = (FlatComponentDeployable) composites[i].loadAdapter(FlatComponentDeployable.class,  null);
-                IModule[] modules = composite.getModules();
-                for (int j = 0; j < modules.length; j++) {
-                    if (modules[j].equals(module))
-                        list.add(composites[i]);
-                }
-            }
-        }
-
-        Trace.tracePoint("Exit ", Activator.traceCore, "GeronimoServerDelegate.getApplicationModules", list);
-        return list;
-    }
 }

Modified: geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/IGeronimoServer.java
URL: http://svn.apache.org/viewvc/geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/IGeronimoServer.java?rev=1147527&r1=1147526&r2=1147527&view=diff
==============================================================================
--- geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/IGeronimoServer.java (original)
+++ geronimo/devtools/eclipse-plugin/trunk/plugins/org.apache.geronimo.st.v30.core/src/main/java/org/apache/geronimo/st/v30/core/IGeronimoServer.java Sun Jul 17 05:17:23 2011
@@ -39,8 +39,6 @@ public interface IGeronimoServer extends
 
     public String getJMXServiceURL();
 
-    public IPath getJSR88DeployerJar();
-    
     public DeploymentFactory getDeploymentFactory();
 
     public void configureDeploymentManager(DeploymentManager dm);