You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@cocoon.apache.org by sy...@apache.org on 2005/09/30 17:47:52 UTC
svn commit: r292782 -
/cocoon/trunk/src/java/org/apache/cocoon/components/flow/javascript/JSErrorReporter.java
Author: sylvain
Date: Fri Sep 30 08:47:50 2005
New Revision: 292782
URL: http://svn.apache.org/viewcvs?rev=292782&view=rev
Log:
Rhino 1.5 calls error reporter several times, so buffer all messages
Modified:
cocoon/trunk/src/java/org/apache/cocoon/components/flow/javascript/JSErrorReporter.java
Modified: cocoon/trunk/src/java/org/apache/cocoon/components/flow/javascript/JSErrorReporter.java
URL: http://svn.apache.org/viewcvs/cocoon/trunk/src/java/org/apache/cocoon/components/flow/javascript/JSErrorReporter.java?rev=292782&r1=292781&r2=292782&view=diff
==============================================================================
--- cocoon/trunk/src/java/org/apache/cocoon/components/flow/javascript/JSErrorReporter.java (original)
+++ cocoon/trunk/src/java/org/apache/cocoon/components/flow/javascript/JSErrorReporter.java Fri Sep 30 08:47:50 2005
@@ -19,22 +19,39 @@
import org.mozilla.javascript.EvaluatorException;
import org.mozilla.javascript.tools.ToolErrorReporter;
import org.apache.avalon.framework.logger.Logger;
+import org.apache.cocoon.util.location.LocatedRuntimeException;
+import org.apache.cocoon.util.location.Location;
+import org.apache.cocoon.util.location.LocationImpl;
/**
* Implements a Rhino JavaScript {@link
* org.mozilla.javascript.ErrorReporter}.
* Like ToolErrorReporter but logs to supplied logger instead of stdout
*
- * @version CVS $Id: JSErrorReporter.java,v 1.6 2004/03/06 02:25:40 antonio Exp $
+ * @version CVS $Id$
*/
public class JSErrorReporter implements ErrorReporter
{
private Logger logger;
+ private Location location;
+ private StringBuffer message;
public JSErrorReporter(Logger logger)
{
this.logger = logger;
}
+
+ private void appendMessage(String text, String sourceName, int line, int column) {
+ if (location == null) {
+ location = new LocationImpl(null, sourceName, line, column);
+ message = new StringBuffer();
+ } else {
+ // Append a linefeed
+ message.append("\n");
+ }
+
+ message.append(text);
+ }
public void error(String message,
String sourceName, int line,
@@ -42,6 +59,7 @@
{
String errMsg = getErrorMessage("msg.error", message,
sourceName, line, lineSrc, column);
+ appendMessage(errMsg, sourceName, line, column);
System.err.println(errMsg);
logger.error(errMsg);
}
@@ -51,6 +69,7 @@
{
String errMsg = getErrorMessage("msg.warning", message,
sourceName, line, lineSrc, column);
+ appendMessage(errMsg, sourceName, line, column);
System.err.println(errMsg);
logger.warn(errMsg);
}
@@ -62,8 +81,10 @@
String errMsg = getErrorMessage("msg.error", message,
sourceName, line,
lineSrc, column);
+ appendMessage(errMsg, sourceName, line, column);
System.err.println(errMsg);
- return new EvaluatorException(errMsg);
+ // FIXME(SW): need to build a locatable extension to EvaluatorException
+ return new EvaluatorException(this.message.toString());
}
/**