tmiller 01/12/12 12:07:54
Modified: java/src/org/apache/xalan/xsltc/trax
SmartTransformerFactoryImpl.java
Log:
store error listener and or uri resolver locally
set in real factory when needed
Revision Changes Path
1.4 +83 -31
xml-xalan/java/src/org/apache/xalan/xsltc/trax/SmartTransformerFactoryImpl.java
Index: SmartTransformerFactoryImpl.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/trax/SmartTransformerFactoryImpl.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- SmartTransformerFactoryImpl.java 2001/12/11 20:46:13 1.3
+++ SmartTransformerFactoryImpl.java 2001/12/12 20:07:54 1.4
@@ -1,5 +1,5 @@
/*
- * @(#)$Id: SmartTransformerFactoryImpl.java,v 1.3 2001/12/11 20:46:13
tmiller Exp $
+ * @(#)$Id: SmartTransformerFactoryImpl.java,v 1.4 2001/12/12 20:07:54
tmiller Exp $
*
* The Apache Software License, Version 1.1
*
@@ -65,6 +65,8 @@
import javax.xml.transform.*;
import javax.xml.transform.sax.*;
+import javax.xml.transform.dom.*;
+import javax.xml.transform.stream.*;
import org.xml.sax.XMLFilter;
import org.xml.sax.InputSource;
import org.apache.xalan.xsltc.compiler.XSLTC;
@@ -82,6 +84,8 @@
private TransformerFactory _xsltcFactory = null;
private TransformerFactory _xalanFactory = null;
private TransformerFactory _currFactory = null;
+ private ErrorListener _errorlistener = null;
+ private URIResolver _uriresolver = null;
/**
* implementation of the SmartTransformerFactory. This factory
@@ -145,21 +149,11 @@
public void setErrorListener(ErrorListener listener)
throws IllegalArgumentException
{
- if (_xsltcFactory == null) {
- createXSLTCTransformerFactory();
- }
- if (_xalanFactory == null) {
- createXalanTransformerFactory();
- }
- _xsltcFactory.setErrorListener(listener);
- _xalanFactory.setErrorListener(listener);
+ _errorlistener = listener;
}
public ErrorListener getErrorListener() {
- if (_xsltcFactory == null) {
- createXSLTCTransformerFactory();
- }
- return _xsltcFactory.getErrorListener();
+ return _errorlistener;
}
public Object getAttribute(String name)
@@ -197,31 +191,41 @@
}
}
+ /**
+ * javax.xml.transform.sax.TransformerFactory implementation.
+ * Look up the value of a feature (to see if it is supported).
+ * This method must be updated as the various methods and features of
this
+ * class are implemented.
+ *
+ * @param name The feature name
+ * @return 'true' if feature is supported, 'false' if not
+ */
public boolean getFeature(String name) {
- // GTM: may have to treat like set/get attribute...
- if (_currFactory == null) {
- createXSLTCTransformerFactory();
- }
- return _currFactory.getFeature(name);
+ // All supported features should be listed here
+ String[] features = {
+ DOMSource.FEATURE,
+ DOMResult.FEATURE,
+ SAXSource.FEATURE,
+ SAXResult.FEATURE,
+ StreamSource.FEATURE,
+ StreamResult.FEATURE
+ };
+
+ // Inefficient, but it really does not matter in a function like this
+ for (int i=0; i<features.length; i++) {
+ if (name.equals(features[i])) return true;
+ }
+
+ // Feature not supported
+ return false;
}
public URIResolver getURIResolver() {
- // GTM: may have to treat like set/get attribute...
- if (_currFactory == null) {
- createXSLTCTransformerFactory();
- }
- return _currFactory.getURIResolver();
+ return _uriresolver;
}
public void setURIResolver(URIResolver resolver) {
- if (_xsltcFactory == null) {
- createXSLTCTransformerFactory();
- }
- if (_xalanFactory == null) {
- createXalanTransformerFactory();
- }
- _xsltcFactory.setURIResolver(resolver);
- _xalanFactory.setURIResolver(resolver);
+ _uriresolver = resolver;
}
public Source getAssociatedStylesheet(Source source, String media,
@@ -246,6 +250,12 @@
if (_xalanFactory == null) {
createXalanTransformerFactory();
}
+ if (_errorlistener != null) {
+ _xalanFactory.setErrorListener(_errorlistener);
+ }
+ if (_uriresolver != null) {
+ _xalanFactory.setURIResolver(_uriresolver);
+ }
_currFactory = _xalanFactory;
return _currFactory.newTransformer();
}
@@ -262,6 +272,12 @@
if (_xalanFactory == null) {
createXalanTransformerFactory();
}
+ if (_errorlistener != null) {
+ _xalanFactory.setErrorListener(_errorlistener);
+ }
+ if (_uriresolver != null) {
+ _xalanFactory.setURIResolver(_uriresolver);
+ }
_currFactory = _xalanFactory;
return _currFactory.newTransformer(source);
}
@@ -278,6 +294,12 @@
if (_xsltcFactory == null) {
createXSLTCTransformerFactory();
}
+ if (_errorlistener != null) {
+ _xsltcFactory.setErrorListener(_errorlistener);
+ }
+ if (_uriresolver != null) {
+ _xsltcFactory.setURIResolver(_uriresolver);
+ }
_currFactory = _xsltcFactory;
return _currFactory.newTemplates(source);
}
@@ -293,6 +315,12 @@
if (_xsltcFactory == null) {
createXSLTCTransformerFactory();
}
+ if (_errorlistener != null) {
+ _xsltcFactory.setErrorListener(_errorlistener);
+ }
+ if (_uriresolver != null) {
+ _xsltcFactory.setURIResolver(_uriresolver);
+ }
return ((SAXTransformerFactory)_xsltcFactory).newTemplatesHandler();
}
@@ -307,6 +335,12 @@
if (_xalanFactory == null) {
createXalanTransformerFactory();
}
+ if (_errorlistener != null) {
+ _xalanFactory.setErrorListener(_errorlistener);
+ }
+ if (_uriresolver != null) {
+ _xalanFactory.setURIResolver(_uriresolver);
+ }
return ((SAXTransformerFactory)_xalanFactory).newTransformerHandler();
}
@@ -321,6 +355,12 @@
if (_xalanFactory == null) {
createXalanTransformerFactory();
}
+ if (_errorlistener != null) {
+ _xalanFactory.setErrorListener(_errorlistener);
+ }
+ if (_uriresolver != null) {
+ _xalanFactory.setURIResolver(_uriresolver);
+ }
return
((SAXTransformerFactory)_xalanFactory).newTransformerHandler(src);
}
@@ -337,6 +377,12 @@
if (_xsltcFactory == null) {
createXSLTCTransformerFactory();
}
+ if (_errorlistener != null) {
+ _xsltcFactory.setErrorListener(_errorlistener);
+ }
+ if (_uriresolver != null) {
+ _xsltcFactory.setURIResolver(_uriresolver);
+ }
return
((SAXTransformerFactory)_xsltcFactory).newTransformerHandler(templates);
}
@@ -352,6 +398,12 @@
if (_xsltcFactory == null) {
createXSLTCTransformerFactory();
}
+ if (_errorlistener != null) {
+ _xsltcFactory.setErrorListener(_errorlistener);
+ }
+ if (_uriresolver != null) {
+ _xsltcFactory.setURIResolver(_uriresolver);
+ }
Templates templates = _xsltcFactory.newTemplates(src);
if (templates == null ) return null;
return newXMLFilter(templates);
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]