You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by cu...@apache.org on 2001/01/19 04:00:43 UTC
cvs commit: xml-xalan/test/java/src/org/apache/qetest/xslwrapper XalanWrapper.java
curcuru 01/01/18 19:00:43
Modified: test/java/src/org/apache/qetest/xslwrapper XalanWrapper.java
Log:
Updated for 2.x compatability layer; properly reports version
number for either 1.x or 2.x; disabled setIndent temporarily
until I find where the compatibility functionality for it went
Revision Changes Path
1.3 +63 -14 xml-xalan/test/java/src/org/apache/qetest/xslwrapper/XalanWrapper.java
Index: XalanWrapper.java
===================================================================
RCS file: /home/cvs/xml-xalan/test/java/src/org/apache/qetest/xslwrapper/XalanWrapper.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- XalanWrapper.java 2000/12/12 16:00:28 1.2
+++ XalanWrapper.java 2001/01/19 03:00:43 1.3
@@ -2,7 +2,7 @@
* The Apache Software License, Version 1.1
*
*
- * Copyright (c) 2000 The Apache Software Foundation. All rights
+ * Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -62,22 +62,25 @@
*/
package org.apache.qetest.xslwrapper;
-import java.util.Vector;
-
import java.io.PrintWriter;
+import java.lang.reflect.Field;
+import java.util.Vector;
// The Xalan (apache) implementation
import org.apache.xalan.xslt.XSLTProcessor;
import org.apache.xalan.xslt.XSLTProcessorFactory;
import org.apache.xalan.xslt.XSLTInputSource;
import org.apache.xalan.xslt.XSLTResultTarget;
-import org.apache.xalan.xslt.XSLProcessorVersion;
+ // XSLProcessorVersion is not present in the Xalan-J 2.x compatibility layer
+ // import org.apache.xalan.xslt.XSLProcessorVersion;
/**
* Implementation of a ProcessorWrapper for Xalan 1.x builds.
* <p>See TraxWrapper for a Xalan 2.x wrapper solution.</p>
+ * <p>Note: Updated to work with either Xalan-J 1.x or with
+ * Xalan-J 2.x's compatibility layer seamlessly.</p>
* @author Shane Curcuru
- * @version $Id: XalanWrapper.java,v 1.2 2000/12/12 16:00:28 curcuru Exp $
+ * @version $Id: XalanWrapper.java,v 1.3 2001/01/19 03:00:43 curcuru Exp $
*/
public class XalanWrapper extends ProcessorWrapper
{
@@ -133,6 +136,12 @@
return (p);
}
+ /** FQCN of Xalan-J 1.x's version file. */
+ public static final String XALAN1_VERSION_CLASS = "org.apache.xalan.xslt.XSLProcessorVersion";
+
+ /** FQCN of Xalan-J 2.x's version file, when using the compatibility layer. */
+ public static final String XALAN2_VERSION_CLASS = "org.apache.xalan.processor.XSLProcessorVersion";
+
/**
* Get a description of the wrappered processor.
* @return info-string describing the processor and possibly it's common options
@@ -147,15 +156,51 @@
}
else
{
- StringBuffer buf = new StringBuffer(XSLProcessorVersion.PRODUCT);
-
- buf.append(";");
- buf.append(XSLProcessorVersion.LANGUAGE);
- buf.append(";");
- buf.append(XSLProcessorVersion.S_VERSION);
- buf.append(";");
- buf.append(processor.getXMLProcessorLiaison());
+ StringBuffer buf = new StringBuffer("No Xalan version info found");
+ // Compatibility with either 1.x or 2.x compatibility layer
+ Class clazz = null;
+ Field f = null;
+ try
+ {
+ clazz = Class.forName(XALAN1_VERSION_CLASS);
+ // Found 1.x, grab it's version fields
+ buf = new StringBuffer();
+ f = clazz.getField("PRODUCT");
+ buf.append(f.get(null));
+ buf.append(";");
+ f = clazz.getField("LANGUAGE");
+ buf.append(f.get(null));
+ buf.append(";");
+ f = clazz.getField("S_VERSION");
+ buf.append(f.get(null));
+ buf.append(";");
+ buf.append(processor.getXMLProcessorLiaison());
+ }
+ catch (Exception e1)
+ {
+ // Can't find 1.x, look for 2.x compat layer
+ try
+ {
+ clazz = Class.forName(XALAN2_VERSION_CLASS);
+ // Found 2.x, grab it's version fields
+ buf = new StringBuffer();
+ f = clazz.getField("PRODUCT");
+ buf.append(f.get(null));
+ buf.append(";");
+ f = clazz.getField("LANGUAGE");
+ buf.append(f.get(null));
+ buf.append(";");
+ f = clazz.getField("S_VERSION");
+ buf.append(f.get(null));
+ buf.append(";");
+ //@todo find way to figure out parser info too
+ }
+ catch (Exception e2)
+ {
+ // Can't find 2.x either, just bail
+ }
+ }
return buf.toString();
}
}
@@ -348,7 +393,11 @@
throw new java.lang.IllegalStateException(
"You must call createNewProcessor first!");
- processor.getXMLProcessorLiaison().setIndent(i);
+ // HACK: functionality not present in 2.x compat,
+ // just comment out for now: we should really try
+ // to dynamically load this for 1.x and/or replace the
+ // functionality for 2.x later on
+ //processor.getXMLProcessorLiaison().setIndent(i);
}
/**