Package org.jbehave.plugin.eclipse

Source Code of org.jbehave.plugin.eclipse.JBehaveLaunchConfiguration

package org.jbehave.plugin.eclipse;

import java.io.File;
import java.text.MessageFormat;
import java.util.Map;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.debug.core.ILaunch;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.jdt.launching.AbstractJavaLaunchConfigurationDelegate;
import org.eclipse.jdt.launching.ExecutionArguments;
import org.eclipse.jdt.launching.IVMRunner;
import org.eclipse.jdt.launching.VMRunnerConfiguration;

public class JBehaveLaunchConfiguration extends AbstractJavaLaunchConfigurationDelegate {
  public static final String ID = "jbehave.plugin.eclipse.launch"//$NON_NLS-1$
  public static final String ATTR_BEHAVIOUR_CLASS = ID + ".behaviourClass"; //$NON-NLS-1$
  public static final String ATTR_BEHAVIOUR_METHOD = ID + ".behaviourMethod"; //$NON-NLS-1$
  public static final String ID_JBEHAVE_APPLICATION = "jbehave.plugin.eclipse.launchconfig";

  /* (non-Javadoc)
   * @see org.eclipse.debug.core.model.ILaunchConfigurationDelegate#launch(org.eclipse.debug.core.ILaunchConfiguration, java.lang.String, org.eclipse.debug.core.ILaunch, org.eclipse.core.runtime.IProgressMonitor)
   */
  public void launch(ILaunchConfiguration configuration, String mode, ILaunch launch, IProgressMonitor monitor) throws CoreException {
   
    if (monitor == null) {
      monitor = new NullProgressMonitor();
    }
   
    monitor.beginTask(MessageFormat.format("{0}...", new Object[]{configuration.getName()}), 3); //$NON-NLS-1$
    // check for cancellation
    if (monitor.isCanceled()) {
      return;
    }
   
    monitor.subTask("Building configuration..."); //$NON-NLS-1$
           
    String mainTypeName = verifyMainTypeName(configuration);
    IVMRunner runner = getVMRunner(configuration, mode);

    File workingDir = verifyWorkingDirectory(configuration);
    String workingDirName = null;
    if (workingDir != null) {
      workingDirName = workingDir.getAbsolutePath();
    }
   
    // Environment variables
    String[] envp= getEnvironment(configuration);
   
    // Program & VM args
    String pgmArgs = getBehaviorLocator(configuration);
    String vmArgs = getVMArguments(configuration);
    ExecutionArguments execArgs = new ExecutionArguments(vmArgs, pgmArgs);
   
    // VM-specific attributes
    Map vmAttributesMap = getVMSpecificAttributesMap(configuration);
   
    // Classpath
    String[] classpath = getClasspath(configuration);
   
    // Create VM config
    VMRunnerConfiguration runConfig = new VMRunnerConfiguration(mainTypeName, classpath);
    runConfig.setProgramArguments(execArgs.getProgramArgumentsArray());
    runConfig.setEnvironment(envp);
    runConfig.setVMArguments(execArgs.getVMArgumentsArray());
    runConfig.setWorkingDirectory(workingDirName);
    runConfig.setVMSpecificAttributesMap(vmAttributesMap);

    // Bootpath
    runConfig.setBootClassPath(getBootpath(configuration));
   
    // check for cancellation
    if (monitor.isCanceled()) {
      return;
    }   
   
    // stop in main
    prepareStopInMain(configuration);
   
    // done the verification phase
    monitor.worked(1);
   
    monitor.subTask("Launching..."); //$NON-NLS-1$
    // set the default source locator if required
    setDefaultSourceLocator(launch, configuration);
    monitor.worked(1);   
   
    // Launch the configuration - 1 unit of work
    runner.run(runConfig, launch, monitor);
   
    // check for cancellation
    if (monitor.isCanceled()) {
      return;
   
   
    monitor.done();
  }

  private String getBehaviorLocator(ILaunchConfiguration configuration) throws CoreException {
    return configuration.getAttribute(
        ATTR_BEHAVIOUR_CLASS, ""); //$NON-NLS-1$
}

}
TOP

Related Classes of org.jbehave.plugin.eclipse.JBehaveLaunchConfiguration

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.