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]

Reply via email to