Hi all,
I am running BaseX 8.6.3 currently and struggling with the inclusion of
modules written in Java. I have extended the Hello World example:
package org.basex.modules;
public class Hello {
private String str = "BaseX";
public Hello() {}
public Hello(String str) {
this.str = str;
}
public String hello(final String world) {
return "Hello " + world;
}
public String hello() {
return "Hello " + str;
}
}
I can pack it into a jar-file and install it successfully. My jar-file
is structured as following:
hello.jar
- META-INF
- MANIFEST.MF
- org
- basex
- modules
- Hello.class
Here is the content of my manifest.mf:
Manifest-Version: 1.0
Main-Class: org.basex.modules.Hello
The methods of the Hello-class can be called without any problems when
the module is imported:
import module namespace t='org.basex.modules.Hello';
t:hello('text')
However, when I try to explicitly create the object by calling the
constructor (new) with arguments it fails:
declare namespace t='org.basex.modules.Hello';
let $obj := t:new('test')
return ''
When I try to call the constructor I receive the error [XPST0017]
Unknown function: Q{org.basex.modules.Hello}new.
Since I am able to execute the FileWriter example
(http://docs.basex.org/wiki/Java_Bindings#Namespace_Declarations) which
calls a constructor with an argument I would like to know if this
behavior is a bug or if I am missing an important point.
Regards,
Ilko