View Javadoc

1   package com.lexicalscope.jewel.cli;
2   
3   import static java.util.Arrays.asList;
4   
5   import java.util.ArrayList;
6   import java.util.List;
7   import java.util.Locale;
8   import java.util.ResourceBundle;
9   
10  import com.lexicalscope.jewel.JewelRuntimeException;
11  
12  /**
13   * The arguments are not valid
14   * 
15   * @author tim
16   */
17  public class ArgumentValidationException extends JewelRuntimeException
18  {
19      private static final long serialVersionUID = -4781861924515211053L;
20      static final ResourceBundle m_messages = ResourceBundle.getBundle(
21              "com.lexicalscope.jewel.cli.Messages",
22              Locale.getDefault());
23  
24      private final List<ValidationFailure> validationFailures;
25  
26      public ArgumentValidationException() {
27          this(new ArrayList<ValidationFailure>());
28      }
29  
30      public ArgumentValidationException(final String message, final Throwable cause) {
31          this(message, cause, new ArrayList<ValidationFailure>());
32      }
33  
34      public ArgumentValidationException(final String message) {
35          this(message, new ArrayList<ValidationFailure>());
36      }
37  
38      public ArgumentValidationException(final Throwable cause) {
39          this(cause, new ArrayList<ValidationFailure>());
40      }
41  
42      public ArgumentValidationException(final ValidationFailure validationError)
43      {
44          this(asList(validationError));
45      }
46  
47      public ArgumentValidationException(final List<ValidationFailure> validationFailures)
48      {
49          this(createMessageFromErrors(validationFailures), validationFailures);
50      }
51  
52      public ArgumentValidationException(
53              final String message,
54              final Throwable cause,
55              final List<ValidationFailure> validationFailures) {
56          super(message, cause);
57          this.validationFailures = validationFailures;
58      }
59  
60      public ArgumentValidationException(final String message, final List<ValidationFailure> validationFailures) {
61          super(message);
62          this.validationFailures = validationFailures;
63      }
64  
65      public ArgumentValidationException(final Throwable cause, final List<ValidationFailure> validationFailures) {
66          this(createMessageFromErrors(validationFailures), cause, validationFailures);
67      }
68  
69      public List<ValidationFailure> getValidationFailures()
70      {
71          return validationFailures;
72      }
73  
74      private static String createMessageFromErrors(final List<ValidationFailure> validationFailures) {
75          final StringBuilder message = new StringBuilder();
76  
77          String separator = "";
78          for (final ValidationFailure error : validationFailures)
79          {
80              message.append(separator).append(error.getMessage());
81              separator = System.getProperty("line.separator");
82          }
83          return message.toString();
84      }
85  }