You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by tm...@apache.org on 2001/05/15 20:53:47 UTC
cvs commit: xml-xalan/java/src/org/apache/xalan/xsltc/runtime TransformerFactoryImpl.java TransletTemplates.java
tmiller 01/05/15 11:53:45
Modified: java/src/org/apache/xalan/xsltc/runtime
TransformerFactoryImpl.java TransletTemplates.java
Log:
TransletTemplates compiles its own translets now.
Revision Changes Path
1.3 +2 -12 xml-xalan/java/src/org/apache/xalan/xsltc/runtime/TransformerFactoryImpl.java
Index: TransformerFactoryImpl.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/runtime/TransformerFactoryImpl.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TransformerFactoryImpl.java 2001/05/14 14:25:19 1.2
+++ TransformerFactoryImpl.java 2001/05/15 18:53:31 1.3
@@ -1,5 +1,5 @@
/*
- * @(#)$Id: TransformerFactoryImpl.java,v 1.2 2001/05/14 14:25:19 tmiller Exp $
+ * @(#)$Id: TransformerFactoryImpl.java,v 1.3 2001/05/15 18:53:31 tmiller Exp $
*
* The Apache Software License, Version 1.1
*
@@ -60,15 +60,6 @@
*
*/
-/*********************************************************************
- * Prototype SAXTransformerFactory to deliver Translets - GTM
- * NOTES:
- * - to use set javax.xml.transform.TransformerFactory system property
- * to 'org.apache.xalan.xsltc.runtime.TransformerFactoryImpl'.
- * - the stylesheet *is always* compiled into a translet, this will get
- * smarter, look into caching.
- * - translet is compiled and stored as a File in cwd currently.
- *********************************************************************/
package org.apache.xalan.xsltc.runtime;
@@ -275,7 +266,6 @@
public Templates newTemplates(Source stylesheet) throws
TransformerConfigurationException
{
- Transformer translet = newTransformer(stylesheet);
- return new TransletTemplates(translet);
+ return new TransletTemplates(stylesheet);
}
}
1.3 +66 -12 xml-xalan/java/src/org/apache/xalan/xsltc/runtime/TransletTemplates.java
Index: TransletTemplates.java
===================================================================
RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/runtime/TransletTemplates.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- TransletTemplates.java 2001/05/14 12:52:24 1.2
+++ TransletTemplates.java 2001/05/15 18:53:34 1.3
@@ -1,5 +1,5 @@
/*
- * @(#)$Id: TransletTemplates.java,v 1.2 2001/05/14 12:52:24 tmiller Exp $
+ * @(#)$Id: TransletTemplates.java,v 1.3 2001/05/15 18:53:34 tmiller Exp $
*
* The Apache Software License, Version 1.1
*
@@ -61,36 +61,90 @@
*/
package org.apache.xalan.xsltc.runtime;
-import javax.xml.transform.Templates;
+import javax.xml.transform.Templates;
+import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.sax.SAXTransformerFactory;
import org.apache.xalan.xsltc.runtime.AbstractTranslet;
+import org.apache.xalan.xsltc.compiler.XSLTC;
+import org.apache.xalan.xsltc.Translet;
import java.util.Properties;
+import java.io.File;
+import java.net.URL;
+import java.net.MalformedURLException;
+
/**
* Implementation of a JAXP1.1 Templates object for Translets.
*/
public class TransletTemplates implements Templates {
- public TransletTemplates(Transformer translet) {
- _translet = (AbstractTranslet)translet;
+
+ public TransletTemplates(Source stylesheet) {
+ _stylesheetName = stylesheet.getSystemId();
+ int index = _stylesheetName.indexOf('.');
+ _transletName = _stylesheetName.substring(0,index);
}
- public Properties getOutputProperties() {
- /*TBD*/
- return new Properties();
+ private void generateTransletClass() throws
+ TransformerConfigurationException
+ {
+ XSLTC xsltc = new XSLTC();
+ xsltc.init();
+ boolean isSuccessful = true;
+ try {
+ File file = new File(_stylesheetName);
+ URL url = file.toURL();
+ isSuccessful = xsltc.compile(url);
+ } catch (MalformedURLException e) {
+ throw new TransformerConfigurationException(
+ "URL for stylesheet '" + _stylesheetName +
+ "' can not be formed.");
+ }
+
+ if (!isSuccessful) {
+ throw new TransformerConfigurationException(
+ "Compilation of stylesheet '" + _stylesheetName + "' failed.");
+ }
+
+ Translet translet = null;
+ try {
+ _transletClass = Class.forName(_transletName);
+ } catch (ClassNotFoundException e) {
+ throw new TransformerConfigurationException(
+ "Translet class '" + _transletName + "' not found.");
+ }
}
public Transformer newTransformer() throws
TransformerConfigurationException
{
- if (_translet == null) {
- throw new TransformerConfigurationException(
- "Error: Null Translet");
+ if (_transletClass == null ) {
+ generateTransletClass();
}
- return _translet;
+
+ Translet translet = null;
+ try {
+ translet = (Translet)_transletClass.newInstance();
+ ((AbstractTranslet)translet).setTransletName(_transletName);
+ } catch (InstantiationException e) {
+ throw new TransformerConfigurationException(
+ "Translet class '" + _transletName +
+ "' could not be instantiated");
+ } catch (IllegalAccessException e) {
+ throw new TransformerConfigurationException(
+ "Translet class '" + _transletName+ "' could not be accessed.");
+ }
+ return (AbstractTranslet)translet;
+ }
+
+ public Properties getOutputProperties() {
+ /*TBD*/
+ return new Properties();
}
- private AbstractTranslet _translet = null;
+ private Class _transletClass = null;
+ private String _transletName;
+ private String _stylesheetName;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org