package copyto.ui.internal.commands; import org.eclipse.core.commands.AbstractParameterValueConverter; import org.eclipse.core.commands.ParameterValueConversionException; import osgiutils.services.ServiceRunnable; import osgiutils.services.Services; import copyto.core.TargetDescriptor; import copyto.core.TargetService; /** * Converts Targets into their String IDs and vice versa. * * @author <a href="mailto:phil.kursawe@gmail.com">Philipp Kursawe</a> * */ public class TargetParameterConverter extends AbstractParameterValueConverter { @Override public Object convertToObject(final String parameterValue) throws ParameterValueConversionException { return Services.run(TargetService.class, new ServiceRunnable<TargetService, TargetDescriptor>() { public TargetDescriptor run(final TargetService service) { return service.find(parameterValue); } }); } @Override public String convertToString(final Object parameterValue) throws ParameterValueConversionException { if (parameterValue instanceof TargetDescriptor) { return ((TargetDescriptor) parameterValue).getId(); } throw new ParameterValueConversionException( "Expected Target for id parameter"); //$NON-NLS-1$ } }