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