You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by ju...@apache.org on 2009/05/19 16:14:01 UTC

svn commit: r776322 - /jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/TransientRepository.java

Author: jukka
Date: Tue May 19 14:14:01 2009
New Revision: 776322

URL: http://svn.apache.org/viewvc?rev=776322&view=rev
Log:
JCR-2087: Upgrade to Java 5 as the base platform

Use Java 5 features in TransientRepository.

Also leverage the AbstractRepository class.

Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/TransientRepository.java

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/TransientRepository.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/TransientRepository.java?rev=776322&r1=776321&r2=776322&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/TransientRepository.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/TransientRepository.java Tue May 19 14:14:01 2009
@@ -19,10 +19,8 @@
 import java.io.File;
 import java.io.IOException;
 import java.io.InputStream;
+import java.util.Arrays;
 import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
 import java.util.Map;
 import java.util.Properties;
 
@@ -33,6 +31,7 @@
 
 import org.apache.commons.collections.map.ReferenceMap;
 import org.apache.jackrabbit.api.JackrabbitRepository;
+import org.apache.jackrabbit.commons.AbstractRepository;
 import org.apache.jackrabbit.core.config.ConfigurationException;
 import org.apache.jackrabbit.core.config.RepositoryConfig;
 import org.slf4j.Logger;
@@ -45,8 +44,8 @@
  * when no longer used, this class can be used to avoid having to explicitly
  * shut down the repository.
  */
-public class TransientRepository
-        implements javax.jcr.Repository, JackrabbitRepository, SessionListener {
+public class TransientRepository extends AbstractRepository
+        implements JackrabbitRepository, SessionListener {
 
     /**
      * The logger instance used to log the repository and session lifecycles.
@@ -111,7 +110,8 @@
      * repository instance is automatically shut down until a new session
      * is opened.
      */
-    private final Map sessions = new ReferenceMap(ReferenceMap.WEAK, ReferenceMap.WEAK);
+    private final Map<Session, Session> sessions =
+        new ReferenceMap(ReferenceMap.WEAK, ReferenceMap.WEAK);
 
     /**
      * The static repository descriptors. The default {@link RepositoryImpl}
@@ -271,15 +271,15 @@
      * descriptor keys are returned.
      *
      * @return descriptor keys
-     * @see Repository#getDescriptorKeys()
      */
     public synchronized String[] getDescriptorKeys() {
         if (repository != null) {
             return repository.getDescriptorKeys();
         } else {
-            List keys = Collections.list(descriptors.propertyNames());
-            Collections.sort(keys);
-            return (String[]) keys.toArray(new String[keys.size()]);
+            String[] keys = Collections.list(
+                    descriptors.propertyNames()).toArray(new String[0]);
+            Arrays.sort(keys);
+            return keys;
         }
     }
 
@@ -300,6 +300,33 @@
         }
     }
 
+    public Value getDescriptorValue(String key) {
+        if (repository != null) {
+            return repository.getDescriptorValue(key);
+        } else {
+            throw new UnsupportedOperationException(
+                    "not implemented yet - see JCR-2062");
+        }
+    }
+
+    public Value[] getDescriptorValues(String key) {
+        if (repository != null) {
+            return repository.getDescriptorValues(key);
+        } else {
+            throw new UnsupportedOperationException(
+                    "not implemented yet - see JCR-2062");
+        }
+    }
+
+    public boolean isSingleValueDescriptor(String key) {
+        if (repository != null) {
+            return repository.isSingleValueDescriptor(key);
+        } else {
+            throw new UnsupportedOperationException(
+                    "not implemented yet - see JCR-2062");
+        }
+    }
+
     /**
      * Logs in to the content repository. Initializes the underlying repository
      * instance if needed. The opened session is added to the set of open
@@ -312,7 +339,8 @@
      * @throws RepositoryException if the session could not be created
      * @see Repository#login(Credentials,String)
      */
-    public synchronized Session login(Credentials credentials, String workspaceName)
+    public synchronized Session login(
+            Credentials credentials, String workspaceName)
             throws RepositoryException {
         // Start the repository if this is the first login
         if (sessions.isEmpty()) {
@@ -321,7 +349,8 @@
 
         try {
             logger.debug("Opening a new session");
-            SessionImpl session = (SessionImpl) repository.login(credentials, workspaceName);
+            SessionImpl session = (SessionImpl) repository.login(
+                    credentials, workspaceName);
             sessions.put(session, session);
             session.addListener(this);
             logger.info("Session opened");
@@ -336,61 +365,6 @@
         }
     }
 
-    /**
-     * Calls {@link #login(Credentials, String)} with a <code>null</code>
-     * workspace name.
-     *
-     * @param credentials login credentials
-     * @return new session
-     * @throws RepositoryException if the session could not be created
-     * @see Repository#login(Credentials)
-     */
-    public Session login(Credentials credentials) throws RepositoryException {
-        return login(credentials, null);
-    }
-
-    /**
-     * Calls {@link #login(Credentials, String)} with <code>null</code> login
-     * credentials.
-     *
-     * @param workspaceName workspace name
-     * @return new session
-     * @throws RepositoryException if the session could not be created
-     * @see Repository#login(String)
-     */
-    public Session login(String workspaceName) throws RepositoryException {
-        return login(null, workspaceName);
-    }
-
-    /**
-     * Calls {@link #login(Credentials, String)} with <code>null</code> login
-     * credentials and a <code>null</code> workspace name.
-     *
-     * @return new session
-     * @throws RepositoryException if the session could not be created
-     * @see Repository#login(Credentials)
-     */
-    public Session login() throws RepositoryException {
-        return login(null, null);
-    }
-
-
-    public Value getDescriptorValue(String key) {
-        throw new RuntimeException("not implemented yet - see JCR-2062");
-    }
-
-    public Value[] getDescriptorValues(String key) {
-        throw new RuntimeException("not implemented yet - see JCR-2062");
-    }
-
-    public boolean isSingleValueDescriptor(String key) {
-        throw new RuntimeException("not implemented yet - see JCR-2062");
-    }
-
-    public boolean isStandardDescriptor(String key) {
-        throw new RuntimeException("not implemented yet - see JCR-2062");
-    }
-
     //--------------------------------------------------<JackrabbitRepository>
 
     /**
@@ -400,9 +374,8 @@
      * @see Session#logout()
      */
     public synchronized void shutdown() {
-        Iterator iterator = new HashSet(sessions.keySet()).iterator();
-        while (iterator.hasNext()) {
-            Session session = (Session) iterator.next();
+        Session[] copy = sessions.keySet().toArray(new Session[0]);
+        for (Session session : copy) {
             session.logout();
         }
     }
@@ -436,4 +409,5 @@
      */
     public void loggingOut(SessionImpl session) {
     }
+
 }