You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@avalon.apache.org by ni...@apache.org on 2004/07/26 06:40:21 UTC

svn commit: rev 30706 - in avalon/trunk/planet/facilities/http: impl/src/main/org/apache/avalon/http/impl spi/src/main/org/apache/avalon/http

Author: niclas
Date: Sun Jul 25 21:40:20 2004
New Revision: 30706

Added:
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/DumpHandler.java   (contents, props changed)
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ErrorPageHandler.java   (contents, props changed)
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ExpiryHandler.java   (contents, props changed)
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ForwardHandler.java   (contents, props changed)
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/HTAccessHandler.java   (contents, props changed)
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/IPAccessHandler.java   (contents, props changed)
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/MsieSslHandler.java   (contents, props changed)
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/NotFoundHandler.java   (contents, props changed)
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/NullHandler.java   (contents, props changed)
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ProxyHandler.java   (contents, props changed)
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ResourceHandler.java   (contents, props changed)
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/RootNotFoundHandler.java   (contents, props changed)
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/SecurityHandler.java   (contents, props changed)
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/SetResponseHeadersHandler.java   (contents, props changed)
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/StringUtils.java   (contents, props changed)
Modified:
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/HttpContextImpl.java
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ModelHandler.java
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/NcsaRequestLog.java
   avalon/trunk/planet/facilities/http/spi/src/main/org/apache/avalon/http/HttpContextService.java
Log:
Added the needed wrappers for the Jetty handlers.

Added: avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/DumpHandler.java
==============================================================================
--- (empty file)
+++ avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/DumpHandler.java	Sun Jul 25 21:40:20 2004
@@ -0,0 +1,121 @@
+/* 
+ * Copyright 2004 Apache Software Foundation
+ * 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.apache.avalon.http.impl;
+
+import org.apache.avalon.framework.activity.Startable;
+
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.ContextException;
+import org.apache.avalon.framework.context.Contextualizable;
+
+import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.avalon.framework.parameters.Parameters;
+
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+
+import org.apache.avalon.http.HttpContextService;
+
+/**
+ * @avalon.component name="http-dump-handler" lifestyle="singleton"
+ * @avalon.server    type="org.mortbay.http.HttpHandler"
+ */
+public class DumpHandler 
+    extends org.mortbay.http.handler.DumpHandler 
+    implements Startable, Parameterizable, LogEnabled, 
+               Serviceable, Contextualizable
+{
+    private Logger m_Logger;
+    private HttpContextService  m_Context;
+    private int m_Index;
+    
+    public DumpHandler()
+    {
+    }
+    
+    /**
+     * Enable the logging system.
+     *
+     * @avalon.logger name="http"
+     */
+    public void enableLogging( Logger logger )
+    {
+        m_Logger = logger;
+    }
+    
+    public Logger getLogger() 
+    {
+        return m_Logger;
+    }
+    
+    /**
+     * Contextulaization of the Handler.
+     *
+     * @param context the supplied listener context
+     *
+     * @exception ContextException if a contextualization error occurs
+     *
+     * @avalon.entry key="urn:avalon:name" 
+     *               type="java.lang.String" 
+     */
+    public void contextualize( Context ctx ) 
+        throws ContextException
+    {
+        String name = (String) ctx.get( "urn:avalon:name" );
+        setName( name );
+    }
+
+    public void parameterize( Parameters params )
+        throws ParameterException
+    {
+        m_Index = params.getParameterAsInteger( "handler-index", -1 );
+    }
+
+    /**  
+     * @avalon.dependency type="org.apache.avalon.http.HttpContextService"
+     *                    key="http-context" 
+     */
+    public void service( ServiceManager man )
+        throws ServiceException
+    {
+        m_Context = (HttpContextService) man.lookup( "http-context" );
+    }
+ 
+    public void start()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Starting DumpHandler: " + this );
+        if( m_Index >= 0 )
+            m_Context.addHandler( m_Index, this );
+        else
+            m_Context.addHandler( this );
+    }
+    
+    public void stop()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Stopping DumpHandler: " + this );
+        m_Context.removeHandler( this );
+    }
+} 
+ 

Added: avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ErrorPageHandler.java
==============================================================================
--- (empty file)
+++ avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ErrorPageHandler.java	Sun Jul 25 21:40:20 2004
@@ -0,0 +1,121 @@
+/* 
+ * Copyright 2004 Apache Software Foundation
+ * 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.apache.avalon.http.impl;
+
+import org.apache.avalon.framework.activity.Startable;
+
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.ContextException;
+import org.apache.avalon.framework.context.Contextualizable;
+
+import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.avalon.framework.parameters.Parameters;
+
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+
+import org.apache.avalon.http.HttpContextService;
+
+/**
+ * @avalon.component name="http-errorpage-handler" lifestyle="singleton"
+ * @avalon.server    type="org.mortbay.http.HttpHandler"
+ */
+public class ErrorPageHandler 
+    extends org.mortbay.http.handler.ErrorPageHandler 
+    implements Startable, Parameterizable, LogEnabled, 
+               Serviceable, Contextualizable
+{
+    private Logger m_Logger;
+    private HttpContextService  m_Context;
+    private int m_Index;
+    
+    public ErrorPageHandler()
+    {
+    }
+    
+    /**
+     * Enable the logging system.
+     *
+     * @avalon.logger name="http"
+     */
+    public void enableLogging( Logger logger )
+    {
+        m_Logger = logger;
+    }
+    
+    public Logger getLogger() 
+    {
+        return m_Logger;
+    }
+    
+    /**
+     * Contextulaization of the Handler.
+     *
+     * @param context the supplied listener context
+     *
+     * @exception ContextException if a contextualization error occurs
+     *
+     * @avalon.entry key="urn:avalon:name" 
+     *               type="java.lang.String" 
+     */
+    public void contextualize( Context ctx ) 
+        throws ContextException
+    {
+        String name = (String) ctx.get( "urn:avalon:name" );
+        setName( name );
+    }
+
+    public void parameterize( Parameters params )
+        throws ParameterException
+    {
+        m_Index = params.getParameterAsInteger( "handler-index", -1 );
+    }
+
+    /**  
+     * @avalon.dependency type="org.apache.avalon.http.HttpContextService"
+     *                    key="http-context" 
+     */
+    public void service( ServiceManager man )
+        throws ServiceException
+    {
+        m_Context = (HttpContextService) man.lookup( "http-context" );
+    }
+ 
+    public void start()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Starting ErrorPageHandler: " + this );
+        if( m_Index >= 0 )
+            m_Context.addHandler( m_Index, this );
+        else
+            m_Context.addHandler( this );
+    }
+    
+    public void stop()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Stopping ErrorPageHandler: " + this );
+        m_Context.removeHandler( this );
+    }
+} 
+ 

Added: avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ExpiryHandler.java
==============================================================================
--- (empty file)
+++ avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ExpiryHandler.java	Sun Jul 25 21:40:20 2004
@@ -0,0 +1,125 @@
+/* 
+ * Copyright 2004 Apache Software Foundation
+ * 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.apache.avalon.http.impl;
+
+import org.apache.avalon.framework.activity.Startable;
+
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.ContextException;
+import org.apache.avalon.framework.context.Contextualizable;
+
+import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.avalon.framework.parameters.Parameters;
+
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+
+import org.apache.avalon.http.HttpContextService;
+
+/**
+ * @avalon.component name="http-expiry-handler" lifestyle="singleton"
+ * @avalon.server    type="org.mortbay.http.HttpHandler"
+ */
+public class ExpiryHandler 
+    extends org.mortbay.http.handler.ExpiryHandler 
+    implements Startable, Parameterizable, LogEnabled, 
+               Serviceable, Contextualizable
+{
+    private Logger m_Logger;
+    private HttpContextService  m_Context;
+    private int m_Index;
+    
+    public ExpiryHandler()
+    {
+    }
+    
+    /**
+     * Enable the logging system.
+     *
+     * @avalon.logger name="http"
+     */
+    public void enableLogging( Logger logger )
+    {
+        m_Logger = logger;
+    }
+    
+    public Logger getLogger() 
+    {
+        return m_Logger;
+    }
+    
+    /**
+     * Contextulaization of the Handler.
+     *
+     * @param context the supplied listener context
+     *
+     * @exception ContextException if a contextualization error occurs
+     *
+     * @avalon.entry key="urn:avalon:name" 
+     *               type="java.lang.String" 
+     */
+    public void contextualize( Context ctx ) 
+        throws ContextException
+    {
+        String name = (String) ctx.get( "urn:avalon:name" );
+        setName( name );
+    }
+
+    public void parameterize( Parameters params )
+        throws ParameterException
+    {
+        m_Index = params.getParameterAsInteger( "handler-index", -1 );
+        
+        int ttl = params.getParameterAsInteger( "time-to-live", -1 );
+        if( ttl > 0 )
+            setTimeToLive( ttl );
+    }
+
+    /**  
+     * @avalon.dependency type="org.apache.avalon.http.HttpContextService"
+     *                    key="http-context" 
+     */
+    public void service( ServiceManager man )
+        throws ServiceException
+    {
+        m_Context = (HttpContextService) man.lookup( "http-context" );
+    }
+ 
+    public void start()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Starting ExpiryHandler: " + this );
+        if( m_Index >= 0 )
+            m_Context.addHandler( m_Index, this );
+        else
+            m_Context.addHandler( this );
+    }
+    
+    public void stop()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Stopping ExpiryHandler: " + this );
+        m_Context.removeHandler( this );
+    }
+} 
+ 

Added: avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ForwardHandler.java
==============================================================================
--- (empty file)
+++ avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ForwardHandler.java	Sun Jul 25 21:40:20 2004
@@ -0,0 +1,155 @@
+/* 
+ * Copyright 2004 Apache Software Foundation
+ * 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.apache.avalon.http.impl;
+
+import org.apache.avalon.framework.activity.Startable;
+
+import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.ContextException;
+import org.apache.avalon.framework.context.Contextualizable;
+
+import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.avalon.framework.parameters.Parameters;
+
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+
+import org.apache.avalon.http.HttpContextService;
+
+/**
+ * @avalon.component name="http-forward-handler" lifestyle="singleton"
+ * @avalon.server    type="org.mortbay.http.HttpHandler"
+ */
+public class ForwardHandler 
+    extends org.mortbay.http.handler.ForwardHandler 
+    implements Startable, Parameterizable, LogEnabled, 
+               Serviceable, Contextualizable
+{
+    private Logger m_Logger;
+    private HttpContextService  m_Context;
+    private int m_Index;
+    
+    public ForwardHandler()
+    {
+    }
+    
+    /**
+     * Enable the logging system.
+     *
+     * @avalon.logger name="http"
+     */
+    public void enableLogging( Logger logger )
+    {
+        m_Logger = logger;
+    }
+    
+    public Logger getLogger() 
+    {
+        return m_Logger;
+    }
+    
+    /**
+     * Contextulaization of the Handler.
+     *
+     * @param context the supplied listener context
+     *
+     * @exception ContextException if a contextualization error occurs
+     *
+     * @avalon.entry key="urn:avalon:name" 
+     *               type="java.lang.String" 
+     */
+    public void contextualize( Context ctx ) 
+        throws ContextException
+    {
+        String name = (String) ctx.get( "urn:avalon:name" );
+        setName( name );
+    }
+
+    public void parameterize( Parameters params )
+        throws ParameterException
+    {
+        m_Index = params.getParameterAsInteger( "handler-index", -1 );
+        
+        String rootForward = params.getParameter( "root-forward", null );
+        if( rootForward != null )
+            setRootForward( rootForward );
+        
+        boolean queries = params.getParameterAsBoolean( "handle-queries", false );
+        setHandleQueries( queries );
+    }
+
+    public void configure( Configuration conf )
+        throws ConfigurationException 
+    {
+        Configuration child = conf.getChild( "forwards" );
+        configureForwards( child );    
+    }
+    
+    private void configureForwards( Configuration conf )
+        throws ConfigurationException 
+    {
+        Configuration[] children = conf.getChildren( "forward" );
+        for( int i=0 ; i < children.length ; i++ )
+            configureForward( children[i] );
+    }
+    
+    private void configureForward( Configuration conf )
+        throws ConfigurationException 
+    {
+        Configuration oldPath = conf.getChild( "from" );
+        Configuration newPath = conf.getChild( "to" );
+        addForward( oldPath.getValue(), newPath.getValue() );
+    }
+    
+    /**  
+     * @avalon.dependency type="org.apache.avalon.http.HttpContextService"
+     *                    key="http-context" 
+     */
+    public void service( ServiceManager man )
+        throws ServiceException
+    {
+        m_Context = (HttpContextService) man.lookup( "http-context" );
+    }
+ 
+    public void start()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Starting ForwardHandler: " + this );
+        if( m_Index >= 0 )
+            m_Context.addHandler( m_Index, this );
+        else
+            m_Context.addHandler( this );
+    }
+    
+    public void stop()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Stopping ForwardHandler: " + this );
+        m_Context.removeHandler( this );
+    }
+} 
+ 

Added: avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/HTAccessHandler.java
==============================================================================
--- (empty file)
+++ avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/HTAccessHandler.java	Sun Jul 25 21:40:20 2004
@@ -0,0 +1,129 @@
+/* 
+ * Copyright 2004 Apache Software Foundation
+ * 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.apache.avalon.http.impl;
+
+import org.apache.avalon.framework.activity.Startable;
+
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.ContextException;
+import org.apache.avalon.framework.context.Contextualizable;
+
+import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.avalon.framework.parameters.Parameters;
+
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+
+import org.apache.avalon.http.HttpContextService;
+
+/**
+ * @avalon.component name="http-htaccess-handler" lifestyle="singleton"
+ * @avalon.server    type="org.mortbay.http.HttpHandler"
+ */
+public class HTAccessHandler 
+    extends org.mortbay.http.handler.HTAccessHandler 
+    implements Startable, Parameterizable, LogEnabled, 
+               Serviceable, Contextualizable
+{
+    private Logger m_Logger;
+    private HttpContextService  m_Context;
+    private int m_Index;
+    
+    public HTAccessHandler()
+    {
+    }
+    
+    /**
+     * Enable the logging system.
+     *
+     * @avalon.logger name="http"
+     */
+    public void enableLogging( Logger logger )
+    {
+        m_Logger = logger;
+    }
+    
+    public Logger getLogger() 
+    {
+        return m_Logger;
+    }
+    
+    /**
+     * Contextulaization of the Handler.
+     *
+     * @param context the supplied listener context
+     *
+     * @exception ContextException if a contextualization error occurs
+     *
+     * @avalon.entry key="urn:avalon:name" 
+     *               type="java.lang.String" 
+     */
+    public void contextualize( Context ctx ) 
+        throws ContextException
+    {
+        String name = (String) ctx.get( "urn:avalon:name" );
+        setName( name );
+    }
+
+    public void parameterize( Parameters params )
+        throws ParameterException
+    {
+        m_Index = params.getParameterAsInteger( "handler-index", -1 );
+        
+        String defaultAccess = params.getParameter( "default-access", null );
+        if( defaultAccess != null )
+            setDefault( defaultAccess );
+            
+        String filename = params.getParameter( "access-file", null );
+        if( filename != null )
+            setAccessFile( filename );
+    }
+
+    /**  
+     * @avalon.dependency type="org.apache.avalon.http.HttpContextService"
+     *                    key="http-context" 
+     */
+    public void service( ServiceManager man )
+        throws ServiceException
+    {
+        m_Context = (HttpContextService) man.lookup( "http-context" );
+    }
+ 
+    public void start()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Starting HTAccessHandler: " + this );
+        if( m_Index >= 0 )
+            m_Context.addHandler( m_Index, this );
+        else
+            m_Context.addHandler( this );
+    }
+    
+    public void stop()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Stopping HTAccessHandler: " + this );
+        m_Context.removeHandler( this );
+    }
+} 
+ 

Modified: avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/HttpContextImpl.java
==============================================================================
--- avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/HttpContextImpl.java	(original)
+++ avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/HttpContextImpl.java	Sun Jul 25 21:40:20 2004
@@ -233,6 +233,13 @@
         m_HttpContext.addHandler( handler );
     }
     
+    public void addHandler( int index, HttpHandler handler )
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Adding handler: " + handler );
+        m_HttpContext.addHandler( handler );
+    }
+    
     public void removeHandler( HttpHandler handler )
     {
         if( m_Logger.isDebugEnabled() )

Added: avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/IPAccessHandler.java
==============================================================================
--- (empty file)
+++ avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/IPAccessHandler.java	Sun Jul 25 21:40:20 2004
@@ -0,0 +1,149 @@
+/* 
+ * Copyright 2004 Apache Software Foundation
+ * 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.apache.avalon.http.impl;
+
+import org.apache.avalon.framework.activity.Startable;
+
+import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.ContextException;
+import org.apache.avalon.framework.context.Contextualizable;
+
+import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.avalon.framework.parameters.Parameters;
+
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+
+import org.apache.avalon.http.HttpContextService;
+
+/**
+ * @avalon.component name="http-ipaccess-handler" lifestyle="singleton"
+ * @avalon.server    type="org.mortbay.http.HttpHandler"
+ */
+public class IPAccessHandler 
+    extends org.mortbay.http.handler.IPAccessHandler 
+    implements Startable, Parameterizable, LogEnabled, 
+               Serviceable, Contextualizable
+{
+    private Logger m_Logger;
+    private HttpContextService  m_Context;
+    private int m_Index;
+    
+    public IPAccessHandler()
+    {
+    }
+    
+    /**
+     * Enable the logging system.
+     *
+     * @avalon.logger name="http"
+     */
+    public void enableLogging( Logger logger )
+    {
+        m_Logger = logger;
+    }
+    
+    public Logger getLogger() 
+    {
+        return m_Logger;
+    }
+    
+    /**
+     * Contextulaization of the Handler.
+     *
+     * @param context the supplied listener context
+     *
+     * @exception ContextException if a contextualization error occurs
+     *
+     * @avalon.entry key="urn:avalon:name" 
+     *               type="java.lang.String" 
+     */
+    public void contextualize( Context ctx ) 
+        throws ContextException
+    {
+        String name = (String) ctx.get( "urn:avalon:name" );
+        setName( name );
+    }
+
+    public void parameterize( Parameters params )
+        throws ParameterException
+    {
+        m_Index = params.getParameterAsInteger( "handler-index", -1 );
+        
+        String standard = params.getParameter( "standard-action", null );
+        if( standard != null )
+            setStandard( standard );
+    }
+
+    public void configure( Configuration conf )
+        throws ConfigurationException 
+    {
+        Configuration child = conf.getChild( "access" );
+        configureAccess( child );    
+    }
+    
+    private void configureAccess( Configuration conf )
+        throws ConfigurationException 
+    {
+        Configuration[] allows = conf.getChildren( "allow" );
+        for( int i=0 ; i < allows.length ; i++ )
+            setAllowIP( allows[i].getValue() );
+        
+        Configuration[] deny = conf.getChildren( "deny" );
+        for( int i=0 ; i < deny.length ; i++ )
+            setDenyIP( deny[i].getValue() );
+    }
+    
+    /**  
+     * @avalon.dependency type="org.apache.avalon.http.HttpContextService"
+     *                    key="http-context" 
+     */
+    public void service( ServiceManager man )
+        throws ServiceException
+    {
+        m_Context = (HttpContextService) man.lookup( "http-context" );
+    }
+ 
+    public void start()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Starting IPAccessHandler: " + this );
+        if( m_Index >= 0 )
+            m_Context.addHandler( m_Index, this );
+        else
+            m_Context.addHandler( this );
+    }
+    
+    public void stop()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Stopping IPAccessHandler: " + this );
+        m_Context.removeHandler( this );
+    }
+} 
+ 
+ 

Modified: avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ModelHandler.java
==============================================================================
--- avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ModelHandler.java	(original)
+++ avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ModelHandler.java	Sun Jul 25 21:40:20 2004
@@ -25,10 +25,6 @@
 
 import org.apache.avalon.framework.activity.Startable;
 
-import org.apache.avalon.framework.configuration.Configurable;
-import org.apache.avalon.framework.configuration.Configuration;
-import org.apache.avalon.framework.configuration.ConfigurationException;
-
 import org.apache.avalon.framework.context.Context;
 import org.apache.avalon.framework.context.ContextException;
 import org.apache.avalon.framework.context.Contextualizable;
@@ -36,6 +32,10 @@
 import org.apache.avalon.framework.logger.LogEnabled;
 import org.apache.avalon.framework.logger.Logger;
 
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.avalon.framework.parameters.Parameters;
+
 import org.apache.avalon.framework.service.Serviceable;
 import org.apache.avalon.framework.service.ServiceException;
 import org.apache.avalon.framework.service.ServiceManager;
@@ -54,7 +54,7 @@
  * @avalon.service type="org.mortbay.http.HttpHandler"
  */
 public class ModelHandler
-    implements Serviceable, Configurable, Contextualizable, LogEnabled,
+    implements Serviceable, Parameterizable, Contextualizable, LogEnabled,
                HttpHandler, CompositionListener, Startable
 {
     private Logger              m_Logger;
@@ -62,7 +62,8 @@
     private HttpContextService  m_Context;
     private String              m_Name;
     private boolean             m_Started;
-    
+    private int                 m_Index;
+        
     public ModelHandler()
     {
         m_Started = false;
@@ -115,11 +116,12 @@
         m_Context = (HttpContextService) man.lookup( "httpcontext" );
     }
     
-    public void configure( Configuration conf )
-        throws ConfigurationException
+    public void parameterize( Parameters params )
+        throws ParameterException
     {
+        m_Index = params.getParameterAsInteger( "handler-index", -1 );
     }
-
+    
     /* HttpHandler interface */
    
     public HttpContext getHttpContext()
@@ -154,7 +156,10 @@
     {
         if( m_Logger.isDebugEnabled() )
             m_Logger.debug( "Starting ModelHandler: " + this );
-        m_Context.addHandler( this );
+        if( m_Index >= 0 )
+            m_Context.addHandler( m_Index, this );
+        else
+            m_Context.addHandler( this );
         m_Started = true;
     }
     

Added: avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/MsieSslHandler.java
==============================================================================
--- (empty file)
+++ avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/MsieSslHandler.java	Sun Jul 25 21:40:20 2004
@@ -0,0 +1,125 @@
+/* 
+ * Copyright 2004 Apache Software Foundation
+ * 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.apache.avalon.http.impl;
+
+import org.apache.avalon.framework.activity.Startable;
+
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.ContextException;
+import org.apache.avalon.framework.context.Contextualizable;
+
+import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.avalon.framework.parameters.Parameters;
+
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+
+import org.apache.avalon.http.HttpContextService;
+
+/**
+ * @avalon.component name="http-msiessl-handler" lifestyle="singleton"
+ * @avalon.server    type="org.mortbay.http.HttpHandler"
+ */
+public class MsieSslHandler 
+    extends org.mortbay.http.handler.MsieSslHandler 
+    implements Startable, Parameterizable, LogEnabled, 
+               Serviceable, Contextualizable
+{
+    private Logger m_Logger;
+    private HttpContextService  m_Context;
+    private int m_Index;
+    
+    public MsieSslHandler()
+    {
+    }
+    
+    /**
+     * Enable the logging system.
+     *
+     * @avalon.logger name="http"
+     */
+    public void enableLogging( Logger logger )
+    {
+        m_Logger = logger;
+    }
+    
+    public Logger getLogger() 
+    {
+        return m_Logger;
+    }
+    
+    /**
+     * Contextulaization of the Handler.
+     *
+     * @param context the supplied listener context
+     *
+     * @exception ContextException if a contextualization error occurs
+     *
+     * @avalon.entry key="urn:avalon:name" 
+     *               type="java.lang.String" 
+     */
+    public void contextualize( Context ctx ) 
+        throws ContextException
+    {
+        String name = (String) ctx.get( "urn:avalon:name" );
+        setName( name );
+    }
+
+    public void parameterize( Parameters params )
+        throws ParameterException
+    {
+        m_Index = params.getParameterAsInteger( "handler-index", -1 );
+        
+        String agent = params.getParameter( "user-agent-substring", null );
+        if( agent != null )
+            setUserAgentSubString( agent );
+    }
+
+    /**  
+     * @avalon.dependency type="org.apache.avalon.http.HttpContextService"
+     *                    key="http-context" 
+     */
+    public void service( ServiceManager man )
+        throws ServiceException
+    {
+        m_Context = (HttpContextService) man.lookup( "http-context" );
+    }
+ 
+    public void start()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Starting MsieSslHandler: " + this );
+        if( m_Index >= 0 )
+            m_Context.addHandler( m_Index, this );
+        else
+            m_Context.addHandler( this );
+    }
+    
+    public void stop()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Stopping MsieSslHandler: " + this );
+        m_Context.removeHandler( this );
+    }
+} 
+ 

Modified: avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/NcsaRequestLog.java
==============================================================================
--- avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/NcsaRequestLog.java	(original)
+++ avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/NcsaRequestLog.java	Sun Jul 25 21:40:20 2004
@@ -17,9 +17,6 @@
 
 package org.apache.avalon.http.impl;
 
-import java.util.ArrayList;
-import java.util.StringTokenizer;
-
 import org.apache.avalon.framework.activity.Startable;
 
 import org.apache.avalon.framework.logger.LogEnabled;
@@ -71,7 +68,7 @@
         String ignorepaths = params.getParameter( "ignore-paths", null );
         if( ignorepaths != null )
         {
-            String[] paths = tokenize( ignorepaths );
+            String[] paths = StringUtils.tokenize( ignorepaths );
             setIgnorePaths( paths );
         }
         
@@ -84,19 +81,6 @@
             setRetainDays( retain );
     }
         
-    private String[] tokenize( String string )
-    {
-        ArrayList result = new ArrayList();
-        StringTokenizer st = new StringTokenizer( string, " ,", false );
-        while( st.hasMoreTokens() )
-        {
-            result.add( st.nextToken() );
-        }
-        String[] retVal = new String[ result.size() ];
-        result.toArray( retVal );
-        return retVal;
-    }
-
     public void start()
         throws Exception
     {

Added: avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/NotFoundHandler.java
==============================================================================
--- (empty file)
+++ avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/NotFoundHandler.java	Sun Jul 25 21:40:20 2004
@@ -0,0 +1,120 @@
+/* 
+ * Copyright 2004 Apache Software Foundation
+ * 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.apache.avalon.http.impl;
+
+import org.apache.avalon.framework.activity.Startable;
+
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.ContextException;
+import org.apache.avalon.framework.context.Contextualizable;
+
+import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.avalon.framework.parameters.Parameters;
+
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+
+import org.apache.avalon.http.HttpContextService;
+
+/**
+ * @avalon.component name="http-notfound-handler" lifestyle="singleton"
+ * @avalon.server    type="org.mortbay.http.HttpHandler"
+ */
+public class NotFoundHandler 
+    extends org.mortbay.http.handler.NotFoundHandler 
+    implements Startable, Parameterizable, LogEnabled, 
+               Serviceable, Contextualizable
+{
+    private Logger m_Logger;
+    private HttpContextService  m_Context;
+    private int m_Index;
+    
+    public NotFoundHandler()
+    {
+    }
+    
+    /**
+     * Enable the logging system.
+     *
+     * @avalon.logger name="http"
+     */
+    public void enableLogging( Logger logger )
+    {
+        m_Logger = logger;
+    }
+    
+    public Logger getLogger() 
+    {
+        return m_Logger;
+    }
+    
+    /**
+     * Contextulaization of the Handler.
+     *
+     * @param context the supplied listener context
+     *
+     * @exception ContextException if a contextualization error occurs
+     *
+     * @avalon.entry key="urn:avalon:name" 
+     *               type="java.lang.String" 
+     */
+    public void contextualize( Context ctx ) 
+        throws ContextException
+    {
+        String name = (String) ctx.get( "urn:avalon:name" );
+        setName( name );
+    }
+
+    public void parameterize( Parameters params )
+        throws ParameterException
+    {
+        m_Index = params.getParameterAsInteger( "handler-index", -1 );
+    }
+
+    /**  
+     * @avalon.dependency type="org.apache.avalon.http.HttpContextService"
+     *                    key="http-context" 
+     */
+    public void service( ServiceManager man )
+        throws ServiceException
+    {
+        m_Context = (HttpContextService) man.lookup( "http-context" );
+    }
+ 
+    public void start()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Starting NotFoundHandler: " + this );
+        if( m_Index >= 0 )
+            m_Context.addHandler( m_Index, this );
+        else
+            m_Context.addHandler( this );
+    }
+    
+    public void stop()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Stopping NotFoundHandler: " + this );
+        m_Context.removeHandler( this );
+    }
+} 

Added: avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/NullHandler.java
==============================================================================
--- (empty file)
+++ avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/NullHandler.java	Sun Jul 25 21:40:20 2004
@@ -0,0 +1,121 @@
+/* 
+ * Copyright 2004 Apache Software Foundation
+ * 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.apache.avalon.http.impl;
+
+import org.apache.avalon.framework.activity.Startable;
+
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.ContextException;
+import org.apache.avalon.framework.context.Contextualizable;
+
+import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.avalon.framework.parameters.Parameters;
+
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+
+import org.apache.avalon.http.HttpContextService;
+
+/**
+ * @avalon.component name="http-null-handler" lifestyle="singleton"
+ * @avalon.server    type="org.mortbay.http.HttpHandler"
+ */
+public class NullHandler 
+    extends org.mortbay.http.handler.NullHandler 
+    implements Startable, Parameterizable, LogEnabled, 
+               Serviceable, Contextualizable
+{
+    private Logger m_Logger;
+    private HttpContextService  m_Context;
+    private int m_Index;
+    
+    public NullHandler()
+    {
+    }
+    
+    /**
+     * Enable the logging system.
+     *
+     * @avalon.logger name="http"
+     */
+    public void enableLogging( Logger logger )
+    {
+        m_Logger = logger;
+    }
+    
+    public Logger getLogger() 
+    {
+        return m_Logger;
+    }
+    
+    /**
+     * Contextulaization of the Handler.
+     *
+     * @param context the supplied listener context
+     *
+     * @exception ContextException if a contextualization error occurs
+     *
+     * @avalon.entry key="urn:avalon:name" 
+     *               type="java.lang.String" 
+     */
+    public void contextualize( Context ctx ) 
+        throws ContextException
+    {
+        String name = (String) ctx.get( "urn:avalon:name" );
+        setName( name );
+    }
+
+    public void parameterize( Parameters params )
+        throws ParameterException
+    {
+        m_Index = params.getParameterAsInteger( "handler-index", -1 );
+    }
+
+    /**  
+     * @avalon.dependency type="org.apache.avalon.http.HttpContextService"
+     *                    key="http-context" 
+     */
+    public void service( ServiceManager man )
+        throws ServiceException
+    {
+        m_Context = (HttpContextService) man.lookup( "http-context" );
+    }
+ 
+    public void start()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Starting NullHandler: " + this );
+        if( m_Index >= 0 )
+            m_Context.addHandler( m_Index, this );
+        else
+            m_Context.addHandler( this );
+    }
+    
+    public void stop()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Stopping NullHandler: " + this );
+        m_Context.removeHandler( this );
+    }
+} 
+ 

Added: avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ProxyHandler.java
==============================================================================
--- (empty file)
+++ avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ProxyHandler.java	Sun Jul 25 21:40:20 2004
@@ -0,0 +1,135 @@
+/* 
+ * Copyright 2004 Apache Software Foundation
+ * 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.apache.avalon.http.impl;
+
+import org.apache.avalon.framework.activity.Startable;
+
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.ContextException;
+import org.apache.avalon.framework.context.Contextualizable;
+
+import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.avalon.framework.parameters.Parameters;
+
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+
+import org.apache.avalon.http.HttpContextService;
+
+/**
+ * @avalon.component name="http-proxy-handler" lifestyle="singleton"
+ * @avalon.server    type="org.mortbay.http.HttpHandler"
+ */
+public class ProxyHandler 
+    extends org.mortbay.http.handler.ProxyHandler 
+    implements Startable, Parameterizable, LogEnabled, 
+               Serviceable, Contextualizable
+{
+    private Logger m_Logger;
+    private HttpContextService  m_Context;
+    private int m_Index;
+    
+    public ProxyHandler()
+    {
+    }
+    
+    /**
+     * Enable the logging system.
+     *
+     * @avalon.logger name="http"
+     */
+    public void enableLogging( Logger logger )
+    {
+        m_Logger = logger;
+    }
+    
+    public Logger getLogger() 
+    {
+        return m_Logger;
+    }
+    
+    /**
+     * Contextulaization of the Handler.
+     *
+     * @param context the supplied listener context
+     *
+     * @exception ContextException if a contextualization error occurs
+     *
+     * @avalon.entry key="urn:avalon:name" 
+     *               type="java.lang.String" 
+     */
+    public void contextualize( Context ctx ) 
+        throws ContextException
+    {
+        String name = (String) ctx.get( "urn:avalon:name" );
+        setName( name );
+    }
+
+    public void parameterize( Parameters params )
+        throws ParameterException
+    {
+        m_Index = params.getParameterAsInteger( "handler-index", -1 );
+        
+        String whitelist = params.getParameter( "proxy-host-white-list", null );
+        if( whitelist != null )
+        {
+            String[] hosts = StringUtils.tokenize( whitelist );
+            setProxyHostsWhiteList( hosts );
+        }
+        
+        String blacklist = params.getParameter( "proxy-host-black-list", null );
+        if( blacklist != null )
+        {
+            String[] hosts = StringUtils.tokenize( blacklist );
+            setProxyHostsBlackList( hosts );
+        }
+    }
+
+    /**  
+     * @avalon.dependency type="org.apache.avalon.http.HttpContextService"
+     *                    key="http-context" 
+     */
+    public void service( ServiceManager man )
+        throws ServiceException
+    {
+        m_Context = (HttpContextService) man.lookup( "http-context" );
+    }
+ 
+    public void start()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Starting ProxyHandler: " + this );
+        if( m_Index >= 0 )
+            m_Context.addHandler( m_Index, this );
+        else
+            m_Context.addHandler( this );
+    }
+    
+    public void stop()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Stopping ProxyHandler: " + this );
+        m_Context.removeHandler( this );
+    }
+} 
+ 

Added: avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ResourceHandler.java
==============================================================================
--- (empty file)
+++ avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ResourceHandler.java	Sun Jul 25 21:40:20 2004
@@ -0,0 +1,142 @@
+/* 
+ * Copyright 2004 Apache Software Foundation
+ * 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.apache.avalon.http.impl;
+
+import org.apache.avalon.framework.activity.Startable;
+
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.ContextException;
+import org.apache.avalon.framework.context.Contextualizable;
+
+import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.avalon.framework.parameters.Parameters;
+
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+
+import org.apache.avalon.http.HttpContextService;
+
+/**
+ * @avalon.component name="http-resource-handler" lifestyle="singleton"
+ * @avalon.server    type="org.mortbay.http.HttpHandler"
+ */
+public class ResourceHandler 
+    extends org.mortbay.http.handler.ResourceHandler 
+    implements Startable, Parameterizable, LogEnabled, 
+               Serviceable, Contextualizable
+{
+    private Logger m_Logger;
+    private HttpContextService  m_Context;
+    private int m_Index;
+    
+    public ResourceHandler()
+    {
+    }
+    
+    /**
+     * Enable the logging system.
+     *
+     * @avalon.logger name="http"
+     */
+    public void enableLogging( Logger logger )
+    {
+        m_Logger = logger;
+    }
+    
+    public Logger getLogger() 
+    {
+        return m_Logger;
+    }
+    
+    /**
+     * Contextulaization of the Handler.
+     *
+     * @param context the supplied listener context
+     *
+     * @exception ContextException if a contextualization error occurs
+     *
+     * @avalon.entry key="urn:avalon:name" 
+     *               type="java.lang.String" 
+     */
+    public void contextualize( Context ctx ) 
+        throws ContextException
+    {
+        String name = (String) ctx.get( "urn:avalon:name" );
+        setName( name );
+    }
+
+    public void parameterize( Parameters params )
+        throws ParameterException
+    {
+        boolean ranges = params.getParameterAsBoolean( "accept-ranges", false );
+        setAcceptRanges( ranges );
+        
+        boolean dirAllowed = params.getParameterAsBoolean( "allow-directory", false );
+        setDirAllowed( dirAllowed );
+
+        boolean redirectWelcome = params.getParameterAsBoolean( "redirect-welcome", false );
+        setDirAllowed( redirectWelcome );
+
+        int minGzip = params.getParameterAsInteger( "min-gzip-length", -1 );        
+        if( minGzip > 0 )
+            setMinGzipLength( minGzip );
+        
+        m_Index = params.getParameterAsInteger( "handler-index", -1 );
+        
+        String allow = params.getParameter( "allow-methods", null );
+        if( allow != null )
+        {
+            String[] methods = StringUtils.tokenize( allow );
+            setAllowedMethods( methods );
+        }
+    }
+
+    /**  
+     * @avalon.dependency type="org.apache.avalon.http.HttpContextService"
+     *                    key="http-context" 
+     */
+    public void service( ServiceManager man )
+        throws ServiceException
+    {
+        m_Context = (HttpContextService) man.lookup( "http-context" );
+    }
+ 
+    public void start()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Starting ResourceHandler: " + this );
+        if( m_Index >= 0 )
+            m_Context.addHandler( m_Index, this );
+        else
+            m_Context.addHandler( this );
+    }
+    
+    public void stop()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Stopping ResourceHandler: " + this );
+        m_Context.removeHandler( this );
+    }
+   
+
+}
\ No newline at end of file

Added: avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/RootNotFoundHandler.java
==============================================================================
--- (empty file)
+++ avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/RootNotFoundHandler.java	Sun Jul 25 21:40:20 2004
@@ -0,0 +1,121 @@
+/* 
+ * Copyright 2004 Apache Software Foundation
+ * 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.apache.avalon.http.impl;
+
+import org.apache.avalon.framework.activity.Startable;
+
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.ContextException;
+import org.apache.avalon.framework.context.Contextualizable;
+
+import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.avalon.framework.parameters.Parameters;
+
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+
+import org.apache.avalon.http.HttpContextService;
+
+/**
+ * @avalon.component name="http-rootnotfound-handler" lifestyle="singleton"
+ * @avalon.server    type="org.mortbay.http.HttpHandler"
+ */
+public class RootNotFoundHandler 
+    extends org.mortbay.http.handler.RootNotFoundHandler 
+    implements Startable, Parameterizable, LogEnabled, 
+               Serviceable, Contextualizable
+{
+    private Logger m_Logger;
+    private HttpContextService  m_Context;
+    private int m_Index;
+    
+    public RootNotFoundHandler()
+    {
+    }
+    
+    /**
+     * Enable the logging system.
+     *
+     * @avalon.logger name="http"
+     */
+    public void enableLogging( Logger logger )
+    {
+        m_Logger = logger;
+    }
+    
+    public Logger getLogger() 
+    {
+        return m_Logger;
+    }
+    
+    /**
+     * Contextulaization of the Handler.
+     *
+     * @param context the supplied listener context
+     *
+     * @exception ContextException if a contextualization error occurs
+     *
+     * @avalon.entry key="urn:avalon:name" 
+     *               type="java.lang.String" 
+     */
+    public void contextualize( Context ctx ) 
+        throws ContextException
+    {
+        String name = (String) ctx.get( "urn:avalon:name" );
+        setName( name );
+    }
+
+    public void parameterize( Parameters params )
+        throws ParameterException
+    {
+        m_Index = params.getParameterAsInteger( "handler-index", -1 );
+    }
+
+    /**  
+     * @avalon.dependency type="org.apache.avalon.http.HttpContextService"
+     *                    key="http-context" 
+     */
+    public void service( ServiceManager man )
+        throws ServiceException
+    {
+        m_Context = (HttpContextService) man.lookup( "http-context" );
+    }
+ 
+    public void start()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Starting RootNotFoundHandler: " + this );
+        if( m_Index >= 0 )
+            m_Context.addHandler( m_Index, this );
+        else
+            m_Context.addHandler( this );
+    }
+    
+    public void stop()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Stopping RootNotFoundHandler: " + this );
+        m_Context.removeHandler( this );
+    }
+} 
+ 

Added: avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/SecurityHandler.java
==============================================================================
--- (empty file)
+++ avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/SecurityHandler.java	Sun Jul 25 21:40:20 2004
@@ -0,0 +1,125 @@
+/* 
+ * Copyright 2004 Apache Software Foundation
+ * 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.apache.avalon.http.impl;
+
+import org.apache.avalon.framework.activity.Startable;
+
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.ContextException;
+import org.apache.avalon.framework.context.Contextualizable;
+
+import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.avalon.framework.parameters.Parameters;
+
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+
+import org.apache.avalon.http.HttpContextService;
+
+/**
+ * @avalon.component name="http-security-handler" lifestyle="singleton"
+ * @avalon.server    type="org.mortbay.http.HttpHandler"
+ */
+public class SecurityHandler 
+    extends org.mortbay.http.handler.SecurityHandler 
+    implements Startable, Parameterizable, LogEnabled, 
+               Serviceable, Contextualizable
+{
+    private Logger m_Logger;
+    private HttpContextService  m_Context;
+    private int m_Index;
+    
+    public SecurityHandler()
+    {
+    }
+    
+    /**
+     * Enable the logging system.
+     *
+     * @avalon.logger name="http"
+     */
+    public void enableLogging( Logger logger )
+    {
+        m_Logger = logger;
+    }
+    
+    public Logger getLogger() 
+    {
+        return m_Logger;
+    }
+    
+    /**
+     * Contextulaization of the Handler.
+     *
+     * @param context the supplied listener context
+     *
+     * @exception ContextException if a contextualization error occurs
+     *
+     * @avalon.entry key="urn:avalon:name" 
+     *               type="java.lang.String" 
+     */
+    public void contextualize( Context ctx ) 
+        throws ContextException
+    {
+        String name = (String) ctx.get( "urn:avalon:name" );
+        setName( name );
+    }
+
+    public void parameterize( Parameters params )
+        throws ParameterException
+    {
+        m_Index = params.getParameterAsInteger( "handler-index", -1 );
+        
+        String authMethod = params.getParameter( "authentication-method", null );
+        if( authMethod != null )
+            setAuthMethod( authMethod );
+    }
+
+    /**  
+     * @avalon.dependency type="org.apache.avalon.http.HttpContextService"
+     *                    key="http-context" 
+     */
+    public void service( ServiceManager man )
+        throws ServiceException
+    {
+        m_Context = (HttpContextService) man.lookup( "http-context" );
+    }
+ 
+    public void start()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Starting SecurityHandler: " + this );
+        if( m_Index >= 0 )
+            m_Context.addHandler( m_Index, this );
+        else
+            m_Context.addHandler( this );
+    }
+    
+    public void stop()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Stopping SecurityHandler: " + this );
+        m_Context.removeHandler( this );
+    }
+} 
+ 

Added: avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/SetResponseHeadersHandler.java
==============================================================================
--- (empty file)
+++ avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/SetResponseHeadersHandler.java	Sun Jul 25 21:40:20 2004
@@ -0,0 +1,151 @@
+/* 
+ * Copyright 2004 Apache Software Foundation
+ * 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.apache.avalon.http.impl;
+
+import org.apache.avalon.framework.activity.Startable;
+
+import org.apache.avalon.framework.configuration.Configurable;
+import org.apache.avalon.framework.configuration.Configuration;
+import org.apache.avalon.framework.configuration.ConfigurationException;
+
+import org.apache.avalon.framework.context.Context;
+import org.apache.avalon.framework.context.ContextException;
+import org.apache.avalon.framework.context.Contextualizable;
+
+import org.apache.avalon.framework.logger.LogEnabled;
+import org.apache.avalon.framework.logger.Logger;
+
+import org.apache.avalon.framework.parameters.ParameterException;
+import org.apache.avalon.framework.parameters.Parameterizable;
+import org.apache.avalon.framework.parameters.Parameters;
+
+import org.apache.avalon.framework.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+
+import org.apache.avalon.http.HttpContextService;
+
+/**
+ * @avalon.component name="http-setresponseheaders-handler" lifestyle="singleton"
+ * @avalon.server    type="org.mortbay.http.HttpHandler"
+ */
+public class SetResponseHeadersHandler 
+    extends org.mortbay.http.handler.SetResponseHeadersHandler 
+    implements Startable, Parameterizable, LogEnabled, 
+               Serviceable, Contextualizable
+{
+    private Logger m_Logger;
+    private HttpContextService  m_Context;
+    private int m_Index;
+    
+    public SetResponseHeadersHandler()
+    {
+    }
+    
+    /**
+     * Enable the logging system.
+     *
+     * @avalon.logger name="http"
+     */
+    public void enableLogging( Logger logger )
+    {
+        m_Logger = logger;
+    }
+    
+    public Logger getLogger() 
+    {
+        return m_Logger;
+    }
+    
+    /**
+     * Contextulaization of the Handler.
+     *
+     * @param context the supplied listener context
+     *
+     * @exception ContextException if a contextualization error occurs
+     *
+     * @avalon.entry key="urn:avalon:name" 
+     *               type="java.lang.String" 
+     */
+    public void contextualize( Context ctx ) 
+        throws ContextException
+    {
+        String name = (String) ctx.get( "urn:avalon:name" );
+        setName( name );
+    }
+
+    public void parameterize( Parameters params )
+        throws ParameterException
+    {
+        m_Index = params.getParameterAsInteger( "handler-index", -1 );
+        
+    }
+
+    public void configure( Configuration conf )
+        throws ConfigurationException 
+    {
+        Configuration child = conf.getChild( "headers" );
+        configureHeaders( child );    
+    }
+    
+    private void configureHeaders( Configuration conf )
+        throws ConfigurationException 
+    {
+        Configuration[] headers = conf.getChildren( "header" );
+        for( int i=0 ; i < headers.length ; i++ )
+            configureHeader( headers[i] );
+    }
+
+    private void configureHeader( Configuration conf )
+        throws ConfigurationException 
+    {
+        Configuration name = conf.getChild( "name" );
+        Configuration value = conf.getChild( "value" );
+        setHeaderValue( name.getValue(), value.getValue() );
+    }
+            
+    /**  
+     * @avalon.dependency type="org.apache.avalon.http.HttpContextService"
+     *                    key="http-context" 
+     */
+    public void service( ServiceManager man )
+        throws ServiceException
+    {
+        m_Context = (HttpContextService) man.lookup( "http-context" );
+    }
+ 
+    public void start()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Starting SetResponseHeadersHandler: " + this );
+        if( m_Index >= 0 )
+            m_Context.addHandler( m_Index, this );
+        else
+            m_Context.addHandler( this );
+    }
+    
+    public void stop()
+    {
+        if( m_Logger.isDebugEnabled() )
+            m_Logger.debug( "Stopping SetResponseHeadersHandler: " + this );
+        m_Context.removeHandler( this );
+    }
+} 
+ 
+ 
+ 

Added: avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/StringUtils.java
==============================================================================
--- (empty file)
+++ avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/StringUtils.java	Sun Jul 25 21:40:20 2004
@@ -0,0 +1,38 @@
+/* 
+ * Copyright 2004 Apache Software Foundation
+ * 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.apache.avalon.http.impl;
+
+import java.util.ArrayList;
+import java.util.StringTokenizer;
+
+public class StringUtils
+{
+    static public String[] tokenize( String string )
+    {
+        ArrayList result = new ArrayList();
+        StringTokenizer st = new StringTokenizer( string, " ,", false );
+        while( st.hasMoreTokens() )
+        {
+            result.add( st.nextToken() );
+        }
+        String[] retVal = new String[ result.size() ];
+        result.toArray( retVal );
+        return retVal;
+    }
+}
+ 

Modified: avalon/trunk/planet/facilities/http/spi/src/main/org/apache/avalon/http/HttpContextService.java
==============================================================================
--- avalon/trunk/planet/facilities/http/spi/src/main/org/apache/avalon/http/HttpContextService.java	(original)
+++ avalon/trunk/planet/facilities/http/spi/src/main/org/apache/avalon/http/HttpContextService.java	Sun Jul 25 21:40:20 2004
@@ -28,6 +28,8 @@
     
     void addHandler( HttpHandler handler );
     
+    void addHandler( int index, HttpHandler handler );
+    
     void removeHandler( HttpHandler handler );
     
     HttpContext getHttpContext();

---------------------------------------------------------------------
To unsubscribe, e-mail: cvs-unsubscribe@avalon.apache.org
For additional commands, e-mail: cvs-help@avalon.apache.org