Hi Christian, Thanks for the quick fix!
Best wishes, Oleksandr On Tue, Jul 3, 2018 at 12:52 PM Christian Grün <[email protected]> wrote: > Hi Alex, > > I found a solution indeed to improve type checking for Java function > calls. Your code should now work with the latest snapshot [1]. > > There is a minor overhead when calling Java functions if the type is not > statically known, but as long as your arrays don’t have millions of > entries, you shouldn’t really notice the difference. I mostly revised the > type checking process to reduce memory (e.g., a large byte array will be > much smaller if passed on as byte[] instead of Object[]), so it is likely > that most invocations will even be faster than before. > > The dynamic item type detection currently works for primitive types > (double, float, boolean, int, short, byte) and Strings. > > Cheers, > Christian > > [1] http://files.basex.org/releases/latest/ > > > > On Fri, Jun 29, 2018 at 12:37 PM Alexander Shpack <[email protected]> > wrote: > >> Thanks! >> >> On Fri, Jun 29, 2018 at 1:34 PM Christian Grün <[email protected]> >> wrote: >> >>> I see! As XQuery sequences may contain items of arbitrary type, it is >>> not always possible to decide at compile time which Java function >>> needs to be chosen for evaluation. I recommend you to stick with the >>> "Object..." declaration. >>> >>> Nevertheless, I will check if we can optimize the static function >>> selection without compromising performance. >>> >>> Best, >>> Christian >>> >>> >>> >>> On Fri, Jun 29, 2018 at 12:30 PM Alexander Shpack <[email protected]> >>> wrote: >>> > >>> > Hi Christian, >>> > >>> > Right now we are using the next code >>> > >>> > public static String exec(String key) { >>> > return ... >>> > } >>> > >>> > public static String exec(Object... keys) { >>> > return ... >>> > } >>> > >>> > The code that doesn't work: >>> > >>> > public static String exec(String... keys) >>> > >>> > >>> > >>> > On Fri, Jun 29, 2018 at 10:51 AM Christian Grün < >>> [email protected]> wrote: >>> >> >>> >> Hi Alex, >>> >> >>> >> How does the signature of the invoked Java function look like? >>> >> >>> >> Best, >>> >> Christian >>> >> >>> >> >>> >> >>> >> On Mon, Jun 18, 2018 at 9:43 PM Alexander Shpack <[email protected]> >>> wrote: >>> >> > >>> >> > Hey, team! >>> >> > >>> >> > Just simple question. How to pass sequence of string to the java >>> class? >>> >> > >>> >> > let $values := for $i in (1 to 3) return $i cast to xs:string >>> >> > return j:exec($values) >>> >> > >>> >> > In case when local function returns one item all is good. >>> Otherwise j:exec takes array of item()+, but not the array of stings. >>> >> > >>> >> > If you just call j:exec(("1","2")) than all works as expected. >>> >> > >>> >> > Any thoughts? Is it bug or feature? ;) >>> >> > >>> >> > BaseX 9.0 >>> >> > >>> >> > Thanks! >>> >> > >>> >> > >>> >> > -- >>> >> > s0rr0w >>> > >>> > >>> > >>> > -- >>> > s0rr0w >>> >> >> >> -- >> s0rr0w >> > -- s0rr0w

