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)
{