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]