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/12/16 15:06:41 UTC

svn commit: r891242 - in /jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core: persistence/bundle/ persistence/pool/ security/authorization/ security/principal/ state/

Author: jukka
Date: Wed Dec 16 14:06:40 2009
New Revision: 891242

URL: http://svn.apache.org/viewvc?rev=891242&view=rev
Log:
JCR-2435: [patch] Fix overly specific casting in core

Patch by Dave Brosius, plus some Java 5 cleanups to ChildNodeEntries

Modified:
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/AbstractBundlePersistenceManager.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/pool/AbstractBundlePersistenceManager.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/AbstractAccessControlProvider.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProvider.java
    jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/ChildNodeEntries.java

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/AbstractBundlePersistenceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/AbstractBundlePersistenceManager.java?rev=891242&r1=891241&r2=891242&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/AbstractBundlePersistenceManager.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/bundle/AbstractBundlePersistenceManager.java Wed Dec 16 14:06:40 2009
@@ -251,7 +251,7 @@
                 if (nsFile.exists()) {
                     nsIndex = new HashMapIndex(nsFile);
                 } else {
-                    nsIndex = (NamespaceRegistryImpl) context.getNamespaceRegistry();
+                    nsIndex = (StringIndex) context.getNamespaceRegistry();
                 }
             }
             return nsIndex;

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/pool/AbstractBundlePersistenceManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/pool/AbstractBundlePersistenceManager.java?rev=891242&r1=891241&r2=891242&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/pool/AbstractBundlePersistenceManager.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/persistence/pool/AbstractBundlePersistenceManager.java Wed Dec 16 14:06:40 2009
@@ -251,7 +251,7 @@
                 if (nsFile.exists()) {
                     nsIndex = new HashMapIndex(nsFile);
                 } else {
-                    nsIndex = (NamespaceRegistryImpl) context.getNamespaceRegistry();
+                    nsIndex = (StringIndex) context.getNamespaceRegistry();
                 }
             }
             return nsIndex;

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/AbstractAccessControlProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/AbstractAccessControlProvider.java?rev=891242&r1=891241&r2=891242&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/AbstractAccessControlProvider.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/authorization/AbstractAccessControlProvider.java Wed Dec 16 14:06:40 2009
@@ -174,7 +174,7 @@
         }
         session = (SessionImpl) systemSession;
         observationMgr = systemSession.getWorkspace().getObservationManager();
-        resolver = (SessionImpl) systemSession;
+        resolver = (NamePathResolver) systemSession;
 
         privAll = PrivilegeRegistry.getBits(new Privilege[] {session.getAccessControlManager().privilegeFromName(Privilege.JCR_ALL)});
         privRead = PrivilegeRegistry.getBits(new Privilege[] {session.getAccessControlManager().privilegeFromName(Privilege.JCR_READ)});
@@ -196,4 +196,4 @@
     public boolean isLive() {
         return initialized && session.isLive();
     }
-}
\ No newline at end of file
+}

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProvider.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProvider.java?rev=891242&r1=891241&r2=891242&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProvider.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/security/principal/DefaultPrincipalProvider.java Wed Dec 16 14:06:40 2009
@@ -93,7 +93,7 @@
         // listen to modifications of group-membership
         String[] ntNames = new String[1];
         if (securitySession instanceof SessionImpl) {
-            NameResolver resolver = (SessionImpl) securitySession;
+            NameResolver resolver = (NameResolver) securitySession;
             ntNames[0] = resolver.getJCRName(UserManagerImpl.NT_REP_GROUP);
             pMembers = resolver.getJCRName(UserManagerImpl.P_MEMBERS);
             pPrincipalName = resolver.getJCRName(UserManagerImpl.P_PRINCIPAL_NAME);

Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/ChildNodeEntries.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/ChildNodeEntries.java?rev=891242&r1=891241&r2=891242&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/ChildNodeEntries.java (original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/state/ChildNodeEntries.java Wed Dec 16 14:06:40 2009
@@ -68,20 +68,22 @@
         return (ChildNodeEntry) entries.get(id);
     }
 
+    @SuppressWarnings("unchecked")
     List<ChildNodeEntry> get(Name nodeName) {
         Object obj = nameMap.get(nodeName);
         if (obj == null) {
             return Collections.emptyList();
         }
-        if (obj instanceof ArrayList<?>) {
+        if (obj instanceof List<?>) {
             // map entry is a list of siblings
-            return Collections.unmodifiableList((ArrayList<ChildNodeEntry>) obj);
+            return Collections.unmodifiableList((List<ChildNodeEntry>) obj);
         } else {
             // map entry is a single child node entry
             return Collections.singletonList((ChildNodeEntry) obj);
         }
     }
 
+    @SuppressWarnings("unchecked")
     ChildNodeEntry get(Name nodeName, int index) {
         if (index < 1) {
             throw new IllegalArgumentException("index is 1-based");
@@ -91,9 +93,9 @@
         if (obj == null) {
             return null;
         }
-        if (obj instanceof ArrayList<?>) {
+        if (obj instanceof List<?>) {
             // map entry is a list of siblings
-            ArrayList<ChildNodeEntry> siblings = (ArrayList<ChildNodeEntry>) obj;
+            List<ChildNodeEntry> siblings = (List<ChildNodeEntry>) obj;
             if (index <= siblings.size()) {
                 return siblings.get(index - 1);
             }
@@ -106,25 +108,26 @@
         return null;
     }
 
+    @SuppressWarnings("unchecked")
     ChildNodeEntry add(Name nodeName, NodeId id) {
         ensureModifiable();
-        List<Object> siblings = null;
+        List<ChildNodeEntry> siblings = null;
         int index = 0;
         Object obj = nameMap.get(nodeName);
         if (obj != null) {
-            if (obj instanceof ArrayList<?>) {
+            if (obj instanceof List<?>) {
                 // map entry is a list of siblings
-                siblings = (ArrayList<Object>) obj;
+                siblings = (List<ChildNodeEntry>) obj;
                 if (siblings.size() > 0) {
                     // reuse immutable Name instance from 1st same name sibling
                     // in order to help gc conserving memory
-                    nodeName = ((ChildNodeEntry) siblings.get(0)).getName();
+                    nodeName = siblings.get(0).getName();
                 }
             } else {
                 // map entry is a single child node entry,
                 // convert to siblings list
-                siblings = new ArrayList<Object>();
-                siblings.add(obj);
+                siblings = new ArrayList<ChildNodeEntry>();
+                siblings.add((ChildNodeEntry) obj);
                 nameMap.put(nodeName, siblings);
             }
             index = siblings.size();
@@ -150,6 +153,7 @@
         }
     }
 
+    @SuppressWarnings("unchecked")
     public ChildNodeEntry remove(Name nodeName, int index) {
         if (index < 1) {
             throw new IllegalArgumentException("index is 1-based");
@@ -173,7 +177,7 @@
         }
 
         // map entry is a list of siblings
-        List<ChildNodeEntry> siblings = (ArrayList<ChildNodeEntry>) obj;
+        List<ChildNodeEntry> siblings = (List<ChildNodeEntry>) obj;
         if (index > siblings.size()) {
             return null;
         }
@@ -315,10 +319,9 @@
         }
     }
 
-    public boolean containsAll(Collection c) {
-        Iterator iter = c.iterator();
-        while (iter.hasNext()) {
-            if (!contains(iter.next())) {
+    public boolean containsAll(Collection<?> c) {
+        for (Object entry : c) {
+            if (!contains(entry)) {
                 return false;
             }
         }
@@ -379,6 +382,7 @@
         return toArray(array);
     }
 
+    @SuppressWarnings("unchecked")
     public Object[] toArray(Object[] a) {
         if (!a.getClass().getComponentType().isAssignableFrom(ChildNodeEntry.class)) {
             throw new ArrayStoreException();
@@ -407,11 +411,11 @@
         throw new UnsupportedOperationException();
     }
 
-    public boolean addAll(Collection c) {
+    public boolean addAll(Collection<? extends ChildNodeEntry> c) {
         throw new UnsupportedOperationException();
     }
 
-    public boolean addAll(int index, Collection c) {
+    public boolean addAll(int index, Collection<? extends ChildNodeEntry> c) {
         throw new UnsupportedOperationException();
     }
 
@@ -427,11 +431,11 @@
         throw new UnsupportedOperationException();
     }
 
-    public boolean removeAll(Collection c) {
+    public boolean removeAll(Collection<?> c) {
         throw new UnsupportedOperationException();
     }
 
-    public boolean retainAll(Collection c) {
+    public boolean retainAll(Collection<?> c) {
         throw new UnsupportedOperationException();
     }
 
@@ -492,7 +496,7 @@
      * Initializes the name and entries map with unmodifiable empty instances.
      */
     private void init() {
-        nameMap = Collections.EMPTY_MAP;
+        nameMap = Collections.emptyMap();
         entries = EmptyLinkedMap.INSTANCE;
         shared = false;
     }
@@ -501,18 +505,19 @@
      * Ensures that the {@link #nameMap} and {@link #entries} map are
      * modifiable.
      */
+    @SuppressWarnings("unchecked")
     private void ensureModifiable() {
         if (nameMap == Collections.EMPTY_MAP) {
             nameMap = new HashMap<Name, Object>();
             entries = new LinkedMap();
         } else if (shared) {
             entries = (LinkedMap) entries.clone();
-            nameMap = (Map<Name, Object>) ((HashMap<Name, Object>) nameMap).clone();
-            for (Iterator it = nameMap.entrySet().iterator(); it.hasNext(); ) {
-                Map.Entry entry = (Map.Entry) it.next();
+            nameMap = new HashMap<Name, Object>(nameMap);
+            for (Map.Entry<Name, Object> entry : nameMap.entrySet()) {
                 Object value = entry.getValue();
-                if (value instanceof ArrayList) {
-                    entry.setValue(((ArrayList) value).clone());
+                if (value instanceof List<?>) {
+                    entry.setValue(new ArrayList<ChildNodeEntry>(
+                            (List<ChildNodeEntry>) value));
                 }
             }
             shared = false;