svn commit: rev 30712 - in avalon/trunk/planet/facilities/http: 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: Mon Jul 26 04:31:06 2004
New Revision: 30712

Added:
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/SystemMimeTypes.java   (contents, props changed)
   avalon/trunk/planet/facilities/http/spi/src/main/org/apache/avalon/http/MimeTypes.java   (contents, props changed)
Modified:
   avalon/trunk/planet/facilities/http/impl/src/etc/default-server.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/NcsaRequestLog.java
   avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ResourceHandler.java
Log:
Static content is finally served.

Modified: avalon/trunk/planet/facilities/http/impl/src/etc/default-server.xml
==============================================================================
--- avalon/trunk/planet/facilities/http/impl/src/etc/default-server.xml	(original)
+++ avalon/trunk/planet/facilities/http/impl/src/etc/default-server.xml	Mon Jul 26 04:31:06 2004
@@ -28,11 +28,15 @@
     
   <component name="server" class="org.apache.avalon.http.impl.HttpServerImpl" />
   
+  <component name="mimetypes" class="org.apache.avalon.http.impl.SystemMimeTypes" />
+  
   <component name="context" class="org.apache.avalon.http.impl.HttpContextImpl" >
     <configuration>
       <context-path>/niclas/testing</context-path>
     </configuration>
   </component>
+  
+  
 <!--  
   <component name="security-handler" class="org.apache.avalon.http.impl.SecurityHandler" >
     <parameters>

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	Mon Jul 26 04:31:06 2004
@@ -44,6 +44,7 @@
 
 import org.apache.avalon.http.HttpContextService;
 import org.apache.avalon.http.HttpService;
+import org.apache.avalon.http.MimeTypes;
 
 import org.mortbay.http.Authenticator;
 import org.mortbay.http.HttpContext;
@@ -65,8 +66,13 @@
     private Logger      m_Logger;
     private boolean     m_Graceful;
     private File        m_TemporaryDir;
+    private File        m_ResourceBase;
+    private int         m_MaxCacheSize;
+    private int         m_MaxCachedFilesize;
+    
     private ClassLoader m_ClassLoader;
     private RequestLog  m_RequestLog;
+    private MimeTypes   m_MimeTypes;
     
     public HttpContextImpl()
     {
@@ -110,6 +116,8 @@
     /**
      * @avalon.dependency type="org.apache.avalon.http.HttpService"
      *                    key="server"
+     * @avalon.dependency type="org.apache.avalon.http.MimeTypes"
+     *                    key="mimetypes"
      * @avalon.dependency type="org.mortbay.http.Authenticator"
      *                    key="authenticator" optional="true"
      * @avalon.dependency type="org.mortbay.http.UserRealm"
@@ -136,6 +144,8 @@
         } 
         
         m_RequestLog = (RequestLog) man.lookup( "request-log" );
+        
+        m_MimeTypes = (MimeTypes) man.lookup( "mimetypes" );
     }
 
     public void parameterize( Parameters params )
@@ -167,6 +177,13 @@
     
         Configuration welcomeFiles = conf.getChild( "welcome-files" );
         configureWelcomeFiles( welcomeFiles );
+        
+        String resourceBase = conf.getChild( "resource-base").getValue( "." );
+        m_ResourceBase = new File( resourceBase );
+        
+        m_MaxCachedFilesize = conf.getChild( "max-cached-filesize" ).getValueAsInteger( -1 );
+        
+        m_MaxCacheSize = conf.getChild( "max-cache-size" ).getValueAsInteger( -1 );
     }
     
     private void configureAttributes( Configuration conf )
@@ -206,10 +223,17 @@
     }
 
     public void initialize()
+        throws ConfigurationException
     {
         m_HttpContext.setClassLoader( m_ClassLoader );
         m_HttpContext.setTempDirectory( m_TemporaryDir );
         m_HttpContext.setRequestLog( m_RequestLog );
+        m_HttpContext.setResourceBase( m_ResourceBase.getAbsolutePath() );
+        if( m_MaxCacheSize > 0 )
+            m_HttpContext.setMaxCacheSize( m_MaxCacheSize );        
+        if( m_MaxCachedFilesize > 0 )
+            m_HttpContext.setMaxCachedFileSize( m_MaxCachedFilesize );        
+        m_HttpContext.setMimeMap( m_MimeTypes.getExtensionMap() );
     }
         
     public void start()

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	Mon Jul 26 04:31:06 2004
@@ -33,7 +33,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"
+ * @avalon.service type="org.mortbay.http.RequestLog"
  */
 public class NcsaRequestLog extends NCSARequestLog
     implements RequestLog, Parameterizable, Startable

Modified: avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ResourceHandler.java
==============================================================================
--- avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ResourceHandler.java	(original)
+++ avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/ResourceHandler.java	Mon Jul 26 04:31:06 2004
@@ -45,7 +45,7 @@
 
 /**
  * @avalon.component name="http-resource-handler" lifestyle="singleton"
- * @avalon.server    type="org.mortbay.http.HttpHandler"
+ * @avalon.service   type="org.mortbay.http.HttpHandler"
  */
 public class ResourceHandler 
     extends org.mortbay.http.handler.ResourceHandler 
@@ -167,4 +167,4 @@
         super.handleGet( request, response, pathInContext, pathParams, resource );
     }
 
-}
\ No newline at end of file
+}

Added: avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/SystemMimeTypes.java
==============================================================================
--- (empty file)
+++ avalon/trunk/planet/facilities/http/impl/src/main/org/apache/avalon/http/impl/SystemMimeTypes.java	Mon Jul 26 04:31:06 2004
@@ -0,0 +1,123 @@
+/* 
+ * 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.BufferedReader;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStreamReader;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.StringTokenizer;
+
+import org.apache.avalon.framework.activity.Initializable;
+
+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.MimeTypes;
+
+/**
+ * @avalon.component name="mimetypes" lifestyle="singleton"
+ * @avalon.service  type="org.apache.avalon.http.MimeTypes"
+ */
+public class SystemMimeTypes
+    implements Parameterizable, Initializable, MimeTypes
+{
+    private String m_Filename;
+    private HashMap m_MimeTypeToExtMap;
+    private HashMap m_ExtToMimeTypeMap;
+    
+    public SystemMimeTypes()
+    {
+    }
+    
+    public void parameterize( Parameters params )
+        throws ParameterException
+    {
+        m_Filename = params.getParameter( "filename", "/etc/mime.types" );
+    }
+    
+    public void initialize()
+        throws Exception
+    {
+        m_MimeTypeToExtMap = new HashMap();
+        m_ExtToMimeTypeMap = new HashMap();
+        
+        FileInputStream fis = null;
+        InputStreamReader isr = null;
+        BufferedReader in = null;
+        try
+        {
+            fis = new FileInputStream( m_Filename );
+            isr = new InputStreamReader( fis );
+            in = new BufferedReader( isr );
+            
+            String line;
+            while( (line = in.readLine() ) != null )
+            {
+                processLine( line );
+            }
+        } finally
+        {
+            if( in != null )
+                in.close();
+            if( isr != null )
+                isr.close();
+            if( fis != null )
+                fis.close();
+        }
+    }
+
+    public Map getExtensionMap()
+    {
+        return m_ExtToMimeTypeMap;
+    }
+    
+    public String getMimeType( String extension )
+    {
+        return (String) m_ExtToMimeTypeMap.get( extension );
+    }
+    
+    public String[] getExtensions( String mimetype )
+    {
+        return (String[]) m_MimeTypeToExtMap.get( mimetype );
+    }
+    
+    private void processLine( String line )
+    {
+        if( "".equals( line ) )
+            return;
+
+        StringTokenizer st = new StringTokenizer( line, " ", false );
+        String mimetype = st.nextToken();
+        ArrayList exts = new ArrayList();        
+        while( st.hasMoreTokens() )
+        {
+            String extension = st.nextToken();
+            exts.add( extension );
+            m_ExtToMimeTypeMap.put( extension, mimetype );
+        }
+        String[] extensions = new String[ exts.size() ];
+        exts.toArray( extensions );
+        m_MimeTypeToExtMap.put( mimetype, exts );
+    }
+} 

Added: avalon/trunk/planet/facilities/http/spi/src/main/org/apache/avalon/http/MimeTypes.java
==============================================================================
--- (empty file)
+++ avalon/trunk/planet/facilities/http/spi/src/main/org/apache/avalon/http/MimeTypes.java	Mon Jul 26 04:31:06 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 java.util.Map;
+
+
+public interface MimeTypes
+{
+
+    Map getExtensionMap();
+    
+    String getMimeType( String extension );
+    
+    String[] getExtensions( String mimetype );
+    
+}
\ No newline at end of file
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.