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]

Reply via email to