sboag 01/03/11 16:59:12
Modified: java/src/org/apache/xalan/processor
TransformerFactoryImpl.java
Log:
Catch all exceptions thrown when processing stylesheet, and send
them to the error listener. There's probably some danger of having
the same error sent to the error listener multiple times, but better too
many reports, than none, I guess.
This addresses http://nagoya.apache.org/bugzilla/show_bug.cgi?id=906.
Revision Changes Path
1.27 +87 -45
xml-xalan/java/src/org/apache/xalan/processor/TransformerFactoryImpl.java
Index: TransformerFactoryImpl.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/processor/TransformerFactoryImpl.java,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -r1.26 -r1.27
--- TransformerFactoryImpl.java 2001/03/11 21:50:27 1.26
+++ TransformerFactoryImpl.java 2001/03/12 00:59:10 1.27
@@ -183,19 +183,7 @@
}
}
- /**
- * Process the stylesheet from a DOM tree, if the
- * processor supports the "http://xml.org/trax/features/dom/input"
- * feature.
- *
- * @param node A DOM tree which must contain
- * valid transform instructions that this processor understands.
- *
- * @return A Templates object capable of being used for transformation
purposes.
- *
- * @throws TransformerConfigurationException
- */
- public javax.xml.transform.Templates processFromNode(Node node)
+public javax.xml.transform.Templates processFromNode(Node node)
throws TransformerConfigurationException
{
@@ -210,20 +198,60 @@
}
catch (org.xml.sax.SAXException se)
{
- if( m_errorListener != null ) {
- try {
- m_errorListener.fatalError( new TransformerException( se ) );
- } catch( TransformerException ex ) {
- throw new TransformerConfigurationException( ex );
+ if (m_errorListener != null)
+ {
+ try
+ {
+ m_errorListener.fatalError(new TransformerException(se));
+ }
+ catch (TransformerException ex)
+ {
+ throw new TransformerConfigurationException(ex);
}
+
return null;
- } else
+ }
+ else
+
// Should remove this later... but right now diagnostics from
// TransformerConfigurationException are not good.
// se.printStackTrace();
throw new TransformerConfigurationException("processFromNode failed",
se);
}
+ catch (TransformerConfigurationException tce)
+ {
+ // Assume it's already been reported to the error listener.
+ throw tce;
+ }
+ catch (TransformerException tce)
+ {
+ // Assume it's already been reported to the error listener.
+ throw new TransformerConfigurationException(tce.getMessage(), tce);
+ }
+ catch (Exception e)
+ {
+ if (m_errorListener != null)
+ {
+ try
+ {
+ m_errorListener.fatalError(new TransformerException(e));
+ }
+ catch (TransformerException ex)
+ {
+ throw new TransformerConfigurationException(ex);
+ }
+
+ return null;
+ }
+ else
+
+ // Should remove this later... but right now diagnostics from
+ // TransformerConfigurationException are not good.
+ // se.printStackTrace();
+ throw new TransformerConfigurationException("processFromNode failed",
+ e);
+ }
}
/**
@@ -721,10 +749,11 @@
String currentDir = System.getProperty("user.dir");
baseID = "file:///" + currentDir + java.io.File.separatorChar
- + source.getClass().getName();
+ + source.getClass().getName();
}
catch (SecurityException se)
{
+
// For untrusted applet case, user.dir is outside the sandbox
// and not accessible: just leave baseID as null (-sb & -sc)
}
@@ -735,7 +764,7 @@
{
baseID = SystemIDResolver.getAbsoluteURI(baseID);
}
- catch(TransformerException te)
+ catch (TransformerException te)
{
throw new TransformerConfigurationException(te);
}
@@ -752,9 +781,11 @@
return processFromNode(node, baseID);
else
{
- String messageStr =
XSLMessages.createMessage(XSLTErrorResources.ER_ILLEGAL_DOMSOURCE_INPUT, null);
+ String messageStr = XSLMessages.createMessage(
+ XSLTErrorResources.ER_ILLEGAL_DOMSOURCE_INPUT, null);
+
throw new IllegalArgumentException(messageStr);
- }
+ }
}
try
@@ -766,17 +797,17 @@
reader = ((SAXSource) source).getXMLReader();
if (null == reader)
- {
+ {
+
// Use JAXP1.1 ( if possible )
try
{
javax.xml.parsers.SAXParserFactory factory =
-
javax.xml.parsers.SAXParserFactory.newInstance();
+ javax.xml.parsers.SAXParserFactory.newInstance();
factory.setNamespaceAware(true);
-
- javax.xml.parsers.SAXParser jaxpParser =
factory.newSAXParser();
+ javax.xml.parsers.SAXParser jaxpParser = factory.newSAXParser();
reader = jaxpParser.getXMLReader();
}
@@ -791,7 +822,7 @@
catch (NoSuchMethodError ex2){}
catch (AbstractMethodError ame){}
}
-
+
if (null == reader)
reader = XMLReaderFactory.createXMLReader();
@@ -812,28 +843,39 @@
reader.setContentHandler(builder);
reader.parse(isource);
}
- catch (IOException ioe)
+ catch (org.xml.sax.SAXException se)
{
- if( m_errorListener != null ) {
- try {
- m_errorListener.fatalError( new TransformerException(ioe) );
- return null;
- } catch( TransformerException ex1 ) {
- throw new TransformerConfigurationException( ex1 );
+ if (m_errorListener != null)
+ {
+ try
+ {
+ m_errorListener.fatalError(new TransformerException(se));
+ }
+ catch (TransformerException ex1)
+ {
+ throw new TransformerConfigurationException(ex1);
}
- } else
- throw new TransformerConfigurationException(ioe.getMessage(), ioe);
+ }
+ else
+ throw new TransformerConfigurationException(se.getMessage(), se);
}
- catch (org.xml.sax.SAXException se)
+ catch (Exception e)
{
- if( m_errorListener != null ) {
- try {
- m_errorListener.fatalError( new TransformerException(se) );
- } catch( TransformerException ex1 ) {
- throw new TransformerConfigurationException( ex1 );
+ if (m_errorListener != null)
+ {
+ try
+ {
+ m_errorListener.fatalError(new TransformerException(e));
+
+ return null;
}
- } else
- throw new TransformerConfigurationException(se.getMessage(), se);
+ catch (TransformerException ex1)
+ {
+ throw new TransformerConfigurationException(ex1);
+ }
+ }
+ else
+ throw new TransformerConfigurationException(e.getMessage(), e);
}
return builder.getTemplates();
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]