---------- Forwarded message ----------
From: marco fregonese <marcofregonese@gmail.com>
Date: 2013/1/21
Subject: Re: [basex-talk] dynamic web application, XQJ, BaseX
To: Christian Grün <christian.gruen@gmail.com>


There is a class in my Java web application that has a method that, after connecting to my BaseX database, execute a query on it.
This query (associated to the "xquerystring" variable), after importing a library module and pointing the processor to the file containing the library module("library_module.xq"), uses the function "lib:getparts()".
Now, after executing this method, I noticed that:
with BaseX 7.3 the Xquery processor (o whatever it is, I don't know) looks for "library_module.xq" in the filesystem $HOME/basex/bin,
while with BaseX 7.5 the processor looks for "library_module.xq" in $HOME.
My question basically is: what is that makes the processor (or whatever it is) look for the file "library_module.xq" in $HOME/basex/bin (with BaseX 7.3) and in $HOME (with BaseX 7.5)?

Hope I've been clear.

Thanks

PS: in BaseX GUI everything works fine: the XQuery processor looks for the file containing the library module in the same folder where the main module is.
Example of main module:

import module namespace lib="http://www.example.com/my_library_module" at "library_module.xq";

lib:getparts()

The following is the code of the class I've talked about:

package xqu;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintStream;

import javax.xml.namespace.QName;
import javax.xml.xquery.XQConnection;
import javax.xml.xquery.XQException;
import javax.xml.xquery.XQExpression;
import javax.xml.xquery.XQResultSequence;

import con.Connection;

public class Query {

public static void getAllParts(String a, String sc) throws XQException, FileNotFoundException
    {
        File file = new File(sc);
        FileOutputStream fos = new FileOutputStream(file);
        PrintStream ps = new PrintStream(fos);
        System.setOut(ps);
       
        XQConnection con = Connection.getConnection();
        XQExpression xqe = con.createExpression();
       
        xqe.bindString(new QName("b"), a, null);

        String xqueryString =
// using backslash for escaping "
                 "import module namespace lib=\"http://www.example.com/library_module\""  +
                    "at \"library_module.xq\";" +
                 "declare variable $b external; " +
                 "lib:getparts($b)";

        XQResultSequence rs = xqe.executeQuery(xqueryString);

        String b = rs.getSequenceAsString(null);
       
        con.close();
       
        System.out.println(b);


    }
}

2013/1/20 Christian Grün <christian.gruen@gmail.com>
Hi Marco,

sorry for the late feedback. Can you reproduce the issues in the BaseX
GUI or on command line?

Best,
Christian
___________________________________