001// *************************************************************************************************************************** 002// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file * 003// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file * 004// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance * 005// * with the License. You may obtain a copy of the License at * 006// * * 007// * http://www.apache.org/licenses/LICENSE-2.0 * 008// * * 009// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an * 010// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the * 011// * specific language governing permissions and limitations under the License. * 012// *************************************************************************************************************************** 013package org.apache.juneau.http.response; 014 015import static org.apache.juneau.http.response.BadRequest.*; 016 017import java.text.*; 018import java.util.*; 019 020import org.apache.http.*; 021import org.apache.http.Header; 022import org.apache.juneau.annotation.*; 023import org.apache.juneau.http.*; 024import org.apache.juneau.http.annotation.*; 025import org.apache.juneau.http.header.*; 026import org.apache.juneau.internal.*; 027 028/** 029 * Exception representing an HTTP 400 (Bad Request). 030 * 031 * <p> 032 * The server cannot or will not process the request due to an apparent client error (e.g., malformed request syntax, size too large, invalid request message framing, or deceptive request routing). 033 * 034 * <h5 class='section'>See Also:</h5><ul> 035 * <li class='link'><a class="doclink" href="../../../../../index.html#juneau-rest-common">juneau-rest-common</a> 036 * </ul> 037 * 038 * @serial exclude 039 */ 040@Response 041@StatusCode(STATUS_CODE) 042@Schema(description=REASON_PHRASE) 043@FluentSetters 044public class BadRequest extends BasicHttpException { 045 private static final long serialVersionUID = 1L; 046 047 /** HTTP status code */ 048 public static final int STATUS_CODE = 400; 049 050 /** Reason phrase */ 051 public static final String REASON_PHRASE = "Bad Request"; 052 053 /** Default status line */ 054 private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE); 055 056 /** Reusable unmodifiable instance */ 057 public static final BadRequest INSTANCE = new BadRequest().setUnmodifiable(); 058 059 /** 060 * Constructor. 061 * 062 * @param cause The caused-by exception. Can be <jk>null</jk>. 063 * @param msg The message. Can be <jk>null</jk>. 064 * @param args The message arguments. 065 */ 066 public BadRequest(Throwable cause, String msg, Object...args) { 067 super(STATUS_CODE, cause, msg, args); 068 setStatusLine(STATUS_LINE.copy()); 069 } 070 071 /** 072 * Constructor. 073 */ 074 public BadRequest() { 075 this((Throwable)null, REASON_PHRASE); 076 } 077 078 /** 079 * Constructor. 080 * 081 * @param msg The message. Can be <jk>null</jk>. 082 * @param args Optional {@link MessageFormat}-style arguments in the message. 083 */ 084 public BadRequest(String msg, Object...args) { 085 this((Throwable)null, msg, args); 086 } 087 088 /** 089 * Constructor. 090 * 091 * @param cause The cause. Can be <jk>null</jk>. 092 */ 093 public BadRequest(Throwable cause) { 094 this(cause, cause == null ? REASON_PHRASE : cause.getMessage()); 095 } 096 097 /** 098 * Constructor. 099 * 100 * <p> 101 * This is the constructor used when parsing an HTTP response. 102 * 103 * @param response The HTTP response to copy from. Must not be <jk>null</jk>. 104 * @throws AssertionError If HTTP response status code does not match what was expected. 105 */ 106 public BadRequest(HttpResponse response) { 107 super(response); 108 assertStatusCode(response); 109 } 110 111 /** 112 * Copy constructor. 113 * 114 * @param copyFrom The bean to copy. 115 */ 116 protected BadRequest(BadRequest copyFrom) { 117 super(copyFrom); 118 } 119 120 /** 121 * Creates a modifiable copy of this bean. 122 * 123 * @return A new modifiable bean. 124 */ 125 public BadRequest copy() { 126 return new BadRequest(this); 127 } 128 129 // <FluentSetters> 130 131 @Override /* GENERATED - org.apache.juneau.BasicRuntimeException */ 132 public BadRequest setMessage(String message, Object...args) { 133 super.setMessage(message, args); 134 return this; 135 } 136 137 @Override /* GENERATED - org.apache.juneau.BasicRuntimeException */ 138 public BadRequest setUnmodifiable() { 139 super.setUnmodifiable(); 140 return this; 141 } 142 143 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpException */ 144 public BadRequest setHeader2(String name, Object value) { 145 super.setHeader2(name, value); 146 return this; 147 } 148 149 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpException */ 150 public BadRequest setHeaders(HeaderList value) { 151 super.setHeaders(value); 152 return this; 153 } 154 155 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpException */ 156 public BadRequest setHeaders2(Header...values) { 157 super.setHeaders2(values); 158 return this; 159 } 160 161 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpException */ 162 public BadRequest setLocale2(Locale value) { 163 super.setLocale2(value); 164 return this; 165 } 166 167 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpException */ 168 public BadRequest setProtocolVersion(ProtocolVersion value) { 169 super.setProtocolVersion(value); 170 return this; 171 } 172 173 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpException */ 174 public BadRequest setReasonPhrase2(String value) { 175 super.setReasonPhrase2(value); 176 return this; 177 } 178 179 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpException */ 180 public BadRequest setReasonPhraseCatalog(ReasonPhraseCatalog value) { 181 super.setReasonPhraseCatalog(value); 182 return this; 183 } 184 185 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpException */ 186 public BadRequest setStatusCode2(int code) throws IllegalStateException{ 187 super.setStatusCode2(code); 188 return this; 189 } 190 191 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpException */ 192 public BadRequest setStatusLine(BasicStatusLine value) { 193 super.setStatusLine(value); 194 return this; 195 } 196 197 // </FluentSetters> 198}