2 // ========================================================================
3 // Copyright (c) 1995-2014 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.
9 // The Eclipse Public License is available at
10 // http://www.eclipse.org/legal/epl-v10.html
12 // The Apache License v2.0 is available at
13 // http://www.opensource.org/licenses/apache2.0.php
15 // You may elect to redistribute this code under either of these licenses.
16 // ========================================================================
19 package org.eclipse.jetty.servlet;
21 import java.net.InetAddress;
22 import java.nio.ByteBuffer;
23 import java.util.EnumSet;
24 import java.util.Enumeration;
27 import javax.servlet.DispatcherType;
28 import javax.servlet.Filter;
29 import javax.servlet.Servlet;
31 import org.eclipse.jetty.server.Connector;
32 import org.eclipse.jetty.server.LocalConnector;
33 import org.eclipse.jetty.server.Server;
34 import org.eclipse.jetty.server.ServerConnector;
35 import org.eclipse.jetty.util.Attributes;
36 import org.eclipse.jetty.util.component.ContainerLifeCycle;
37 import org.eclipse.jetty.util.resource.Resource;
39 public class ServletTester extends ContainerLifeCycle
41 private final Server _server=new Server();
42 private final LocalConnector _connector=new LocalConnector(_server);
43 private final ServletContextHandler _context;
45 public Server getServer()
50 public LocalConnector getConnector()
55 public void setVirtualHosts(String[] vhosts)
57 _context.setVirtualHosts(vhosts);
60 public void addVirtualHosts(String[] virtualHosts)
62 _context.addVirtualHosts(virtualHosts);
65 public ServletHolder addServlet(String className, String pathSpec)
67 return _context.addServlet(className,pathSpec);
70 public ServletHolder addServlet(Class<? extends Servlet> servlet, String pathSpec)
72 return _context.addServlet(servlet,pathSpec);
75 public void addServlet(ServletHolder servlet, String pathSpec)
77 _context.addServlet(servlet,pathSpec);
80 public void addFilter(FilterHolder holder, String pathSpec, EnumSet<DispatcherType> dispatches)
82 _context.addFilter(holder,pathSpec,dispatches);
85 public FilterHolder addFilter(Class<? extends Filter> filterClass, String pathSpec, EnumSet<DispatcherType> dispatches)
87 return _context.addFilter(filterClass,pathSpec,dispatches);
90 public FilterHolder addFilter(String filterClass, String pathSpec, EnumSet<DispatcherType> dispatches)
92 return _context.addFilter(filterClass,pathSpec,dispatches);
95 public Object getAttribute(String name)
97 return _context.getAttribute(name);
100 public Enumeration getAttributeNames()
102 return _context.getAttributeNames();
105 public Attributes getAttributes()
107 return _context.getAttributes();
110 public String getContextPath()
112 return _context.getContextPath();
115 public String getInitParameter(String name)
117 return _context.getInitParameter(name);
120 public String setInitParameter(String name, String value)
122 return _context.setInitParameter(name,value);
125 public Enumeration getInitParameterNames()
127 return _context.getInitParameterNames();
130 public Map<String, String> getInitParams()
132 return _context.getInitParams();
135 public void removeAttribute(String name)
137 _context.removeAttribute(name);
140 public void setAttribute(String name, Object value)
142 _context.setAttribute(name,value);
145 public void setContextPath(String contextPath)
147 _context.setContextPath(contextPath);
150 public Resource getBaseResource()
152 return _context.getBaseResource();
155 public String getResourceBase()
157 return _context.getResourceBase();
160 public void setResourceBase(String resourceBase)
162 _context.setResourceBase(resourceBase);
165 private final ServletHandler _handler;
167 public ServletTester()
169 this("/",ServletContextHandler.SECURITY|ServletContextHandler.SESSIONS);
172 public ServletTester(String ctxPath)
174 this(ctxPath,ServletContextHandler.SECURITY|ServletContextHandler.SESSIONS);
177 public ServletTester(String contextPath,int options)
179 _context=new ServletContextHandler(_server,contextPath,options);
180 _handler=_context.getServletHandler();
181 _server.setConnectors(new Connector[]{_connector});
185 public ServletContextHandler getContext()
190 public String getResponses(String request) throws Exception
192 return _connector.getResponses(request);
195 public ByteBuffer getResponses(ByteBuffer request) throws Exception
197 return _connector.getResponses(request);
200 /* ------------------------------------------------------------ */
201 /** Create a port based connector.
202 * This methods adds a port connector to the server
203 * @return A URL to access the server via the connector.
206 public String createConnector(boolean localhost) throws Exception
208 ServerConnector connector = new ServerConnector(_server);
210 connector.setHost("127.0.0.1");
211 _server.addConnector(connector);
212 if (_server.isStarted())
217 return "http://"+(localhost?"127.0.0.1":
218 InetAddress.getLocalHost().getHostAddress()
219 )+":"+connector.getLocalPort();
222 public LocalConnector createLocalConnector()
224 LocalConnector connector = new LocalConnector(_server);
225 _server.addConnector(connector);