You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by zo...@apache.org on 2002/08/13 23:21:14 UTC

cvs commit: xml-xalan/java/src/org/apache/xalan/xsltc/trax DOM2SAX.java TemplatesHandlerImpl.java TemplatesImpl.java TransformerFactoryImpl.java TransformerHandlerImpl.java

zongaro     2002/08/13 14:21:14

  Modified:    java/src/org/apache/xalan/templates Tag: XSLTC_DTM
                        ElemValueOf.java
               java/src/org/apache/xalan/xsltc Tag: XSLTC_DTM
                        TransletOutputHandler.java
               java/src/org/apache/xalan/xsltc/compiler Tag: XSLTC_DTM
                        Expression.java FunctionAvailableCall.java
                        ParameterRef.java VariableRef.java
               java/src/org/apache/xalan/xsltc/dom Tag: XSLTC_DTM
                        LoadDocument.java
               java/src/org/apache/xalan/xsltc/runtime Tag: XSLTC_DTM
                        BasisLibrary.java SAXAdapter.java TextOutput.java
                        TransletOutputBase.java
               java/src/org/apache/xalan/xsltc/runtime/output Tag:
                        XSLTC_DTM SAXHTMLOutput.java
               java/src/org/apache/xalan/xsltc/trax Tag: XSLTC_DTM
                        DOM2SAX.java TemplatesHandlerImpl.java
                        TemplatesImpl.java TransformerFactoryImpl.java
                        TransformerHandlerImpl.java
  Log:
  Merged in latest changes from MAIN branch.
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.18.2.1  +5 -0      xml-xalan/java/src/org/apache/xalan/templates/ElemValueOf.java
  
  Index: ElemValueOf.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemValueOf.java,v
  retrieving revision 1.18
  retrieving revision 1.18.2.1
  diff -u -r1.18 -r1.18.2.1
  --- ElemValueOf.java	24 Mar 2002 00:57:53 -0000	1.18
  +++ ElemValueOf.java	13 Aug 2002 21:21:13 -0000	1.18.2.1
  @@ -334,6 +334,11 @@
       {
         throw new TransformerException(se);
       }
  +    catch (RuntimeException re) {
  +    	TransformerException te = new TransformerException(re);
  +    	te.setLocator(this);
  +    	throw te;
  +    }
       finally
       {
         if (TransformerImpl.S_DEBUG)
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.7.10.2  +3 -1      xml-xalan/java/src/org/apache/xalan/xsltc/TransletOutputHandler.java
  
  Index: TransletOutputHandler.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/TransletOutputHandler.java,v
  retrieving revision 1.7.10.1
  retrieving revision 1.7.10.2
  diff -u -r1.7.10.1 -r1.7.10.2
  --- TransletOutputHandler.java	29 Jul 2002 00:01:21 -0000	1.7.10.1
  +++ TransletOutputHandler.java	13 Aug 2002 21:21:13 -0000	1.7.10.2
  @@ -82,6 +82,8 @@
       public void comment(String comment) throws TransletException;
       public void processingInstruction(String target, String data)
   	throws TransletException;
  +    public void startCDATA() throws TransletException;
  +    public void endCDATA() throws TransletException;
       public void setType(int type);
       public void setIndent(boolean indent);
       public void omitHeader(boolean value);
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.11.2.3  +2 -10     xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Expression.java
  
  Index: Expression.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/Expression.java,v
  retrieving revision 1.11.2.2
  retrieving revision 1.11.2.3
  diff -u -r1.11.2.2 -r1.11.2.3
  --- Expression.java	1 Aug 2002 19:55:30 -0000	1.11.2.2
  +++ Expression.java	13 Aug 2002 21:21:13 -0000	1.11.2.3
  @@ -180,15 +180,7 @@
   	    return;		// nothing to do
   	}
   
  -	if (this instanceof VariableRefBase) {
  -	    // The method cloneIterator() also does resetting
  -	    final int clone =
  -		cpg.addInterfaceMethodref(NODE_ITERATOR,
  -					  "cloneIterator",
  -					  "()" + NODE_ITERATOR_SIG);
  -	    il.append(new INVOKEINTERFACE(clone, 1));
  -	}
  -	else {
  +	if ( (this instanceof VariableRefBase) == false ) {
   	    il.append(methodGen.loadContextNode());
   	    il.append(methodGen.setStartNode());
   	}
  
  
  
  1.5.6.2   +2 -1      xml-xalan/java/src/org/apache/xalan/xsltc/compiler/FunctionAvailableCall.java
  
  Index: FunctionAvailableCall.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/FunctionAvailableCall.java,v
  retrieving revision 1.5.6.1
  retrieving revision 1.5.6.2
  diff -u -r1.5.6.1 -r1.5.6.2
  --- FunctionAvailableCall.java	29 Jul 2002 00:01:22 -0000	1.5.6.1
  +++ FunctionAvailableCall.java	13 Aug 2002 21:21:13 -0000	1.5.6.2
  @@ -241,6 +241,7 @@
   
           if (_namespaceOfFunct == null ||
               _namespaceOfFunct.equals(EMPTYSTRING) ||
  +	    _namespaceOfFunct.equals(EXT_XALAN) ||
   	    _namespaceOfFunct.equals(TRANSLET_URI))
           {
               final Parser parser = getParser();
  
  
  
  1.10.6.1  +7 -5      xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ParameterRef.java
  
  Index: ParameterRef.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/ParameterRef.java,v
  retrieving revision 1.10
  retrieving revision 1.10.6.1
  diff -u -r1.10 -r1.10.6.1
  --- ParameterRef.java	1 Feb 2002 20:07:08 -0000	1.10
  +++ ParameterRef.java	13 Aug 2002 21:21:13 -0000	1.10.6.1
  @@ -112,10 +112,12 @@
   	}
   
   	if (_variable.getType() instanceof NodeSetType) {
  -	    final int reset = cpg.addInterfaceMethodref(NODE_ITERATOR,
  -							"reset",
  -							"()"+NODE_ITERATOR_SIG);
  -	    il.append(new INVOKEINTERFACE(reset,1));	    
  +	    // The method cloneIterator() also does resetting
  +            final int clone = cpg.addInterfaceMethodref(NODE_ITERATOR,
  +                                                       "cloneIterator",
  +                                                       "()" +
  +                                                        NODE_ITERATOR_SIG);
  +            il.append(new INVOKEINTERFACE(clone, 1));
   	}
   
       }
  
  
  
  1.11.6.1  +7 -5      xml-xalan/java/src/org/apache/xalan/xsltc/compiler/VariableRef.java
  
  Index: VariableRef.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/compiler/VariableRef.java,v
  retrieving revision 1.11
  retrieving revision 1.11.6.1
  diff -u -r1.11 -r1.11.6.1
  --- VariableRef.java	1 Feb 2002 20:07:08 -0000	1.11
  +++ VariableRef.java	13 Aug 2002 21:21:13 -0000	1.11.6.1
  @@ -135,10 +135,12 @@
   	}
   
   	if (_variable.getType() instanceof NodeSetType) {
  -	    final int reset = cpg.addInterfaceMethodref(NODE_ITERATOR,
  -							"reset",
  -							"()"+NODE_ITERATOR_SIG);
  -	    il.append(new INVOKEINTERFACE(reset,1));	    
  +	    // The method cloneIterator() also does resetting
  +	    final int clone = cpg.addInterfaceMethodref(NODE_ITERATOR,
  +						       "cloneIterator",
  +						       "()" + 
  +							NODE_ITERATOR_SIG);
  +	    il.append(new INVOKEINTERFACE(clone, 1));
   	}
   
       }
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.11.10.2 +22 -13    xml-xalan/java/src/org/apache/xalan/xsltc/dom/LoadDocument.java
  
  Index: LoadDocument.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/dom/LoadDocument.java,v
  retrieving revision 1.11.10.1
  retrieving revision 1.11.10.2
  diff -u -r1.11.10.1 -r1.11.10.2
  --- LoadDocument.java	17 Apr 2002 18:13:44 -0000	1.11.10.1
  +++ LoadDocument.java	13 Aug 2002 21:21:13 -0000	1.11.10.2
  @@ -62,8 +62,9 @@
   
   package org.apache.xalan.xsltc.dom;
   
  -import java.io.File;
   import java.net.URL;
  +import java.io.File;
  +import java.io.FileNotFoundException;
   
   import javax.xml.parsers.SAXParser;
   import javax.xml.parsers.SAXParserFactory;
  @@ -98,22 +99,24 @@
        */
       public static DTMAxisIterator document(String uri, String base,
   					AbstractTranslet translet, DOM dom)
  -	throws Exception {
  -
  +	throws Exception 
  +    {
  +	final String originalUri = uri;
   	MultiDOM multiplexer = (MultiDOM)dom;
   
   	// Return an empty iterator if the URI is clearly invalid
   	// (to prevent some unncessary MalformedURL exceptions).
  -	if ((uri == null) || (uri.equals("")))
  +	if (uri == null || uri.equals("")) {
   	    return(new SingletonIterator(DTM.NULL,true));
  +	}
   
   	// Prepend URI base to URI (from context)
  -	if ((base != null) && (!base.equals(""))) {
  -	    if ((!uri.startsWith(base)) &&     // unless URI contains base
  -		(!uri.startsWith("/")) &&      // unless URI is abs. file path
  -		(!uri.startsWith("http:/")) && // unless URI is abs. http URL
  -		(!uri.startsWith("file:/"))) { // unless URI is abs. file URL
  -		uri = base+uri;
  +	if (base != null && !base.equals("")) {
  +	    if (!uri.startsWith(base)     &&   // unless URI contains base
  +		!uri.startsWith("/")      &&   // unless URI is abs. file path
  +		!uri.startsWith("http:/") &&   // unless URI is abs. http URL
  +		!uri.startsWith("file:/")) {   // unless URI is abs. file URL
  +		uri = base + uri;
   	    }
   	}
   
  @@ -137,7 +140,11 @@
   	mask = multiplexer.nextMask(); // peek
   
   	if (cache != null) {
  -	    newdom = cache.retrieveDocument(uri, mask, translet);
  +	    newdom = cache.retrieveDocument(originalUri, mask, translet);
  +	    if (newdom == null) {
  +		final Exception e = new FileNotFoundException(originalUri);
  +		throw new TransletException(e);
  +	    }
   	}
   	else 
     {
  @@ -263,8 +270,10 @@
   		throw new IllegalArgumentException(err);
   	    }
   	}
  +	catch (TransletException e) {
  +	    throw e;
  +	}
   	catch (Exception e) {
  -	    e.printStackTrace();
   	    throw new TransletException(e);
   	}
       }
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.35.2.3  +8 -3      xml-xalan/java/src/org/apache/xalan/xsltc/runtime/BasisLibrary.java
  
  Index: BasisLibrary.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/runtime/BasisLibrary.java,v
  retrieving revision 1.35.2.2
  retrieving revision 1.35.2.3
  diff -u -r1.35.2.2 -r1.35.2.3
  --- BasisLibrary.java	29 Jul 2002 00:01:28 -0000	1.35.2.2
  +++ BasisLibrary.java	13 Aug 2002 21:21:13 -0000	1.35.2.3
  @@ -69,6 +69,7 @@
   import java.util.Locale;
   import java.util.ResourceBundle;
   
  +import java.text.NumberFormat;
   import java.text.MessageFormat;
   import java.text.FieldPosition;
   import java.text.DecimalFormat;
  @@ -869,7 +870,9 @@
       private static String defaultPattern = "";
   
       static {
  -	defaultFormatter = new DecimalFormat();
  +	NumberFormat f = NumberFormat.getInstance(Locale.getDefault());
  +	defaultFormatter = (f instanceof DecimalFormat) ?
  +	    (DecimalFormat) f : new DecimalFormat();
   	defaultFormatter.setGroupingUsed(false);
       }
   
  @@ -914,7 +917,9 @@
   				      DecimalFormat formatter) {
   	try {
   	    StringBuffer result = new StringBuffer();
  -	    formatter.applyLocalizedPattern(pattern);
  +	    if (pattern != defaultPattern) {
  +		formatter.applyLocalizedPattern(pattern);
  +	    }
   
   	    //------------------------------------------------------
    	    // bug fix # 9179 - make sure localized pattern contains
  
  
  
  1.10.2.4  +3 -1      xml-xalan/java/src/org/apache/xalan/xsltc/runtime/SAXAdapter.java
  
  Index: SAXAdapter.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/runtime/SAXAdapter.java,v
  retrieving revision 1.10.2.3
  retrieving revision 1.10.2.4
  diff -u -r1.10.2.3 -r1.10.2.4
  --- SAXAdapter.java	29 Jul 2002 00:01:28 -0000	1.10.2.3
  +++ SAXAdapter.java	13 Aug 2002 21:21:13 -0000	1.10.2.4
  @@ -193,6 +193,8 @@
       }
   
       // The SAX handler does not handle these:
  +    public void startCDATA() throws TransletException {}
  +    public void endCDATA() throws TransletException {}
       public void setType(int type) {}
       public void setHeader(String header) {}
       public void setIndent(boolean indent) {}
  
  
  
  1.54.2.2  +9 -1      xml-xalan/java/src/org/apache/xalan/xsltc/runtime/TextOutput.java
  
  Index: TextOutput.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/runtime/TextOutput.java,v
  retrieving revision 1.54.2.1
  retrieving revision 1.54.2.2
  diff -u -r1.54.2.1 -r1.54.2.2
  --- TextOutput.java	29 Jul 2002 00:01:28 -0000	1.54.2.1
  +++ TextOutput.java	13 Aug 2002 21:21:14 -0000	1.54.2.2
  @@ -384,6 +384,14 @@
   	_cdataTagOpen = false;
       }
   
  +    public void startCDATA() throws TransletException {
  +	// This class is deprecated - use runtime.output package
  +    }
  +
  +    public void endCDATA() throws TransletException {
  +	// This class is deprecated - use runtime.output package
  +    }
  +
       /**
        * Send characters to the output document
        */
  
  
  
  1.7.10.2  +3 -1      xml-xalan/java/src/org/apache/xalan/xsltc/runtime/TransletOutputBase.java
  
  Index: TransletOutputBase.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/runtime/TransletOutputBase.java,v
  retrieving revision 1.7.10.1
  retrieving revision 1.7.10.2
  diff -u -r1.7.10.1 -r1.7.10.2
  --- TransletOutputBase.java	29 Jul 2002 00:01:28 -0000	1.7.10.1
  +++ TransletOutputBase.java	13 Aug 2002 21:21:14 -0000	1.7.10.2
  @@ -85,6 +85,8 @@
   	throws TransletException {}
       public boolean setEscaping(boolean escape) 
   	throws TransletException { return true; }
  +    public void startCDATA() throws TransletException {}
  +    public void endCDATA() throws TransletException {}
       public String expandQName(String withPrefix) { return(withPrefix); }
       public void setType(int type) {}
       public void setIndent(boolean indent) {}
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.8.4.2   +17 -19    xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output/SAXHTMLOutput.java
  
  Index: SAXHTMLOutput.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/runtime/output/SAXHTMLOutput.java,v
  retrieving revision 1.8.4.1
  retrieving revision 1.8.4.2
  diff -u -r1.8.4.1 -r1.8.4.2
  --- SAXHTMLOutput.java	8 Aug 2002 15:19:03 -0000	1.8.4.1
  +++ SAXHTMLOutput.java	13 Aug 2002 21:21:14 -0000	1.8.4.2
  @@ -140,7 +140,7 @@
               if (_startTagOpen) {
   		closeStartTag();
   	    }
  -            _saxHandler.endElement(EMPTYSTRING, EMPTYSTRING, elementName);
  +            _saxHandler.endElement(EMPTYSTRING, elementName, elementName);
           } 
   	catch (SAXException e) {
               throw new TransletException(e);
  @@ -151,22 +151,20 @@
       public void attribute(String name, final String value) 
   	throws TransletException
       {
  -	final String patchedName = patchName(name);
  -	final String localName = getLocalName(patchedName);
  -	final int index = _attributes.getIndex(name); 
  -
  -	if (!_startTagOpen) {
  -            BasisLibrary.runTimeError(BasisLibrary.STRAY_ATTRIBUTE_ERR,name);
  -        }
  -
  -        if (index >= 0) {
  -            _attributes.setAttribute(index, EMPTYSTRING, localName,
  -                    name, "CDATA", value);
  -        }
  -        else {
  -            _attributes.addAttribute(EMPTYSTRING, localName,
  +	if (_startTagOpen) {
  +	    final String patchedName = patchName(name);
  +	    final String localName = getLocalName(patchedName);
  +	    final int index = _attributes.getIndex(name); 
  +
  +	    if (index >= 0) {
  +		_attributes.setAttribute(index, EMPTYSTRING, localName,
  +			name, "CDATA", value);
  +	    }
  +	    else {
  +		_attributes.addAttribute(EMPTYSTRING, localName,
                   name, "CDATA", value);
  -        }
  +	    }
  +	}
       }
   
       /**
  @@ -194,8 +192,8 @@
               _startTagOpen = false;
   
               // Now is time to send the startElement event
  -            _saxHandler.startElement(null, _elementName, _elementName, 
  -		_attributes);
  +            _saxHandler.startElement(EMPTYSTRING, _elementName, 
  +		_elementName, _attributes);
           }
           catch (SAXException e) {
               throw new TransletException(e);
  
  
  
  No                   revision
  
  
  No                   revision
  
  
  1.11.2.2  +12 -2     xml-xalan/java/src/org/apache/xalan/xsltc/trax/DOM2SAX.java
  
  Index: DOM2SAX.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/trax/DOM2SAX.java,v
  retrieving revision 1.11.2.1
  retrieving revision 1.11.2.2
  diff -u -r1.11.2.1 -r1.11.2.2
  --- DOM2SAX.java	29 Jul 2002 00:01:29 -0000	1.11.2.1
  +++ DOM2SAX.java	13 Aug 2002 21:21:14 -0000	1.11.2.2
  @@ -188,7 +188,17 @@
   
       public void parse() throws IOException, SAXException {
   	if (_dom != null) {
  -	    parse(_dom);
  +	    boolean isIncomplete = 
  +		(_dom.getNodeType() != org.w3c.dom.Node.DOCUMENT_NODE);
  +
  +	    if (isIncomplete) {
  +		_sax.startDocument();
  +		parse(_dom);
  +		_sax.endDocument();
  +	    }
  +	    else {
  +		parse(_dom);
  +	    }
   	}
       }
   
  
  
  
  1.5.2.2   +16 -7     xml-xalan/java/src/org/apache/xalan/xsltc/trax/TemplatesHandlerImpl.java
  
  Index: TemplatesHandlerImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/trax/TemplatesHandlerImpl.java,v
  retrieving revision 1.5.2.1
  retrieving revision 1.5.2.2
  diff -u -r1.5.2.1 -r1.5.2.2
  --- TemplatesHandlerImpl.java	29 Jul 2002 00:01:29 -0000	1.5.2.1
  +++ TemplatesHandlerImpl.java	13 Aug 2002 21:21:14 -0000	1.5.2.2
  @@ -94,16 +94,21 @@
        */
       private URIResolver _uriResolver = null;
   
  -    // Temporary
  -    private boolean _oldOutputSystem;
  +    /**
  +     * A reference to the transformer factory that this templates
  +     * object belongs to.
  +     */
  +    private TransformerFactoryImpl _tfactory = null;
   
       /**
        * Default constructor
        */
  -    protected TemplatesHandlerImpl(int indentNumber, boolean oldOutputSystem) {
  +    protected TemplatesHandlerImpl(int indentNumber, 
  +	TransformerFactoryImpl tfactory) 
  +    {
   	super(null);
   	_indentNumber = indentNumber;
  -	_oldOutputSystem = oldOutputSystem;
  +	_tfactory = tfactory;
       }
   
       /**
  @@ -184,6 +189,10 @@
   		stylesheet.setSystemId(_systemId);
   		stylesheet.setParentStylesheet(null);
   		setCurrentStylesheet(stylesheet);
  +
  +		// Set it as top-level in the XSLTC object
  +		xsltc.setStylesheet(stylesheet);
  +
   		// Create AST under the Stylesheet element 
   		createAST(stylesheet);
   	    }
  @@ -200,8 +209,7 @@
   		if (bytecodes != null) {
   		    final TemplatesImpl templates = 
   			new TemplatesImpl(xsltc.getBytecodes(), transletName, 
  -			    getOutputProperties(), _indentNumber, 
  -			    _oldOutputSystem);
  +			    getOutputProperties(), _indentNumber, _tfactory);
   
   		    // Set URIResolver on templates object
   		    if (_uriResolver != null) {
  @@ -223,6 +231,7 @@
        * of the location of the parsed document. 
        */
       public void setDocumentLocator(Locator locator) {
  +	super.setDocumentLocator(locator);
     	setSystemId(locator.getSystemId());
       }
   
  
  
  
  1.10.2.2  +9 -6      xml-xalan/java/src/org/apache/xalan/xsltc/trax/TemplatesImpl.java
  
  Index: TemplatesImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/trax/TemplatesImpl.java,v
  retrieving revision 1.10.2.1
  retrieving revision 1.10.2.2
  diff -u -r1.10.2.1 -r1.10.2.2
  --- TemplatesImpl.java	29 Jul 2002 00:01:29 -0000	1.10.2.1
  +++ TemplatesImpl.java	13 Aug 2002 21:21:14 -0000	1.10.2.2
  @@ -128,8 +128,11 @@
        */
       private URIResolver _uriResolver = null;
   
  -    // Temporary
  -    private boolean _oldOutputSystem;
  +    /**
  +     * A reference to the transformer factory that this templates
  +     * object belongs to.
  +     */
  +    private TransformerFactoryImpl _tfactory = null;
   
       private class TransletClassLoader extends ClassLoader {
   
  @@ -148,13 +151,13 @@
        */
       protected TemplatesImpl(byte[][] bytecodes, String transletName,
   	Properties outputProperties, int indentNumber,
  -	boolean oldOutputSystem) 
  +	TransformerFactoryImpl tfactory) 
       {
   	_bytecodes = bytecodes;
   	_name      = transletName;
   	_outputProperties = outputProperties;
   	_indentNumber = indentNumber;
  -	_oldOutputSystem = oldOutputSystem;
  +	_tfactory = tfactory;
       }
   
       public synchronized void writeExternal(ObjectOutput out) 
  @@ -334,7 +337,7 @@
       {
   	final TransformerImpl transformer =
   	    new TransformerImpl(getTransletInstance(), _outputProperties,
  -			        _indentNumber, _oldOutputSystem);
  +			        _indentNumber, _tfactory);
   	if (_uriResolver != null) {
   	    transformer.setURIResolver(_uriResolver);
   	}
  
  
  
  1.34.2.2  +24 -64    xml-xalan/java/src/org/apache/xalan/xsltc/trax/TransformerFactoryImpl.java
  
  Index: TransformerFactoryImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/trax/TransformerFactoryImpl.java,v
  retrieving revision 1.34.2.1
  retrieving revision 1.34.2.2
  diff -u -r1.34.2.1 -r1.34.2.2
  --- TransformerFactoryImpl.java	29 Jul 2002 00:01:29 -0000	1.34.2.1
  +++ TransformerFactoryImpl.java	13 Aug 2002 21:21:14 -0000	1.34.2.2
  @@ -72,15 +72,16 @@
   import java.net.MalformedURLException;
   import java.util.Vector;
   import java.util.Hashtable;
  +import java.util.Properties;
   
   import javax.xml.transform.*;
   import javax.xml.transform.sax.*;
   import javax.xml.transform.dom.*;
   import javax.xml.transform.stream.*;
  +import javax.xml.parsers.SAXParserFactory;
   
  +import org.xml.sax.*;
   import org.w3c.dom.Document;
  -import org.xml.sax.XMLFilter;
  -import org.xml.sax.InputSource;
   
   import org.apache.xalan.xsltc.Translet;
   import org.apache.xalan.xsltc.runtime.AbstractTranslet;
  @@ -120,21 +121,6 @@
       protected static String _defaultTransletName = "GregorSamsa";
   
       /**
  -     * Cache for the newTransformer() method - see method for details
  -     */
  -    private Transformer _copyTransformer = null;
  -
  -    /**
  -     * XSL document for the default transformer
  -     */
  -    private static final String COPY_TRANSLET_CODE =
  -	"<xsl:stylesheet xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\">"+
  -	"<xsl:template match=\"/\">"+
  -	"  <xsl:copy-of select=\".\"/>"+
  -	"</xsl:template>"+
  -	"</xsl:stylesheet>";
  -
  -    /**
        * This Hashtable is used to store parameters for locating
        * <?xml-stylesheet ...?> processing instructions in XML docs.
        */
  @@ -170,8 +156,10 @@
        */
       private int _indentNumber = -1;
   
  -    // Temporary
  -    private boolean _oldOutputSystem = false;
  +    /**
  +     * A reference to an XML reader for parsing.
  +     */
  +    private XMLReader _xmlReader = null;
   
       /**
        * javax.xml.transform.sax.TransformerFactory implementation.
  @@ -268,16 +256,6 @@
   		return;
   	    }
   	}
  -	else if (name.equals("old-output")) {
  -	    if (value instanceof Boolean) {
  -		_oldOutputSystem = ((Boolean) value).booleanValue();
  -		return;
  -	    }
  -	    else if (value instanceof String) {
  -		_oldOutputSystem = ((String) value).equalsIgnoreCase("true");
  -		return;
  -	    }
  -	}
   	else if (name.equals("indent-number")) {
   	    if (value instanceof String) {
   		try {
  @@ -395,40 +373,12 @@
       public Transformer newTransformer()
   	throws TransformerConfigurationException 
       { 
  -	if (_copyTransformer != null) {
  -	    if (_uriResolver != null) {
  -		_copyTransformer.setURIResolver(_uriResolver);
  -	    }
  -	    return _copyTransformer;
  -	}
  -
  -	XSLTC xsltc = new XSLTC();
  -	if (_debug) xsltc.setDebug(true);
  -	if (_disableInlining) xsltc.setTemplateInlining(false);
  -	xsltc.init();
  -
  -	// Compile the default copy-stylesheet
  -	byte[] bytes = COPY_TRANSLET_CODE.getBytes();
  -	ByteArrayInputStream bytestream = new ByteArrayInputStream(bytes);
  -	InputSource input = new InputSource(bytestream);
  -	input.setSystemId(_defaultTransletName);
  -	byte[][] bytecodes = xsltc.compile(_defaultTransletName, input);
  -
  -	// Check that the transformation went well before returning
  -	if (bytecodes == null) {
  -	    ErrorMsg err = new ErrorMsg(ErrorMsg.JAXP_COMPILE_ERR);
  -	    throw new TransformerConfigurationException(err.toString());
  -	}
  -
  -	// Create a Transformer object and store for other calls
  -	Templates templates = new TemplatesImpl(bytecodes, _defaultTransletName,
  -	    xsltc.getOutputProperties(), _indentNumber, _oldOutputSystem);
  -
  -	_copyTransformer = templates.newTransformer();
  +	TransformerImpl result = new TransformerImpl(new Properties(), 
  +	    _indentNumber, this);
   	if (_uriResolver != null) {
  -	    _copyTransformer.setURIResolver(_uriResolver);
  +	    result.setURIResolver(_uriResolver);
   	}
  -	return _copyTransformer;
  +	return result;
       }
   
       /**
  @@ -556,7 +506,7 @@
   	}
   
   	return new TemplatesImpl(bytecodes, transletName, 
  -	    xsltc.getOutputProperties(), _indentNumber, _oldOutputSystem);
  +	    xsltc.getOutputProperties(), _indentNumber, this);
       }
   
       /**
  @@ -571,7 +521,7 @@
   	throws TransformerConfigurationException 
       { 
   	final TemplatesHandlerImpl handler = 
  -	    new TemplatesHandlerImpl(_indentNumber, _oldOutputSystem);
  +	    new TemplatesHandlerImpl(_indentNumber, this);
   	handler.init();
   	if (_uriResolver != null) {
   	    handler.setURIResolver(_uriResolver);
  @@ -772,5 +722,15 @@
   	    // Falls through
   	}
   	return null;
  +    }
  +
  +    public XMLReader getXMLReader() throws Exception {
  +	if (_xmlReader == null) {
  +	    final SAXParserFactory pfactory 
  +		= SAXParserFactory.newInstance();
  +	    pfactory.setNamespaceAware(true);
  +	    _xmlReader = pfactory.newSAXParser().getXMLReader();
  +	}
  +	return _xmlReader;
       }
   }
  
  
  
  1.6.10.4  +93 -37    xml-xalan/java/src/org/apache/xalan/xsltc/trax/TransformerHandlerImpl.java
  
  Index: TransformerHandlerImpl.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/trax/TransformerHandlerImpl.java,v
  retrieving revision 1.6.10.3
  retrieving revision 1.6.10.4
  diff -u -r1.6.10.3 -r1.6.10.4
  --- TransformerHandlerImpl.java	6 Aug 2002 14:40:09 -0000	1.6.10.3
  +++ TransformerHandlerImpl.java	13 Aug 2002 21:21:14 -0000	1.6.10.4
  @@ -63,7 +63,9 @@
   package org.apache.xalan.xsltc.trax;
   
   import org.xml.sax.*;
  +import org.xml.sax.ext.LexicalHandler;
   import org.xml.sax.ext.DeclHandler;
  +import org.xml.sax.helpers.DefaultHandler;
   
   import javax.xml.transform.*;
   import javax.xml.transform.sax.*;
  @@ -72,6 +74,7 @@
   import org.apache.xml.dtm.DTMManager;
   
   import org.apache.xalan.xsltc.Translet;
  +import org.apache.xalan.xsltc.TransletOutputHandler;
   import org.apache.xalan.xsltc.dom.DOMImpl;
   import org.apache.xalan.xsltc.dom.SAXImpl;
   import org.apache.xalan.xsltc.dom.DOMBuilder;
  @@ -89,7 +92,8 @@
       private AbstractTranslet _translet = null;
       private String           _systemId;
       private SAXImpl          _dom = null;
  -    private DOMBuilder       _handler = null;
  +    private ContentHandler   _handler = null;
  +    private LexicalHandler   _lexHandler = null;
       private DTDMonitor       _dtd = null;
       private Result           _result = null;
       private Locator          _locator = null;
  @@ -97,17 +101,30 @@
       private boolean          _done = false; // Set in endDocument()
   
       /**
  +     * A flag indicating whether this transformer handler implements the 
  +     * identity transform.
  +     */
  +    private boolean _isIdentity = false;
  +
  +    /**
        * Cosntructor - pass in reference to a TransformerImpl object
        */
       protected TransformerHandlerImpl(TransformerImpl transformer) {
   	// Save the reference to the transformer
   	_transformer = transformer;
   
  -	// Get a reference to the translet wrapped inside the transformer
  -	_translet = _transformer.getTranslet();
  +	if (transformer.isIdentity()) {
  +	    // Set initial handler to the empty handler
  +	    _handler = new DefaultHandler();
  +	    _isIdentity = true;
  +	}
  +	else {
  +	    // Get a reference to the translet wrapped inside the transformer
  +	    _translet = _transformer.getTranslet();
   
  -	// Create a new DTD monitor
  -	_dtd = new DTDMonitor();
  +	    // Create a new DTD monitor
  +	    _dtd = new DTDMonitor();
  +	}
       }
   
       /**
  @@ -150,8 +167,22 @@
       public void setResult(Result result) throws IllegalArgumentException {
   	_result = result;
   
  -	// Run the transformation now, if not already done
  -	if (_done) {
  +	if (_isIdentity) {
  +	    try {
  +		// Connect this object with output system directly
  +		TransletOutputHandler outputHandler =
  +		    _transformer.getOutputHandler(result);
  +		_transformer.transferOutputProperties(outputHandler);
  +
  +		_handler = new SAX2TO(outputHandler);
  +		_lexHandler = (LexicalHandler) _handler;
  +	    }
  +	    catch (TransformerException e) {
  +		_result = null;
  +	    }
  +	}
  +	else if (_done) {
  +	    // Run the transformation now, if not already done
   	    try {
   		_transformer.setDOM(_dom);
   		_transformer.transform(null, _result);
  @@ -184,14 +215,20 @@
   	    throw new SAXException(err.toString());
   	}
   
  -	// Create an internal DOM (not W3C) and get SAX2 input handler
  -        DTMManager dtmManager = XSLTCDTMManager.newInstance(
  +        if (!_isIdentity) {
  +	    // Create an internal DOM (not W3C) and get SAX2 input handler
  +            DTMManager dtmManager = XSLTCDTMManager.newInstance(
                    org.apache.xpath.objects.XMLStringFactoryImpl.getFactory());
   
  -        // Construct the DTM using the SAX events that come through
  -        _dom = (SAXImpl)dtmManager.getDTM(null, false, null, true, true);
  -	_handler = _dom.getBuilder();
  +            // Construct the DTM using the SAX events that come through
  +            _dom = (SAXImpl)dtmManager.getDTM(null, false, null, true, true);
  +	    _handler = _dom.getBuilder();
  +	    _lexHandler = (LexicalHandler) _handler;
  +	    // Set document URI
  +	    _dom.setDocumentURI(_systemId);
  +        }
   
  +        // Make sure to set any document locator that was squirreled away
           if (_locator != null) {
               _handler.setDocumentLocator(_locator);
           }
  @@ -208,22 +245,24 @@
   	// Signal to the DOMBuilder that the document is complete
   	_handler.endDocument();
   
  -	// Run the transformation now if we have a reference to a Result object
  -	if (_result != null) {
  -	    try {
  -		_transformer.setDOM(_dom);
  -		_transformer.setDTDMonitor(_dtd);	// for id/key
  -		_transformer.transform(null, _result);
  -	    }
  -	    catch (TransformerException e) {
  -		throw new SAXException(e);
  +	if (!_isIdentity) {
  +	    // Run the transformation now if we have a reference to a Result object
  +	    if (_result != null) {
  +		try {
  +		    _transformer.setDOM(_dom);
  +		    _transformer.setDTDMonitor(_dtd);	// for id/key
  +		    _transformer.transform(null, _result);
  +		}
  +		catch (TransformerException e) {
  +		    throw new SAXException(e);
  +		}
   	    }
  -	}
  -	// Signal that the internal DOM is build (see 'setResult()').
  -	_done = true;
  +	    // Signal that the internal DOM is built (see 'setResult()').
  +	    _done = true;
   
  -	// Set this DOM as the transformer's DOM
  -	_transformer.setDOM(_dom);
  +	    // Set this DOM as the transformer's DOM
  +	    _transformer.setDOM(_dom);
  +	}
       }
   	
       /**
  @@ -232,7 +271,8 @@
        */
       public void startElement(String uri, String localName,
   			     String qname, Attributes attributes)
  -	throws SAXException {
  +	throws SAXException 
  +    {
   	_handler.startElement(uri, localName, qname, attributes);
       }
   	
  @@ -241,7 +281,8 @@
        * Receive notification of the end of an element.
        */
       public void endElement(String namespaceURI, String localName, String qname)
  -	throws SAXException {
  +	throws SAXException 
  +    {
   	_handler.endElement(namespaceURI, localName, qname);
       }
   
  @@ -250,7 +291,8 @@
        * Receive notification of a processing instruction.
        */
       public void processingInstruction(String target, String data)
  -	throws SAXException {
  +	throws SAXException 
  +    {
   	_handler.processingInstruction(target, data);
       }
   
  @@ -258,14 +300,18 @@
        * Implements org.xml.sax.ext.LexicalHandler.startCDATA()
        */
       public void startCDATA() throws SAXException { 
  -	_handler.startCDATA();
  +	if (_lexHandler != null) {
  +	    _lexHandler.startCDATA();
  +	}
       }
   
       /**
        * Implements org.xml.sax.ext.LexicalHandler.endCDATA()
        */
       public void endCDATA() throws SAXException { 
  -	_handler.endCDATA();
  +	if (_lexHandler != null) {
  +	    _lexHandler.endCDATA();
  +	}
       }
   
       /**
  @@ -275,7 +321,9 @@
       public void comment(char[] ch, int start, int length) 
   	throws SAXException 
       { 
  -	_handler.comment(ch, start, length);
  +	if (_lexHandler != null) {
  +	    _lexHandler.comment(ch, start, length);
  +	}
       }
   
       /**
  @@ -332,28 +380,36 @@
       public void startDTD(String name, String publicId, String systemId) 
   	throws SAXException
       { 
  -	_handler.startDTD(name, publicId, systemId);
  +	if (_lexHandler != null) {
  +	    _lexHandler.startDTD(name, publicId, systemId);
  +	}
       }
   
       /**
        * Implements org.xml.sax.ext.LexicalHandler.endDTD()
        */
       public void endDTD() throws SAXException {
  -	_handler.endDTD();
  +	if (_lexHandler != null) {
  +	    _lexHandler.endDTD();
  +	}
       }
   
       /**
        * Implements org.xml.sax.ext.LexicalHandler.startEntity()
        */
       public void startEntity(String name) throws SAXException { 
  -	_handler.startEntity(name);
  +	if (_lexHandler != null) {
  +	    _lexHandler.startEntity(name);
  +	}
       }
   
       /**
        * Implements org.xml.sax.ext.LexicalHandler.endEntity()
        */
       public void endEntity(String name) throws SAXException { 
  -	_handler.endEntity(name);
  +	if (_lexHandler != null) {
  +	    _lexHandler.endEntity(name);
  +	}
       }
   
       /**
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org