package com.sequenceiq.cloudbreak.shell.converter; import java.util.List; import java.util.Map; import javax.inject.Inject; import org.springframework.shell.core.Completion; import org.springframework.shell.core.MethodTarget; import com.sequenceiq.cloudbreak.client.CloudbreakClient; import com.sequenceiq.cloudbreak.shell.completion.NetworkName; import com.sequenceiq.cloudbreak.shell.transformer.ResponseTransformer; public class NetworkNameConverter extends AbstractConverter<NetworkName> { @Inject private CloudbreakClient cloudbreakClient; @Inject private ResponseTransformer responseTransformer; public NetworkNameConverter() { } @Override public boolean supports(Class<?> type, String optionContext) { return NetworkName.class.isAssignableFrom(type); } @Override public boolean getAllPossibleValues(List<Completion> completions, Class<?> targetType, String existingData, String optionContext, MethodTarget target) { try { Map<String, String> networksMap = responseTransformer.transformToMap(cloudbreakClient.networkEndpoint().getPublics(), "id", "name"); return getAllPossibleValues(completions, networksMap.values()); } catch (Exception e) { return false; } } }