package org.springframework.roo.converters; import java.util.List; import org.apache.commons.lang3.Validate; import org.apache.felix.scr.annotations.Component; import org.apache.felix.scr.annotations.Reference; import org.apache.felix.scr.annotations.Service; import org.springframework.roo.project.packaging.PackagingProvider; import org.springframework.roo.project.packaging.PackagingProviderRegistry; import org.springframework.roo.shell.Completion; import org.springframework.roo.shell.Converter; import org.springframework.roo.shell.MethodTarget; /** * A {@link Converter} for {@link PackagingProvider}s * * @author Andrew Swan * @since 1.2.0 */ @Component @Service public class PackagingProviderConverter implements Converter<PackagingProvider> { @Reference PackagingProviderRegistry packagingProviderRegistry; public PackagingProvider convertFromText(final String value, final Class<?> targetType, final String optionContext) { final PackagingProvider packagingProvider = packagingProviderRegistry.getPackagingProvider(value); Validate.notNull(packagingProvider, "Unsupported packaging id '%s'", value); return packagingProvider; } public boolean getAllPossibleValues(final List<Completion> completions, final Class<?> targetType, final String existingData, final String optionContext, final MethodTarget target) { for (final PackagingProvider packagingProvider : packagingProviderRegistry .getAllPackagingProviders()) { completions.add(new Completion(packagingProvider.getId().toUpperCase())); } return true; } public boolean supports(final Class<?> type, final String optionContext) { return PackagingProvider.class.isAssignableFrom(type); } }