Example usage for com.amazonaws.services.elasticbeanstalk.model SolutionStackDescription getSolutionStackName

List of usage examples for com.amazonaws.services.elasticbeanstalk.model SolutionStackDescription getSolutionStackName

Introduction

In this page you can find the example usage for com.amazonaws.services.elasticbeanstalk.model SolutionStackDescription getSolutionStackName.

Prototype


public String getSolutionStackName() 

Source Link

Document

The name of the solution stack.

Usage

From source file:br.com.ingenieux.mojo.beanstalk.AbstractBeanstalkMojo.java

License:Apache License

protected String lookupSolutionStack(final String solutionStack) {
    if (!GlobUtil.hasWildcards(solutionStack)) {
        return solutionStack;
    }//  ww  w  . j a  va 2 s .  c  o  m

    getLog().info("Looking up for solution stacks matching '" + solutionStack + "'");

    final Function<SolutionStackDescription, String> stackTransformer = new Function<SolutionStackDescription, String>() {
        @Override
        public String apply(SolutionStackDescription input) {
            return input.getSolutionStackName();
        }
    };
    final List<SolutionStackDescription> stackDetails = getService().listAvailableSolutionStacks()
            .getSolutionStackDetails();

    Collection<String> solStackList = Collections2.transform(stackDetails, stackTransformer);

    final Pattern stackPattern = GlobUtil.globify(solutionStack);

    List<String> matchingStacks = new ArrayList<String>(
            Collections2.filter(solStackList, new Predicate<String>() {
                @Override
                public boolean apply(String input) {
                    return stackPattern.matcher(input).matches();
                }
            }));

    Collections.sort(matchingStacks, ComparatorUtils.reversedComparator(Collator.getInstance()));

    if (matchingStacks.isEmpty()) {
        throw new IllegalStateException("unable to lookup a solution stack matching '" + solutionStack + "'");
    }

    return matchingStacks.iterator().next();
}