001    /**
002     *
003     * Licensed to the Apache Software Foundation (ASF) under one or more
004     * contributor license agreements.  See the NOTICE file distributed with
005     * this work for additional information regarding copyright ownership.
006     * The ASF licenses this file to You under the Apache License, Version 2.0
007     * (the "License"); you may not use this file except in compliance with
008     * the License.  You may obtain a copy of the License at
009     *
010     * http://www.apache.org/licenses/LICENSE-2.0
011     *
012     * Unless required by applicable law or agreed to in writing, software
013     * distributed under the License is distributed on an "AS IS" BASIS,
014     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015     * See the License for the specific language governing permissions and
016     * limitations under the License.
017     */
018    package org.apache.camel.component.http;
019    
020    import org.apache.camel.CamelContext;
021    import org.apache.camel.Endpoint;
022    import org.apache.camel.impl.DefaultExchange;
023    
024    import javax.servlet.http.HttpServletRequest;
025    import javax.servlet.http.HttpServletResponse;
026    
027    /**
028     * Represents a HTTP exchange which exposes the underlying HTTP abtractions via
029     * {@link #getRequest()} and {@link #getResponse()} 
030     *
031     * @version $Revision: 549890 $
032     */
033    public class HttpExchange extends DefaultExchange {
034        private final HttpEndpoint endpoint;
035        private HttpServletRequest request;
036        private HttpServletResponse response;
037    
038        public HttpExchange(HttpEndpoint endpoint) {
039            super(endpoint.getContext());
040            this.endpoint = endpoint;
041        }
042    
043        public HttpExchange(HttpEndpoint endpoint, HttpServletRequest request, HttpServletResponse response) {
044            this(endpoint);
045            this.request = request;
046            this.response = response;
047            setIn(new HttpMessage(this, request));
048        }
049    
050    
051        /**
052         * Returns the underlying Servlet request for inbound HTTP requests
053         *
054         * @return the underlying Servlet request for inbound HTTP requests
055         */
056        public HttpServletRequest getRequest() {
057            return request;
058        }
059    
060        /**
061         * Returns the underlying Servlet response for inbound HTTP requests
062         *
063         * @return the underlying Servlet response for inbound HTTP requests
064         */
065        public HttpServletResponse getResponse() {
066            return response;
067        }
068    
069        public HttpEndpoint getEndpoint() {
070            return endpoint;
071        }
072    }