]> WPIA git - gigi.git/blob - lib/jetty/org/eclipse/jetty/servlet/ServletTester.java
Merge "Update notes about password security"
[gigi.git] / lib / jetty / org / eclipse / jetty / servlet / ServletTester.java
1 //
2 //  ========================================================================
3 //  Copyright (c) 1995-2016 Mort Bay Consulting Pty. Ltd.
4 //  ------------------------------------------------------------------------
5 //  All rights reserved. This program and the accompanying materials
6 //  are made available under the terms of the Eclipse Public License v1.0
7 //  and Apache License v2.0 which accompanies this distribution.
8 //
9 //      The Eclipse Public License is available at
10 //      http://www.eclipse.org/legal/epl-v10.html
11 //
12 //      The Apache License v2.0 is available at
13 //      http://www.opensource.org/licenses/apache2.0.php
14 //
15 //  You may elect to redistribute this code under either of these licenses.
16 //  ========================================================================
17 //
18
19 package org.eclipse.jetty.servlet;
20
21 import java.net.InetAddress;
22 import java.nio.ByteBuffer;
23 import java.util.EnumSet;
24 import java.util.Enumeration;
25 import java.util.Map;
26 import java.util.concurrent.TimeUnit;
27
28 import javax.servlet.DispatcherType;
29 import javax.servlet.Filter;
30 import javax.servlet.Servlet;
31
32 import org.eclipse.jetty.server.Connector;
33 import org.eclipse.jetty.server.LocalConnector;
34 import org.eclipse.jetty.server.Server;
35 import org.eclipse.jetty.server.ServerConnector;
36 import org.eclipse.jetty.util.Attributes;
37 import org.eclipse.jetty.util.BufferUtil;
38 import org.eclipse.jetty.util.component.ContainerLifeCycle;
39 import org.eclipse.jetty.util.log.Log;
40 import org.eclipse.jetty.util.log.Logger;
41 import org.eclipse.jetty.util.resource.Resource;
42
43 public class ServletTester extends ContainerLifeCycle
44 {
45     private static final Logger LOG = Log.getLogger(ServletTester.class);
46     
47     private final Server _server=new Server();
48     private final LocalConnector _connector=new LocalConnector(_server);
49     private final ServletContextHandler _context;
50     
51     public Server getServer()
52     {
53         return _server;
54     }
55     
56     public LocalConnector getConnector()
57     {
58         return _connector;
59     }
60     
61     public void setVirtualHosts(String[] vhosts)
62     {
63         _context.setVirtualHosts(vhosts);
64     }
65
66     public void addVirtualHosts(String[] virtualHosts)
67     {
68         _context.addVirtualHosts(virtualHosts);
69     }
70
71     public ServletHolder addServlet(String className, String pathSpec)
72     {
73         return _context.addServlet(className,pathSpec);
74     }
75
76     public ServletHolder addServlet(Class<? extends Servlet> servlet, String pathSpec)
77     {
78         return _context.addServlet(servlet,pathSpec);
79     }
80
81     public void addServlet(ServletHolder servlet, String pathSpec)
82     {
83         _context.addServlet(servlet,pathSpec);
84     }
85
86     public void addFilter(FilterHolder holder, String pathSpec, EnumSet<DispatcherType> dispatches)
87     {
88         _context.addFilter(holder,pathSpec,dispatches);
89     }
90
91     public FilterHolder addFilter(Class<? extends Filter> filterClass, String pathSpec, EnumSet<DispatcherType> dispatches)
92     {
93         return _context.addFilter(filterClass,pathSpec,dispatches);
94     }
95
96     public FilterHolder addFilter(String filterClass, String pathSpec, EnumSet<DispatcherType> dispatches)
97     {
98         return _context.addFilter(filterClass,pathSpec,dispatches);
99     }
100
101     public Object getAttribute(String name)
102     {
103         return _context.getAttribute(name);
104     }
105
106     public Enumeration<String> getAttributeNames()
107     {
108         return _context.getAttributeNames();
109     }
110
111     public Attributes getAttributes()
112     {
113         return _context.getAttributes();
114     }
115
116     public String getContextPath()
117     {
118         return _context.getContextPath();
119     }
120
121     public String getInitParameter(String name)
122     {
123         return _context.getInitParameter(name);
124     }
125
126     public String setInitParameter(String name, String value)
127     {
128         return _context.setInitParameter(name,value);
129     }
130
131     public Enumeration<String> getInitParameterNames()
132     {
133         return _context.getInitParameterNames();
134     }
135
136     public Map<String, String> getInitParams()
137     {
138         return _context.getInitParams();
139     }
140
141     public void removeAttribute(String name)
142     {
143         _context.removeAttribute(name);
144     }
145
146     public void setAttribute(String name, Object value)
147     {
148         _context.setAttribute(name,value);
149     }
150
151     public void setContextPath(String contextPath)
152     {
153         _context.setContextPath(contextPath);
154     }
155
156     public Resource getBaseResource()
157     {
158         return _context.getBaseResource();
159     }
160
161     public String getResourceBase()
162     {
163         return _context.getResourceBase();
164     }
165
166     public void setResourceBase(String resourceBase)
167     {
168         _context.setResourceBase(resourceBase);
169     }
170
171     public ServletTester()
172     {
173         this("/",ServletContextHandler.SECURITY|ServletContextHandler.SESSIONS);
174     }
175
176     public ServletTester(String ctxPath)
177     {
178         this(ctxPath,ServletContextHandler.SECURITY|ServletContextHandler.SESSIONS);
179     }
180
181     public ServletTester(String contextPath,int options)
182     {
183         _context=new ServletContextHandler(_server,contextPath,options);
184         _server.setConnectors(new Connector[]{_connector});
185         addBean(_server);
186     }
187
188     public ServletContextHandler getContext()
189     {
190         return _context;
191     }
192
193     public String getResponses(String request) throws Exception
194     {
195         if (LOG.isDebugEnabled())
196         {
197             LOG.debug("Request: {}",request);
198         }
199         return _connector.getResponses(request);
200     }
201     
202     public String getResponses(String request, long idleFor,TimeUnit units) throws Exception
203     {
204         if (LOG.isDebugEnabled())
205         {
206             LOG.debug("Request: {}",request);
207         }
208         return _connector.getResponses(request, idleFor, units);
209     }
210     
211     public ByteBuffer getResponses(ByteBuffer request) throws Exception
212     {
213         if (LOG.isDebugEnabled())
214         {
215             LOG.debug("Request (Buffer): {}",BufferUtil.toUTF8String(request));
216         }
217         return _connector.getResponses(request);
218     }
219     
220     public ByteBuffer getResponses(ByteBuffer requestsBuffer,long idleFor,TimeUnit units) throws Exception
221     {
222         if (LOG.isDebugEnabled())
223         {
224             LOG.debug("Requests (Buffer): {}",BufferUtil.toUTF8String(requestsBuffer));
225         }
226         return _connector.getResponses(requestsBuffer, idleFor, units);
227     }
228
229     /** Create a port based connector.
230      * This methods adds a port connector to the server
231      * @return A URL to access the server via the connector.
232      * @throws Exception
233      */
234     public String createConnector(boolean localhost) throws Exception
235     {
236         ServerConnector connector = new ServerConnector(_server);
237         if (localhost)
238             connector.setHost("127.0.0.1");
239         _server.addConnector(connector);
240         if (_server.isStarted())
241             connector.start();
242         else
243             connector.open();
244
245         return "http://"+(localhost?"127.0.0.1":
246             InetAddress.getLocalHost().getHostAddress()
247         )+":"+connector.getLocalPort();
248     }
249
250     public LocalConnector createLocalConnector()
251     {
252         LocalConnector connector = new LocalConnector(_server);
253         _server.addConnector(connector);
254         return connector;
255     }
256
257
258
259 }