summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/tags/2.0.1-RC1/modules/host-http/src/main/java/org/apache/tuscany/sca/host/http/ServletHost.java
blob: f70a6eddccbd9546eaf588cddd21ddda756c3752 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the License.    
 */
package org.apache.tuscany.sca.host.http;

import java.net.URL;

import javax.servlet.RequestDispatcher;
import javax.servlet.Servlet;
import javax.servlet.ServletContext;

/**
 * Interface implemented by host environments that allow Servlets to be
 * registered. 
 * <p/> 
 * This interface allows a system service to register a Servlet
 * to handle inbound requests.
 * 
 * @version $Rev$ $Date$
 * @tuscany.spi.extension.inheritfrom
 */
public interface ServletHost {
    
    ServletContext getServletContext();
    
    /**
     * Sets the default port for the server.
     * 
     * @param port the default port
     */
    void setDefaultPort(int port);

    /**
     * Returns the default port for the server.
     * 
     * @return the default port
     */
    int getDefaultPort();
    
    /**
     * Add a mapping for an instance of a Servlet. This requests that the
     * Servlet container direct all requests to the designated mapping to the
     * supplied Servlet instance.
     * 
     * @param uri the URI-mapping for the Servlet
     * @param servlet the Servlet that should be invoked
     * @return The deployed URI
     * @throws ServletMappingException
     */
    String addServletMapping(String uri, Servlet servlet) throws ServletMappingException;
    
    /**
     * Add a mapping for an instance of a Servlet. This requests that the
     * Servlet container direct all requests to the designated mapping to the
     * supplied Servlet instance. SecurityContext can be passed to enable
     * QoS services such as Confidentiality (SSL) and Authentication/Authorization
     * 
     * @param uri the URI-mapping for the Servlet
     * @param servlet the Servlet that should be invoked
     * @param securityContext the SecurityContext to enable QoS services
     * @return The deployed URI
     * @throws ServletMappingException
     */    
    String addServletMapping(String uri, Servlet servlet, SecurityContext securityContext) throws ServletMappingException;    

    /**
     * Remove a Servlet mapping. This directs the Servlet container not to direct
     * any more requests to a previously registered Servlet.
     * 
     * @param uri the URI-mapping for the Servlet
     * @return the Servlet that was registered to the mapping, null if nothing
     *         was registered to the mapping
     * @throws ServletMappingException
     */
    Servlet removeServletMapping(String uri) throws ServletMappingException;

    /**
     * Returns the Servlet mapped to the given URI.
     * 
     * @param uri the URI-mapping for the Servlet
     * @return the Servlet registered with the mapping
     * @throws ServletMappingException
     */
    Servlet getServletMapping(String uri) throws ServletMappingException;

    /**
     * Returns a Servlet request dispatcher for the Servlet mapped to the specified URI.
     * 
     * @param uri the URI mapped to a Servlet
     * @return a RequestDispatcher that can be used to dispatch requests to
     * that Servlet
     * @throws ServletMappingException
     */
    RequestDispatcher getRequestDispatcher(String uri) throws ServletMappingException;

    /**
     * Returns the portion of the request URI that indicates the context of the request
     * 
     * @return a String specifying the portion of the request URI that indicates the context of the request
     */
    String getContextPath();

    /**
     * Sets the portion of the request URI that indicates the context of the request
     * 
     * @param path the context path
     */
    void setContextPath(String path);

    /**
     * Returns the complete URL mapped to the specified URI. 
     * @return the URL mapped to the specified URI
     */
    URL getURLMapping(String uri, SecurityContext securityContext);

    /**
     * Set an attribute in the application ServletContext 
     * @param name the name of the attribute
     * @param value the attribute value
     */
    void setAttribute(String name, Object value);
    
    /**
     * Returns the name that identify the server type (e.g jetty)
     * @return
     */
    String getName();
}