tmiller     01/05/18 12:30:55

  Modified:    java/src/org/apache/xalan/xsltc/runtime
                        AbstractTranslet.java
  Log:
  added more support for StreamResult output targets
  
  Revision  Changes    Path
  1.6       +61 -6     
xml-xalan/java/src/org/apache/xalan/xsltc/runtime/AbstractTranslet.java
  
  Index: AbstractTranslet.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/runtime/AbstractTranslet.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- AbstractTranslet.java     2001/05/14 12:52:25     1.5
  +++ AbstractTranslet.java     2001/05/18 19:30:51     1.6
  @@ -1,5 +1,5 @@
   /*
  - * @(#)$Id: AbstractTranslet.java,v 1.5 2001/05/14 12:52:25 tmiller Exp $
  + * @(#)$Id: AbstractTranslet.java,v 1.6 2001/05/18 19:30:51 tmiller Exp $
    *
    * The Apache Software License, Version 1.1
    *
  @@ -78,6 +78,7 @@
   import org.apache.xalan.xsltc.dom.KeyIndex;
   
   // GTM added all these
  +import org.apache.xalan.xsltc.runtime.DefaultSAXOutputHandler;
   import javax.xml.transform.Transformer;      
   import javax.xml.transform.Source;
   import javax.xml.transform.Result;
  @@ -94,7 +95,9 @@
   import org.xml.sax.XMLReader;
   import org.apache.xalan.xsltc.dom.DTDMonitor;
   import java.io.File;
  +import java.io.Writer;
   import java.io.OutputStream;
  +import java.io.FileOutputStream;
   import java.io.FileNotFoundException;
   import java.net.MalformedURLException;
   import java.net.UnknownHostException;
  @@ -467,11 +470,63 @@
       public void transform(Source xmlsrc, Result outputTarget)
           throws TransformerException 
       {
  +/********************
        doTransform( xmlsrc.getSystemId(), 
                     ((StreamResult)outputTarget).getOutputStream() ); 
  +*******************************/
  +
  +     // try to get the encoding from Translet
  +     final Translet translet = (Translet)this;
  +     String encoding = translet.getOutputEncoding();
  +     if (encoding == null) encoding = "UTF-8";
  +
  +
  +     // create a DefaultSAXOutputHandler
  +     DefaultSAXOutputHandler saxHandler = null;
  +     StreamResult target = (StreamResult)outputTarget;       
  +     java.io.Writer writer = target.getWriter();
  +     java.io.OutputStream os = target.getOutputStream();
  +     String systemid = target.getSystemId();
  +     if (writer != null) {
  +         // no constructor that takes encoding yet...
  +         try {
  +             saxHandler = new DefaultSAXOutputHandler(writer); 
  +         } catch (java.io.IOException e) {
  +             throw new TransformerException(
  +                    "IOException creating DefaultSAXOutputHandler");
  +         }
  +     } else if (os != null) {
  +         try {
  +             saxHandler = new DefaultSAXOutputHandler(os, encoding); 
  +         } catch (java.io.IOException e) {
  +                throw new TransformerException(
  +                    "IOException creating DefaultSAXOutputHandler");
  +            }
  +     } else if (systemid != null) {
  +         String filePrefix = new String("file:///");
  +         if (systemid.startsWith(filePrefix)) {
  +             systemid = systemid.substring(filePrefix.length());
  +         }
  +         try {
  +                saxHandler = new DefaultSAXOutputHandler(
  +                 ((OutputStream)new FileOutputStream(systemid)), 
  +                 encoding);
  +         } catch (java.io.FileNotFoundException e) {
  +             throw new TransformerException(
  +                 "Transform output target could not be opened.");
  +         } catch (java.io.IOException e) {
  +             throw new TransformerException(
  +                 "Transform output target could not be opened.");
  +         }
  +     }
  +
  +     // finally do the transformation...     
  +     doTransform(xmlsrc.getSystemId(), saxHandler, encoding);
       }
   
  -    private void doTransform(String xmlDocName, OutputStream ostream) {
  +    private void doTransform(String xmlDocName, 
  +     DefaultSAXOutputHandler saxHandler, String encoding) 
  +    {
           try {
               final Translet translet = (Translet)this; // GTM added
   
  @@ -503,12 +558,12 @@
               setUnparsedEntityURIs(dtdMonitor.getUnparsedEntityURIs());
   
               // Transform the document
  -            String encoding = translet.getOutputEncoding();
  -            if (encoding == null) encoding = "UTF-8";
  +            //String encoding = translet.getOutputEncoding();
  +            //if (encoding == null) encoding = "UTF-8";
   
               //TextOutput textOutput = new TextOutput(System.out, encoding);
  -            DefaultSAXOutputHandler saxHandler = new
  -                DefaultSAXOutputHandler(ostream, encoding);
  +            //DefaultSAXOutputHandler saxHandler = new
  +             //   DefaultSAXOutputHandler(ostream, encoding);
               TextOutput textOutput = new TextOutput(saxHandler, encoding);
               translet.transform(dom, textOutput);
               textOutput.flush();
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to