/* Copyright 2007 Alin Dreghiciu.
*
* Licensed 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.ops4j.pax.web.service.internal;
import java.util.Arrays;
import java.util.Dictionary;
import java.util.EventListener;
import javax.servlet.Filter;
import javax.servlet.Servlet;
import javax.servlet.ServletException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.osgi.service.http.HttpContext;
import org.osgi.service.http.NamespaceException;
import org.ops4j.lang.NullArgumentException;
import org.ops4j.pax.web.service.SharedWebContainerContext;
import org.ops4j.pax.web.service.WebContainer;
public class HttpServiceProxy
implements StoppableHttpService
{
private static final Log LOG = LogFactory.getLog( HttpServiceProxy.class );
private StoppableHttpService m_delegate;
public HttpServiceProxy( final StoppableHttpService delegate )
{
NullArgumentException.validateNotNull( delegate, "Delegate" );
m_delegate = delegate;
}
public void registerServlet(
final String alias,
final Servlet servlet,
final Dictionary initParams,
final HttpContext httpContext )
throws ServletException, NamespaceException
{
LOG.debug( "Registering servlet: [" + alias + "] -> " + servlet );
m_delegate.registerServlet( alias, servlet, initParams, httpContext );
}
public void registerResources(
final String alias,
final String name,
final HttpContext httpContext )
throws NamespaceException
{
LOG.debug( "Registering resource: [" + alias + "] -> " + name );
m_delegate.registerResources( alias, name, httpContext );
}
public void unregister( final String alias )
{
LOG.debug( "Unregistering [" + alias + "]" );
m_delegate.unregister( alias );
}
public HttpContext createDefaultHttpContext()
{
LOG.debug( "Creating adefault context" );
return m_delegate.createDefaultHttpContext();
}
public synchronized void stop()
{
LOG.debug( "Stopping http service: [" + this + "]" );
final StoppableHttpService stopping = m_delegate;
m_delegate = new HttpServiceStopped();
stopping.stop();
}
/**
* @see WebContainer#registerServlet(Servlet, String[], Dictionary, HttpContext)
*/
public void registerServlet( final Servlet servlet,
final String[] urlPatterns,
final Dictionary initParams,
final HttpContext httpContext )
throws ServletException
{
LOG.debug( "Registering servlet [" + servlet + "]" );
m_delegate.registerServlet( servlet, urlPatterns, initParams, httpContext );
}
/**
* @see WebContainer#registerServlet(javax.servlet.Servlet, String, String[],java.util.Dictionary,org.osgi.service.http.HttpContext)
*/
public void registerServlet( final Servlet servlet,
final String servletName,
final String[] urlPatterns,
final Dictionary initParams,
final HttpContext httpContext )
throws ServletException
{
LOG.debug( "Registering servlet [" + servlet + "] with name [" + servletName + "]" );
m_delegate.registerServlet( servlet, servletName, urlPatterns, initParams, httpContext );
}
/**
* @see WebContainer#unregisterServlet(Servlet)
*/
public void unregisterServlet( final Servlet servlet )
{
LOG.debug( "Unregistering servlet [" + servlet + "]" );
m_delegate.unregisterServlet( servlet );
}
/**
* @see WebContainer#registerEventListener(EventListener, HttpContext) )
*/
public void registerEventListener( final EventListener listener,
final HttpContext httpContext )
{
LOG.debug( "Registering event listener [" + listener + "]" );
m_delegate.registerEventListener( listener, httpContext );
}
/**
* @see WebContainer#unregisterEventListener(EventListener)
*/
public void unregisterEventListener( final EventListener listener )
{
LOG.debug( "Unregistering event listener [" + listener + "]" );
m_delegate.unregisterEventListener( listener );
}
/**
* @see WebContainer#registerFilter(Filter, String[], String[], Dictionary, HttpContext)
*/
public void registerFilter( final Filter filter,
final String[] urlPatterns,
final String[] aliases,
final Dictionary initParams,
final HttpContext httpContext )
{
LOG.debug( "Registering filter [" + filter + "]" );
m_delegate.registerFilter( filter, urlPatterns, aliases, initParams, httpContext );
}
/**
* @see WebContainer#unregisterFilter(Filter)
*/
public void unregisterFilter( final Filter filter )
{
LOG.debug( "Unregistering filter [" + filter + "]" );
m_delegate.unregisterFilter( filter );
}
/**
* @see WebContainer#setContextParam(Dictionary, HttpContext)
*/
public void setContextParam( final Dictionary params,
final HttpContext httpContext )
{
LOG.debug( "Setting context paramters [" + params + "] for http context [" + httpContext + "]" );
m_delegate.setContextParam( params, httpContext );
}
/**
* {@inheritDoc}
*/
public void setSessionTimeout( final Integer minutes,
final HttpContext httpContext )
{
LOG.debug( "Setting session timeout to " + minutes + " minutes for http context [" + httpContext + "]" );
m_delegate.setSessionTimeout( minutes, httpContext );
}
/**
* @see WebContainer#registerJsps(String[], HttpContext)
*/
public void registerJsps( final String[] urlPatterns,
final HttpContext httpContext )
{
LOG.debug( "Registering jsps" );
m_delegate.registerJsps( urlPatterns, httpContext );
}
/**
* @see WebContainer#unregisterJsps(HttpContext)
*/
public void unregisterJsps( final HttpContext httpContext )
{
LOG.debug( "Unregistering jsps" );
m_delegate.unregisterJsps( httpContext );
}
/**
* @see WebContainer#registerErrorPage(String, String, HttpContext)
*/
public void registerErrorPage( final String error,
final String location,
final HttpContext httpContext )
{
LOG.debug( "Registering error page [" + error + "]" );
m_delegate.registerErrorPage( error, location, httpContext );
}
/**
* @see WebContainer#unregisterErrorPage(String, HttpContext)
*/
public void unregisterErrorPage( final String error,
final HttpContext httpContext )
{
LOG.debug( "Unregistering error page [" + error + "]" );
m_delegate.unregisterErrorPage( error, httpContext );
}
/**
* @see WebContainer#registerWelcomeFiles(String[], boolean, HttpContext)
*/
public void registerWelcomeFiles( final String[] welcomeFiles,
final boolean redirect,
final HttpContext httpContext )
{
LOG.debug( "Registering welcome files [" + Arrays.toString( welcomeFiles ) + "]" );
m_delegate.registerWelcomeFiles( welcomeFiles, redirect, httpContext );
}
/**
* @see WebContainer#unregisterWelcomeFiles(HttpContext)
*/
public void unregisterWelcomeFiles( final HttpContext httpContext )
{
LOG.debug( "Unregistering welcome files" );
m_delegate.unregisterWelcomeFiles( httpContext );
}
public SharedWebContainerContext getDefaultSharedHttpContext() {
return m_delegate.getDefaultSharedHttpContext();
}
}