Author: rdonkin
Date: Sun Apr 8 23:25:55 2007
New Revision: 526658
URL: http://svn.apache.org/viewvc?view=rev&rev=526658
Log:
When debugging scripts it's useful to be able to see the coordinates when a
command executes. Commands are executed after the parse so it's necessary to
store the coordinate in the command.
Modified:
james/jsieve/trunk/src/main/java/org/apache/jsieve/Command.java
james/jsieve/trunk/src/main/java/org/apache/jsieve/ScriptCoordinate.java
james/jsieve/trunk/src/main/java/org/apache/jsieve/SieveContext.java
james/jsieve/trunk/src/main/java/org/apache/jsieve/SieveParserVisitorImpl.java
james/jsieve/trunk/src/main/java/org/apache/jsieve/Test.java
Modified: james/jsieve/trunk/src/main/java/org/apache/jsieve/Command.java
URL:
http://svn.apache.org/viewvc/james/jsieve/trunk/src/main/java/org/apache/jsieve/Command.java?view=diff&rev=526658&r1=526657&r2=526658
==============================================================================
--- james/jsieve/trunk/src/main/java/org/apache/jsieve/Command.java (original)
+++ james/jsieve/trunk/src/main/java/org/apache/jsieve/Command.java Sun Apr 8
23:25:55 2007
@@ -36,8 +36,14 @@
public Object execute(MailAdapter mail) throws SieveException
{
Log log = Logger.getLog();
- if (log.isDebugEnabled())
+ if (log.isDebugEnabled()) {
log.debug(toString());
+ coordinate.debugDiagnostics(log);
+ }
+ // commands are executed after the parsing phase
+ // recursively from the top level block
+ // so need to use the coordinate recorded from the parse
+ context.setCoordinate(coordinate);
return CommandManager.getInstance().newInstance(getName()).execute(
mail,
getArguments(),
@@ -57,6 +63,14 @@
private SieveContext context;
/**
+ * Script coordinate for this command.
+ * Commands are executed after the document has been parse.
+ * So this must be recorded on construction
+ * and stored for later use.
+ */
+ private ScriptCoordinate coordinate;
+
+ /**
* Constructor for Test.
*/
private Command()
@@ -74,6 +88,7 @@
{
this();
this.context = context;
+ this.coordinate = context.getCoordinate();
setName(name);
setArguments(arguments);
setBlock(block);
Modified:
james/jsieve/trunk/src/main/java/org/apache/jsieve/ScriptCoordinate.java
URL:
http://svn.apache.org/viewvc/james/jsieve/trunk/src/main/java/org/apache/jsieve/ScriptCoordinate.java?view=diff&rev=526658&r1=526657&r2=526658
==============================================================================
--- james/jsieve/trunk/src/main/java/org/apache/jsieve/ScriptCoordinate.java
(original)
+++ james/jsieve/trunk/src/main/java/org/apache/jsieve/ScriptCoordinate.java
Sun Apr 8 23:25:55 2007
@@ -148,4 +148,15 @@
logger.info("Expression ends line " + endLineNumber + " column " +
endColumnNumber);
}
}
+
+ /**
+ * Logs diagnotic information about the script coordinate.
+ * @param logger <code>Log</code>, not null
+ */
+ public void debugDiagnostics(Log logger) {
+ if (logger.isDebugEnabled()) {
+ logger.debug("Expression starts line " + startLineNumber + "
column " + startColumnNumber);
+ logger.debug("Expression ends line " + endLineNumber + " column "
+ endColumnNumber);
+ }
+ }
}
Modified: james/jsieve/trunk/src/main/java/org/apache/jsieve/SieveContext.java
URL:
http://svn.apache.org/viewvc/james/jsieve/trunk/src/main/java/org/apache/jsieve/SieveContext.java?view=diff&rev=526658&r1=526657&r2=526658
==============================================================================
--- james/jsieve/trunk/src/main/java/org/apache/jsieve/SieveContext.java
(original)
+++ james/jsieve/trunk/src/main/java/org/apache/jsieve/SieveContext.java Sun
Apr 8 23:25:55 2007
@@ -30,4 +30,10 @@
* @return <code>ScriptCoordinate</code>, not null
*/
public abstract ScriptCoordinate getCoordinate();
+
+ /**
+ * Sets the script position of the current operation.
+ * @param coordinate <code>ScriptCoordinate</code>, not null
+ */
+ public abstract void setCoordinate(ScriptCoordinate coordinate);
}
Modified:
james/jsieve/trunk/src/main/java/org/apache/jsieve/SieveParserVisitorImpl.java
URL:
http://svn.apache.org/viewvc/james/jsieve/trunk/src/main/java/org/apache/jsieve/SieveParserVisitorImpl.java?view=diff&rev=526658&r1=526657&r2=526658
==============================================================================
---
james/jsieve/trunk/src/main/java/org/apache/jsieve/SieveParserVisitorImpl.java
(original)
+++
james/jsieve/trunk/src/main/java/org/apache/jsieve/SieveParserVisitorImpl.java
Sun Apr 8 23:25:55 2007
@@ -199,7 +199,7 @@
Commands commands =
(Commands) ((List) node.childrenAccept(this, children)).get(0);
Block block = new Block(commands);
-
+ context.setCoordinate(node.getCoordinate());
// Answer the result of executing the Block
return block.execute((MailAdapter)data);
}
Modified: james/jsieve/trunk/src/main/java/org/apache/jsieve/Test.java
URL:
http://svn.apache.org/viewvc/james/jsieve/trunk/src/main/java/org/apache/jsieve/Test.java?view=diff&rev=526658&r1=526657&r2=526658
==============================================================================
--- james/jsieve/trunk/src/main/java/org/apache/jsieve/Test.java (original)
+++ james/jsieve/trunk/src/main/java/org/apache/jsieve/Test.java Sun Apr 8
23:25:55 2007
@@ -45,8 +45,9 @@
public Object execute(MailAdapter mail) throws SieveException
{
Log log = Logger.getLog();
- if (log.isDebugEnabled())
+ if (log.isDebugEnabled()) {
log.debug(toString());
+ }
return new Boolean(
TestManager.getInstance().newInstance(getName()).execute(
mail,
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]