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