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