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 --------------------