package com.sequenceiq.cloudbreak.shell.converter; import java.lang.reflect.Constructor; import java.util.Collection; import java.util.List; import org.springframework.shell.core.Completion; import org.springframework.shell.core.Converter; import com.sequenceiq.cloudbreak.shell.completion.AbstractCompletion; public abstract class AbstractConverter<T extends AbstractCompletion> implements Converter<T> { protected AbstractConverter() { } @Override public T convertFromText(String value, Class<?> clazz, String optionContext) { try { Constructor<?> constructor = clazz.getDeclaredConstructor(String.class); return (T) constructor.newInstance(value); } catch (Exception e) { return null; } } public <E> boolean getAllPossibleValues(List<Completion> completions, Collection<E> values) { for (E value : values) { completions.add(new Completion(value.toString())); } return true; } }