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.PermanentRedirect.*; 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 308 Permanent Redirect</c> response. 030 * 031 * <p> 032 * The request and all future requests should be repeated using another URI. 307 and 308 parallel the behaviors of 302 and 301, but do not allow the HTTP method to change. 033 * So, for example, submitting a form to a permanently redirected resource may continue smoothly. 034 * 035 * <h5 class='section'>See Also:</h5><ul> 036 * <li class='link'><a class="doclink" href="../../../../../index.html#juneau-rest-common">juneau-rest-common</a> 037 * </ul> 038 */ 039@Response 040@StatusCode(STATUS_CODE) 041@Schema(description=REASON_PHRASE) 042@FluentSetters 043public class PermanentRedirect extends BasicHttpResponse { 044 045 /** HTTP status code */ 046 public static final int STATUS_CODE = 308; 047 048 /** Reason phrase */ 049 public static final String REASON_PHRASE = "Permanent Redirect"; 050 051 /** Default status line */ 052 private static final BasicStatusLine STATUS_LINE = BasicStatusLine.create(STATUS_CODE, REASON_PHRASE); 053 054 /** Default unmodifiable instance */ 055 public static final PermanentRedirect INSTANCE = new PermanentRedirect().setUnmodifiable(); 056 057 /** 058 * Constructor. 059 */ 060 public PermanentRedirect() { 061 super(STATUS_LINE); 062 } 063 064 /** 065 * Copy constructor. 066 * 067 * @param copyFrom The bean to copy from. 068 */ 069 public PermanentRedirect(PermanentRedirect copyFrom) { 070 super(copyFrom); 071 } 072 073 /** 074 * Constructor. 075 * 076 * <p> 077 * This is the constructor used when parsing an HTTP response. 078 * 079 * @param response The HTTP response to copy from. Must not be <jk>null</jk>. 080 * @throws AssertionError If HTTP response status code does not match what was expected. 081 */ 082 public PermanentRedirect(HttpResponse response) { 083 super(response); 084 assertStatusCode(response); 085 } 086 087 /** 088 * Creates a builder for this class initialized with the contents of this bean. 089 * 090 * @return A new builder bean. 091 */ 092 public PermanentRedirect copy() { 093 return new PermanentRedirect(this); 094 } 095 096 // <FluentSetters> 097 098 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 099 public PermanentRedirect setContent(String value) { 100 super.setContent(value); 101 return this; 102 } 103 104 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 105 public PermanentRedirect setContent(HttpEntity value) { 106 super.setContent(value); 107 return this; 108 } 109 110 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 111 public PermanentRedirect setHeader2(Header value) { 112 super.setHeader2(value); 113 return this; 114 } 115 116 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 117 public PermanentRedirect setHeader2(String name, String value) { 118 super.setHeader2(name, value); 119 return this; 120 } 121 122 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 123 public PermanentRedirect setHeaders(List<Header> values) { 124 super.setHeaders(values); 125 return this; 126 } 127 128 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 129 public PermanentRedirect setHeaders(HeaderList value) { 130 super.setHeaders(value); 131 return this; 132 } 133 134 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 135 public PermanentRedirect setHeaders2(Header...values) { 136 super.setHeaders2(values); 137 return this; 138 } 139 140 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 141 public PermanentRedirect setLocale2(Locale value) { 142 super.setLocale2(value); 143 return this; 144 } 145 146 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 147 public PermanentRedirect setLocation(String value) { 148 super.setLocation(value); 149 return this; 150 } 151 152 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 153 public PermanentRedirect setLocation(URI value) { 154 super.setLocation(value); 155 return this; 156 } 157 158 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 159 public PermanentRedirect setProtocolVersion(ProtocolVersion value) { 160 super.setProtocolVersion(value); 161 return this; 162 } 163 164 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 165 public PermanentRedirect setReasonPhrase2(String value) { 166 super.setReasonPhrase2(value); 167 return this; 168 } 169 170 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 171 public PermanentRedirect setReasonPhraseCatalog(ReasonPhraseCatalog value) { 172 super.setReasonPhraseCatalog(value); 173 return this; 174 } 175 176 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 177 public PermanentRedirect setStatusCode2(int value) { 178 super.setStatusCode2(value); 179 return this; 180 } 181 182 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 183 public PermanentRedirect setStatusLine(BasicStatusLine value) { 184 super.setStatusLine(value); 185 return this; 186 } 187 188 @Override /* GENERATED - org.apache.juneau.http.response.BasicHttpResponse */ 189 public PermanentRedirect setUnmodifiable() { 190 super.setUnmodifiable(); 191 return this; 192 } 193 194 // </FluentSetters> 195}