mmidy       00/11/14 10:56:27

  Modified:    java/src makexslt4j
               java/src/javax/xml/transform TransformerException.java
               java/src/org/apache/xalan/processor
                        TransformerFactoryImpl.java
               java/src/org/apache/xalan/res XSLTErrorResources.java
               java/src/org/apache/xalan/templates FuncDocument.java
                        XUnresolvedVariable.java
               java/src/org/apache/xalan/transformer TransformerImpl.java
               java/src/org/apache/xalan/xslt Process.java
               java/src/org/apache/xpath SourceTreeManager.java XPath.java
               java/src/org/apache/xpath/operations Variable.java
  Log:
  Catch and disallow use of circular variables plus miscellaneous changes to 
error reporting and exception handling. Also change code to use SourceLocator 
and not SaxSourceLocator.
  
  Revision  Changes    Path
  1.27      +11 -13    xml-xalan/java/src/makexslt4j
  
  Index: makexslt4j
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/makexslt4j,v
  retrieving revision 1.26
  retrieving revision 1.27
  diff -u -r1.26 -r1.27
  --- makexslt4j        2000/11/03 23:28:00     1.26
  +++ makexslt4j        2000/11/14 18:56:25     1.27
  @@ -50,10 +50,8 @@
     javax$(PATHSEP)xml$(PATHSEP)transform$(PATHSEP)sax$(PATHSEP)SAXResult.java 
\
     javax$(PATHSEP)xml$(PATHSEP)transform$(PATHSEP)sax$(PATHSEP)SAXSource.java 
\
     
javax$(PATHSEP)xml$(PATHSEP)transform$(PATHSEP)sax$(PATHSEP)SAXTransformerFactory.java
 \
  -  
javax$(PATHSEP)xml$(PATHSEP)transform$(PATHSEP)sax$(PATHSEP)SerializerHandler.java
 \
     
javax$(PATHSEP)xml$(PATHSEP)transform$(PATHSEP)sax$(PATHSEP)TemplatesHandler.java
 \
     
javax$(PATHSEP)xml$(PATHSEP)transform$(PATHSEP)sax$(PATHSEP)TransformerHandler.java
 \
  -  
javax$(PATHSEP)xml$(PATHSEP)transform$(PATHSEP)stream$(PATHSEP)OutputKeys.java \
     
javax$(PATHSEP)xml$(PATHSEP)transform$(PATHSEP)stream$(PATHSEP)StreamResult.java
 \
     
javax$(PATHSEP)xml$(PATHSEP)transform$(PATHSEP)stream$(PATHSEP)StreamSource.java
 \
     
org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)client$(PATHSEP)XSLTProcessorApplet.java
 \
  @@ -202,6 +200,7 @@
     
org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)templates$(PATHSEP)StylesheetRoot.java
 \
     
org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)templates$(PATHSEP)TemplateList.java
 \
     
org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)templates$(PATHSEP)TemplateSubPatternAssociation.java
 \
  +  
org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)templates$(PATHSEP)XUnresolvedVariable.java
 \
     
org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)templates$(PATHSEP)WhiteSpaceInfo.java
 \
     
org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)templates$(PATHSEP)WhitespaceList.java
 \
     
org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)templates$(PATHSEP)XMLNSDecl.java \
  @@ -273,17 +272,16 @@
     
org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)utils$(PATHSEP)FastStringBuffer.java
 \
     
org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)utils$(PATHSEP)StringBufferPool.java
 \
     org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)xslt$(PATHSEP)Process.java \
  -  org$(PATHSEP)apache$(PATHSEP)serialize$(PATHSEP)DOMSerializer.java \
  -  org$(PATHSEP)apache$(PATHSEP)serialize$(PATHSEP)Method.java \
  -  org$(PATHSEP)apache$(PATHSEP)serialize$(PATHSEP)OutputFormat.java \
  -  org$(PATHSEP)apache$(PATHSEP)serialize$(PATHSEP)QName.java \
  -  org$(PATHSEP)apache$(PATHSEP)serialize$(PATHSEP)Serializer.java \
  -  org$(PATHSEP)apache$(PATHSEP)serialize$(PATHSEP)SerializerFactory.java \
  -  org$(PATHSEP)apache$(PATHSEP)serialize$(PATHSEP)SerializerHandler.java \
  -  
org$(PATHSEP)apache$(PATHSEP)serialize$(PATHSEP)helpers$(PATHSEP)HTMLOutputFormat.java
 \
  -  
org$(PATHSEP)apache$(PATHSEP)serialize$(PATHSEP)helpers$(PATHSEP)TextOutputFormat.java
 \
  -  
org$(PATHSEP)apache$(PATHSEP)serialize$(PATHSEP)helpers$(PATHSEP)XHTMLOutputFormat.java
 \
  -  
org$(PATHSEP)apache$(PATHSEP)serialize$(PATHSEP)helpers$(PATHSEP)XMLOutputFormat.java
 \
  +  
org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)serialize$(PATHSEP)DOMSerializer.java
 \
  +  org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)serialize$(PATHSEP)Method.java 
\
  +  
org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)serialize$(PATHSEP)OutputFormat.java
 \
  +  org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)serialize$(PATHSEP)QName.java \
  +  
org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)serialize$(PATHSEP)Serializer.java \
  +  
org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)serialize$(PATHSEP)SerializerFactory.java
 \
  +  
org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)serialize$(PATHSEP)helpers$(PATHSEP)HTMLOutputFormat.java
 \
  +  
org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)serialize$(PATHSEP)helpers$(PATHSEP)TextOutputFormat.java
 \
  +  
org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)serialize$(PATHSEP)helpers$(PATHSEP)XHTMLOutputFormat.java
 \
  +  
org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)serialize$(PATHSEP)helpers$(PATHSEP)XMLOutputFormat.java
 \
     
org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)utils$(PATHSEP)synthetic$(PATHSEP)Class.java
 \
     
org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)utils$(PATHSEP)synthetic$(PATHSEP)SynthesisException.java
 \
     
org$(PATHSEP)apache$(PATHSEP)xalan$(PATHSEP)utils$(PATHSEP)synthetic$(PATHSEP)reflection$(PATHSEP)Constructor.java
 \
  
  
  
  1.4       +3 -2      
xml-xalan/java/src/javax/xml/transform/TransformerException.java
  
  Index: TransformerException.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/javax/xml/transform/TransformerException.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TransformerException.java 2000/11/13 16:26:28     1.3
  +++ TransformerException.java 2000/11/14 18:56:25     1.4
  @@ -136,8 +136,9 @@
      */
     public TransformerException(String message, Exception e)
     {
  -
  -    super("TRaX Transform Exception");
  +    super ((message == null || message.length()== 0)? 
  +           "TRaX Transform Exception" : message);
  +      
   
       this.containedException = e;
       this.locator = null;
  
  
  
  1.7       +2 -2      
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.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- TransformerFactoryImpl.java       2000/11/14 16:43:58     1.6
  +++ TransformerFactoryImpl.java       2000/11/14 18:56:25     1.7
  @@ -611,11 +611,11 @@
       }
       catch(IOException ioe)
       {
  -      throw new TransformerConfigurationException(ioe);
  +      throw new TransformerConfigurationException(ioe.getMessage(), ioe);
       }
       catch(org.xml.sax.SAXException se)
       {
  -      throw new TransformerConfigurationException(se);
  +      throw new TransformerConfigurationException(se.getMessage(), se);
       }
   
       return builder.getTemplates();
  
  
  
  1.8       +10 -1     
xml-xalan/java/src/org/apache/xalan/res/XSLTErrorResources.java
  
  Index: XSLTErrorResources.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/res/XSLTErrorResources.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- XSLTErrorResources.java   2000/11/03 23:28:06     1.7
  +++ XSLTErrorResources.java   2000/11/14 18:56:25     1.8
  @@ -85,7 +85,7 @@
     public static final String WARNING_SUFFIX = "WR";
   
     /** NEEDSDOC Field MAX_CODE          */
  -  public static final int MAX_CODE = 106;  // this is needed to keep track 
of the number of messages          
  +  public static final int MAX_CODE = 107;  // this is needed to keep track 
of the number of messages          
   
     /** NEEDSDOC Field MAX_WARNING          */
     public static final int MAX_WARNING = 26;  // this is needed to keep track 
of the number of warnings
  @@ -1063,6 +1063,15 @@
     {
       contents[ER_INVALID_KEY_CALL][1] =
         "Invalid function call: recursive key() calls are not allowed";
  +  }
  +  
  +  /** Variable is referencing itself          */
  +  public static final int ER_REFERENCING_ITSELF = 107;
  +
  +  static
  +  {
  +    contents[ER_REFERENCING_ITSELF][1] =
  +      "Variable {0} is directly or indirectly referencing itself!";
     }
   
     // Warnings...
  
  
  
  1.14      +10 -6     
xml-xalan/java/src/org/apache/xalan/templates/FuncDocument.java
  
  Index: FuncDocument.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/templates/FuncDocument.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- FuncDocument.java 2000/11/13 16:27:11     1.13
  +++ FuncDocument.java 2000/11/14 18:56:26     1.14
  @@ -226,7 +226,7 @@
             mnl.addElement(newDoc);
         }
   
  -      if (null == iterator)
  +      if (null == iterator || newDoc == null)
           break;
       }
   
  @@ -261,7 +261,7 @@
       catch (IOException ioe)
       {
         throw new TransformerException(ioe.getMessage(), 
  -        (SAXSourceLocator)xctxt.getSAXLocator(), ioe);
  +        (SourceLocator)xctxt.getSAXLocator(), ioe);
       }
       catch(TransformerException te)
       {
  @@ -355,7 +355,7 @@
                                     + "): " + throwable.getMessage());
         }
   
  -      diagnosticsString = sw.toString();
  +      diagnosticsString = throwable.getMessage(); //sw.toString();
       }
   
       if (null == newDoc)
  @@ -402,10 +402,12 @@
       String formattedMsg = XSLMessages.createMessage(msg, args);
       ErrorListener errHandler = xctxt.getErrorListener();
       TransformerException spe = new TransformerException(formattedMsg,
  -                              (SAXSourceLocator)xctxt.getSAXLocator());
  +                              (SourceLocator)xctxt.getSAXLocator());
   
       if (null != errHandler)
         errHandler.error(spe);
  +    else
  +      System.out.println(formattedMsg);
     }
   
     /**
  @@ -426,10 +428,12 @@
       String formattedMsg = XSLMessages.createWarning(msg, args);
       ErrorListener errHandler = xctxt.getErrorListener();
       TransformerException spe = new TransformerException(formattedMsg,
  -                              (SAXSourceLocator)xctxt.getSAXLocator());
  +                              (SourceLocator)xctxt.getSAXLocator());
   
       if (null != errHandler)
  -      errHandler.error(spe);
  +      errHandler.warning(spe);
  +    else
  +      System.out.println(formattedMsg);
     }
   
     /*
  
  
  
  1.3       +13 -0     
xml-xalan/java/src/org/apache/xalan/templates/XUnresolvedVariable.java
  
  Index: XUnresolvedVariable.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/templates/XUnresolvedVariable.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- XUnresolvedVariable.java  2000/11/13 16:27:11     1.2
  +++ XUnresolvedVariable.java  2000/11/14 18:56:26     1.3
  @@ -64,6 +64,8 @@
   import org.apache.xpath.objects.XString;
   
   import org.apache.xalan.transformer.TransformerImpl;
  +import org.apache.xalan.res.XSLMessages;
  +import org.apache.xalan.res.XSLTErrorResources;
   import org.w3c.dom.DocumentFragment;
   import org.w3c.dom.Node;
   
  @@ -94,6 +96,9 @@
     /** true if this variable or parameter is a global. */
     private boolean m_isGlobal;
     
  +  /** true if this variable or parameter is not currently being evaluated. */
  +  private boolean m_doneEval = true;
  +  
     /**
      * Create an XUnresolvedVariable, that may be executed at a later time.
      * This is primarily used so that forward referencing works with 
  @@ -140,6 +145,12 @@
      */
     public XObject execute(XPathContext xctxt) throws 
javax.xml.transform.TransformerException
     {
  +    if (!m_doneEval) 
  +    {
  +      this.m_transformer.getMsgMgr().error      
  +        (XSLTErrorResources.ER_REFERENCING_ITSELF, 
  +          new 
Object[]{((ElemVariable)this.object()).getName().getLocalName()}); 
  +    }
       VariableStack vars = xctxt.getVarStack();
       
       // These three statements need to be combined into one operation.
  @@ -147,12 +158,14 @@
       vars.setSearchStart(m_varStackPos);
       vars.pushContextPosition(m_varStackContext);
   
  +    m_doneEval = false;
       ElemVariable velem = (ElemVariable)m_obj;
       XObject var = velem.getValue(m_transformer, m_context);
       
       // These two statements need to be combined into one operation.
       vars.setSearchStart(savedStart);
       vars.popContextPosition();
  +    m_doneEval = true;
   
       return var;
     }
  
  
  
  1.49      +3 -1      
xml-xalan/java/src/org/apache/xalan/transformer/TransformerImpl.java
  
  Index: TransformerImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xalan/transformer/TransformerImpl.java,v
  retrieving revision 1.48
  retrieving revision 1.49
  diff -u -r1.48 -r1.49
  --- TransformerImpl.java      2000/11/13 16:27:19     1.48
  +++ TransformerImpl.java      2000/11/14 18:56:26     1.49
  @@ -931,6 +931,7 @@
           doc =
                ((org.apache.xalan.stree.SourceTreeHandler) 
inputHandler).getRoot();
         }
  +
       }
       catch (java.lang.IllegalAccessException iae)
       {
  @@ -949,6 +950,7 @@
         throw new TransformerException(ioe);
       }
   
  +
       return doc;
     }
   
  @@ -1173,7 +1175,7 @@
           }
           catch(Exception e){}
         }
  -      throw new TransformerException(se);
  +      throw new TransformerException(se.getMessage(), se);
       }
     }
   
  
  
  
  1.16      +2 -1      xml-xalan/java/src/org/apache/xalan/xslt/Process.java
  
  Index: Process.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xalan/xslt/Process.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- Process.java      2000/11/13 16:27:26     1.15
  +++ Process.java      2000/11/14 18:56:26     1.16
  @@ -540,7 +540,8 @@
                   || (throwable instanceof ClassCastException))
             doStackDumpOnError = true;
   
  -        if (doStackDumpOnError)
  +        diagnosticsWriter.println();
  +        if (doStackDumpOnError)          
             throwable.printStackTrace(dumpWriter);
           else
             diagnosticsWriter.println(
  
  
  
  1.15      +4 -4      
xml-xalan/java/src/org/apache/xpath/SourceTreeManager.java
  
  Index: SourceTreeManager.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xpath/SourceTreeManager.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- SourceTreeManager.java    2000/11/13 16:27:26     1.14
  +++ SourceTreeManager.java    2000/11/14 18:56:26     1.15
  @@ -323,12 +323,12 @@
       }
       catch (IOException ioe)
       {
  -      throw new TransformerException(ioe.getMessage(), 
(SAXSourceLocator)locator, ioe);
  +      throw new TransformerException(ioe.getMessage(), locator, ioe);
       }
  -    catch (TransformerException te)
  +   /* catch (TransformerException te)
       {
  -      throw new TransformerException(te.getMessage(), 
(SAXSourceLocator)locator, te);
  -    }
  +      throw new TransformerException(te.getMessage(), locator, te);
  +    }*/
     }
   
     /**
  
  
  
  1.11      +4 -1      xml-xalan/java/src/org/apache/xpath/XPath.java
  
  Index: XPath.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/XPath.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- XPath.java        2000/11/13 16:27:27     1.10
  +++ XPath.java        2000/11/14 18:56:26     1.11
  @@ -269,7 +269,10 @@
             e = ((org.apache.xalan.utils.WrappedRuntimeException) 
e).getException();
           }
   
  -        throw new TransformerException("Error in XPath",
  +
  +        String msg = e.getMessage();
  +        msg = (msg == null || msg.length()== 0)? "Error in XPath" : msg;
  +        throw new TransformerException(msg,
                   (SAXSourceLocator)m_locator, e);
         }
       }
  
  
  
  1.5       +3 -3      
xml-xalan/java/src/org/apache/xpath/operations/Variable.java
  
  Index: Variable.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xalan/java/src/org/apache/xpath/operations/Variable.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- Variable.java     2000/11/13 16:27:49     1.4
  +++ Variable.java     2000/11/14 18:56:26     1.5
  @@ -104,17 +104,17 @@
       // Is the variable fetched always the same?
       XObject result;
   
  -    try
  +    //try
       {
         result = xctxt.getVariable(m_qname);
       }
  -    catch (Exception e)
  +    /*catch (Exception e)
       {
         error(xctxt, XPATHErrorResources.ER_COULDNOT_GET_VAR_NAMED,
               new Object[]{ m_qname.getLocalPart() });  //"Could not get 
variable named "+varName);
   
         result = null;
  -    }
  +    }*/
   
       if (null == result)
       {
  
  
  

Reply via email to