/******************************************************************************* * Copyright (c) 2012 IBM Corporation * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Rafael Medeiros Teixeira <rafaelmt@linux.vnet.ibm.com> - initial API and implementation *******************************************************************************/ package org.eclipse.linuxtools.internal.oprofile.remote.launch.launching; import java.net.URI; import java.net.URISyntaxException; import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Status; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.linuxtools.internal.oprofile.core.OprofileCorePlugin; import org.eclipse.linuxtools.internal.oprofile.launch.OprofileLaunchMessages; import org.eclipse.linuxtools.internal.oprofile.launch.launching.OprofileLaunchConfigurationDelegate; import org.eclipse.linuxtools.profiling.launch.ProxyLaunchMessages; import org.eclipse.linuxtools.profiling.launch.RemoteProxyCMainTab; /** * @since 1.1 */ public class OprofileRemoteLaunchConfigurationDelegate extends OprofileLaunchConfigurationDelegate { private final static String EMPTY_STRING = ""; //$NON-NLS-1$ @Override protected IProject getProject() { String name = null; try { name = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROJECT_NAME, EMPTY_STRING); } catch (CoreException e) { return null; } if (name == null) { return null; } return ResourcesPlugin.getWorkspace().getRoot().getProject(name); } @Override protected IPath getExePath(ILaunchConfiguration config) throws CoreException { String pathString = config.getAttribute(ICDTLaunchConfigurationConstants.ATTR_PROGRAM_NAME, EMPTY_STRING); URI uri; try { uri = new URI(pathString); } catch (URISyntaxException e) { throw new CoreException(new Status(IStatus.ERROR, OprofileCorePlugin.getId() , ProxyLaunchMessages.uri_of_executable_is_invalid)); } IPath path = new Path(uri.getPath()); return path; } @Override protected URI oprofileWorkingDirURI(ILaunchConfiguration config) throws CoreException { String workingDirString = config.getAttribute(RemoteProxyCMainTab.ATTR_REMOTE_WORKING_DIRECTORY_NAME, EMPTY_STRING); if(workingDirString.equals(EMPTY_STRING)){ return getProject().getLocationURI(); } else { URI workingDirUri; try { workingDirUri = new URI(workingDirString); } catch (URISyntaxException e) { Status status = new Status( IStatus.ERROR, OprofileCorePlugin.getId(), OprofileLaunchMessages .getString("oprofilelaunch.error.invalidworkingdir.status_message")); //$NON-NLS-1$ throw new CoreException(status); } return workingDirUri; } } }