https://www.argeo.org/bugzilla/show_bug.cgi?id=162
git-svn-id: https://svn.argeo.org/commons/branches/1.x@6327
4cfe0d0a-d680-48aa-b62c-
e0a02a3f76cc
public Node proxy(String path) {
// we open a JCR session with client credentials in order not to use the
// admin session in multiple thread or make it a bottleneck.
public Node proxy(String path) {
// we open a JCR session with client credentials in order not to use the
// admin session in multiple thread or make it a bottleneck.
+ Node nodeAdmin = null;
+ Node nodeClient = null;
Session clientSession = null;
try {
clientSession = jcrRepository.login(proxyWorkspace);
if (!clientSession.itemExists(path)
|| shouldUpdate(clientSession, path)) {
Session clientSession = null;
try {
clientSession = jcrRepository.login(proxyWorkspace);
if (!clientSession.itemExists(path)
|| shouldUpdate(clientSession, path)) {
- Node nodeT = retrieveAndSave(path);
- if (nodeT == null)
- return null;
- }
- return clientSession.getNode(path);
+ nodeAdmin = retrieveAndSave(path);
+ if (nodeAdmin != null)
+ nodeClient = clientSession.getNode(path);
+ } else
+ nodeClient = clientSession.getNode(path);
+ return nodeClient;
} catch (RepositoryException e) {
throw new ArgeoException("Cannot proxy " + path, e);
} catch (RepositoryException e) {
throw new ArgeoException("Cannot proxy " + path, e);
+ } finally {
+ if (nodeClient == null)
+ JcrUtils.logoutQuietly(clientSession);