View Javadoc

1   /*
2    * Copyright 2011 Vincent Behar
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13   * See the License for the specific language governing permissions and
14   * limitations under the License.
15   */
16  package org.rundeck.api;
17  
18  /**
19   * A generic (unchecked) exception when using the Rundeck API
20   * 
21   * @author Vincent Behar
22   */
23  public class RundeckApiException extends RuntimeException {
24  
25      private static final long serialVersionUID = 1L;
26  
27      public RundeckApiException(String message) {
28          super(message);
29      }
30  
31      public RundeckApiException(String message, Throwable cause) {
32          super(message, cause);
33      }
34  
35      /**
36       * Specific authentication-related error (either login or token).
37       * 
38       * @see RundeckApiLoginException
39       * @see RundeckApiTokenException
40       */
41      public static class RundeckApiAuthException extends RundeckApiException {
42  
43          private static final long serialVersionUID = 1L;
44  
45          public RundeckApiAuthException(String message) {
46              super(message);
47          }
48  
49          public RundeckApiAuthException(String message, Throwable cause) {
50              super(message, cause);
51          }
52      }
53  
54      /**
55       * Specific authentication-related error (in case of login-based authentication)
56       */
57      public static class RundeckApiLoginException extends RundeckApiAuthException {
58  
59          private static final long serialVersionUID = 1L;
60  
61          public RundeckApiLoginException(String message) {
62              super(message);
63          }
64  
65          public RundeckApiLoginException(String message, Throwable cause) {
66              super(message, cause);
67          }
68      }
69  
70      /**
71       * Specific authentication-related error (in case of token-based authentication)
72       */
73      public static class RundeckApiTokenException extends RundeckApiAuthException {
74  
75          private static final long serialVersionUID = 1L;
76  
77          public RundeckApiTokenException(String message) {
78              super(message);
79          }
80  
81          public RundeckApiTokenException(String message, Throwable cause) {
82              super(message, cause);
83          }
84      }
85      /**
86       * Error due to unexpected HTTP status
87       */
88      public static class RundeckApiHttpStatusException extends RundeckApiAuthException {
89  
90          private static final long serialVersionUID = 1L;
91          private int statusCode;
92  
93          public RundeckApiHttpStatusException(String message, int statusCode) {
94              super(message);
95              this.statusCode = statusCode;
96          }
97  
98          public RundeckApiHttpStatusException(String message, Throwable cause, int statusCode) {
99              super(message, cause);
100             this.statusCode = statusCode;
101         }
102 
103         public int getStatusCode() {
104             return statusCode;
105         }
106     }
107 
108     /**
109      * Error due to unexpected HTTP content-type
110      */
111     public static class RundeckApiHttpContentTypeException extends RundeckApiAuthException {
112 
113         private static final long serialVersionUID = 1L;
114         private String contentType;
115         private String requiredContentType;
116 
117         public RundeckApiHttpContentTypeException(final String contentType,
118                 final String requiredContentType) {
119             super("Unexpected content-type: '" + contentType + "', expected: '" + requiredContentType + "'");
120             this.contentType = contentType;
121             this.requiredContentType = requiredContentType;
122         }
123         public RundeckApiHttpContentTypeException(final String message, final String contentType,
124                 final String requiredContentType) {
125             super(message);
126             this.contentType = contentType;
127             this.requiredContentType = requiredContentType;
128         }
129 
130         public RundeckApiHttpContentTypeException(final String message, final Throwable cause, final String contentType,
131                 final String requiredContentType) {
132             super(message, cause);
133             this.contentType = contentType;
134             this.requiredContentType = requiredContentType;
135         }
136 
137         public String getContentType() {
138             return contentType;
139         }
140 
141         public String getRequiredContentType() {
142             return requiredContentType;
143         }
144     }
145 
146 }