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

[email protected]
Newsgroups gmane.comp.jakarta.avalon.cvs
Message-ID <[email protected]>
Author: niclas
Date: Sun Jul 25 10:00:06 2004
New Revision: 23235

Added:
   avalon/trunk/planet/facilities/http/impl/src/etc/
   avalon/trunk/planet/facilities/http/impl/src/etc/default-server.xml   (contents, props changed)
Modified:
   avalon/trunk/planet/facilities/http/impl/build.xml
   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/HttpServerImpl.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/HttpService.java
Log:
Further work on getting this facility into a working condition.

Modified: avalon/trunk/planet/facilities/http/impl/build.xml
==============================================================================
--- avalon/trunk/planet/facilities/http/impl/build.xml	(original)
+++ avalon/trunk/planet/facilities/http/impl/build.xml	Sun Jul 25 10:00:06 2004
@@ -8,8 +8,14 @@
 
   <target name="build" depends="standard.build">
     <x:block name="http" embed="MAIN">
-      <x:component name="model-listener" 
-         class="org.apache.avalon.http.impl.DefaultModelListener"/>
+      <x:component name="server" 
+         class="org.apache.avalon.http.impl.HttpServerImpl"/>
+      <x:component name="socket8088" 
+         class="org.apache.avalon.http.impl.SocketListenerComponent">
+         <x:parameters>
+           <x:parameter name="port" value="8088" />
+         </x:parameters>
+      </x:component>
     </x:block>
   </target>
 

Added: avalon/trunk/planet/facilities/http/impl/src/etc/default-server.xml
==============================================================================
--- (empty file)
+++ avalon/trunk/planet/facilities/http/impl/src/etc/default-server.xml	Sun Jul 25 10:00:06 2004
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<container name="http">
+
+  <classloader>
+    <classpath>
+      <artifact>jar:avalon/http/avalon-http-spi#SNAPSHOT</artifact>
+      <artifact>jar:avalon/http/avalon-http-api#SNAPSHOT</artifact>
+      <artifact>jar:servletapi/servletapi#2.3</artifact>
+      <artifact>jar:jetty/org.mortbay.jetty#SNAPSHOT</artifact>
+      <artifact>jar:avalon/http/avalon-http-util#SNAPSHOT</artifact>
+      <artifact>jar:avalon/util/avalon-util-configuration#1.0.0</artifact>
+      <artifact>jar:avalon/framework/avalon-framework-api#SNAPSHOT</artifact>
+      <artifact>jar:avalon/framework/avalon-framework-impl#SNAPSHOT</artifact>
+      <artifact>jar:avalon/framework/avalon-framework-legacy#SNAPSHOT</artifact>
+      <artifact>jar:avalon/logkit/avalon-logkit#2.0.0</artifact>
+      <artifact>jar:avalon/http/avalon-http-impl#SNAPSHOT</artifact>
+    </classpath>
+  </classloader>
+
+  <component name="socketlistener" class="org.apache.avalon.http.impl.SocketListenerComponent">
+    <parameters>
+      <parameter name="port" value="8088"/>
+    </parameters>
+  </component>
+    
+  <component name="server" class="org.apache.avalon.http.impl.HttpServerImpl" />
+  
+  <component name="context" class="org.apache.avalon.http.impl.HttpContextImpl" />
+  <component name="model-handler" class="org.apache.avalon.http.impl.ModelHandler" >
+    <configuration>
+      <url-path>/test</url-path>
+      <component>test</component>
+    </configuration>
+  </component>
+  <component name="request-log" class="org.apache.avalon.http.impl.NcsaRequestLog" />
+  
+<!--    
+  <container name="model-context" >
+    <component name="realm" class="org.apache.avalon.http.impl.DefaultUserRealm" />
+    <component name="authenticator" class="org.apache.avalon.http.impl.DefaultAuthenticator" />
+  </container>
+-->    
+  
+</container>
+ 

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 10:00:06 2004
@@ -97,23 +97,31 @@
      * @avalon.dependency type="org.apache.avalon.http.HttpService"
      *                    key="server"
      * @avalon.dependency type="org.mortbay.http.Authenticator"
-     *                    key="authenticator"
+     *                    key="authenticator" optional="true"
      * @avalon.dependency type="org.mortbay.http.UserRealm"
-     *                    key="realm"
+     *                    key="realm" optional="true"
      * @avalon.dependency type="org.mortbay.http.RequestLog"
-     *                    key="request-log"
+     *                    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 );
+        try
+        {
+            Authenticator auth = (Authenticator) man.lookup( "authenticator" );
+            m_HttpContext.setAuthenticator( auth );
+        } catch( ServiceException e )
+        {} // ignore, quite ok.
         
-        UserRealm realm = (UserRealm) man.lookup( "realm" );
-        m_HttpContext.setRealm( realm );
-        m_HttpContext.setRealmName( realm.getName() ); // Is this necessary?
+        try
+        {
+            UserRealm realm = (UserRealm) man.lookup( "realm" );
+            m_HttpContext.setRealm( realm );
+            m_HttpContext.setRealmName( realm.getName() ); // Is this necessary?
+        } catch( ServiceException e )
+        {} // ignore, quite ok.
         
         RequestLog log = (RequestLog) man.lookup( "request-log" );
         m_HttpContext.setRequestLog( log );

Modified: avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/HttpServerImpl.java
==============================================================================
--- avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/HttpServerImpl.java	(original)
+++ avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/HttpServerImpl.java	Sun Jul 25 10:00:06 2004
@@ -35,6 +35,7 @@
 /** Wrapper for the Jetty HttpServer
  *
  * @avalon.component name="http-server" lifestyle="singleton"
+ * @avalon.service type="org.apache.avalon.http.HttpService"
  */
 public class HttpServerImpl extends HttpServer
     implements LogEnabled, Parameterizable, Startable, Disposable, HttpService

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 10:00:06 2004
@@ -51,9 +51,10 @@
  * @avalon.service type="org.mortbay.http.HttpHandler"
  */
 public class ModelHandler
-    implements Serviceable, Configurable, Contextualizable,
+    implements Serviceable, Configurable, Contextualizable, LogEnabled,
                HttpHandler, CompositionListener
 {
+    private Logger           m_Logger;
     private ContainmentModel m_Model;
     private HttpContext      m_Context;
     private String           m_Name;
@@ -65,6 +66,21 @@
     }
     
     /**
+     * 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 listener by the container during 
      * which we are supplied with the root composition model for 
      * the application.
@@ -111,7 +127,7 @@
     public void handle( String pathInContext, String pathParams, 
                         HttpRequest request, HttpResponse response ) 
     {
-        
+        getLogger().info( "Request: " + pathInContext + ", " + pathParams );
     }
 
     public void initialize( HttpContext context )

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 10:00:06 2004
@@ -36,6 +36,7 @@
 /** Wrapper for the Jetty NCSA request logger.
  *
  * @avalon.component name="http-ncsa-log" lifestyle="singleton"
+ * @avalon.service type="org.mortbay.http.RequestLog" lifestyle="singleton"
  */
 public class NcsaRequestLog extends NCSARequestLog
     implements RequestLog, Parameterizable, Startable

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 10:00:06 2004
@@ -27,7 +27,7 @@
 /**
  * Defintion of the HttpService service contract.
  *
- * @avalon.service version="1.0"
+ * @avalon.service type="org.apache.avalon.http.HttpService" version="1.0"
  */
 public interface HttpService
 {
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.