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.Found.*; 016 017import java.net.*; 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 * Represents an <c>HTTP 302 Found</c> response. 030 * 031 * <p> 032 * Tells the client to look at (browse to) another url. 302 has been superseded by 303 and 307. 033 * This is an example of industry practice contradicting the standard. 034 * The HTTP/1.0 specification (RFC 1945) required the client to perform a temporary redirect (the original describing phrase was "Moved Temporarily"), but popular browsers implemented 302 with the functionality of a 303 See Other. 035 * Therefore, HTTP/1.1 added status codes 303 and 307 to distinguish between the two behaviours. 036 * However, some Web applications and frameworks use the 302 status code as if it were the 303. 037 * 038 * <h5 class='section'>See Also:</h5><ul> 039 * <li class='link'><a class="doclink" href="../../../../../index.html#juneau-rest-common">juneau-rest-common</a> 040 * </ul> 041 */ 042@Response 043@StatusCode(STATUS_CODE) 044@Schema(description=REASON_PHRASE) 045@FluentSetters 046public class Found extends BasicHttpResponse { 047 048 /** HTTP status code */ 049 public static final int STATUS_CODE = 302; 050 051 /** Default message */ 052 public static final String REASON_PHRASE = "Found"; 053 054 /** Default status line */ 055 private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE); 056 057 /** Default unmodifiable instance */ 058 public static final Found INSTANCE = new Found().setUnmodifiable(); 059 060 /** 061 * Constructor. 062 */ 063 public Found() { 064 super(STATUS_LINE); 065 } 066 067 /** 068 * Copy constructor. 069 * 070 * @param copyFrom The bean to copy from. 071 */ 072 public Found(Found copyFrom) { 073 super(copyFrom); 074 } 075 076 /** 077 * Constructor. 078 * 079 * <p> 080 * This is the constructor used when parsing an HTTP response. 081 * 082 * @param response The HTTP response to copy from. Must not be <jk>null</jk>. 083 * @throws AssertionError If HTTP response status code does not match what was expected. 084 */ 085 public Found(HttpResponse response) { 086 super(response); 087 assertStatusCode(response); 088 } 089 090 /** 091 * Creates a builder for this class initialized with the contents of this bean. 092 * 093 * @return A new builder bean. 094 */ 095 public Found copy() { 096 return new Found(this); 097 } 098 099 // <FluentSetters> 100 101 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 102 public Found setContent(String value) { 103 super.setContent(value); 104 return this; 105 } 106 107 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 108 public Found setContent(HttpEntity value) { 109 super.setContent(value); 110 return this; 111 } 112 113 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 114 public Found setHeader2(Header value) { 115 super.setHeader2(value); 116 return this; 117 } 118 119 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 120 public Found setHeader2(String name, String value) { 121 super.setHeader2(name, value); 122 return this; 123 } 124 125 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 126 public Found setHeaders(List<Header> values) { 127 super.setHeaders(values); 128 return this; 129 } 130 131 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 132 public Found setHeaders(HeaderList value) { 133 super.setHeaders(value); 134 return this; 135 } 136 137 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 138 public Found setHeaders2(Header...values) { 139 super.setHeaders2(values); 140 return this; 141 } 142 143 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 144 public Found setLocale2(Locale value) { 145 super.setLocale2(value); 146 return this; 147 } 148 149 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 150 public Found setLocation(String value) { 151 super.setLocation(value); 152 return this; 153 } 154 155 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 156 public Found setLocation(URI value) { 157 super.setLocation(value); 158 return this; 159 } 160 161 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 162 public Found setProtocolVersion(ProtocolVersion value) { 163 super.setProtocolVersion(value); 164 return this; 165 } 166 167 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 168 public Found setReasonPhrase2(String value) { 169 super.setReasonPhrase2(value); 170 return this; 171 } 172 173 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 174 public Found setReasonPhraseCatalog(ReasonPhraseCatalog value) { 175 super.setReasonPhraseCatalog(value); 176 return this; 177 } 178 179 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 180 public Found setStatusCode2(int value) { 181 super.setStatusCode2(value); 182 return this; 183 } 184 185 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 186 public Found setStatusLine(BasicStatusLine value) { 187 super.setStatusLine(value); 188 return this; 189 } 190 191 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 192 public Found setUnmodifiable() { 193 super.setUnmodifiable(); 194 return this; 195 } 196 197 // </FluentSetters> 198}