diff --git a/j2eeserver/src/org/netbeans/modules/j2ee/deployment/devmodules/api/Deployment.java b/j2eeserver/src/org/netbeans/modules/j2ee/deployment/devmodules/api/Deployment.java --- a/j2eeserver/src/org/netbeans/modules/j2ee/deployment/devmodules/api/Deployment.java +++ b/j2eeserver/src/org/netbeans/modules/j2ee/deployment/devmodules/api/Deployment.java @@ -41,7 +41,6 @@ package org.netbeans.modules.j2ee.deployment.devmodules.api; -import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.Iterator; @@ -83,7 +82,14 @@ private static boolean alsoStartTargets = true; //TODO - make it a property? is it really needed? private static Deployment instance = null; - + + /** + * Deployment mode enumeration + */ + public static enum Mode { + RUN, DEBUG, PROFILE; + } + public static synchronized Deployment getDefault () { if (instance == null) { instance = new Deployment (); @@ -94,6 +100,19 @@ private Deployment () { } + /*Deploys a web J2EE module to server. + * @param clientModuleUrl URL of module within a J2EE Application that + * should be used as a client (can be null for standalone modules) + *
+ *

Note: if null for J2EE application the first web or client module will be used.

+ *
+ * @return complete URL to be displayed in browser (server part plus the client module and/or client part provided as a parameter) + * @deprecated Should use {@link Deployment#deploy(org.netbeans.modules.j2ee.deployment.devmodules.spi.J2eeModuleProvider, org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.Mode, java.lang.String, java.lang.String, boolean) } instead + */ + public String deploy (J2eeModuleProvider jmp, boolean debug, String clientModuleUrl, String clientUrlPart, boolean forceRedeploy) throws DeploymentException { + return deploy(jmp, debug ? Mode.DEBUG : Mode.RUN, clientModuleUrl, clientUrlPart, forceRedeploy, null); + } + /** Deploys a web J2EE module to server. * @param clientModuleUrl URL of module within a J2EE Application that * should be used as a client (can be null for standalone modules) @@ -102,11 +121,18 @@ * * @return complete URL to be displayed in browser (server part plus the client module and/or client part provided as a parameter) */ - public String deploy (J2eeModuleProvider jmp, boolean debugmode, String clientModuleUrl, String clientUrlPart, boolean forceRedeploy) throws DeploymentException { - return deploy(jmp, debugmode, clientModuleUrl, clientUrlPart, forceRedeploy, null); + public String deploy (J2eeModuleProvider jmp, Mode mode, String clientModuleUrl, String clientUrlPart, boolean forceRedeploy) throws DeploymentException { + return deploy(jmp, mode, clientModuleUrl, clientUrlPart, forceRedeploy, null); } - - public String deploy (J2eeModuleProvider jmp, boolean debugmode, String clientModuleUrl, String clientUrlPart, boolean forceRedeploy, Logger logger) throws DeploymentException { + + /** + * @deprecated Should use {@link Deployment#deploy(org.netbeans.modules.j2ee.deployment.devmodules.spi.J2eeModuleProvider, org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.Mode, java.lang.String, java.lang.String, boolean, org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.Logger) } instead + */ + public String deploy (J2eeModuleProvider jmp, boolean debug, String clientModuleUrl, String clientUrlPart, boolean forceRedeploy, Logger logger) throws DeploymentException { + return deploy(jmp, debug ? Mode.DEBUG : Mode.RUN, clientModuleUrl, clientUrlPart, forceRedeploy, logger); + } + + public String deploy (J2eeModuleProvider jmp, Mode mode, String clientModuleUrl, String clientUrlPart, boolean forceRedeploy, Logger logger) throws DeploymentException { DeploymentTargetImpl deploymentTarget = new DeploymentTargetImpl(jmp, clientModuleUrl); TargetModule[] modules = null; @@ -151,8 +177,8 @@ boolean serverReady = false; TargetServer targetserver = new TargetServer(deploymentTarget); - if (alsoStartTargets || debugmode) { - targetserver.startTargets(debugmode, progress); + if (alsoStartTargets || mode != Mode.RUN) { + targetserver.startTargets(mode, progress); } else { //PENDING: how do we know whether target does not need to start when deploy only server.getServerInstance().start(progress); } diff --git a/j2eeserver/src/org/netbeans/modules/j2ee/deployment/impl/ServerInstance.java b/j2eeserver/src/org/netbeans/modules/j2ee/deployment/impl/ServerInstance.java --- a/j2eeserver/src/org/netbeans/modules/j2ee/deployment/impl/ServerInstance.java +++ b/j2eeserver/src/org/netbeans/modules/j2ee/deployment/impl/ServerInstance.java @@ -965,7 +965,7 @@ public void startDebug(ProgressUI ui) throws ServerException { try { setServerState(STATE_WAITING); - startTarget(null, ui, true); + startTarget(null, ui, Deployment.Mode.DEBUG); _retrieveDebugInfo(null); } finally { refresh(); @@ -997,7 +997,7 @@ try { setServerState(STATE_WAITING); // target == null - admin server - startProfileImpl(null, settings, forceRestart, ui); + _startProfile(null, settings, forceRestart, ui); } finally { refresh(); } @@ -1021,7 +1021,7 @@ if (stopped) { // restart in the mode the server was running in before if (inProfile) { - startProfileImpl(null, profilerSettings, true, ui); + _startProfile(null, profilerSettings, true, ui); } else if (inDebug) { startDebugTarget(null, ui); } else { @@ -1075,7 +1075,7 @@ * @throws ServerException if the target cannot be started. */ public void startTarget(Target target, ProgressUI ui) throws ServerException { - startTarget(target, ui, false); + startTarget(target, ui, Deployment.Mode.RUN); } /** @@ -1087,7 +1087,7 @@ * @throws ServerException if the server cannot be started. */ public void startDebugTarget(Target target, ProgressUI ui) throws ServerException { - startTarget(target, ui, true); + startTarget(target, ui, Deployment.Mode.DEBUG); _retrieveDebugInfo(target); } @@ -1203,7 +1203,7 @@ /** * @throws ServerException if the server cannot be started. */ - private void startTarget(Target target, ProgressUI ui, boolean debugMode) throws ServerException { + private void startTarget(Target target, ProgressUI ui, Deployment.Mode mode) throws ServerException { StartServer ss = getStartServer(); // No StartServer, have to assume manually started @@ -1221,50 +1221,58 @@ boolean needsRestart = ss.needsRestart(target); if (ss.isAlsoTargetServer(target)) { - if (debugMode) { - if (ss.isDebuggable(target)) { // already running in debug mode - if (! needsRestart) { - return; + switch(mode) { + case PROFILE: { + assert false; // should never come this far + } + case DEBUG: { + if (ss.isDebuggable(target)) { // already running in debug mode + if (! needsRestart) { + return; + } + if (!canControlAdmin || !canDebug) { + String msg = NbBundle.getMessage(ServerInstance.class, "MSG_RestartingThisServerNotSupported", getDisplayName()); + throw new ServerException(msg); + } + _stop(ui); + } else if (isReallyRunning()) { // running but not debuggable + if (!canControlAdmin || !canDebug) { + String msg = NbBundle.getMessage(ServerInstance.class, "MSG_DebugginThisServerNotSupported", getDisplayName()); + throw new ServerException(msg); + } + _stop(ui); } - if (!canControlAdmin || !canDebug) { - String msg = NbBundle.getMessage(ServerInstance.class, "MSG_RestartingThisServerNotSupported", getDisplayName()); - throw new ServerException(msg); - } - _stop(ui); - } else if (isReallyRunning()) { // running but not debuggable - if (!canControlAdmin || !canDebug) { + // the server is stopped now + if (!canDebug) { String msg = NbBundle.getMessage(ServerInstance.class, "MSG_DebugginThisServerNotSupported", getDisplayName()); throw new ServerException(msg); } - _stop(ui); - } - // the server is stopped now - if (!canDebug) { - String msg = NbBundle.getMessage(ServerInstance.class, "MSG_DebugginThisServerNotSupported", getDisplayName()); - throw new ServerException(msg); + // resolve conflicts with other servers + ConflictData cd = anotherServerDebuggable(target); + if (cd != null) { // another server instance with the same parameters + resolveServerConflict(target, ui, cd); + } + _startDebug(target, ui); + break; } - // resolve conflicts with other servers - ConflictData cd = anotherServerDebuggable(target); - if (cd != null) { // another server instance with the same parameters - resolveServerConflict(target, ui, cd); - } - _startDebug(target, ui); - } else { - if (isReallyRunning()) { // already running - if (! needsRestart) { - return; + case RUN: { + if (isReallyRunning()) { // already running + if (! needsRestart) { + return; + } + if (!canControlAdmin) { + String msg = NbBundle.getMessage(ServerInstance.class, "MSG_RestartingThisServerNotSupported", getDisplayName()); + throw new ServerException(msg); + } + _stop(ui); } if (!canControlAdmin) { - String msg = NbBundle.getMessage(ServerInstance.class, "MSG_RestartingThisServerNotSupported", getDisplayName()); + String msg = NbBundle.getMessage(ServerInstance.class, "MSG_StartingThisServerNotSupported", getDisplayName()); throw new ServerException(msg); } - _stop(ui); + _start(ui); + break; } - if (!canControlAdmin) { - String msg = NbBundle.getMessage(ServerInstance.class, "MSG_StartingThisServerNotSupported", getDisplayName()); - throw new ServerException(msg); - } - _start(ui); } } else { // not also target server // this block ensure a running admin server to control other targets @@ -1275,28 +1283,33 @@ } _start(ui); } - if (debugMode) { - if (ss.isDebuggable(target)) { - if ( ! needsRestart) { - return; + switch (mode) { + case DEBUG: { + if (ss.isDebuggable(target)) { + if ( ! needsRestart) { + return; + } + _stop(target, ui); + } else if (ss.isRunning(target)) { + _stop(target, ui); } - _stop(target, ui); - } else if (ss.isRunning(target)) { - _stop(target, ui); + ConflictData cd = anotherServerDebuggable(target); + if (cd != null) { //another server instance with the same parameters + resolveServerConflict(target, ui, cd); + } + _startDebug(target, ui); + break; } - ConflictData cd = anotherServerDebuggable(target); - if (cd != null) { //another server instance with the same parameters - resolveServerConflict(target, ui, cd); + case RUN: { + if (ss.isRunning(target)) { + if (! needsRestart) { + return; + } + _stop(target, ui); + } + _start(target, ui); + break; } - _startDebug(target, ui); - } else { - if (ss.isRunning(target)) { - if (! needsRestart) { - return; - } - _stop(target, ui); - } - _start(target, ui); } } } @@ -1345,7 +1358,7 @@ } /** start server in the profile mode */ - private void startProfileImpl( + private void _startProfile( Target target, ProfilerServerSettings settings, boolean forceRestart, diff --git a/j2eeserver/src/org/netbeans/modules/j2ee/deployment/impl/TargetServer.java b/j2eeserver/src/org/netbeans/modules/j2ee/deployment/impl/TargetServer.java --- a/j2eeserver/src/org/netbeans/modules/j2ee/deployment/impl/TargetServer.java +++ b/j2eeserver/src/org/netbeans/modules/j2ee/deployment/impl/TargetServer.java @@ -38,8 +38,6 @@ * Version 2 license, then the option applies only if the new code is * made subject to such option by the copyright holder. */ - - package org.netbeans.modules.j2ee.deployment.impl; import java.io.File; @@ -71,6 +69,7 @@ import javax.enterprise.deploy.spi.TargetModuleID; import javax.enterprise.deploy.spi.exceptions.TargetException; import javax.enterprise.deploy.spi.status.ProgressObject; +import org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.Mode; import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeApplication; import org.netbeans.modules.j2ee.deployment.devmodules.api.J2eeModule; import org.netbeans.modules.j2ee.deployment.devmodules.api.ModuleChangeReporter; @@ -82,7 +81,10 @@ import org.netbeans.modules.j2ee.deployment.plugins.spi.IncrementalDeployment; import org.netbeans.modules.j2ee.deployment.plugins.spi.config.ModuleConfiguration; import org.netbeans.modules.j2ee.deployment.plugins.spi.TargetModuleIDResolver; +import org.netbeans.modules.j2ee.deployment.profiler.api.ProfilerServerSettings; +import org.netbeans.modules.j2ee.deployment.profiler.spi.Profiler; import org.openide.util.Exceptions; +import org.openide.util.Lookup; /** * Encapsulates a set of ServerTarget(s), provides a wrapper for deployment @@ -99,7 +101,6 @@ public class TargetServer { private static final Logger LOGGER = Logger.getLogger(TargetServer.class.getName()); - private Target[] targets; private final ServerInstance instance; private final DeploymentTarget dtarget; @@ -136,7 +137,7 @@ } incremental = instance.getIncrementalDeployment(); - if (incremental != null && !checkServiceImplementations()) + if (incremental != null && !checkServiceImplementations()) incremental = null; try { @@ -186,7 +187,7 @@ return false; } - if (deployable == null || null == deployable.getContentDirectory() || !instance.getIncrementalDeployment().canFileDeploy(targetz[0], deployable)) + if (deployable == null || null == deployable.getContentDirectory() || !instance.getIncrementalDeployment().canFileDeploy(targetz[0], deployable)) return false; return true; @@ -359,8 +360,8 @@ } if (! redeployHasSharer || toDistribute.contains(sharer.getTarget())) { - shared = true; - addToUndeployWhenSharedDetected.add(sharer.delegate()); + shared = true; + addToUndeployWhenSharedDetected.add(sharer.delegate()); } else { removeFromRedeployWhenSharedDetected.add(sharer); addToDistributeWhenSharedDetected.add(sharer.getTarget()); @@ -423,7 +424,7 @@ Set toRedeploy = new HashSet(); //type TargetModule for (int i=0; i