1 /*
2 * Copyright (C) 2011-2012, Google Inc.
3 * and other copyright owners as documented in the project's IP log.
4 *
5 * This program and the accompanying materials are made available
6 * under the terms of the Eclipse Distribution License v1.0 which
7 * accompanies this distribution, is reproduced below, and is
8 * available at http://www.eclipse.org/org/documents/edl-v10.php
9 *
10 * All rights reserved.
11 *
12 * Redistribution and use in source and binary forms, with or
13 * without modification, are permitted provided that the following
14 * conditions are met:
15 *
16 * - Redistributions of source code must retain the above copyright
17 * notice, this list of conditions and the following disclaimer.
18 *
19 * - Redistributions in binary form must reproduce the above
20 * copyright notice, this list of conditions and the following
21 * disclaimer in the documentation and/or other materials provided
22 * with the distribution.
23 *
24 * - Neither the name of the Eclipse Foundation, Inc. nor the
25 * names of its contributors may be used to endorse or promote
26 * products derived from this software without specific prior
27 * written permission.
28 *
29 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
30 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
31 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
32 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
33 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
34 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
35 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
36 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
37 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
38 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
39 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
40 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
41 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
42 */
43
44 package org.eclipse.jgit.transport;
45
46 import java.io.IOException;
47
48 import org.eclipse.jgit.internal.JGitText;
49
50 /**
51 * Indicates a transport service may not continue execution.
52 *
53 * @since 2.0
54 */
55 public class ServiceMayNotContinueException extends IOException {
56 private static final int FORBIDDEN = 403;
57 private static final long serialVersionUID = 1L;
58
59 private final int statusCode;
60 private boolean output;
61
62 /**
63 * Initialize with no message.
64 */
65 public ServiceMayNotContinueException() {
66 // Do not set a message.
67 statusCode = FORBIDDEN;
68 }
69
70 /**
71 * <p>Constructor for ServiceMayNotContinueException.</p>
72 *
73 * @param msg
74 * a message explaining why it cannot continue. This message may
75 * be shown to an end-user.
76 */
77 public ServiceMayNotContinueException(String msg) {
78 super(msg);
79 statusCode = FORBIDDEN;
80 }
81
82 /**
83 * <p>Constructor for ServiceMayNotContinueException.</p>
84 *
85 * @param msg
86 * a message explaining why it cannot continue. This message may
87 * be shown to an end-user.
88 * @param statusCode
89 * the HTTP status code.
90 * @since 4.5
91 */
92 public ServiceMayNotContinueException(String msg, int statusCode) {
93 super(msg);
94 this.statusCode = statusCode;
95 }
96
97 /**
98 * <p>Constructor for ServiceMayNotContinueException.</p>
99 *
100 * @param msg
101 * a message explaining why it cannot continue. This message may
102 * be shown to an end-user.
103 * @param cause
104 * the cause of the exception.
105 * @since 3.2
106 */
107 public ServiceMayNotContinueException(String msg, Throwable cause) {
108 super(msg, cause);
109 statusCode = FORBIDDEN;
110 }
111
112 /**
113 * <p>Constructor for ServiceMayNotContinueException.</p>
114 *
115 * @param msg
116 * a message explaining why it cannot continue. This message may
117 * be shown to an end-user.
118 * @param cause
119 * the cause of the exception.
120 * @param statusCode
121 * the HTTP status code.
122 * @since 4.5
123 */
124 public ServiceMayNotContinueException(
125 String msg, Throwable cause, int statusCode) {
126 super(msg, cause);
127 this.statusCode = statusCode;
128 }
129
130 /**
131 * Initialize with an "internal server error" message and a cause.
132 *
133 * @param cause
134 * the cause of the exception.
135 * @since 3.2
136 */
137 public ServiceMayNotContinueException(Throwable cause) {
138 this(JGitText.get().internalServerError, cause);
139 }
140
141 /**
142 * Whether the message was already output to the client.
143 *
144 * @return {@code true} if the message was already output to the client.
145 */
146 public boolean isOutput() {
147 return output;
148 }
149
150 /**
151 * Mark this message has being sent to the client.
152 */
153 public void setOutput() {
154 output = true;
155 }
156
157 /**
158 * Get status code
159 *
160 * @return true if the message was already output to the client.
161 * @since 4.5
162 */
163 public int getStatusCode() {
164 return statusCode;
165 }
166 }