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/18 21:30:55 UTC

cvs commit: xml-xalan/java/src/org/apache/xalan/xsltc/runtime AbstractTranslet.java

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: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org