You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by mk...@apache.org on 2002/10/22 17:46:30 UTC

cvs commit: xml-xalan/java/src/org/apache/xalan/templates ElemExtensionCall.java

mkwan       2002/10/22 08:46:30

  Modified:    java/src/org/apache/xalan/templates ElemExtensionCall.java
  Log:
  For bugzilla 7357
  Fix problems in exception handling for extension elements.
  
  Revision  Changes    Path
  1.30      +46 -35    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.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- ElemExtensionCall.java	6 Sep 2002 17:58:38 -0000	1.29
  +++ ElemExtensionCall.java	22 Oct 2002 15:46:29 -0000	1.30
  @@ -223,6 +223,23 @@
       }
   
     }
  +  
  +  /**
  +   * Return true if this extension element has a <xsl:fallback> child element.
  +   *
  +   * @return true if this extension element has a <xsl:fallback> child element.
  +   */
  +  public boolean hasFallbackChildren()
  +  {
  +    for (ElemTemplateElement child = m_firstChild; child != null;
  +             child = child.m_nextSibling)
  +    {
  +      if (child.getXSLToken() == Constants.ELEMNAME_FALLBACK)
  +        return true;
  +    }
  +    
  +    return false;
  +  }
   
   
     /**
  @@ -234,8 +251,7 @@
      *
      * @throws TransformerException
      */
  -  public void execute(
  -          TransformerImpl transformer)
  +  public void execute(TransformerImpl transformer)
               throws TransformerException
     {
   
  @@ -248,7 +264,17 @@
   
         if (null == nsh)
         {
  -        executeFallbacks(transformer);
  +        if (hasFallbackChildren())
  +        {
  +          executeFallbacks(transformer);
  +        }
  +        else
  +        {
  +	  TransformerException te = new TransformerException(XSLMessages.createMessage(
  +	  	XSLTErrorResources.ER_CALL_TO_EXT_FAILED, new Object[]{getNodeName()}));
  +	  transformer.getErrorListener().fatalError(te);
  +        }
  +        
           return;
         }
   
  @@ -260,42 +286,27 @@
         catch (Exception e)
         {
   
  -        // 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(XSLMessages.createMessage(XSLTErrorResources.ER_UNKNOWN_ERROR_CALLING_EXTENSION, null), e); //"Unknown error when calling extension!", e);
  -        }
  -        if(null == te.getLocator())
  -          te.setLocator(this);
  -
  -        if (null != msg)
  -        {
  -          if (msg.indexOf("fatal") >= 0)
  +	if (hasFallbackChildren())
  +	  executeFallbacks(transformer);
  +	else
  +	{
  +          if(e instanceof TransformerException)
             {
  -            transformer.getErrorListener().fatalError(te);
  +            TransformerException te = (TransformerException)e;
  +            if(null == te.getLocator())
  +              te.setLocator(this);
  +            
  +            transformer.getErrorListener().fatalError(te);            
  +          }
  +          else if (e instanceof RuntimeException)
  +          {
  +            transformer.getErrorListener().fatalError(new TransformerException(e));
             }
  -          else if(e instanceof RuntimeException)      
  -            transformer.getErrorListener().error(te); // ??
             else
  -            transformer.getErrorListener().warning(te);
  -
  +          {
  +            transformer.getErrorListener().warning(new TransformerException(e));
  +          }
           }
  -        else      
  -          transformer.getErrorListener().error(te); // ??
  -
  -        executeFallbacks(
  -          transformer);
         }
       }
       catch(org.xml.sax.SAXException se)
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org