Hello,
I would like to migrate my current code from BaseX 7.3 to the
latest version, but when I compile with the new library I get
errors at Context.pin(...) and Context.unpin(...).
I have some difficulties in finding out how to change the "pin"
management.
If you don't mind, I'd post two of my class's methods and I would
ask you to give me some instructions how to update them.
Thank you
William
public
synchronized Data openOrCreateContainer( Context ctx, final
String path) throws IOException {
final IO io = IO.get("file:/"+
getDataDir().getAbsolutePath());
final String name = path;
// check if database is already opened
final Data data = ctx.pin(name);
if(data != null) {
final IO in = data.meta.path;
if(in.eq(io) && io.timeStamp() ==
in.timeStamp()) {
// check permissions
if(ctx.perm(Perm.READ, data.meta)) return data;
throw new
IOException(Util.info(Text.PERM_REQUIRED_X, Perm.READ));
}
ctx.unpin(data);
}
// if found, an existing database is opened
final Data ret;
if (ctx.mprop.dbexists(name)) {
ret = Open.open(name, ctx);
ctx.openDB(ret);
}
else {
new CreateDB(name).execute(ctx);
ret = ctx.data();
ctx.openDB(ret);
}
buildIndex();
return ret;
}
public boolean loadDocumentFromInputStream(InputStream
stream, String docName) throws EtlException {
Data cont = null;
try {
String containerName = docName;
cont = openOrCreateContainer(CONTEXT,
containerName);
IntList docs = cont.resources.docs(docName);
for(final int pre : docs.toArray()) {
cont.delete(pre);
}
Add cmd = new Add(docName);
cmd.setInput(stream);
cmd.execute(CONTEXT);
buildIndex();
return true;
} catch (Exception e) {
log.error(e);
throw new EtlException(e);
} finally {
if (cont != null) {
CONTEXT.unpin(cont);
cont.close();
}
}
}
--
William Sandri
Business Process Engineering S.r.l.
38068 Rovereto (TN)
Via Per Marco 12/A
tel: +39 0464 07 60 23
fax: +39 0464 07 20 09
web phone: sip:wsandri@mail.bpeng.com
web site:http://www.bpeng.com
email:wsandri@bpeng.com