You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by co...@apache.org on 2001/09/19 01:24:46 UTC

cvs commit: jakarta-tomcat/src/share/org/apache/tomcat/util/compat Jdk11Compat.java Jdk12Support.java

costin      01/09/18 16:24:46

  Modified:    .        build.xml
               src/share/org/apache/jasper/compiler JspReader.java
               src/share/org/apache/tomcat/modules/server Ajp13.java
               src/share/org/apache/tomcat/util/compat Jdk11Compat.java
                        Jdk12Support.java
  Log:
  X509Certificate is not available in JDK1.1, moved the code to Jdk11Compat and make sure
  everything is again working in 1.1.
  
  As ussual, the trick is to have a method that does nothing in Jdk11Compat and
  override it with a real method in Jdk12Support ( the names are pretty bad ). This adds
  almost no overhead in jdk12 ( just a virtual method call ), and is pretty clean ( as
  oposed with other solutions using introspection or other tricks ).
  
  I also added the catch(Exception) in JspReader - I think it's a bug in gcj, but it's an easy
  workaround ( gcj is also JDK1.1 AFAIK )
  
  Revision  Changes    Path
  1.153     +1 -0      jakarta-tomcat/build.xml
  
  Index: build.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/build.xml,v
  retrieving revision 1.152
  retrieving revision 1.153
  diff -u -r1.152 -r1.153
  --- build.xml	2001/09/17 00:44:54	1.152
  +++ build.xml	2001/09/18 23:24:46	1.153
  @@ -255,6 +255,7 @@
         </classpath>
         <include name="org/apache/tomcat/util/**"/>
         <exclude name="**/util/net/SSLSocketFactory.java" unless="jsse.present"/>
  +      <exclude name="**/util/net/SSLSocketFactory.java" unless="jdk12.present"/>
         <exclude name="**/util/compat/Jdk12Support.java" unless="jdk12.present"/>
         <exclude name="**/util/depend/DependClassLoader12.java" unless="jdk12.present"/>
       </javac>
  
  
  
  1.24      +11 -6     jakarta-tomcat/src/share/org/apache/jasper/compiler/JspReader.java
  
  Index: JspReader.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/jasper/compiler/JspReader.java,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- JspReader.java	2001/03/02 04:51:33	1.23
  +++ JspReader.java	2001/09/18 23:24:46	1.24
  @@ -349,12 +349,17 @@
       char[] getChars(Mark start, Mark stop) throws ParseException {
   	Mark oldstart = mark();
   	reset(start);
  -	CharArrayWriter caw = new CharArrayWriter();
  -	while (!stop.equals(mark()))
  -	    caw.write(nextChar());
  -	caw.close();
  -	reset(oldstart);
  -	return caw.toCharArray();
  +	try {
  +	    CharArrayWriter caw = new CharArrayWriter();
  +	    while (!stop.equals(mark()))
  +		caw.write(nextChar());
  +	    caw.close();
  +	    reset(oldstart);
  +	    return caw.toCharArray();
  +	} catch( Exception ex ) {
  +	    ex.printStackTrace();
  +	    throw new ParseException( ex.toString() );
  +	}
       }
   
       public int peekChar() {
  
  
  
  1.28      +12 -18    jakarta-tomcat/src/share/org/apache/tomcat/modules/server/Ajp13.java
  
  Index: Ajp13.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/modules/server/Ajp13.java,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- Ajp13.java	2001/09/18 12:29:30	1.27
  +++ Ajp13.java	2001/09/18 23:24:46	1.28
  @@ -67,11 +67,9 @@
   import java.util.Enumeration;
   import java.io.ByteArrayInputStream;
   
  -import java.security.cert.X509Certificate;
  -import java.security.cert.CertificateFactory;
  -
   import org.apache.tomcat.core.*;
   import org.apache.tomcat.util.*;
  +import org.apache.tomcat.util.compat.*;
   import org.apache.tomcat.util.http.MimeHeaders;
   import org.apache.tomcat.util.buf.MessageBytes;
   import org.apache.tomcat.util.aaa.SimplePrincipal;
  @@ -195,7 +193,7 @@
   
   
       // ============ Instance Properties ====================
  -
  +    static Jdk11Compat jdk11Compat=Jdk11Compat.getJdkCompat();
       OutputStream out;
       InputStream in;
       int dL=0;
  @@ -383,22 +381,18 @@
                   // Transform the string into certificate.
                   String certString = msg.getString();
                   byte[] certData = certString.getBytes();
  -                ByteArrayInputStream bais = new ByteArrayInputStream(certData);
  - 
  -                // Fill the first element.
  -                X509Certificate jsseCerts[] = null;
  -                try {
  -                    CertificateFactory cf =
  -                        CertificateFactory.getInstance("X.509");
  -                    X509Certificate cert = (X509Certificate)
  -                        cf.generateCertificate(bais);
  -                    jsseCerts =  new X509Certificate[1];
  -                    jsseCerts[0] = cert;
  -                } catch(java.security.cert.CertificateException e) {
  +
  +		try {
  +		    Object jsseCerts=jdk11Compat.getX509Certificates(certData);
  +		    req.setAttribute("javax.servlet.request.X509Certificate",
  +				     jsseCerts);
  +                } catch( Exception e) {
                       d("Certificate convertion failed" + e );
  +		    // Save it at least as string... JDK1.1 doesn't
  +		    // have X509Certificate class
  +		    req.setAttribute("javax.servlet.request.X509Certificate",
  +				     certString);
                   }
  -		req.setAttribute("javax.servlet.request.X509Certificate",
  -				 jsseCerts);
                   break;
   
   	    case SC_A_SSL_CIPHER   :
  
  
  
  1.13      +5 -0      jakarta-tomcat/src/share/org/apache/tomcat/util/compat/Jdk11Compat.java
  
  Index: Jdk11Compat.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/compat/Jdk11Compat.java,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- Jdk11Compat.java	2001/09/16 00:33:30	1.12
  +++ Jdk11Compat.java	2001/09/18 23:24:46	1.13
  @@ -149,6 +149,11 @@
       public java.util.ResourceBundle getBundle(String name, Locale loc, ClassLoader cl ) {
   	return ResourceBundle.getBundle(name, loc);
       }
  +
  +    public Object getX509Certificates( byte x509[] ) throws Exception {
  +	// No x509 certificate in JDK1.1
  +	return null;
  +    }
       
   
       // -------------------- Factory -------------------- 
  
  
  
  1.8       +19 -0     jakarta-tomcat/src/share/org/apache/tomcat/util/compat/Jdk12Support.java
  
  Index: Jdk12Support.java
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat/src/share/org/apache/tomcat/util/compat/Jdk12Support.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Jdk12Support.java	2001/08/22 04:44:49	1.7
  +++ Jdk12Support.java	2001/09/18 23:24:46	1.8
  @@ -61,8 +61,11 @@
   
   import java.net.*;
   import java.util.*;
  +import java.security.cert.X509Certificate;
  +import java.security.cert.CertificateFactory;
   import java.security.*;
   import org.apache.tomcat.util.depend.*;
  +
   /**
    *  
    */
  @@ -149,6 +152,22 @@
   	else
   	    return ResourceBundle.getBundle(name, loc, cl);
       }
  +
  +    public Object getX509Certificates( byte x509[] ) throws Exception {
  +	ByteArrayInputStream bais = new ByteArrayInputStream(x509);
  +	
  +	// Fill the first element.
  +	X509Certificate jsseCerts[] = null;
  +
  +	CertificateFactory cf =
  +	    CertificateFactory.getInstance("X.509");
  +	X509Certificate cert = (X509Certificate)
  +	    cf.generateCertificate(bais);
  +	jsseCerts =  new X509Certificate[1];
  +	jsseCerts[0] = cert;
  +	return jsseCerts;
  +    }
  +
       
   
       // -------------------- Support --------------------