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.geronimo.webservices;
019
020 import java.io.IOException;
021 import java.io.InputStream;
022 import java.io.OutputStream;
023 import java.io.Serializable;
024 import java.net.URI;
025 import java.util.Map;
026
027 /**
028 * @version $Rev: 470597 $ $Date: 2006-11-02 15:30:55 -0800 (Thu, 02 Nov 2006) $
029 */
030 public interface WebServiceContainer extends Serializable {
031
032 /**
033 * Used when this WebServiceContainer is servicing a POJO, in which case
034 * the pojo instance is held by the enclosing servlet/invoker and passed in
035 * the Request instance to the container.
036 */
037 public static final String POJO_INSTANCE = WebServiceContainer.class.getName()+"@pojoInstance";
038
039 /**
040 * Used when this WebServiceContainer is servicing a POJO implementing the
041 * ServiceLifecycle interface, in which case the WebServiceContainer is expected
042 * to put the JAX-RPC MessageContext it creates in the Request instance.
043 */
044 public static final String MESSAGE_CONTEXT = WebServiceContainer.class.getName()+"@MessageContext";
045
046 /**
047 * Token inserted into wsdl where location should be replaced with the real location
048 */
049 public String LOCATION_REPLACEMENT_TOKEN = "LOCATIONREPLACEMENTTOKEN";
050
051 void invoke(Request request, Response response) throws Exception;
052
053 void getWsdl(Request req, Response res) throws Exception;
054
055 public interface Request {
056 /** the HTTP OPTIONS type */
057 int OPTIONS = 0; // Section 9.2
058 /** the HTTP GET type */
059 int GET = 1; // Section 9.3
060 /** the HTTP HEAD type */
061 int HEAD = 2; // Section 9.4
062 /** the HTTP POST type */
063 int POST = 3; // Section 9.5
064 /** the HTTP PUT type */
065 int PUT = 4; // Section 9.6
066 /** the HTTP DELETE type */
067 int DELETE = 5; // Section 9.7
068 /** the HTTP TRACE type */
069 int TRACE = 6; // Section 9.8
070 /** the HTTP CONNECT type */
071 int CONNECT = 7; // Section 9.9
072 /** the HTTP UNSUPPORTED type */
073 int UNSUPPORTED = 8;
074 /** the Accept header */
075 String HEADER_ACCEPT = "Accept";
076 /** the Accept-Encoding header */
077 String HEADER_ACCEPT_ENCODING = "Accept-Encoding";
078 /** the Accept-Language header */
079 String HEADER_ACCEPT_LANGUAGE = "Accept-Language";
080 /** the Content-Type header */
081 String HEADER_CONTENT_TYPE = "Content-Type";
082 /** the Content-Length header */
083 String HEADER_CONTENT_LENGTH = "Content-Length";
084 /** the Connection header */
085 String HEADER_CONNECTION = "Connection";
086 /** the Cache-Control header */
087 String HEADER_CACHE_CONTROL = "Cache-Control";
088 /** the Host header */
089 String HEADER_HOST = "Host";
090 /** the User-Agent header */
091 String HEADER_USER_AGENT = "User-Agent";
092 /** the Set-Cookie header */
093 String HEADER_SET_COOKIE = "Set-Cookie";
094 /** the Cookie header */
095 String HEADER_COOKIE = "Cookie";
096
097 String getHeader(String name);
098
099 URI getURI();
100
101 int getContentLength();
102
103 String getContentType();
104
105 InputStream getInputStream() throws IOException;
106
107 int getMethod();
108
109 String getParameter(String name);
110
111 Map getParameters();
112
113 Object getAttribute(String name);
114
115 void setAttribute(String name, Object value);
116 }
117
118 public interface Response {
119 void setHeader(String name, String value);
120
121 String getHeader(String name);
122
123 OutputStream getOutputStream();
124
125 void setStatusCode(int code);
126
127 int getStatusCode();
128
129 void setContentType(String type);
130
131 String getContentType();
132
133 void setStatusMessage(String responseString);
134 }
135
136 }