Propose to evaluate delay expression in Send action before parsing
------------------------------------------------------------------
Key: SCXML-73
URL: https://issues.apache.org/jira/browse/SCXML-73
Project: Commons SCXML
Issue Type: Wish
Affects Versions: 0.7, 0.6, 0.5, 0.8, 1.0
Reporter: Elaine Wong
Fix For: 0.8, 1.0, 0.7, 0.6, 0.5
I am using the Send action to schedule a future event. The current
implementation for Send requires me to express delay either as a number or a
string defined in CSS2 format. My delay can be as long as 1 month, which works
out to:
2678400s for Jan, Mar, May, Jul, Aug, Oct, Dec
2592000s for Apr, Jun, Sep, Nov
2419200s for Feb (non-leap years)
A straightforward way for me to calculate the number of seconds for the current
month is to tap on Java's calendar classes, so I created a helper object to
perform that calculation and tried calling my object in the delay expression,
i.e.
<send event="charge" delay="time.ms(0,1,0,0,0,0)"/>
But this doesn't work. I get the following error message:
ERROR [log] For input string: "delay" java.lang.NumberFormatException: For
input string: "time.ms(0,1,0,0,0,0)"
Looking at the code for Send, I realize that the delay expression does not get
evaluated by the evaluator, unlike the other attributes. I did a little
experiment and modified the Send.execute method to evaluate the delay
expression before parsing. ie.
In execute(), I added:
String delayString = (String) eval.eval(ctx, delay);
long wait = parseDelay(delayString, appLog);
I then modified parseDelay() to parse delayString instead of delay, i.e.
private long parseDelay(final String delayString, final Log appLog)
throws SCXMLExpressionException {
long wait = 0L;
long multiplier = 1L;
if (!SCXMLHelper.isStringEmpty(delayString)) {
String trimDelay = delayString.trim();
String numericDelay = trimDelay;
....
With these modifications, the above delay expression worked. Although this is a
minor tweak, it is very useful for delay expressions that go beyond a couple of
seconds or change under different scenarios.
Can this feature be included in the next release for SCXML?
Elaine
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.