package org.springframework.roo.converters;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Set;
import java.util.StringTokenizer;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Service;
import org.springframework.roo.shell.Completion;
import org.springframework.roo.shell.Converter;
import org.springframework.roo.shell.MethodTarget;
/**
* Provides conversion between a space-separated list of field names to a set of
* field names for use in a constructor.
*
* @author Alan Stewart
* @since 1.2.3
*/
@Component
@Service
public class ConstructorFieldsConverter implements Converter<Set<String>> {
public Set<String> convertFromText(final String value, final Class<?> requiredType,
final String optionContext) {
final Set<String> fields = new LinkedHashSet<String>();
final StringTokenizer st = new StringTokenizer(value, " ");
while (st.hasMoreTokens()) {
fields.add(st.nextToken());
}
return fields;
}
public boolean getAllPossibleValues(final List<Completion> completions,
final Class<?> requiredType, final String existingData, final String optionContext,
final MethodTarget target) {
return false;
}
public boolean supports(final Class<?> requiredType, final String optionContext) {
return Set.class.isAssignableFrom(requiredType) && optionContext.contains("constructor-fields");
}
}