Hi everyone, I'm using a Java library in XQuery in BaseX and I haven't been able to determine if there's a way to access a constant string (final static String... or even just final String...) in the Java class from XQuery.
For example, if the Java class is declared as
package my.module;
public class MyModule { public static final String TITLE ="I'm a module!";
public String hello(final String world) { return "Hello " + world; } }
The XQuery to call the "hello" method is
import module namespace java = 'java:my.module.MyModule';
java:hello("World!")
But is there any way to access "TITLE"?
I'd like to share some constants between XQuery and Java, and I could write accessor functions for these constants, but it'd be cleaner if I didn't have to.
Thanks!
In your case, i think, java:TITLE() would work.
Just trying with java.lang.Integer i got the following code to work
declare namespace integer="java:java.lang.Integer";
integer:MIN_VALUE()
On Wed, Feb 16, 2022 at 2:55 PM Paul L. Merchant Jr. < Paul.L.Merchant.Jr@dartmouth.edu> wrote:
Hi everyone, I'm using a Java library in XQuery in BaseX and I haven't been able to determine if there's a way to access a constant string (final static String... or even just final String...) in the Java class from XQuery.
For example, if the Java class is declared as
package my.module;
public class MyModule { public static final String TITLE ="I'm a module!";
public String hello(final String world) { return "Hello " + world; } }
The XQuery to call the "hello" method is
import module namespace java = 'java:my.module.MyModule';
java:hello("World!")
But is there any way to access "TITLE"?
I'd like to share some constants between XQuery and Java, and I could write accessor functions for these constants, but it'd be cleaner if I didn't have to.
Thanks!
Thanks, that helped! The key was to use "declare namespace java...." instead of "import module namespace java....".
The subtle difference was lost on my first reading of the documentation, but I now see and understand the example on the Java_Bindings page thanks to your reply.
Much appreciated!
On Feb 16, 2022, at 10:15 AM, Johan Mörén <johan.moren@gmail.commailto:johan.moren@gmail.com> wrote:
In your case, i think, java:TITLE() would work.
Just trying with java.lang.Integer i got the following code to work
declare namespace integer="java:java.lang.Integer";
integer:MIN_VALUE()
On Wed, Feb 16, 2022 at 2:55 PM Paul L. Merchant Jr. <Paul.L.Merchant.Jr@dartmouth.edumailto:Paul.L.Merchant.Jr@dartmouth.edu> wrote: Hi everyone, I'm using a Java library in XQuery in BaseX and I haven't been able to determine if there's a way to access a constant string (final static String... or even just final String...) in the Java class from XQuery.
For example, if the Java class is declared as
package my.module;
public class MyModule { public static final String TITLE ="I'm a module!";
public String hello(final String world) { return "Hello " + world; } }
The XQuery to call the "hello" method is
import module namespace java = 'java:my.module.MyModule';
java:hello("World!")
But is there any way to access "TITLE"?
I'd like to share some constants between XQuery and Java, and I could write accessor functions for these constants, but it'd be cleaner if I didn't have to.
Thanks!
basex-talk@mailman.uni-konstanz.de