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/17 22:45:22 UTC

svn commit: r775756 - /jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java

Author: jukka
Date: Sun May 17 20:45:22 2009
New Revision: 775756

URL: http://svn.apache.org/viewvc?rev=775756&view=rev
Log:
JCR-1104: JSR 283 support

Use Java 5 constructs in SessionImpl. Remove constants replaced by JSR 283 equivalents.

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

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java?rev=775756&r1=775755&r2=775756&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/SessionImpl.java Sun May 17 20:45:22 2009
@@ -16,8 +16,53 @@
  */
 package org.apache.jackrabbit.core;
 
+import java.io.File;
+import java.io.PrintStream;
+import java.security.AccessControlException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import javax.jcr.AccessDeniedException;
+import javax.jcr.Credentials;
+import javax.jcr.InvalidItemStateException;
+import javax.jcr.Item;
+import javax.jcr.ItemExistsException;
+import javax.jcr.ItemNotFoundException;
+import javax.jcr.LoginException;
+import javax.jcr.NamespaceException;
+import javax.jcr.NoSuchWorkspaceException;
+import javax.jcr.Node;
+import javax.jcr.PathNotFoundException;
+import javax.jcr.Property;
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.SimpleCredentials;
+import javax.jcr.UnsupportedRepositoryOperationException;
+import javax.jcr.ValueFactory;
+import javax.jcr.Workspace;
+import javax.jcr.lock.Lock;
+import javax.jcr.lock.LockException;
+import javax.jcr.nodetype.ConstraintViolationException;
+import javax.jcr.nodetype.NoSuchNodeTypeException;
+import javax.jcr.observation.EventListener;
+import javax.jcr.observation.ObservationManager;
+import javax.jcr.retention.RetentionManager;
+import javax.jcr.security.AccessControlManager;
+import javax.jcr.version.VersionException;
+import javax.security.auth.Subject;
+
 import org.apache.commons.collections.IteratorUtils;
 import org.apache.commons.collections.map.ReferenceMap;
+import org.apache.jackrabbit.api.JackrabbitSession;
+import org.apache.jackrabbit.api.security.principal.PrincipalManager;
+import org.apache.jackrabbit.api.security.user.UserManager;
 import org.apache.jackrabbit.commons.AbstractSession;
 import org.apache.jackrabbit.core.RepositoryImpl.WorkspaceInfo;
 import org.apache.jackrabbit.core.config.WorkspaceConfig;
@@ -28,36 +73,31 @@
 import org.apache.jackrabbit.core.nodetype.NodeTypeManagerImpl;
 import org.apache.jackrabbit.core.persistence.IterablePersistenceManager;
 import org.apache.jackrabbit.core.persistence.PersistenceManager;
+import org.apache.jackrabbit.core.retention.RetentionManagerImpl;
+import org.apache.jackrabbit.core.retention.RetentionRegistry;
 import org.apache.jackrabbit.core.security.AMContext;
 import org.apache.jackrabbit.core.security.AccessManager;
 import org.apache.jackrabbit.core.security.SecurityConstants;
-import org.apache.jackrabbit.core.security.authorization.Permission;
-import org.apache.jackrabbit.api.security.principal.PrincipalManager;
-import org.apache.jackrabbit.api.security.user.UserManager;
-import org.apache.jackrabbit.api.JackrabbitSession;
-import javax.jcr.security.AccessControlManager;
-import javax.jcr.retention.RetentionManager;
 import org.apache.jackrabbit.core.security.authentication.AuthContext;
+import org.apache.jackrabbit.core.security.authorization.Permission;
 import org.apache.jackrabbit.core.state.LocalItemStateManager;
 import org.apache.jackrabbit.core.state.NodeState;
 import org.apache.jackrabbit.core.state.SessionItemStateManager;
 import org.apache.jackrabbit.core.state.SharedItemStateManager;
 import org.apache.jackrabbit.core.util.Dumpable;
+import org.apache.jackrabbit.core.value.ValueFactoryImpl;
 import org.apache.jackrabbit.core.version.VersionManager;
 import org.apache.jackrabbit.core.version.VersionManagerImpl;
 import org.apache.jackrabbit.core.xml.ImportHandler;
 import org.apache.jackrabbit.core.xml.SessionImporter;
-import org.apache.jackrabbit.core.retention.RetentionManagerImpl;
-import org.apache.jackrabbit.core.retention.RetentionRegistry;
-import org.apache.jackrabbit.core.value.ValueFactoryImpl;
 import org.apache.jackrabbit.spi.Name;
 import org.apache.jackrabbit.spi.Path;
 import org.apache.jackrabbit.spi.commons.conversion.DefaultNamePathResolver;
+import org.apache.jackrabbit.spi.commons.conversion.IdentifierResolver;
 import org.apache.jackrabbit.spi.commons.conversion.IllegalNameException;
 import org.apache.jackrabbit.spi.commons.conversion.MalformedPathException;
 import org.apache.jackrabbit.spi.commons.conversion.NameException;
 import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
-import org.apache.jackrabbit.spi.commons.conversion.IdentifierResolver;
 import org.apache.jackrabbit.spi.commons.namespace.NamespaceResolver;
 import org.apache.jackrabbit.uuid.UUID;
 import org.slf4j.Logger;
@@ -65,74 +105,15 @@
 import org.xml.sax.ContentHandler;
 import org.xml.sax.InputSource;
 
-import javax.jcr.AccessDeniedException;
-import javax.jcr.Credentials;
-import javax.jcr.InvalidItemStateException;
-import javax.jcr.Item;
-import javax.jcr.ItemExistsException;
-import javax.jcr.ItemNotFoundException;
-import javax.jcr.LoginException;
-import javax.jcr.NamespaceException;
-import javax.jcr.NoSuchWorkspaceException;
-import javax.jcr.Node;
-import javax.jcr.PathNotFoundException;
-import javax.jcr.Property;
-import javax.jcr.Repository;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-import javax.jcr.SimpleCredentials;
-import javax.jcr.UnsupportedRepositoryOperationException;
-import javax.jcr.ValueFactory;
-import javax.jcr.Workspace;
-import javax.jcr.lock.LockException;
-import javax.jcr.lock.Lock;
-import javax.jcr.nodetype.ConstraintViolationException;
-import javax.jcr.nodetype.NoSuchNodeTypeException;
-import javax.jcr.observation.EventListener;
-import javax.jcr.observation.ObservationManager;
-import javax.jcr.version.VersionException;
-import javax.security.auth.Subject;
-import java.io.File;
-import java.io.PrintStream;
-import java.security.AccessControlException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.Arrays;
-
 /**
  * A <code>SessionImpl</code> ...
  */
 public class SessionImpl extends AbstractSession
-        implements javax.jcr.Session, JackrabbitSession, NamespaceResolver, NamePathResolver, IdentifierResolver, Dumpable {
+        implements JackrabbitSession, NamespaceResolver, NamePathResolver, IdentifierResolver, Dumpable {
 
     private static Logger log = LoggerFactory.getLogger(SessionImpl.class);
 
     /**
-     * @deprecated Use {@link javax.jcr.Session#ACTION_READ} instead.
-     */
-    public static final String READ_ACTION = javax.jcr.Session.ACTION_READ;
-
-    /**
-     * @deprecated Use {@link javax.jcr.Session#ACTION_REMOVE} instead.
-     */
-    public static final String REMOVE_ACTION = javax.jcr.Session.ACTION_REMOVE;
-
-    /**
-     * @deprecated Use {@link javax.jcr.Session#ACTION_ADD_NODE} instead.
-     */
-    public static final String ADD_NODE_ACTION = javax.jcr.Session.ACTION_ADD_NODE;
-
-    /**
-     * @deprecated Use {@link javax.jcr.Session#ACTION_SET_PROPERTY} instead.
-     */
-    public static final String SET_PROPERTY_ACTION = javax.jcr.Session.ACTION_SET_PROPERTY;
-
-    /**
      * flag indicating whether this session is alive
      */
     protected boolean alive;
@@ -161,7 +142,8 @@
     /**
      * the attributes of this session
      */
-    protected final HashMap attributes = new HashMap();
+    protected final Map<String, Object> attributes =
+        new HashMap<String, Object>();
 
     /**
      * the node type manager
@@ -206,7 +188,8 @@
     /**
      * Listeners (weak references)
      */
-    protected final Map listeners = new ReferenceMap(ReferenceMap.WEAK, ReferenceMap.WEAK);
+    protected final Map<SessionListener, SessionListener> listeners =
+        new ReferenceMap(ReferenceMap.WEAK, ReferenceMap.WEAK);
 
     /**
      * value factory
@@ -573,18 +556,17 @@
      */
     protected String[] getWorkspaceNames() throws RepositoryException {
         // filter workspaces according to access rights
-        ArrayList list = new ArrayList();
-        String[] names = rep.getWorkspaceNames();
-        for (int i = 0; i < names.length; i++) {
+        List<String> names = new ArrayList<String>();
+        for (String name : rep.getWorkspaceNames()) {
             try {
-                if (getAccessManager().canAccess(names[i])) {
-                    list.add(names[i]);
+                if (getAccessManager().canAccess(name)) {
+                    names.add(name);
                 }
-            } catch (NoSuchWorkspaceException nswe) {
-                // should never happen, ignore...
+            } catch (NoSuchWorkspaceException e) {
+                log.warn("Workspace disappeared unexpectedly: " + name, e);
             }
         }
-        return (String[]) list.toArray(new String[list.size()]);
+        return names.toArray(new String[names.size()]);
     }
 
     /**
@@ -625,12 +607,11 @@
      */
     protected void notifyLoggingOut() {
         // copy listeners to array to avoid ConcurrentModificationException
-        SessionListener[] la =
-                (SessionListener[]) listeners.values().toArray(
-                        new SessionListener[listeners.size()]);
-        for (int i = 0; i < la.length; i++) {
-            if (la[i] != null) {
-                la[i].loggingOut(this);
+        List<SessionListener> copy =
+            new ArrayList<SessionListener>(listeners.values());
+        for (SessionListener listener : copy) {
+            if (listener != null) {
+                listener.loggingOut(this);
             }
         }
     }
@@ -640,12 +621,11 @@
      */
     protected void notifyLoggedOut() {
         // copy listeners to array to avoid ConcurrentModificationException
-        SessionListener[] la =
-                (SessionListener[]) listeners.values().toArray(
-                        new SessionListener[listeners.size()]);
-        for (int i = 0; i < la.length; i++) {
-            if (la[i] != null) {
-                la[i].loggedOut(this);
+        List<SessionListener> copy =
+            new ArrayList<SessionListener>(listeners.values());
+        for (SessionListener listener : copy) {
+            if (listener != null) {
+                listener.loggedOut(this);
             }
         }
     }
@@ -1166,11 +1146,9 @@
             ObservationManager manager = getWorkspace().getObservationManager();
             // Use a copy to avoid modifying the set of registered listeners
             // while iterating over it
-            Collection listeners =
+            Collection<EventListener> listeners =
                 IteratorUtils.toList(manager.getRegisteredEventListeners());
-            Iterator iterator = listeners.iterator();
-            while (iterator.hasNext()) {
-                EventListener listener = (EventListener) iterator.next();
+            for (EventListener listener : listeners) {
                 try {
                     manager.removeEventListener(listener);
                 } catch (RepositoryException e) {
@@ -1490,7 +1468,7 @@
             throw new RepositoryException("Absolute path expected. Was:" + absPath);
         }
 
-        Set s = new HashSet(Arrays.asList(actions.split(",")));
+        Set<String> s = new HashSet<String>(Arrays.asList(actions.split(",")));
         int permissions = 0;
         if (s.remove(ACTION_READ)) {
             permissions |= Permission.READ;
@@ -1514,11 +1492,7 @@
             }
         }
         if (!s.isEmpty()) {
-            StringBuffer sb = new StringBuffer();
-            for (Iterator it = s.iterator(); it.hasNext();) {
-                sb.append(it.next());
-            }
-            throw new IllegalArgumentException("Unknown actions: " + sb.toString());
+            throw new IllegalArgumentException("Unknown actions: " + s);
         }
         try {
             return getAccessManager().isGranted(path, permissions);