santiagopg 2003/02/03 06:33:21
Modified: java/src/org/apache/xalan/xsltc/trax TransformerImpl.java
Log:
Committing a patch contributed by Prakash Sridharan ([EMAIL PROTECTED]).
Messages displayed using xsl:message are now reported to an ErrorListener
registered in a Transformer instance. The warning() callback is used for
this purpose.
Revision Changes Path
1.61 +33 -1
xml-xalan/java/src/org/apache/xalan/xsltc/trax/TransformerImpl.java
Index: TransformerImpl.java
===================================================================
RCS file:
/home/cvs/xml-xalan/java/src/org/apache/xalan/xsltc/trax/TransformerImpl.java,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -r1.60 -r1.61
--- TransformerImpl.java 30 Jan 2003 18:46:14 -0000 1.60
+++ TransformerImpl.java 3 Feb 2003 14:33:21 -0000 1.61
@@ -201,6 +201,34 @@
*/
private Hashtable _parameters = null;
+ /**
+ * This class wraps an ErrorListener into a MessageHandler in order to
+ * capture messages reported via xsl:message.
+ */
+ static class MessageHandler
+ extends org.apache.xalan.xsltc.runtime.MessageHandler
+ {
+ private ErrorListener _errorListener;
+
+ public MessageHandler(ErrorListener errorListener) {
+ _errorListener = errorListener;
+ }
+
+ public void displayMessage(String msg) {
+ if(_errorListener == null) {
+ System.err.println(msg);
+ }
+ else {
+ try {
+ _errorListener.warning(new TransformerException(msg));
+ }
+ catch (TransformerException e) {
+ // ignored
+ }
+ }
+ }
+ }
+
protected TransformerImpl(Properties outputProperties, int indentNumber,
TransformerFactoryImpl tfactory)
{
@@ -674,6 +702,8 @@
/**
* Implements JAXP's Transformer.setErrorListener()
* Set the error event listener in effect for the transformation.
+ * Register a message handler in the translet in order to forward
+ * xsl:messages to error listener.
*
* @param listener The error event listener to use
* @throws IllegalArgumentException
@@ -686,6 +716,8 @@
throw new IllegalArgumentException(err.toString());
}
_errorListener = listener;
+ // Register a message handler to report xsl:messages
+ _translet.setMessageHandler(new MessageHandler(_errorListener));
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]