package org.org.eclipse.core.utils.platform.commands.converters; import org.eclipse.core.commands.AbstractParameterValueConverter; import org.eclipse.core.commands.ParameterValueConversionException; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.Path; public class WorkspaceResourcePathConverter extends AbstractParameterValueConverter { @Override public final Object convertToObject(final String parameterValue) throws ParameterValueConversionException { final Path path = new Path(parameterValue); final IWorkspaceRoot workspaceRoot = ResourcesPlugin.getWorkspace().getRoot(); final IResource resource = workspaceRoot.findMember(path); if ((resource == null) || (!resource.exists())) { throw new ParameterValueConversionException("parameterValue must be the path of a workspace resource"); //$NON-NLS-1$ } return resource; } @Override public final String convertToString(final Object parameterValue) throws ParameterValueConversionException { if (!(parameterValue instanceof IResource)) { throw new ParameterValueConversionException("parameterValue must be an " + IResource.class.getName()); //$NON-NLS-1$ } final IResource resource = (IResource) parameterValue; return resource.getFullPath().toString(); } }