/*******************************************************************************
* Copyright (c) 2011, 2014 Frank Appel and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Frank Appel - initial API and implementation
* EclipseSource - ongoing development
******************************************************************************/
package org.eclipse.rap.rwt.osgi.internal;
import java.io.IOException;
import java.util.Enumeration;
import javax.servlet.*;
import javax.servlet.http.*;
class CutOffContextPathWrapper extends HttpServlet {
private static final long serialVersionUID = 1L;
private final HttpServlet servlet;
private final String alias;
private final ServletContext servletContext;
static class RequestWrapper extends HttpServletRequestWrapper {
private final String alias;
private final HttpSession httpSession;
RequestWrapper( HttpServletRequest request, ServletContext servletContext, String alias ) {
super( request );
httpSession = new HttpSessionWrapper( request.getSession(), servletContext );
this.alias = alias;
}
@Override
public String getServletPath() {
return "/".equals( alias ) ? "" : alias;
}
@Override
public HttpSession getSession() {
return httpSession;
}
}
CutOffContextPathWrapper( HttpServlet servlet, ServletContext servletContext, String alias ) {
this.servlet = servlet;
this.servletContext = servletContext;
this.alias = alias;
}
@Override
public void destroy() {
servlet.destroy();
}
@Override
public String getInitParameter( String name ) {
return servlet.getInitParameter( name );
}
@Override
public ServletConfig getServletConfig() {
return servlet.getServletConfig();
}
@Override
public Enumeration<String> getInitParameterNames() {
return servlet.getInitParameterNames();
}
@Override
public ServletContext getServletContext() {
return servlet.getServletContext();
}
@Override
public String getServletInfo() {
return servlet.getServletInfo();
}
@Override
public void init() throws ServletException {
servlet.init();
}
@Override
public void init( ServletConfig config ) throws ServletException {
servlet.init( config );
}
@Override
public String getServletName() {
return servlet.getServletName();
}
@Override
public void service( ServletRequest req, ServletResponse res )
throws ServletException, IOException
{
RequestWrapper request = new RequestWrapper( ( HttpServletRequest )req, servletContext, alias );
servlet.service( request, res );
}
@Override
public void log( String message, Throwable t ) {
servlet.log( message, t );
}
@Override
public void log( String msg ) {
servlet.log( msg );
}
}