You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by md...@apache.org on 2011/09/15 18:00:16 UTC

svn commit: r1171155 - in /jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi: ./ query/ version/

Author: mduerig
Date: Thu Sep 15 16:00:15 2011
New Revision: 1171155

URL: http://svn.apache.org/viewvc?rev=1171155&view=rev
Log:
Microkernel based Jackrabbit prototype (WIP) 
refactor: specialise ItemManager to avoid down casting

Modified:
    jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemCache.java
    jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java
    jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManager.java
    jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/JcrVersionManager.java
    jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java
    jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/SessionImpl.java
    jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/RowIteratorImpl.java
    jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionHistoryImpl.java

Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemCache.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemCache.java?rev=1171155&r1=1171154&r2=1171155&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemCache.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemCache.java Thu Sep 15 16:00:15 2011
@@ -18,10 +18,14 @@ package org.apache.jackrabbit.jcr2spi;
 
 import org.apache.commons.collections.map.LRUMap;
 import org.apache.jackrabbit.jcr2spi.state.ItemState;
+import org.apache.jackrabbit.jcr2spi.state.NodeState;
+import org.apache.jackrabbit.jcr2spi.state.PropertyState;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import javax.jcr.Item;
+import javax.jcr.Node;
+import javax.jcr.Property;
 import javax.jcr.RepositoryException;
 import java.util.Map;
 
@@ -42,19 +46,45 @@ public class ItemCache implements ItemLi
     //----------------------------------------------------------< ItemCache >---
 
     /**
-    * Returns the cached {@code Item} that belongs to the given
-    * {@code ItemState} or {@code null} if the cache does not
-    * contain that {@code Item}.
-    *
-    * @param state State of the item that should be retrieved.
-    * @return The item reference stored in the corresponding cache entry
-    * or {@code null} if there's no corresponding cache entry.
-    */
+     * Returns the cached {@code Item} that belongs to the given
+     * {@code ItemState} or {@code null} if the cache does not
+     * contain that {@code Item}.
+     *
+     * @param state State of the item that should be retrieved.
+     * @return The item reference stored in the corresponding cache entry
+     * or {@code null} if there's no corresponding cache entry.
+     */
     public Item getItem(ItemState<?> state) {
         return cache.get(state);
     }
 
     /**
+     * Returns the cached {@code Node} that belongs to the given
+     * {@code NodeState} or {@code null} if the cache does not
+     * contain that {@code Node}.
+     *
+     * @param state State of the node that should be retrieved.
+     * @return The node reference stored in the corresponding cache entry
+     * or {@code null} if there's no corresponding cache entry.
+     */
+    public Node getNode(NodeState state) {
+        return (Node) cache.get(state);
+    }
+
+    /**
+     * Returns the cached {@code Property} that belongs to the given
+     * {@code PropertyState} or {@code null} if the cache does not
+     * contain that {@code Property}.
+     *
+     * @param state State of the property that should be retrieved.
+     * @return The property reference stored in the corresponding cache entry
+     * or {@code null} if there's no corresponding cache entry.
+     */
+    public Property getProperty(PropertyState state) {
+        return (Property) cache.get(state);
+    }
+
+    /**
      * Clear all entries in the ItemCache and free resources.
      */
     public void clear() {

Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java?rev=1171155&r1=1171154&r2=1171155&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java Thu Sep 15 16:00:15 2011
@@ -115,7 +115,7 @@ public abstract class ItemImpl<STATE_TYP
         }
 
         NodeEntry parentEntry = getItemState().getHierarchyEntry().getParent();
-        return (Node) getItemManager().getItem(parentEntry);
+        return getItemManager().getItem(parentEntry);
     }
 
     @Override

Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManager.java?rev=1171155&r1=1171154&r2=1171155&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManager.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManager.java Thu Sep 15 16:00:15 2011
@@ -198,7 +198,7 @@ public class ItemManager implements Item
     public synchronized Node getNode(Path path) throws RepositoryException {
         NodeEntry nodeEntry = hierarchyManager.getNodeEntry(path);
         try {
-            return (Node) getItem(nodeEntry);
+            return getItem(nodeEntry);
         } catch (ItemNotFoundException e) {
             throw new PathNotFoundException(LogUtil.safeGetJCRPath(path, session.getNamePathResolver()));
         }
@@ -213,37 +213,68 @@ public class ItemManager implements Item
     public synchronized Property getProperty(Path path) throws RepositoryException {
         PropertyEntry propertyEntry = hierarchyManager.getPropertyEntry(path);
         try {
-            return (Property) getItem(propertyEntry);
+            return getItem(propertyEntry);
         } catch (ItemNotFoundException e) {
             throw new PathNotFoundException(LogUtil.safeGetJCRPath(path, session.getNamePathResolver()));
         }
     }
 
     /**
-     * @param hierarchyEntry
+     * @param nodeEntry
      * @return
-     * @throws ItemNotFoundException
      * @throws RepositoryException
      */
-    public Item getItem(HierarchyEntry<?> hierarchyEntry) throws RepositoryException {
+    public Node getItem(NodeEntry nodeEntry) throws RepositoryException {
         session.checkIsAlive();
-        ItemState<?> state = hierarchyEntry.getItemState();
+        NodeState state = nodeEntry.getItemState();
         if (!state.isValid()) {
             throw new ItemNotFoundException(LogUtil.safeGetJCRPath(state, session.getNamePathResolver()));
         }
 
-        // first try to access item from cache
-        Item item = itemCache.getItem(state);
+        // first try to access node from cache
+        Node node = itemCache.getNode(state);
         // not yet in cache, need to create instance
-        if (item == null) {
-            // create instance of item
-            if (hierarchyEntry.denotesNode()) {
-                item = createNodeInstance((NodeState) state);
-            } else {
-                item = createPropertyInstance((PropertyState) state);
-            }
+        if (node == null) {
+        // create instance of node
+            node = createNodeInstance(state);
+        }
+        return node;
+    }
+
+    /**
+     * @param propertyEntry
+     * @return
+     * @throws RepositoryException
+     */
+    public Property getItem(PropertyEntry propertyEntry) throws RepositoryException {
+        session.checkIsAlive();
+        PropertyState state = propertyEntry.getItemState();
+        if (!state.isValid()) {
+            throw new ItemNotFoundException(LogUtil.safeGetJCRPath(state, session.getNamePathResolver()));
+        }
+
+        // first try to access property from cache
+        Property property = itemCache.getProperty(state);
+        // not yet in cache, need to create instance
+        if (property == null) {
+        // create instance of property
+            property = createPropertyInstance(state);
+        }
+        return property;
+    }
+
+    /**
+     * @param hierarchyEntry
+     * @return
+     * @throws ItemNotFoundException
+     * @throws RepositoryException
+     */
+    public Item getItem(HierarchyEntry<?> hierarchyEntry) throws RepositoryException {
+        if (hierarchyEntry.denotesNode()) {
+            return getItem((NodeEntry) hierarchyEntry);
+        } else {
+            return getItem((PropertyEntry) hierarchyEntry);
         }
-        return item;
     }
 
     /**

Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/JcrVersionManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/JcrVersionManager.java?rev=1171155&r1=1171154&r2=1171155&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/JcrVersionManager.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/JcrVersionManager.java Thu Sep 15 16:00:15 2011
@@ -209,7 +209,7 @@ public class JcrVersionManager implement
 
         NodeImpl n = (NodeImpl) itemManager.getNode(resolver.getQPath(absPath));
         NodeEntry entry = vMgr.createConfiguration(n.getItemState());
-        return (Node) itemManager.getItem(entry);
+        return itemManager.getItem(entry);
     }
 
     @Override
@@ -237,7 +237,7 @@ public class JcrVersionManager implement
             return null;
         } else {
             try {
-                return (Node) itemManager.getItem(session.getHierarchyManager().getNodeEntry(activityId));
+                return itemManager.getItem(session.getHierarchyManager().getNodeEntry(activityId));
             } catch (ItemNotFoundException e) {
                 // the activity doesn't exist any more.
                 log.warn("Activity node with id " + activityId + " doesn't exist any more.");
@@ -252,7 +252,7 @@ public class JcrVersionManager implement
         session.checkIsAlive();
 
         NodeEntry entry = vMgr.createActivity(title);
-        return (Node) itemManager.getItem(entry);
+        return itemManager.getItem(entry);
     }
 
     @Override

Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java?rev=1171155&r1=1171154&r2=1171155&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/NodeImpl.java Thu Sep 15 16:00:15 2011
@@ -387,7 +387,7 @@ public class NodeImpl extends ItemImpl<N
             throw new PathNotFoundException(relPath);
         }
         try {
-            return (Node) getItemManager().getItem(nodeEntry);
+            return getItemManager().getItem(nodeEntry);
         } catch (ItemNotFoundException e) {
             throw new PathNotFoundException(relPath, e);
         }
@@ -433,7 +433,7 @@ public class NodeImpl extends ItemImpl<N
             throw new PathNotFoundException(relPath);
         }
         try {
-            return (Property) getItemManager().getItem(entry);
+            return getItemManager().getItem(entry);
         } catch (AccessDeniedException e) {
             throw new PathNotFoundException(relPath);
         } catch (ItemNotFoundException e) {
@@ -1352,7 +1352,7 @@ public class NodeImpl extends ItemImpl<N
             if (nEntry == null) {
                 throw new PathNotFoundException(LogUtil.saveGetJCRName(nodeName, session.getNamePathResolver()));
             }
-            return (Node) getItemManager().getItem(nEntry);
+            return getItemManager().getItem(nEntry);
         } catch (AccessDeniedException e) {
             throw new PathNotFoundException(LogUtil.saveGetJCRName(nodeName, session.getNamePathResolver()));
         }
@@ -1372,7 +1372,7 @@ public class NodeImpl extends ItemImpl<N
             if (pEntry == null) {
                 throw new PathNotFoundException(LogUtil.saveGetJCRName(qName, session.getNamePathResolver()));
             }
-            return (Property) getItemManager().getItem(pEntry);
+            return getItemManager().getItem(pEntry);
         } catch (AccessDeniedException e) {
             throw new PathNotFoundException(LogUtil.saveGetJCRName(qName, session.getNamePathResolver()));
         }

Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/SessionImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/SessionImpl.java?rev=1171155&r1=1171154&r2=1171155&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/SessionImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/SessionImpl.java Thu Sep 15 16:00:15 2011
@@ -235,7 +235,7 @@ public class SessionImpl extends Abstrac
         checkIsAlive();
 
         NodeEntry re = getHierarchyManager().getRootEntry();
-        return (Node) itemManager.getItem(re);
+        return itemManager.getItem(re);
     }
 
     /**

Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/RowIteratorImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/RowIteratorImpl.java?rev=1171155&r1=1171154&r2=1171155&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/RowIteratorImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/query/RowIteratorImpl.java Thu Sep 15 16:00:15 2011
@@ -341,7 +341,7 @@ class RowIteratorImpl implements RowIter
         private Node getNode(NodeId id) throws RepositoryException {
             Node node = null;
             if (id != null) {
-                node = (Node) itemMgr.getItem(hierarchyManager.getNodeEntry(id));
+                node = itemMgr.getItem(hierarchyManager.getNodeEntry(id));
             }
             return node;
         }

Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionHistoryImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionHistoryImpl.java?rev=1171155&r1=1171154&r2=1171155&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionHistoryImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/version/VersionHistoryImpl.java Thu Sep 15 16:00:15 2011
@@ -35,7 +35,6 @@ import org.slf4j.LoggerFactory;
 import javax.jcr.Item;
 import javax.jcr.Node;
 import javax.jcr.NodeIterator;
-import javax.jcr.Property;
 import javax.jcr.RepositoryException;
 import javax.jcr.UnsupportedRepositoryOperationException;
 import javax.jcr.nodetype.ConstraintViolationException;
@@ -341,7 +340,7 @@ public class VersionHistoryImpl extends 
         if (pEntry == null) {
             throw new VersionException("Version with label '" + qLabel + "' does not exist.");
         }
-        Node version = ((Property) getItemManager().getItem(pEntry)).getNode();
+        Node version = getItemManager().getItem(pEntry).getNode();
         return (Version) version;
     }