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: * $Header:$
018: */
019: package org.apache.beehive.netui.pageflow.scoping;
020:
021: import javax.servlet.http.HttpServletResponse;
022: import javax.servlet.http.Cookie;
023: import java.util.List;
024: import java.util.Map;
025: import java.io.IOException;
026:
027: /**
028: * A wrapper around HttpServletResponse, associated with a given scope-key. Delegates to the wrapped
029: * response object for some functionality, but prevents output or error codes or forwards from actually
030: * happening.
031: */
032: public interface ScopedResponse extends HttpServletResponse {
033: /**
034: * Get a cookie that was added to the response.
035: */
036: public Cookie getCookie(String cookieName);
037:
038: /**
039: * Get all Cookies that were added to the response.
040: */
041: public Cookie[] getCookies();
042:
043: /**
044: * Get all headers.
045: *
046: * @return a Map of header-name (String) -> headers (List).
047: */
048: public Map getHeaders();
049:
050: /**
051: * Get all headers with the given name.
052: *
053: * @return a List of headers (String, Integer, Date), or <code>null</code> if none are found.
054: */
055: public List getHeaders(String name);
056:
057: /**
058: * Get the first header with the given name.
059: * @return an Object (String, Integer, Date) that is the first header with the given name,
060: * or <code>null</code> if none is found.
061: */
062: public Object getFirstHeader(String name);
063:
064: public HttpServletResponse getOuterResponse();
065:
066: /**
067: * Tell whether the response is in error.
068: *
069: * @return <code>true</code> if {@link #sendError(int,String)} or {@link #sendError(int)} was called.
070: */
071: public boolean isError();
072:
073: /**
074: * Get the status code on the response.
075: *
076: * @return the status code, set by {@link #setStatus(int)}, {@link #sendError(int,String)}, or
077: * {@link #sendError(int)}; -1 if no status was set explicitly.
078: */
079: public int getStatusCode();
080:
081: /**
082: * Get the status message on the response.
083: *
084: * @return the status code, set by {@link #sendError(int,String)}, or <code>null</code> if none was set.
085: */
086: public String getStatusMessage();
087:
088: /**
089: * Tell whether a browser redirect was sent.
090: *
091: * @return <code>true</code> if {@link #sendRedirect} was called.
092: */
093: public boolean didRedirect();
094:
095: /**
096: * Get the redirect URI.
097: *
098: * @return the URI passed to {@link #sendRedirect}, or <code>null</code> if there was no redirect.
099: */
100: public String getRedirectURI();
101:
102: /**
103: * Actually send the redirect that was suggested by {@link #sendRedirect}.
104: *
105: * @throws IllegalStateException if {@link #sendRedirect} was not called.
106: * @throws IOException if {@link HttpServletResponse#sendRedirect} causes an IOException.
107: */
108: public void applyRedirect() throws IOException;
109: }
|