All,

(This is all in the context of Velocity 1.7, but I'm not sure anything has changed through 2.x.)

Sometimes you want to call a static method. Past workarounds are ugly but get the job done. For example:

#set($string = "")
$string.format($locale, "format string", args)

I have a case where I've been working around java.util.TimeZone like this:

#set($tz = $dateIHave.timeZone)
#set($utc = $tx.getTimeZone('UTC'))
... use $utc

In recent versions of Java (I'm using Java 17 at the moment), I'm getting this error:

Exception: org.apache.velocity.exception.VelocityException: ASTMethod.execute() : exception invoking method 'getTimeZone' in class sun.util.calendar.ZoneInfo
Stack Trace:
org.apache.velocity.exception.VelocityException: ASTMethod.execute() : exception invoking method "getTimeZone" in class sun.util.calendar.ZoneInfo
org.apache.velocity.runtime.parser.node.ASTMethod.execute(ASTMethod.java:208)
...

I'm intending to call java.util.TimeZone.getTimeZone which should be fine. But the runtime type of $tz ends up being sun.util.calendar.ZoneInfo which, unfortunately, defines its own static getTimeZone method whose signature matches that of java.util.TimeZone but is not callable due to module.

In this case, is it possible for me to make a call to java.util.TimeZone.getTimeZone, or is it time to write a new Tool or customize an existing one (e.g. DateTool.getTimeZone(String zoneId) would be handy).

Thanks,
-chris

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@velocity.apache.org
For additional commands, e-mail: user-h...@velocity.apache.org

Reply via email to