in src/main/java/org/apache/commons/scxml2/model/Send.java [490:527]
static long parseDelay(final String delayString, final boolean expression, final String delayStringSource)
throws SCXMLExpressionException {
long wait = 0L;
long multiplier = 1L;
if (delayString != null && !delayString.trim().isEmpty()) {
try {
final String trimDelay = delayString.trim();
String numericDelay = trimDelay;
if (trimDelay.endsWith(MILLIS)) {
numericDelay = trimDelay.substring(0, trimDelay.length() - 2);
} else if (trimDelay.endsWith(SECONDS)) {
multiplier = multiplier*MILLIS_IN_A_SECOND;
numericDelay = trimDelay.substring(0, trimDelay.length() - 1);
} else if (trimDelay.endsWith(MINUTES)) { // Not CSS2
multiplier = multiplier*MILLIS_IN_A_MINUTE;
numericDelay = trimDelay.substring(0, trimDelay.length() - 1);
}
final int fractionIndex = numericDelay.indexOf('.');
if (fractionIndex > -1) {
if (fractionIndex > 0) {
wait = Long.parseLong(numericDelay.substring(0, fractionIndex));
wait *= multiplier;
}
numericDelay = numericDelay.substring(fractionIndex+1);
multiplier /= Math.pow(10, numericDelay.length());
}
if (!numericDelay.isEmpty()) {
wait += Long.parseLong(numericDelay) * multiplier;
}
} catch (final NumberFormatException nfe) {
throw new SCXMLExpressionException("<send>: invalid " + (expression ? "delayexpr=\"" : "delay=\"") + delayStringSource +"\"");
}
}
return wait;
}