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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to