Package org.erlide.backend.internal

Source Code of org.erlide.backend.internal.LaunchBeamProcessProvider

package org.erlide.backend.internal;

import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.debug.core.ILaunch;
import org.eclipse.debug.core.ILaunchConfiguration;
import org.eclipse.debug.core.ILaunchManager;
import org.eclipse.debug.core.model.IProcess;
import org.erlide.backend.api.BackendData;
import org.erlide.util.ErlLogger;
import org.erlide.util.IProvider;
import org.erlide.util.SystemConfiguration;

class LaunchBeamProcessProvider implements IProvider<IProcess> {

    private final BackendData data;

    LaunchBeamProcessProvider(final BackendData data) {
        this.data = data;
    }

    @Override
    public IProcess get() {
        ILaunch launch = data.getLaunch();
        if (launch == null) {
            launch = launchPeer();
            data.setLaunch(launch);
        }
        return launch.getProcesses().length == 0 ? null : launch.getProcesses()[0];
    }

    private ILaunch launchPeer() {
        final ILaunchConfiguration launchConfig = data.asLaunchConfiguration();
        try {
            final boolean registerForDebug = data.getLaunch() != null
                    || SystemConfiguration.getInstance().isDeveloper();
            return launchConfig.launch(ILaunchManager.RUN_MODE,
                    new NullProgressMonitor(), false, registerForDebug);
        } catch (final CoreException e) {
            ErlLogger.error(e);
            return null;
        }
    }

}
TOP

Related Classes of org.erlide.backend.internal.LaunchBeamProcessProvider

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.