X-Git-Url: https://git.argeo.org/?a=blobdiff_plain;f=org.argeo.jcr%2Fsrc%2Forg%2Fargeo%2Fjcr%2FJcrRepositoryWrapper.java;h=1098c4dee5d6a8d781e9a50f6a0dc2db2d12f21c;hb=2afabd9e7b225f80b341063e25188314394c9aef;hp=1e08c18ac7aeb43a4c989bb035dc61eb1657c926;hpb=088c1b517a543e935d8ab65c3b2fd2d0269b551d;p=lgpl%2Fargeo-commons.git diff --git a/org.argeo.jcr/src/org/argeo/jcr/JcrRepositoryWrapper.java b/org.argeo.jcr/src/org/argeo/jcr/JcrRepositoryWrapper.java index 1e08c18ac..1098c4dee 100644 --- a/org.argeo.jcr/src/org/argeo/jcr/JcrRepositoryWrapper.java +++ b/org.argeo.jcr/src/org/argeo/jcr/JcrRepositoryWrapper.java @@ -99,14 +99,14 @@ public abstract class JcrRepositoryWrapper implements Repository { throws LoginException, NoSuchWorkspaceException, RepositoryException { Session session; try { - session = getRepository().login(credentials, workspaceName); + session = getRepository(workspaceName).login(credentials, workspaceName); } catch (NoSuchWorkspaceException e) { if (autocreateWorkspaces && workspaceName != null) session = createWorkspaceAndLogsIn(credentials, workspaceName); else throw e; } - processNewSession(session); + processNewSession(session, workspaceName); return session; } @@ -123,32 +123,39 @@ public abstract class JcrRepositoryWrapper implements Repository { } /** Called after a session has been created, does nothing by default. */ - protected void processNewSession(Session session) { + protected void processNewSession(Session session, String workspaceName) { } - /** Wraps access to the repository, making sure it is available. */ + /** + * Wraps access to the repository, making sure it is available. + * + * @deprecated Use {@link #getDefaultRepository()} instead. + */ + @Deprecated protected synchronized Repository getRepository() { - // if (repository == null) { - // throw new ArgeoJcrException("No repository initialized." - // + " Was the init() method called?" - // + " The destroy() method should also" - // + " be called on shutdown."); - // } + return getDefaultRepository(); + } + + protected synchronized Repository getDefaultRepository() { return repository; } + protected synchronized Repository getRepository(String workspaceName) { + return getDefaultRepository(); + } + /** - * Logs in to the default workspace, creates the required workspace, logs - * out, logs in to the required workspace. + * Logs in to the default workspace, creates the required workspace, logs out, + * logs in to the required workspace. */ protected Session createWorkspaceAndLogsIn(Credentials credentials, String workspaceName) throws RepositoryException { if (workspaceName == null) throw new ArgeoJcrException("No workspace specified."); - Session session = getRepository().login(credentials); + Session session = getRepository(workspaceName).login(credentials); session.getWorkspace().createWorkspace(workspaceName); session.logout(); - return getRepository().login(credentials, workspaceName); + return getRepository(workspaceName).login(credentials, workspaceName); } public boolean isStandardDescriptor(String key) {