Refactor JCR exceptions.
[lgpl/argeo-commons.git] / org.argeo.jcr / src / org / argeo / jcr / JcrRepositoryWrapper.java
index d4bf4381ed1efd88149ea1bb00c44df680f51164..3228eee7434c007a414662579477283f8ef96299 100644 (file)
@@ -1,18 +1,3 @@
-/*
- * Copyright (C) 2007-2012 Argeo GmbH
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *         http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
 package org.argeo.jcr;
 
 import java.io.InputStream;
@@ -99,7 +84,7 @@ 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);
@@ -126,17 +111,24 @@ public abstract class JcrRepositoryWrapper implements Repository {
        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.
@@ -144,11 +136,11 @@ public abstract class JcrRepositoryWrapper implements Repository {
        protected Session createWorkspaceAndLogsIn(Credentials credentials, String workspaceName)
                        throws RepositoryException {
                if (workspaceName == null)
-                       throw new ArgeoJcrException("No workspace specified.");
-               Session session = getRepository().login(credentials);
+                       throw new IllegalArgumentException("No workspace specified.");
+               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) {