View Javadoc

1   //
2   //Author       : t.wood
3   //Copyright    : (c) Resilient Networks plc 2012 - All Rights Reserved
4   //
5   package com.lexicalscope.jewel.cli.validation;
6   
7   import com.lexicalscope.jewel.cli.ValidationErrorBuilder;
8   import com.lexicalscope.jewel.cli.specification.OptionsSpecification;
9   
10  import org.hamcrest.Description;
11  import org.hamcrest.TypeSafeMatcher;
12  
13  public class KnownOptions extends TypeSafeMatcher<RawOption>
14  {
15     private final OptionsSpecification<?> specification;
16     private final ValidationErrorBuilder validationErrorBuilder;
17  
18     public KnownOptions(final OptionsSpecification<?> specification, final ValidationErrorBuilder validationErrorBuilder)
19     {
20        this.specification = specification;
21        this.validationErrorBuilder = validationErrorBuilder;
22     }
23  
24     @Override
25     public void describeTo(final Description description)
26     {
27        description.appendText("option that is part of specification ").appendValue(specification);
28     }
29  
30     @Override
31     protected boolean matchesSafely(final RawOption item)
32     {
33        if(!specification.isSpecified(item.stringValue())) {
34           validationErrorBuilder.unexpectedOption(item.stringValue());
35           return false;
36        }
37        return true;
38     }
39  }