sboag       01/01/11 23:33:44

  Modified:    java/src/org/apache/xalan/templates ElemExtensionCall.java
  Log:
  Modified the error handling code when an exception is thrown from
  the extension mechanism.  Now, if the message contains the word
  "fatal" or contains no message, the error listener's error method witll
  be called, otherwise the error listener's warning method will be called.
  Also, make sure the source locator is set in the TransformerException.
  
  Revision  Changes    Path
  1.22      +23 -11    
xml-xalan/java/src/org/apache/xalan/templates/ElemExtensionCall.java
  
  Index: ElemExtensionCall.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/templates/ElemExtensionCall.java,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- ElemExtensionCall.java    2001/01/11 10:28:11     1.21
  +++ ElemExtensionCall.java    2001/01/12 07:33:43     1.22
  @@ -311,25 +311,37 @@
           // System.out.println(e);
           // e.printzStackTrace();
           String msg = e.getMessage();
  +        
  +        TransformerException te;
  +        if(e instanceof TransformerException)
  +        {
  +          te = (TransformerException)e;
  +        }
  +        else
  +        {
  +          if(null != msg)
  +            te = new TransformerException(e);
  +          else
  +            te = new TransformerException("Unknown error when calling 
extension!", e);
  +        }
  +        if(null == te.getLocator())
  +          te.setLocator(this);
   
           if (null != msg)
           {
  -          if (msg.startsWith("Stopping after fatal error:"))
  +          if (msg.indexOf("fatal") >= 0)
             {
  -            msg = msg.substring("Stopping after fatal error:".length());
  +            transformer.getErrorListener().fatalError(te);
             }
  +          else if(e instanceof RuntimeException)      
  +            transformer.getErrorListener().error(te); // ??
  +          else
  +            transformer.getErrorListener().warning(te);
   
  -          transformer.getMsgMgr().message(
  -                                          XSLMessages.createMessage(
  -                                                                    
XSLTErrorResources.ER_CALL_TO_EXT_FAILED, new Object[]{ msg }),
  -                                          false);  //"Call to extension 
element failed: "+msg);
  -
  -          // e.printStackTrace();
  -          // System.exit(-1);
           }
  +        else      
  +          transformer.getErrorListener().error(te); // ??
   
  -        // transformer.message(msg);
  -        
           executeFallbacks(
             transformer, sourceNode, mode);
         }
  
  
  

Reply via email to