1 /*
2 * Copyright (c) 2007, Fraunhofer-Gesellschaft
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
7 * met:
8 *
9 * (1) Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the disclaimer at the end.
11 * Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in
13 * the documentation and/or other materials provided with the
14 * distribution.
15 *
16 * (2) Neither the name of Fraunhofer nor the names of its
17 * contributors may be used to endorse or promote products derived
18 * from this software without specific prior written permission.
19 *
20 * DISCLAIMER
21 *
22 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
23 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
24 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
25 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
26 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
27 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
28 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
29 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
30 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
32 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 *
34 */
35 package org.ogf.graap.wsag.api.exceptions;
36
37 /**
38 * Base class for WSAG4J exceptions.
39 *
40 * @author Oliver Waeldrich
41 */
42 public abstract class WSAgreementException extends Exception
43 {
44
45 /**
46 * HTTP error code for application errors. This code identifies the overall error class. The
47 * exception-specific error code identifies the concrete exception.
48 */
49 private static final int APPLICATION_ERROR_CLASS = 500;
50
51 /**
52 * Error code for the {@link AgreementFactoryException}
53 */
54 public static final int AGREEMENT_FACTORY_ERROR = 1001;
55
56 /**
57 * Error code for the {@link CreationConstraintsViolationException}
58 */
59 public static final int AGREEMENT_CONSTRAINT_VALIDATION_ERROR = 1002;
60
61 /**
62 * Error code for the {@link AgreementCreationException}
63 */
64 public static final int AGREEMENT_CREATION_ERROR = 1003;
65
66 /**
67 * Error code for the {@link NegotiationFactoryException}
68 */
69 public static final int NEGOTIATION_INSTANTIATION_ERROR = 2001;
70
71 /**
72 * Error code for the {@link NegotiationException}
73 */
74 public static final int NEGOTIATION_ERROR = 2101;
75
76 /**
77 * Error code for the {@link ValidationException}
78 */
79 public static final int NEGOTIATION_VALIDATION_ERROR = 2102;
80
81 /**
82 * Error code for the {@link ResourceUnknownException}
83 */
84 public static final int RESOURCE_UNKNOWN_ERROR = 9001;
85
86 /**
87 * Error code for the {@link ResourceUnavailableException}
88 */
89 public static final int RESOURCE_UNAVAILABLE_ERROR = 9002;
90
91 private static final long serialVersionUID = 1L;
92
93 /**
94 * default constructor
95 */
96 public WSAgreementException()
97 {
98 super();
99 }
100
101 /**
102 * Constructs the exception with the given message.
103 *
104 * @param message
105 * the exception message
106 */
107 public WSAgreementException( String message )
108 {
109 super( message );
110 }
111
112 /**
113 * Constructs the exception with the given message and initializes the exception cause.
114 *
115 * @param message
116 * the exception message
117 * @param cause
118 * the exception cause
119 */
120 public WSAgreementException( String message, Throwable cause )
121 {
122 super( message, cause );
123 }
124
125 /**
126 * Constructs the exception and initializes the exception cause.
127 *
128 * @param cause
129 * the exception cause
130 */
131 public WSAgreementException( Throwable cause )
132 {
133 super( cause );
134 }
135
136 /**
137 * Returns a unique error code for the specific Exception;
138 *
139 * @return the exception specific error code
140 */
141 public abstract int getErrorCode();
142
143 /**
144 * Maps an application error to an error class. This error class reflects a HTTP error code. By default
145 * this method returns 500 as error class indicating an application error. Exceptions may overwrite this
146 * method in order to provide a more appropriate error code.
147 *
148 * @return the code of the error class
149 */
150 public int getErrorClass()
151 {
152 return APPLICATION_ERROR_CLASS;
153 }
154 }