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.core;
019:
020: import java.io.IOException;
021:
022: import javax.servlet.ServletException;
023: import javax.servlet.http.HttpServletResponse;
024:
025: import org.apache.catalina.CometEvent;
026: import org.apache.catalina.Host;
027: import org.apache.catalina.connector.Request;
028: import org.apache.catalina.connector.Response;
029: import org.apache.catalina.util.StringManager;
030: import org.apache.catalina.valves.ValveBase;
031:
032: /**
033: * Valve that implements the default basic behavior for the
034: * <code>StandardEngine</code> container implementation.
035: * <p>
036: * <b>USAGE CONSTRAINT</b>: This implementation is likely to be useful only
037: * when processing HTTP requests.
038: *
039: * @author Craig R. McClanahan
040: * @version $Revision: 467222 $ $Date: 2006-10-24 05:17:11 +0200 (mar., 24 oct. 2006) $
041: */
042:
043: final class StandardEngineValve extends ValveBase {
044:
045: // ----------------------------------------------------- Instance Variables
046:
047: /**
048: * The descriptive information related to this implementation.
049: */
050: private static final String info = "org.apache.catalina.core.StandardEngineValve/1.0";
051:
052: /**
053: * The string manager for this package.
054: */
055: private static final StringManager sm = StringManager
056: .getManager(Constants.Package);
057:
058: // ------------------------------------------------------------- Properties
059:
060: /**
061: * Return descriptive information about this Valve implementation.
062: */
063: public String getInfo() {
064:
065: return (info);
066:
067: }
068:
069: // --------------------------------------------------------- Public Methods
070:
071: /**
072: * Select the appropriate child Host to process this request,
073: * based on the requested server name. If no matching Host can
074: * be found, return an appropriate HTTP error.
075: *
076: * @param request Request to be processed
077: * @param response Response to be produced
078: * @param valveContext Valve context used to forward to the next Valve
079: *
080: * @exception IOException if an input/output error occurred
081: * @exception ServletException if a servlet error occurred
082: */
083: public final void invoke(Request request, Response response)
084: throws IOException, ServletException {
085:
086: // Select the Host to be used for this Request
087: Host host = request.getHost();
088: if (host == null) {
089: response.sendError(HttpServletResponse.SC_BAD_REQUEST, sm
090: .getString("standardEngine.noHost", request
091: .getServerName()));
092: return;
093: }
094:
095: // Ask this Host to process this request
096: host.getPipeline().getFirst().invoke(request, response);
097:
098: }
099:
100: /**
101: * Process Comet event.
102: *
103: * @param request Request to be processed
104: * @param response Response to be produced
105: * @param valveContext Valve context used to forward to the next Valve
106: *
107: * @exception IOException if an input/output error occurred
108: * @exception ServletException if a servlet error occurred
109: */
110: public final void event(Request request, Response response,
111: CometEvent event) throws IOException, ServletException {
112:
113: // Ask this Host to process this request
114: request.getHost().getPipeline().getFirst().event(request,
115: response, event);
116:
117: }
118:
119: }
|