diff options
4 files changed, 19 insertions, 1 deletions
diff --git a/plugins/org.eclipse.jst.server.generic.core/plugin.xml b/plugins/org.eclipse.jst.server.generic.core/plugin.xml index a1bb37b1f..723f523a2 100644 --- a/plugins/org.eclipse.jst.server.generic.core/plugin.xml +++ b/plugins/org.eclipse.jst.server.generic.core/plugin.xml @@ -10,7 +10,7 @@ id="org.eclipse.jst.server.generic.core.launchConfigurationType" name="%launchConfigurationTypeName" delegate="org.eclipse.jst.server.generic.core.internal.GenericServerLaunchConfigurationDelegate" - modes="run, debug" + modes="run, debug, profile" sourceLocatorId="org.eclipse.jdt.launching.sourceLocator.JavaSourceLookupDirector" sourcePathComputerId="org.eclipse.jst.server.generic.core.sourcePathComputer"/> <launchConfigurationType diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerCoreMessages.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerCoreMessages.java index d3f9f7f90..93e72cb93 100644 --- a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerCoreMessages.java +++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerCoreMessages.java @@ -29,6 +29,7 @@ public class GenericServerCoreMessages extends NLS{ public static String errorRemoveModuleAntpublisher; public static String errorPublishAntpublisher; public static String commandlineUnspecified; + public static String noProfiler; public static String workingdirUnspecified; public static String errorLaunchingExecutable; public static String missingServer; diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerCoreMessages.properties b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerCoreMessages.properties index 36e088b9e..763914e0e 100644 --- a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerCoreMessages.properties +++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerCoreMessages.properties @@ -28,3 +28,4 @@ runModeNotSupported= Selected VM does not support this mode unableToCreatePublisher=Unable to create publisher {0} canNotPublishDeletedModule=Can not publish because module {0} is closed or deleted antLauncherMissing=Ant launcher is missing or disabled +noProfiler=Could not launch in profiling mode because no profilers are configured. diff --git a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerLaunchConfigurationDelegate.java b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerLaunchConfigurationDelegate.java index e35d6bb82..ad64ffae9 100644 --- a/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerLaunchConfigurationDelegate.java +++ b/plugins/org.eclipse.jst.server.generic.core/src/org/eclipse/jst/server/generic/core/internal/GenericServerLaunchConfigurationDelegate.java @@ -17,12 +17,15 @@ import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.debug.core.ILaunch; import org.eclipse.debug.core.ILaunchConfiguration; +import org.eclipse.debug.core.ILaunchManager; import org.eclipse.jdt.launching.AbstractJavaLaunchConfigurationDelegate; import org.eclipse.jdt.launching.ExecutionArguments; import org.eclipse.jdt.launching.IJavaLaunchConfigurationConstants; import org.eclipse.jdt.launching.IVMInstall; import org.eclipse.jdt.launching.IVMRunner; import org.eclipse.jdt.launching.VMRunnerConfiguration; +import org.eclipse.jst.server.core.internal.JavaServerPlugin; +import org.eclipse.jst.server.core.internal.ServerProfiler; import org.eclipse.wst.server.core.IServer; import org.eclipse.wst.server.core.ServerUtil; import org.eclipse.wst.server.core.model.ServerBehaviourDelegate; @@ -57,6 +60,10 @@ public class GenericServerLaunchConfigurationDelegate extends AbstractJavaLaunch String mainTypeName = genericServer.getStartClassName(); IVMInstall vm = verifyVMInstall(configuration); IVMRunner runner = vm.getVMRunner(mode); + + if(runner==null && mode == ILaunchManager.PROFILE_MODE){ + runner = vm.getVMRunner(ILaunchManager.RUN_MODE); + } if(runner== null){ throw new CoreException(new Status(IStatus.ERROR,CorePlugin.PLUGIN_ID,0,GenericServerCoreMessages.runModeNotSupported,null)); } @@ -69,6 +76,15 @@ public class GenericServerLaunchConfigurationDelegate extends AbstractJavaLaunch String pgmArgs = getProgramArguments(configuration); String vmArgs = getVMArguments(configuration); + if (mode == ILaunchManager.PROFILE_MODE) { + ServerProfiler[] sp = JavaServerPlugin.getServerProfilers(); + if (sp == null || sp.length==0 || runner == null) { + genericServer.stopImpl(); + throw new CoreException(new Status(IStatus.ERROR, CorePlugin.PLUGIN_ID, 0, GenericServerCoreMessages.noProfiler, null)); + } + String vmArgs2 = sp[0].getVMArgs(); //$NON-NLS-1$ + vmArgs = vmArgs + " " + vmArgs2; //$NON-NLS-1$ + } ExecutionArguments execArgs = new ExecutionArguments(vmArgs, pgmArgs); |