Author: costin
Date: Tue Aug 15 23:50:43 2006
New Revision: 431846

URL: http://svn.apache.org/viewvc?rev=431846&view=rev
Log:
Change package name, clean up, implement more functionality, move more 
container-independent code to utils

Added:
    
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/util/RandomGenerator.java
    tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/
    tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/CoyoteAdapter.java
      - copied, changed from r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/CoyoteAdapter.java
    tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/FilterChainImpl.java
      - copied, changed from r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/FilterChainImpl.java
    tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/FilterConfigImpl.java
      - copied, changed from r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/FilterConfigImpl.java
    tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/Host.java
      - copied, changed from r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/Host.java
    tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/HttpSessionImpl.java
      - copied, changed from r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/HttpSessionImpl.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/LocalStrings.properties
      - copied unchanged from r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/LocalStrings.properties
    tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/Main.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/RequestDispatcherImpl.java
      - copied, changed from r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/RequestDispatcherImpl.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/ServletConfigImpl.java
      - copied, changed from r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/ServletConfigImpl.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/ServletContextImpl.java
      - copied, changed from r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/ServletContextImpl.java
    tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/ServletFacade.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/ServletInputStreamImpl.java
      - copied, changed from r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/ServletInputStreamImpl.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/ServletOutputStreamImpl.java
      - copied, changed from r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/ServletOutputStreamImpl.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/ServletReaderImpl.java
      - copied, changed from r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/ServletReaderImpl.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/ServletRequestImpl.java
      - copied, changed from r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/ServletRequestImpl.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/ServletRequestWrapperImpl.java
      - copied, changed from r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/ServletRequestWrapperImpl.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/ServletResponseImpl.java
      - copied, changed from r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/ServletResponseImpl.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/ServletResponseWrapperImpl.java
      - copied, changed from r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/ServletResponseWrapperImpl.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/ServletWriterImpl.java
      - copied, changed from r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/ServletWriterImpl.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/WebappContextMapper.java
      - copied, changed from r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/WebappContextMapper.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/WebappFilterMapper.java
      - copied, changed from r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/WebappFilterMapper.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/WebappServletMapper.java
      - copied, changed from r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/WebappServletMapper.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/WebappSessionManager.java
      - copied, changed from r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/WebappSessionManager.java
    tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/jmx/
    tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/jmx/JmxListener.java
    tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/package.html
    tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/servlets/
      - copied from r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/servlets/
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/servlets/ReloadServlet.java
      - copied, changed from r431703, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/servlets/ReloadServlet.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/servlets/RequestInfoFilter.java
      - copied, changed from r431703, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/servlets/RequestInfoFilter.java
    tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/util/
      - copied from r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/util/
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/util/CharsetMapper.java
      - copied, changed from r431703, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/util/CharsetMapper.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/util/CharsetMapperDefault.properties
      - copied unchanged from r431703, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/util/CharsetMapperDefault.properties
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/util/ClientAbortException.java
      - copied, changed from r431703, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/util/ClientAbortException.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/util/LocalStrings.properties
      - copied unchanged from r431703, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/util/LocalStrings.properties
    tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/util/MappingData.java
      - copied, changed from r431703, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/util/MappingData.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/util/MessageReader.java
      - copied, changed from r431703, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/util/MessageReader.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/util/MessageWriter.java
      - copied, changed from r431703, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/util/MessageWriter.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/util/ParameterMap.java
      - copied, changed from r431703, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/util/ParameterMap.java
    tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/webxml/
      - copied from r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/webxml/
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/webxml/WebAnnotation.java
    tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/webxml/WebXml.java
      - copied, changed from r431703, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/webxml/WebXml.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/servlets/file/Dir2Html.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/servlets/sec/AccessFilter.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/servlets/sec/DigestAuthServlet.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/servlets/sec/JAASAuthServlet.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/servlets/sec/SimpleAuthServlet.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/servlets/util/CopyUtils.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/servlets/util/DOMWriter.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/servlets/util/Enumerator.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/servlets/util/FileCopyUtils.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/servlets/util/MD5Encoder.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/servlets/util/MIME2Java.java
    tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/servlets/util/Range.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/servlets/util/RequestUtil.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/servlets/util/StringParser.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/servlets/util/UrlUtils.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/servlets/util/XMLWriter.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/util/net/http11/Endpoint.java
Removed:
    tomcat/sandbox/tomcat-lite/bin/Coyote-Http11.launch
    tomcat/sandbox/tomcat-lite/java/org/apache/coyote/adapters/
    tomcat/sandbox/tomcat-lite/java/org/apache/coyote/http11/
    tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/mapper/
    tomcat/sandbox/tomcat-lite/java/org/apache/coyote/standalone/
    tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/util/Enumerator.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/util/StringParser.java
    tomcat/sandbox/tomcat-lite/java/server-embed.xml
Modified:
    tomcat/sandbox/tomcat-lite/build.xml
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/servlets/file/DefaultServlet.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/servlets/file/WebdavServlet.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/util/net/http11/Http11Processor.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/util/net/http11/Http11Protocol.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/util/net/nio/NioEndpoint.java
    
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/util/net/simple/SimpleEndpoint.java

Modified: tomcat/sandbox/tomcat-lite/build.xml
URL: 
http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-lite/build.xml?rev=431846&r1=431845&r2=431846&view=diff
==============================================================================
--- tomcat/sandbox/tomcat-lite/build.xml (original)
+++ tomcat/sandbox/tomcat-lite/build.xml Tue Aug 15 23:50:43 2006
@@ -8,7 +8,7 @@
   <property file="../build/build.properties"/>
   <property file="../build/build.properties.default"/>
 
-  <property name="tc.base" location=".." />
+  <property name="tc.base" location="../.." />
 
   <!-- Source dependencies -->
   <property name="target.vm"     value="1.5"/>
@@ -45,91 +45,37 @@
     <pathelement location="${base.path}/tomcat-deps/jasper-compiler-jdt.jar" />
   </path>
 
-  <patternset id="runtime-all-excludes"> 
-    <exclude name="org/apache/tomcat/util/buf/**"/>
-    <exclude name="org/apache/tomcat/util/net/puretls/**"/>
-    <exclude name="org/apache/tomcat/util/net/jsse/JSSE15SocketFactory.java"/>
-    <exclude name="org/apache/tomcat/util/net/jsse/JSSE15Factory.java"/>
-    <exclude name="org/apache/ajp/tomcat33/**"/>
-    <exclude name="org/apache/ajp/tomcat4/**"/>
-    <exclude name="org/apache/coyote/tomcat3/**"/>
-    <exclude name="org/apache/coyote/tomcat4/**"/>
-    <exclude name="org/apache/coyote/memory/**"/>
-    <exclude name="org/apache/coyote/standalone/**"/>
-    <exclude name="**/CatalinaLaunchFilter.java"/>
-    <exclude name="**/MailSessionFactory.java"/>
-    <exclude name="**/SendMailFactory.java"/>
-    <exclude name="**/SemaphoreValve.java"/>
-    <exclude name="org/apache/catalina/ant/**"/>
-    <exclude name="org/apache/catalina/ssi/**"/>
-  </patternset>  
-
-  
-  <patternset id="runtime-excludes"> 
-    <!--
-    <exclude name="org/apache/tomcat/util/net/AprEndpoint.java"/>
-    <exclude name="org/apache/coyote/http11/Http11AprProcessor.java"/>
-    <exclude name="org/apache/coyote/http11/Http11AprProtocol.java"/>
-    <exclude name="org/apache/coyote/http11/InternalAprInputBuffer.java"/>
-    <exclude name="org/apache/coyote/http11/InternalAprOutputBuffer.java"/>
-    -->
-    <exclude name="org/apache/catalina/loader/CatalinaModuleListener.java"/>
-    <exclude name="org/apache/catalina/core/NamingContextListener.java"/>
-    <patternset refid="runtime-all-excludes"/>
-    </patternset>  
-    
-    
-  <target name="compile-sandbox">
+  <target name="compile" >
     <mkdir dir="${sandbox.home}/classes" />
     <javac destdir="${sandbox.home}/classes" source="${source.vm}" 
-      target="${target.vm}"
-      includeJavaRuntime="false"
-      deprecation="false" 
-      debug="false"  >
-      <src path="${sandbox.home}/java" />
+           target="${target.vm}"
+           includeJavaRuntime="false"
+           deprecation="false" 
+           debug="false"  >
+      <src path="${sandbox.home}/tomcat-lite/java" />
       <classpath>
         <path refid="runtime-deps" />        
         <pathelement location="${tc6.classes}"/>
       </classpath>
       <exclude name="org/apache/tomcat/standalone/**"/>
     </javac>
+    
     <copy todir="${sandbox.home}/classes" >
-      <fileset dir="${sandbox.home}/java" includes="**/*.properties **/*.xml"/>
+      <fileset dir="${sandbox.home}/tomcat-lite/java" 
+               includes="**/*.properties **/*.xml"/>
     </copy>
   </target>
 
-  <target name="compile" 
-    depends="compile-sandbox"/>
-
   <target name="clean-compile">
     <delete dir="${sandbox.home}/classes" includes="**"/>
     <delete dir="${tc6.classes}" includes="**"/>
   </target>
   
-  <target name="tomcat-runtime.jar"
-    description="Build single jar tomcat" 
depends="compile,pack_tomcat-runtime.jar">
-  </target>
+  <target name="tomcat-lite.jar" depends="compile,pack_tomcat-lite.jar"/>
   
-  <target name="pack_tomcat-runtime.jar"
-    description="Pack single jar tomcat" >
-    <mkdir dir="runtime" />
-    <jar jarfile="runtime/tomcat-runtime.jar" 
-         manifest="resources/runtime.MF">
-      <fileset dir="${tc6.classes}" >
-        <exclude name="org/apache/jasper/**"/>
-      </fileset>
+  <target name="pack_tomcat-lite.jar" >
+    <jar destfile="tomcat-lite.jar" manifest="resources/coyote-servlet.MF">
       <fileset dir="${sandbox.home}/classes" >
-        <include name="org/apache/tomcat/standalone/**"/>
-      </fileset>
-    </jar>
-
-  </target>
-
-  <target name="coyote-servlet.jar" depends="compile,pack_coyote-servlet.jar"/>
-  
-  <target name="pack_coyote-servlet.jar" >
-    <jar destfile="coyote-servlet.jar" manifest="resources/coyote-servlet.MF">
-      <fileset dir="classes" >
         <include name="org/apache/commons/logging/*.class"/>
         <include name="org/apache/coyote/servlet/**"/>
         <include name="org/apache/tomcat/servlets/**"/>
@@ -158,7 +104,29 @@
 
   </target>
 
-  <target name="all" depends="coyote-servlet.jar,tomcat-runtime.jar" />
+  <target name="all" depends="tomcat-lite.jar,tomcat-runtime.jar" />
+
+  <!-- Tomcat runtime -->
+    
+  <target name="tomcat-runtime.jar"
+    description="Build single jar tomcat lite" 
+    depends="compile,pack_tomcat-runtime.jar">
+  </target>
+  
+  <target name="pack_tomcat-runtime.jar"
+          description="Pack single jar tomcat" >
+    <mkdir dir="runtime" />
+    <jar jarfile="tomcat-runtime.jar" 
+         manifest="resources/runtime.MF">
+      <fileset dir="${tc6.classes}" >
+        <exclude name="org/apache/jasper/**"/>
+      </fileset>
+      <fileset dir="${sandbox.home}/classes" >
+        <include name="org/apache/tomcat/standalone/**"/>
+      </fileset>
+    </jar>
+  </target>
+
 
   <!-- ============ Download targets for deps ================ -->
 

Added: 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/util/RandomGenerator.java
URL: 
http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/util/RandomGenerator.java?rev=431846&view=auto
==============================================================================
--- 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/util/RandomGenerator.java
 (added)
+++ 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/util/RandomGenerator.java
 Tue Aug 15 23:50:43 2006
@@ -0,0 +1,352 @@
+package org.apache.coyote.servlet.util;
+
+import java.io.DataInputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.lang.reflect.Method;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
+import java.util.Random;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+/**
+ *  Generates random IDs, useable as cookies.
+ * 
+ *  Based on code from tomcat session manager - but general purpose.
+ *  Can use /dev/urandom or similar file.
+ *  
+ * 
+ */
+public class RandomGenerator {
+    protected DataInputStream randomIS=null;
+    protected String devRandomSource="/dev/urandom";
+
+    protected static Log log = LogFactory.getLog(RandomGenerator.class);
+
+    /**
+     * The message digest algorithm to be used when generating session
+     * identifiers.  This must be an algorithm supported by the
+     * <code>java.security.MessageDigest</code> class on your platform.
+     */
+    protected String algorithm = "MD5";
+
+    /**
+     * The session id length of Sessions created by this Manager.
+     */
+    protected int sessionIdLength = 16;
+
+    
+    /**
+     * Return the MessageDigest implementation to be used when
+     * creating session identifiers.
+     */
+    protected MessageDigest digest = null;
+
+    public String jvmRoute;
+
+    /**
+     * A String initialization parameter used to increase the entropy of
+     * the initialization of our random number generator.
+     */
+    protected String entropy = null;
+
+    /**
+     * A random number generator to use when generating session identifiers.
+     */
+    protected Random random = null;
+
+    /**
+     * Return the message digest algorithm for this Manager.
+     */
+    public String getAlgorithm() {
+        return (this.algorithm);
+    }
+    
+    public void init() {
+        // Initialize random number generation
+        getRandomBytes(new byte[16]);
+    }
+
+
+    /**
+     * Set the message digest algorithm for this Manager.
+     *
+     * @param algorithm The new message digest algorithm
+     */
+    public void setAlgorithm(String algorithm) {
+        this.algorithm = algorithm;
+    }
+    
+    /**
+     * Return the MessageDigest object to be used for calculating
+     * session identifiers.  If none has been created yet, initialize
+     * one the first time this method is called.
+     */
+    public synchronized MessageDigest getDigest() {
+
+        if (this.digest == null) {
+            long t1=System.currentTimeMillis();
+            try {
+                this.digest = MessageDigest.getInstance(algorithm);
+            } catch (NoSuchAlgorithmException e) {
+                log.error("Algorithm not found", e);
+                try {
+                    this.digest = MessageDigest.getInstance("MD5");
+                } catch (NoSuchAlgorithmException f) {
+                    log.error("No message digest available", f);
+                    this.digest = null;
+                }
+            }
+            long t2=System.currentTimeMillis();
+            if( log.isDebugEnabled() )
+                log.debug("getDigest() " + (t2-t1));
+        }
+
+        return (this.digest);
+
+    }
+    
+    /**
+     * Generate and return a new session identifier.
+     */
+    public synchronized String generateSessionId() {
+
+        byte random[] = new byte[16];
+        String result = null;
+
+        // Render the result as a String of hexadecimal digits
+        StringBuffer buffer = new StringBuffer();
+        int resultLenBytes = 0;
+
+        while (resultLenBytes < this.sessionIdLength) {
+            getRandomBytes(random);
+            random = getDigest().digest(random);
+            for (int j = 0;
+            j < random.length && resultLenBytes < this.sessionIdLength;
+            j++) {
+                byte b1 = (byte) ((random[j] & 0xf0) >> 4);
+                byte b2 = (byte) (random[j] & 0x0f);
+                if (b1 < 10)
+                    buffer.append((char) ('0' + b1));
+                else
+                    buffer.append((char) ('A' + (b1 - 10)));
+                if (b2 < 10)
+                    buffer.append((char) ('0' + b2));
+                else
+                    buffer.append((char) ('A' + (b2 - 10)));
+                resultLenBytes++;
+            }
+        }
+        if (jvmRoute != null) {
+            buffer.append('.').append(jvmRoute);
+        }
+        result = buffer.toString();
+        return (result);
+
+    }
+    
+    protected void getRandomBytes(byte bytes[]) {
+        // Generate a byte array containing a session identifier
+        if (devRandomSource != null && randomIS == null) {
+            setRandomFile(devRandomSource);
+        }
+        if (randomIS != null) {
+            try {
+                int len = randomIS.read(bytes);
+                if (len == bytes.length) {
+                    return;
+                }
+                if(log.isDebugEnabled())
+                    log.debug("Got " + len + " " + bytes.length );
+            } catch (Exception ex) {
+                // Ignore
+            }
+            devRandomSource = null;
+            
+            try {
+                randomIS.close();
+            } catch (Exception e) {
+                log.warn("Failed to close randomIS.");
+            }
+            
+            randomIS = null;
+        }
+        getRandom().nextBytes(bytes);
+    }
+
+    /**
+     * Return the random number generator instance we should use for
+     * generating session identifiers.  If there is no such generator
+     * currently defined, construct and seed a new one.
+     */
+    public Random getRandom() {
+        if (this.random == null) {
+            // Calculate the new random number generator seed
+            long seed = System.currentTimeMillis();
+            long t1 = seed;
+            char entropy[] = getEntropy().toCharArray();
+            for (int i = 0; i < entropy.length; i++) {
+                long update = ((byte) entropy[i]) << ((i % 8) * 8);
+                seed ^= update;
+            }
+            try {
+                // Construct and seed a new random number generator
+                Class clazz = Class.forName(randomClass);
+                this.random = (Random) clazz.newInstance();
+                this.random.setSeed(seed);
+            } catch (Exception e) {
+                // Fall back to the simple case
+                log.error("Failed to create random " + randomClass, e);
+                this.random = new java.util.Random();
+                this.random.setSeed(seed);
+            }
+            if(log.isDebugEnabled()) {
+                long t2=System.currentTimeMillis();
+                if( (t2-t1) > 100 )
+                    log.debug("Init random: " + " " + (t2-t1));
+            }
+        }
+        
+        return (this.random);
+
+    }
+    
+    /**
+     * Return the entropy increaser value, or compute a semi-useful value
+     * if this String has not yet been set.
+     */
+    public String getEntropy() {
+
+        // Calculate a semi-useful value if this has not been set
+        if (this.entropy == null) {
+            // Use APR to get a crypto secure entropy value
+            byte[] result = new byte[32];
+            boolean apr = false;
+            try {
+                String methodName = "random";
+                Class paramTypes[] = new Class[2];
+                paramTypes[0] = result.getClass();
+                paramTypes[1] = int.class;
+                Object paramValues[] = new Object[2];
+                paramValues[0] = result;
+                paramValues[1] = new Integer(32);
+                Method method = Class.forName("org.apache.tomcat.jni.OS")
+                    .getMethod(methodName, paramTypes);
+                method.invoke(null, paramValues);
+                apr = true;
+            } catch (Throwable t) {
+                // Ignore
+            }
+            if (apr) {
+                setEntropy(new String(result));
+            } else {
+                setEntropy(this.toString());
+            }
+        }
+
+        return (this.entropy);
+
+    }
+
+
+    /**
+     * Set the entropy increaser value.
+     *
+     * @param entropy The new entropy increaser value
+     */
+    public void setEntropy(String entropy) {
+        this.entropy = entropy;
+    }
+
+
+    /**
+     * Return the random number generator class name.
+     */
+    public String getRandomClass() {
+
+        return (this.randomClass);
+
+    }
+
+
+    /**
+     * Set the random number generator class name.
+     *
+     * @param randomClass The new random number generator class name
+     */
+    public void setRandomClass(String randomClass) {
+        this.randomClass = randomClass;
+    }
+    
+    /**
+     * The Java class name of the random number generator class to be used
+     * when generating session identifiers.
+     */
+    protected String randomClass = "java.security.SecureRandom";
+    /** 
+     * Use /dev/random-type special device. This is new code, but may reduce
+     * the big delay in generating the random.
+     *
+     *  You must specify a path to a random generator file. Use /dev/urandom
+     *  for linux ( or similar ) systems. Use /dev/random for maximum security
+     *  ( it may block if not enough "random" exist ). You can also use
+     *  a pipe that generates random.
+     *
+     *  The code will check if the file exists, and default to java Random
+     *  if not found. There is a significant performance difference, very
+     *  visible on the first call to getSession ( like in the first JSP )
+     *  - so use it if available.
+     */
+    public void setRandomFile( String s ) {
+        // as a hack, you can use a static file - and genarate the same
+        // session ids ( good for strange debugging )
+        try{
+            devRandomSource=s;
+            File f=new File( devRandomSource );
+            if( ! f.exists() ) return;
+            randomIS= new DataInputStream( new FileInputStream(f));
+            randomIS.readLong();
+            if( log.isDebugEnabled() )
+                log.debug( "Opening " + devRandomSource );
+        } catch( IOException ex ) {
+            try {
+                randomIS.close();
+            } catch (Exception e) {
+                log.warn("Failed to close randomIS.");
+            }
+            
+            randomIS=null;
+        }
+    }
+
+    public String getRandomFile() {
+        return devRandomSource;
+    }
+
+
+    /**
+     * Gets the session id length (in bytes) of Sessions created by
+     * this Manager.
+     *
+     * @return The session id length
+     */
+    public int getSessionIdLength() {
+
+        return (this.sessionIdLength);
+
+    }
+
+
+    /**
+     * Sets the session id length (in bytes) for Sessions created by this
+     * Manager.
+     *
+     * @param idLength The session id length
+     */
+    public void setSessionIdLength(int idLength) {
+        this.sessionIdLength = idLength;
+    }
+}
\ No newline at end of file

Copied: 
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/CoyoteAdapter.java (from 
r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/CoyoteAdapter.java)
URL: 
http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/CoyoteAdapter.java?p2=tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/CoyoteAdapter.java&p1=tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/CoyoteAdapter.java&r1=425115&r2=431846&rev=431846&view=diff
==============================================================================
--- 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/CoyoteAdapter.java 
(original)
+++ tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/CoyoteAdapter.java 
Tue Aug 15 23:50:43 2006
@@ -1,4 +1,4 @@
-package org.apache.coyote.servlet;
+package org.apache.tomcat.lite;
 
 import java.io.IOException;
 
@@ -8,8 +8,8 @@
 import org.apache.coyote.Adapter;
 import org.apache.coyote.Request;
 import org.apache.coyote.Response;
-import org.apache.coyote.servlet.util.MappingData;
-import org.apache.coyote.servlet.util.MessageWriter;
+import org.apache.tomcat.lite.util.MappingData;
+import org.apache.tomcat.lite.util.MessageWriter;
 import org.apache.tomcat.util.buf.ByteChunk;
 import org.apache.tomcat.util.buf.MessageBytes;
 
@@ -48,27 +48,27 @@
         return hostMapper;
     }
     
-    public void service(Request req, final Response res)
+    public void service(Request cReq, final Response cRes)
             throws Exception {
         MappingData mapRes = null;
         try {
             
-            MessageBytes decodedURI = req.decodedURI();
-            decodedURI.duplicate(req.requestURI());
+            MessageBytes decodedURI = cReq.decodedURI();
+            decodedURI.duplicate(cReq.requestURI());
 
             if (decodedURI.getType() == MessageBytes.T_BYTES) {
                 // %xx decoding of the URL
                 try {
-                    req.getURLDecoder().convert(decodedURI, false);
+                    cReq.getURLDecoder().convert(decodedURI, false);
                 } catch (IOException ioe) {
-                    res.setStatus(400);
-                    res.setMessage("Invalid URI");
+                    cRes.setStatus(400);
+                    cRes.setMessage("Invalid URI");
                     throw ioe;
                 }
                 // Normalization
-                if (!normalize(req.decodedURI())) {
-                    res.setStatus(400);
-                    res.setMessage("Invalid URI");
+                if (!normalize(cReq.decodedURI())) {
+                    cRes.setStatus(400);
+                    cRes.setMessage("Invalid URI");
                     return;
                 }
                 // Character decoding
@@ -80,41 +80,43 @@
                 decodedURI.toChars();
             }
 
-            ServletRequestImpl request = (ServletRequestImpl) 
req.getNote(ADAPTER_NOTES);
-            ServletResponseImpl response = (ServletResponseImpl) 
res.getNote(ADAPTER_NOTES);
+            ServletRequestImpl req = (ServletRequestImpl) 
cReq.getNote(ADAPTER_NOTES);
+            ServletResponseImpl res = (ServletResponseImpl) 
cRes.getNote(ADAPTER_NOTES);
 
-            if (request == null) {
+            if (req == null) {
                 // Create objects
-                request = new ServletRequestImpl();
-                request.setCoyoteRequest(req);
-                response = new ServletResponseImpl();
-                response.setRequest(request);
-                response.setCoyoteResponse(res);
+                req = new ServletRequestImpl();
+                req.setCoyoteRequest(cReq);
+                res = new ServletResponseImpl();
+                res.setRequest(req);
+                res.setCoyoteResponse(cRes);
                 // Link objects
-                request.setResponse(response);
+                req.setResponse(res);
 
                 // Set as notes
-                req.setNote(ADAPTER_NOTES, request);
-                res.setNote(ADAPTER_NOTES, response);
+                cReq.setNote(ADAPTER_NOTES, req);
+                cRes.setNote(ADAPTER_NOTES, res);
             }
             
-            mapRes = request.getMappingData(); 
+            mapRes = req.getMappingData(); 
             if(mapRes == null ) {
                 mapRes = new MappingData();
-                req.setNote(REQUEST_MAPPING_NOTE, mapRes);
+                cReq.setNote(REQUEST_MAPPING_NOTE, mapRes);
             }
-            hostMapper.mapContext(req.remoteHost(), req.decodedURI(), mapRes);
+            hostMapper.mapContext(cReq.remoteHost(), cReq.decodedURI(), 
mapRes);
             ServletContextImpl ctx = (ServletContextImpl)mapRes.context;
             if( ctx == null ) {
                 // TODO: 404
                 return;
             }
+            req.setContext(ctx);
+            
             WebappServletMapper mapper = ctx.getMapper();
-            mapper.map(req.decodedURI(), mapRes);
+            mapper.map(cReq.decodedURI(), mapRes);
             
             ServletConfigImpl h=(ServletConfigImpl)mapRes.wrapper;
             if (h != null) {
-                serviceServlet( req, request, response, h, mapRes );
+                serviceServlet( cReq, req, res, h, mapRes );
             }
         } catch( Throwable t ) {
             t.printStackTrace(System.out);
@@ -124,11 +126,11 @@
         }
 
         // Final processing
-        MessageWriter.getWriter(req, res, 0).flush();
-        res.finish();
+        MessageWriter.getWriter(cReq, cRes, 0).flush();
+        cRes.finish();
 
-        req.recycle();
-        res.recycle();
+        cReq.recycle();
+        cRes.recycle();
 
     }
     

Copied: 
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/FilterChainImpl.java 
(from r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/FilterChainImpl.java)
URL: 
http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/FilterChainImpl.java?p2=tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/FilterChainImpl.java&p1=tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/FilterChainImpl.java&r1=425115&r2=431846&rev=431846&view=diff
==============================================================================
--- 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/FilterChainImpl.java 
(original)
+++ tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/FilterChainImpl.java 
Tue Aug 15 23:50:43 2006
@@ -15,7 +15,7 @@
  */
 
 
-package org.apache.coyote.servlet;
+package org.apache.tomcat.lite;
 
 
 import java.io.IOException;

Copied: 
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/FilterConfigImpl.java 
(from r425115, 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/FilterConfigImpl.java)
URL: 
http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/FilterConfigImpl.java?p2=tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/FilterConfigImpl.java&p1=tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/FilterConfigImpl.java&r1=425115&r2=431846&rev=431846&view=diff
==============================================================================
--- 
tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/FilterConfigImpl.java 
(original)
+++ 
tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/FilterConfigImpl.java 
Tue Aug 15 23:50:43 2006
@@ -15,7 +15,7 @@
  */
 
 
-package org.apache.coyote.servlet;
+package org.apache.tomcat.lite;
 
 
 import java.io.Serializable;
@@ -29,7 +29,7 @@
 import javax.servlet.ServletContext;
 import javax.servlet.ServletException;
 
-import org.apache.coyote.servlet.util.Enumerator;
+import org.apache.tomcat.servlets.util.Enumerator;
 import org.apache.tomcat.util.log.SystemLogHandler;
 
 

Copied: tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/Host.java (from 
r425115, tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/Host.java)
URL: 
http://svn.apache.org/viewvc/tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/Host.java?p2=tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/Host.java&p1=tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/Host.java&r1=425115&r2=431846&rev=431846&view=diff
==============================================================================
--- tomcat/sandbox/tomcat-lite/java/org/apache/coyote/servlet/Host.java 
(original)
+++ tomcat/sandbox/tomcat-lite/java/org/apache/tomcat/lite/Host.java Tue Aug 15 
23:50:43 2006
@@ -15,13 +15,13 @@
  */
 
 
-package org.apache.coyote.servlet;
+package org.apache.tomcat.lite;
 
 
 import java.util.HashMap;
 import java.util.Iterator;
 
-import org.apache.coyote.servlet.WebappServletMapper.ContextMapElement;
+import org.apache.tomcat.lite.WebappServletMapper.ContextMapElement;
 import org.apache.tomcat.util.res.StringManager;
 
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to