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: */
017:
018: package org.apache.catalina.authenticator;
019:
020: import java.util.ArrayList;
021: import java.util.HashMap;
022: import java.util.Iterator;
023: import java.util.Locale;
024:
025: import javax.servlet.http.Cookie;
026:
027: import org.apache.tomcat.util.buf.ByteChunk;
028:
029: /**
030: * Object that saves the critical information from a request so that
031: * form-based authentication can reproduce it once the user has been
032: * authenticated.
033: * <p>
034: * <b>IMPLEMENTATION NOTE</b> - It is assumed that this object is accessed
035: * only from the context of a single thread, so no synchronization around
036: * internal collection classes is performed.
037: *
038: * @author Craig R. McClanahan
039: * @version $Revision: 536381 $ $Date: 2007-05-09 01:58:24 +0200 (mer., 09 mai 2007) $
040: */
041:
042: public final class SavedRequest {
043:
044: /**
045: * The set of Cookies associated with this Request.
046: */
047: private ArrayList<Cookie> cookies = new ArrayList<Cookie>();
048:
049: public void addCookie(Cookie cookie) {
050: cookies.add(cookie);
051: }
052:
053: public Iterator getCookies() {
054: return (cookies.iterator());
055: }
056:
057: /**
058: * The set of Headers associated with this Request. Each key is a header
059: * name, while the value is a ArrayList containing one or more actual
060: * values for this header. The values are returned as an Iterator when
061: * you ask for them.
062: */
063: private HashMap<String, ArrayList<String>> headers = new HashMap<String, ArrayList<String>>();
064:
065: public void addHeader(String name, String value) {
066: ArrayList<String> values = (ArrayList<String>) headers
067: .get(name);
068: if (values == null) {
069: values = new ArrayList<String>();
070: headers.put(name, values);
071: }
072: values.add(value);
073: }
074:
075: public Iterator getHeaderNames() {
076: return (headers.keySet().iterator());
077: }
078:
079: public Iterator getHeaderValues(String name) {
080: ArrayList values = (ArrayList) headers.get(name);
081: if (values == null)
082: return ((new ArrayList()).iterator());
083: else
084: return (values.iterator());
085: }
086:
087: /**
088: * The set of Locales associated with this Request.
089: */
090: private ArrayList<Locale> locales = new ArrayList<Locale>();
091:
092: public void addLocale(Locale locale) {
093: locales.add(locale);
094: }
095:
096: public Iterator getLocales() {
097: return (locales.iterator());
098: }
099:
100: /**
101: * The request method used on this Request.
102: */
103: private String method = null;
104:
105: public String getMethod() {
106: return (this .method);
107: }
108:
109: public void setMethod(String method) {
110: this .method = method;
111: }
112:
113: /**
114: * The set of request parameters associated with this Request. Each
115: * entry is keyed by the parameter name, pointing at a String array of
116: * the corresponding values.
117: */
118: private HashMap<String, String[]> parameters = new HashMap<String, String[]>();
119:
120: public void addParameter(String name, String values[]) {
121: parameters.put(name, values);
122: }
123:
124: public Iterator getParameterNames() {
125: return (parameters.keySet().iterator());
126: }
127:
128: public String[] getParameterValues(String name) {
129: return ((String[]) parameters.get(name));
130: }
131:
132: /**
133: * The query string associated with this Request.
134: */
135: private String queryString = null;
136:
137: public String getQueryString() {
138: return (this .queryString);
139: }
140:
141: public void setQueryString(String queryString) {
142: this .queryString = queryString;
143: }
144:
145: /**
146: * The request URI associated with this Request.
147: */
148: private String requestURI = null;
149:
150: public String getRequestURI() {
151: return (this .requestURI);
152: }
153:
154: public void setRequestURI(String requestURI) {
155: this .requestURI = requestURI;
156: }
157:
158: /**
159: * The body of this request.
160: */
161: private ByteChunk body = null;
162:
163: public ByteChunk getBody() {
164: return (this .body);
165: }
166:
167: public void setBody(ByteChunk body) {
168: this .body = body;
169: }
170:
171: /**
172: * The content type of the request, used if this is a POST.
173: */
174: private String contentType = null;
175:
176: public String getContentType() {
177: return (this .contentType);
178: }
179:
180: public void setContentType(String contentType) {
181: this.contentType = contentType;
182: }
183: }
|