Hi,
I am having trouble binding a java object to an XQuery external variable.
Here is my simple java class:
public class Provami {
private int items;
private String name;
public Provami() {
}
public Provami(String name, int items) {
this.items = items;
this.name = name;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public int getItems() {
return this.items;
}
public void setItems( int items) {
this.items = items;
}
}
and here is my XQuery sample
declare namespace provami = "java:Provami";
declare variable $bar as xs:anyAtomicType external;
let $foo := provami:new()
return element a {
element i {provami:setName($foo, 'nome'), provami:getName($foo)},
element i {provami:getName($bar)}
}
I have tried two approaches with XQJ:
1) to create an atomic type
groovy:000> otype =
conn.createAtomicType(XQItemType.XQBASETYPE_ANYATOMICTYPE, new
QName("java:Provami"),null)
groovy:000> ixpr.bindObject(new QName("bar"), new Provami("passato", 4), otype)
ERROR org.basex.api.xqj.BXQException:
No mapping known for 'Provami'.
at org.basex.api.xqj.BXQAbstract.create (BXQAbstract.java:128)
at org.basex.api.xqj.BXQDynamicContext.bindObject
(BXQDynamicContext.java:147)
at groovysh_evaluate.run (groovysh_evaluate:13)
...
2) I have also tried to create an item
groovy:000> itm = conn.createItemFromObject(new Provami('roba',4), null)
ERROR org.basex.api.xqj.BXQException:
No mapping known for 'Provami'.
at org.basex.api.xqj.BXQAbstract.create (BXQAbstract.java:128)
at org.basex.api.xqj.BXQDataFactory.createItemFromObject
(BXQDataFactory.java:231)
at org.basex.api.xqj.BXQDataFactory.createItemFromObject
(BXQDataFactory.java:39)
at groovysh_evaluate.run (groovysh_evaluate:13)
...
Could you please advice on how I may successfully bind the parameter.
Thanks
Stefano