X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/launching/PHPLaunchConfigurationDelegate.java b/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/launching/PHPLaunchConfigurationDelegate.java index 484f75a..5880ca0 100644 --- a/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/launching/PHPLaunchConfigurationDelegate.java +++ b/net.sourceforge.phpeclipse.xdebug.core/src/net/sourceforge/phpeclipse/xdebug/php/launching/PHPLaunchConfigurationDelegate.java @@ -14,7 +14,9 @@ package net.sourceforge.phpeclipse.xdebug.php.launching; import java.io.File; import java.text.MessageFormat; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; +import java.util.Map; import net.sourceforge.phpeclipse.xdebug.core.IXDebugPreferenceConstants; import net.sourceforge.phpeclipse.xdebug.core.XDebugCorePlugin; @@ -36,83 +38,118 @@ import org.eclipse.debug.core.model.ILaunchConfigurationDelegate; import org.eclipse.debug.core.model.IProcess; import org.eclipse.debug.core.model.LaunchConfigurationDelegate; - public class PHPLaunchConfigurationDelegate extends LaunchConfigurationDelegate { - + /** - * @see ILaunchConfigurationDelegate#launch(ILaunchConfiguration, String, ILaunch, IProgressMonitor) + * @see ILaunchConfigurationDelegate#launch(ILaunchConfiguration, String, + * ILaunch, IProgressMonitor) */ - public void launch(ILaunchConfiguration configuration, String mode, ILaunch launch, IProgressMonitor monitor) throws CoreException { + public void launch(ILaunchConfiguration configuration, String mode, + ILaunch launch, IProgressMonitor monitor) throws CoreException { List commandList = new ArrayList(); - - String phpInterpreter = configuration.getAttribute(IXDebugConstants.ATTR_PHP_INTERPRETER, (String)null); - boolean useDefaultInterpreter= configuration.getAttribute(IXDebugConstants.ATTR_PHP_DEFAULT_INTERPRETER, true); - if (useDefaultInterpreter) - phpInterpreter=XDebugCorePlugin.getDefault().getPreferenceStore().getString(IXDebugPreferenceConstants.PHP_INTERPRETER_PREFERENCE); + String phpInterpreter = configuration.getAttribute( + IXDebugConstants.ATTR_PHP_INTERPRETER, (String) null); + boolean useDefaultInterpreter = configuration.getAttribute( + IXDebugConstants.ATTR_PHP_DEFAULT_INTERPRETER, true); + + if (useDefaultInterpreter) + phpInterpreter = XDebugCorePlugin + .getDefault() + .getPreferenceStore() + .getString( + IXDebugPreferenceConstants.PHP_INTERPRETER_PREFERENCE); File exe = new File(phpInterpreter); + // Just to get sure that the interpreter exists if (!exe.exists()) { - abort(MessageFormat.format("Specified PHP executable {0} does not exist. Check value of PHP-Interpreter.", new String[]{phpInterpreter}), null); + abort( + MessageFormat + .format( + "Specified PHP executable {0} does not exist. Check value of PHP-Interpreter.", + new String[] { phpInterpreter }), null); } commandList.add(phpInterpreter); - - // program name - String projectName = configuration.getAttribute(IXDebugConstants.ATTR_PHP_PROJECT, (String)null); - IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName); + // Project name + String projectName = configuration.getAttribute( + IXDebugConstants.ATTR_PHP_PROJECT, (String) null); + IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject( + projectName); + // Just to get sure that the project exists if (project == null) { - abort("PHP-Script unspecified.", null); + abort("Project does not exist.", null); } - String fileName = configuration.getAttribute(IXDebugConstants.ATTR_PHP_FILE, (String)null); + String fileName = configuration.getAttribute( + IXDebugConstants.ATTR_PHP_FILE, (String) null); -// String program = project.getFile(fileName); IFile file = project.getFile(fileName); -// IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(new Path(program)); + // Just to get sure that the script exists if (!file.exists()) { - abort(MessageFormat.format("PHP-Script {0} does not exist.", new String[] {file.getFullPath().toString()}), null); + abort(MessageFormat.format("PHP-Script {0} does not exist.", + new String[] { file.getFullPath().toString() }), null); } - + commandList.add(file.getLocation().toOSString()); -// Map nativeEnvVars = DebugPlugin.getDefault().getLaunchManager().getNativeEnvironment(); - // Environment variables - String[] envp=DebugPlugin.getDefault().getLaunchManager().getEnvironment(configuration); - // Map envVars=configuration.getAttribute(ILaunchManager.ATTR_ENVIRONMENT_VARIABLES, nativeEnvVars); - int debugPort=XDebugCorePlugin.getDefault().getPreferenceStore().getInt(IXDebugPreferenceConstants.DEBUGPORT_PREFERENCE); - if (debugPort<1024) - debugPort=IXDebugPreferenceConstants.DEFAULT_DEBUGPORT; -// if (mode.equals(ILaunchManager.DEBUG_MODE)) { -// nativeEnvVars.put("XDEBUG_CONFIG", "idekey=xdebug_test remote_enable=1"); -// } + + // Get de Debugport form the Launchconfiguration or from the preferences + int debugPort = configuration.getAttribute( + IXDebugConstants.ATTR_PHP_DEBUGPORT, -1); + boolean useDefaultPort = configuration.getAttribute( + IXDebugConstants.ATTR_PHP_DEFAULT_DEBUGPORT, true); + if (useDefaultPort) + debugPort = XDebugCorePlugin.getDefault().getPreferenceStore() + .getInt(IXDebugPreferenceConstants.DEBUGPORT_PREFERENCE); + if (debugPort < 1024) + debugPort = IXDebugPreferenceConstants.DEFAULT_DEBUGPORT; + + String[] envp = DebugPlugin.getDefault().getLaunchManager() + .getEnvironment(configuration); + // appends the environment to the native environment + if (envp == null) { + Map stringVars = DebugPlugin.getDefault().getLaunchManager() + .getNativeEnvironment(); + int idx = 0; + envp = new String[stringVars.size()]; + for (Iterator i = stringVars.keySet().iterator(); i.hasNext();) { + String key = (String) i.next(); + String value = (String) stringVars.get(key); + envp[idx++] = key + "=" + value; + } + } if (mode.equals(ILaunchManager.DEBUG_MODE)) { - String[] env = new String[envp.length+1]; - for(int i=0;i