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/25 12:09:23 UTC

svn commit: rev 23230 - 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 03:09:22 2004
New Revision: 23230

Added:
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/HttpContextImpl.java   (contents, props changed)
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/HttpServerImpl.java   (contents, props changed)
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ModelHandler.java   (contents, props changed)
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/NcsaRequestLog.java   (contents, props changed)
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/SocketListenerComponent.java   (contents, props changed)
   avalon/trunk/planet/facilities/http/spi/src/main/org/apache/avalon/http/HttpContextService.java   (contents, props changed)
Removed:
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/AvalonLogSink.java
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ComponentModelHolder.java
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ContainmentModelHandler.java
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/DefaultModelListener.java
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/DefaultServer.java
   avalon/trunk/planet/facilities/http/spi/src/main/org/apache/avalon/http/HttpException.java
   avalon/trunk/planet/facilities/http/spi/src/main/org/apache/avalon/http/HttpRuntimeException.java
Modified:
   avalon/trunk/planet/facilities/http/spi/src/main/org/apache/avalon/http/HttpService.java
Log:
Scrapped the old Http Facility in its entirety and started one that basically componentize the Jetty server.

Added: avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/HttpContextImpl.java
==============================================================================
--- (empty file)
+++ avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/HttpContextImpl.java	Sun Jul 25 03:09:22 2004
@@ -0,0 +1,219 @@
+/* 
+ * 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.io.File;
+
+import org.apache.avalon.framework.activity.Disposable;
+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;
+import org.apache.avalon.http.HttpService;
+
+import org.mortbay.http.Authenticator;
+import org.mortbay.http.HttpContext;
+import org.mortbay.http.HttpHandler;
+import org.mortbay.http.RequestLog;
+import org.mortbay.http.UserRealm;
+
+/** Wrapper for the Jetty HttpContext.
+ *
+ * @avalon.component name="http-context" lifestyle="singleton"
+ */
+public class HttpContextImpl
+    implements LogEnabled, Contextualizable, Serviceable, Startable, 
+               Disposable, Configurable, HttpContextService
+{
+    private HttpService m_HttpServer;
+    private HttpContext m_HttpContext;
+    private Logger      m_Logger;
+    private boolean     m_Graceful;
+        
+    public HttpContextImpl()
+    {
+        m_HttpContext = new HttpContext();
+    }
+    
+    /**
+     * Enable the logging system.
+     *
+     * @avalon.logger name="http"
+     */
+    public void enableLogging( Logger logger )
+    {
+        m_Logger = logger;
+    }
+    
+    public Logger getLogger()
+    {
+        return m_Logger;
+    }
+    
+    /** 
+     * @avalon.entry key="urn:avalon:temp" type="java.io.File"
+     */
+    public void contextualize( Context ctx )
+        throws ContextException
+    {
+        File tmpDir = (File) ctx.get( "urn:avalon:temp" );
+        m_HttpContext.setTempDirectory( tmpDir );
+    }
+    
+    /**
+     * @avalon.dependency type="org.apache.avalon.http.HttpService"
+     *                    key="server"
+     * @avalon.dependency type="org.mortbay.http.Authenticator"
+     *                    key="authenticator"
+     * @avalon.dependency type="org.mortbay.http.UserRealm"
+     *                    key="realm"
+     * @avalon.dependency type="org.mortbay.http.RequestLog"
+     *                    key="request-log"
+     */
+    public void service( ServiceManager man )
+        throws ServiceException
+    {
+        m_HttpServer = (HttpService) man.lookup( "server" );
+        
+        Authenticator auth = (Authenticator) man.lookup( "authenticator" );
+        m_HttpContext.setAuthenticator( auth );
+        
+        UserRealm realm = (UserRealm) man.lookup( "realm" );
+        m_HttpContext.setRealm( realm );
+        m_HttpContext.setRealmName( realm.getName() ); // Is this necessary?
+        
+        RequestLog log = (RequestLog) man.lookup( "request-log" );
+        m_HttpContext.setRequestLog( log );
+    }
+
+    public void parameterize( Parameters params )
+        throws ParameterException
+    {
+        String[] names = params.getNames();
+        for( int i=0 ; i < names.length ; i++ )
+        {
+            String value = params.getParameter( names[i] );
+            m_HttpContext.setInitParameter( names[i], value );
+        }
+    }
+    
+    public void configure( Configuration conf )
+        throws ConfigurationException
+    {
+        m_Graceful = conf.getChild( "graceful-stop" ).getValueAsBoolean( false );
+        
+        Configuration attributes = conf.getChild( "attributes" );
+        configureAttributes( attributes );
+        
+        Configuration contextPath = conf.getChild( "context-path" );
+        m_HttpContext.setContextPath( contextPath.getValue() );
+        
+        Configuration virtualHosts = conf.getChild( "virtual-hosts" );
+        configureVirtualHosts( virtualHosts );
+    
+        Configuration welcomeFiles = conf.getChild( "welcome-files" );
+        configureWelcomeFiles( welcomeFiles );
+    }
+    
+    private void configureAttributes( Configuration conf )
+        throws ConfigurationException
+    {
+        Configuration[] children = conf.getChildren( "attribute" );
+        for( int i = 0 ; i < children.length ; i++ )
+            configureAttribute( children[i] );
+    }
+    
+    private void configureAttribute( Configuration conf )
+        throws ConfigurationException
+    {
+        String name = conf.getAttribute( "name" );
+        String value = conf.getValue();
+        
+        // TODO: setAttribute() support Object as a value.
+        //       need to figure out what that could be and introduce
+        //       support for it.
+        m_HttpContext.setAttribute( name, value );
+    }
+    
+    private void configureVirtualHosts( Configuration conf )
+        throws ConfigurationException
+    {
+        Configuration[] hosts = conf.getChildren( "host" );
+        for( int i=0 ; i < hosts.length ; i++ )
+            m_HttpContext.addVirtualHost( hosts[i].getValue() );
+    }
+    
+    private void configureWelcomeFiles( Configuration conf )
+        throws ConfigurationException
+    {
+        Configuration[] files = conf.getChildren( "file" );
+        for( int i=0 ; i < files.length ; i++ )
+            m_HttpContext.addWelcomeFile( files[i].getValue() );
+    }
+    
+    public void start()
+        throws Exception
+    {
+        m_HttpServer.addContext( m_HttpContext );
+        m_HttpContext.start();
+    }
+    
+    public void stop()
+        throws Exception
+    {
+        m_HttpContext.stop( m_Graceful );
+        m_HttpServer.removeContext( m_HttpContext );
+    }
+    
+    public void dispose()
+    {
+        m_HttpContext.destroy();
+        m_HttpServer = null;
+        m_HttpContext = null;
+    }
+
+    /* Service Interface */
+    
+    public void addHandler( HttpHandler handler )
+    {
+        m_HttpContext.addHandler( handler );
+    }
+    
+    public void removeHandler( HttpHandler handler )
+    {
+        m_HttpContext.removeHandler( handler );
+    }
+}

Added: avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/HttpServerImpl.java
==============================================================================
--- (empty file)
+++ avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/HttpServerImpl.java	Sun Jul 25 03:09:22 2004
@@ -0,0 +1,97 @@
+/* 
+ * 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.Disposable;
+import org.apache.avalon.framework.activity.Startable;
+
+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.http.HttpService;
+
+import org.mortbay.http.HttpServer;
+import org.mortbay.util.MultiException;
+
+/** Wrapper for the Jetty HttpServer
+ *
+ * @avalon.component name="http-server" lifestyle="singleton"
+ */
+public class HttpServerImpl extends HttpServer
+    implements LogEnabled, Parameterizable, Startable, Disposable, HttpService
+{
+    private Logger      m_Logger;
+    private boolean m_Graceful;
+
+        
+    public HttpServerImpl()
+    {
+    }
+    
+    /**
+     * Enable the logging system.
+     *
+     * @avalon.logger name="http"
+     */
+    public void enableLogging( Logger logger )
+    {
+        m_Logger = logger;
+    }
+    
+    public Logger getLogger()
+    {
+        return m_Logger;
+    }
+    
+    public void parameterize( Parameters params )
+        throws ParameterException
+    {
+        boolean trace = params.getParameterAsBoolean( "trace", false );
+        setTrace( trace );
+        
+        boolean anonymous = params.getParameterAsBoolean( "anonymous", false );
+        setAnonymous( anonymous );
+        
+        m_Graceful = params.getParameterAsBoolean( "graceful-stop", false );
+        
+        int reqs = params.getParameterAsInteger( "request-gc", -1 );
+        if( reqs > 0 )
+            setRequestsPerGC( reqs );
+    }
+    
+    public void start()
+        throws MultiException
+    {
+        super.start();
+    }
+    
+    public void stop()
+        throws InterruptedException
+    {
+        super.stop( m_Graceful );
+    }
+    
+    public void dispose()
+    {
+        super.destroy();
+    }
+} 

Added: avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ModelHandler.java
==============================================================================
--- (empty file)
+++ avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ModelHandler.java	Sun Jul 25 03:09:22 2004
@@ -0,0 +1,164 @@
+/* 
+ * 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.composition.event.CompositionEvent;
+import org.apache.avalon.composition.event.CompositionListener;
+import org.apache.avalon.composition.model.ContainmentModel;
+import org.apache.avalon.composition.model.ComponentModel;
+import org.apache.avalon.composition.model.DeploymentModel;
+
+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.service.Serviceable;
+import org.apache.avalon.framework.service.ServiceException;
+import org.apache.avalon.framework.service.ServiceManager;
+
+import org.apache.avalon.http.HttpRequestHandler;
+
+import org.mortbay.http.HttpContext;
+import org.mortbay.http.HttpHandler;
+import org.mortbay.http.HttpRequest;
+import org.mortbay.http.HttpResponse;
+
+/** Wrapper for the Jetty HttpContext.
+ *
+ * @avalon.component name="http-model-handler" lifestyle="singleton"
+ * @avalon.service type="org.mortbay.http.HttpHandler"
+ */
+public class ModelHandler
+    implements Serviceable, Configurable, Contextualizable,
+               HttpHandler, CompositionListener
+{
+    private ContainmentModel m_Model;
+    private HttpContext      m_Context;
+    private String           m_Name;
+    private boolean          m_Started;
+    
+    public ModelHandler()
+    {
+        m_Started = false;
+    }
+    
+    /**
+     * Contextulaization of the listener by the container during 
+     * which we are supplied with the root composition model for 
+     * the application.
+     *
+     * @param context the supplied listener context
+     *
+     * @exception ContextException if a contextualization error occurs
+     *
+     * @avalon.entry key="urn:composition:containment.model" 
+     *               type="org.apache.avalon.composition.model.ContainmentModel" 
+     *
+     * @avalon.entry key="urn:avalon:name" 
+     *               type="java.lang.String" 
+     */
+    public void contextualize( Context ctx ) 
+        throws ContextException
+    {
+        m_Model = (ContainmentModel) ctx.get( "urn:composition:containment.model" );
+        m_Name = (String) ctx.get( "urn:avalon:name" );
+    }
+   
+    public void service( ServiceManager man )
+        throws ServiceException
+    {
+    }
+    
+    public void configure( Configuration conf )
+        throws ConfigurationException
+    {
+    }
+
+    /* HttpHandler interface */
+   
+    public HttpContext getHttpContext()
+    {
+        return m_Context;
+    }
+    
+    public String getName()
+    {
+        return m_Name;
+    }
+
+    public void handle( String pathInContext, String pathParams, 
+                        HttpRequest request, HttpResponse response ) 
+    {
+        
+    }
+
+    public void initialize( HttpContext context )
+    {
+        m_Context = context;
+    }
+
+    /* Jetty LifeCycle interface */
+    
+    public boolean isStarted()
+    {
+        return m_Started;
+    }
+    
+    public void start()
+    {
+        m_Started = true;
+    }
+    
+    public void stop()
+    {
+        m_Started = false;
+    }
+   
+   /* CompositionListener interface  */
+
+   /**
+    * Model addition.
+    */
+    public void modelAdded( CompositionEvent event )
+    {
+        DeploymentModel model = event.getChild();
+        if( ! ( model instanceof HttpRequestHandler ) )
+            return;
+            
+        // TODO:
+    }
+
+   /**
+    * Model removal.
+    */
+    public void modelRemoved( CompositionEvent event )
+    {
+        DeploymentModel model = event.getChild();
+        if( ! ( model instanceof HttpRequestHandler ) )
+            return;
+            
+        // TODO:
+    }
+} 

Added: avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/NcsaRequestLog.java
==============================================================================
--- (empty file)
+++ avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/NcsaRequestLog.java	Sun Jul 25 03:09:22 2004
@@ -0,0 +1,109 @@
+/* 
+ * 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;
+
+import org.apache.avalon.framework.activity.Startable;
+
+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.mortbay.http.NCSARequestLog;
+import org.mortbay.http.RequestLog;
+
+
+/** Wrapper for the Jetty NCSA request logger.
+ *
+ * @avalon.component name="http-ncsa-log" lifestyle="singleton"
+ */
+public class NcsaRequestLog extends NCSARequestLog
+    implements RequestLog, Parameterizable, Startable
+{
+    public NcsaRequestLog()
+    {
+    }
+
+    public void parameterize( Parameters params )
+        throws ParameterException
+    {
+        boolean append = params.getParameterAsBoolean( "append", false );
+        setAppend( append );
+        
+        boolean buffered = params.getParameterAsBoolean( "buffered", false );
+        setBuffered( buffered );
+        
+        boolean extended = params.getParameterAsBoolean( "extended", false );
+        setExtended( extended );
+    
+        boolean preferProxiedFor = params.getParameterAsBoolean( "prefer-proxied-for", false );
+        setPreferProxiedForAddress( preferProxiedFor );
+    
+        String filename = params.getParameter( "filename", null );
+        if( filename != null )
+            setFilename( filename );
+    
+        String dateformat = params.getParameter( "dateformat", null );
+        if( dateformat != null )
+            setLogDateFormat( dateformat );
+    
+        String ignorepaths = params.getParameter( "ignore-paths", null );
+        if( filename != null )
+        {
+            String[] paths = tokenize( ignorepaths );
+            setIgnorePaths( paths );
+        }
+        
+        String timezone = params.getParameter( "timezone", null );
+        if( timezone != null )
+            setLogTimeZone( timezone );
+            
+        int retain = params.getParameterAsInteger( "retain-days", -1 );
+        if( retain > 0 )
+            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
+    {
+        super.start();
+    }
+    
+    public void stop()
+    {
+        super.stop();
+    }
+} 

Added: avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/SocketListenerComponent.java
==============================================================================
--- (empty file)
+++ avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/SocketListenerComponent.java	Sun Jul 25 03:09:22 2004
@@ -0,0 +1,133 @@
+/* 
+ * 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.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.HttpService;
+
+import org.mortbay.http.SocketListener;
+
+/** Wrapper for the Jetty SocketListener.
+ *
+ * @avalon.component name="http-socket-listener" lifestyle="singleton"
+ */
+public class SocketListenerComponent
+    implements Parameterizable, Startable, Serviceable, LogEnabled
+{
+    private SocketListener m_SocketListener;
+    
+    private HttpService m_HttpServer;
+    private Logger      m_Logger;
+    
+    public SocketListenerComponent()
+    {
+        m_SocketListener = new SocketListener();
+    }
+    
+    /**
+     * Enable the logging system.
+     *
+     * @avalon.logger name="http"
+     */
+    public void enableLogging( Logger logger )
+    {
+        m_Logger = logger;
+    }
+    
+    public Logger getLogger()
+    {
+        return m_Logger;
+    }
+    
+    public void parameterize( Parameters params )
+        throws ParameterException
+    {
+        int reserve = params.getParameterAsInteger( "buffer-reserve", -1 );
+        if( reserve > 0 )
+            m_SocketListener.setBufferReserve( reserve );
+        
+        int size = params.getParameterAsInteger( "buffer-size", -1 );
+        if( size > 0 )
+            m_SocketListener.setBufferSize( size );
+    
+        int confPort = params.getParameterAsInteger( "confidential-port", -1 );
+        if( confPort > 0 )
+            m_SocketListener.setConfidentialPort( confPort );
+        
+        String confScheme = params.getParameter( "confidential-scheme", null );
+        if( confScheme != null )
+            m_SocketListener.setConfidentialScheme( confScheme );
+    
+        String defScheme = params.getParameter( "default-scheme", null );
+        if( defScheme != null )
+            m_SocketListener.setDefaultScheme( defScheme );
+        
+        int integralPort = params.getParameterAsInteger( "integral-port", -1 );
+        if( integralPort > 0 )
+            m_SocketListener.setIntegralPort( integralPort );
+        
+        String integralScheme = params.getParameter( "integral-scheme", null );
+        if( integralScheme != null )
+            m_SocketListener.setIntegralScheme( integralScheme );
+    
+        int lowResMs = params.getParameterAsInteger( "low-resource-persist-ms", -1 );
+        if( lowResMs > 0 )
+            m_SocketListener.setLowResourcePersistTimeMs( lowResMs );
+        
+        boolean identify = params.getParameterAsBoolean( "identify-listener", false );
+        m_SocketListener.setIdentifyListener( identify );
+        
+        
+    }
+    
+    /**
+     * @avalon.dependency type="org.apache.avalon.http.HttpService" 
+     *                    key="server"
+     */
+    public void service( ServiceManager man )
+        throws ServiceException
+    {
+        m_HttpServer = (HttpService) man.lookup( "server" );
+    }
+    
+    public void start()
+        throws Exception
+    {
+        m_HttpServer.addListener( m_SocketListener );
+        m_SocketListener.start();
+    }
+    
+    public void stop()
+        throws Exception
+    {
+        m_SocketListener.stop();
+        m_HttpServer.removeListener( m_SocketListener );
+    }
+} 

Added: avalon/trunk/planet/facilities/http/spi/src/main/org/apache/avalon/http/HttpContextService.java
==============================================================================
--- (empty file)
+++ avalon/trunk/planet/facilities/http/spi/src/main/org/apache/avalon/http/HttpContextService.java	Sun Jul 25 03:09:22 2004
@@ -0,0 +1,32 @@
+/* 
+ * 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;
+ 
+import org.mortbay.http.HttpHandler;
+
+/**
+ * avalon.service version="1.0"
+ */
+public interface HttpContextService
+{
+    
+    void addHandler( HttpHandler handler );
+    
+    void removeHandler( HttpHandler handler );
+    
+}

Modified: avalon/trunk/planet/facilities/http/spi/src/main/org/apache/avalon/http/HttpService.java
==============================================================================
--- avalon/trunk/planet/facilities/http/spi/src/main/org/apache/avalon/http/HttpService.java	(original)
+++ avalon/trunk/planet/facilities/http/spi/src/main/org/apache/avalon/http/HttpService.java	Sun Jul 25 03:09:22 2004
@@ -17,22 +17,35 @@
 
 package org.apache.avalon.http;
 
-import org.apache.avalon.composition.model.ComponentModel;
+
+import org.mortbay.http.HttpContext;
+import org.mortbay.http.HttpListener;
+import org.mortbay.http.HttpServer;
+import org.mortbay.http.RequestLog;
+import org.mortbay.http.UserRealm;
 
 /**
  * Defintion of the HttpService service contract.
+ *
+ * @avalon.service version="1.0"
  */
 public interface HttpService
 {
-   /**
-    * Register a component model under a context.
-    * @param model the component model
-    */
-    void register( ComponentModel model );
 
-   /**
-    * Unregister the component model under the context.
-    * @param model the component model
-    */
-    void unregister( ComponentModel model );
+    HttpContext addContext( HttpContext context );
+    
+    boolean removeContext( HttpContext context );
+    
+    HttpListener addListener( HttpListener listener );
+    
+    void removeListener( HttpListener listener );
+    
+    UserRealm addRealm( UserRealm realm );
+    
+    UserRealm removeRealm( String realmname );
+
+    RequestLog getRequestLog();
+    
+    void setRequestLog( RequestLog log );
+    
 }

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