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/14 23:20:13 UTC
svn commit: r1170850 - in
/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi:
ItemManager.java ItemManagerImpl.java SessionImpl.java
query/RowIteratorImpl.java
Author: mduerig
Date: Wed Sep 14 21:20:13 2011
New Revision: 1170850
URL: http://svn.apache.org/viewvc?rev=1170850&view=rev
Log:
Microkernel based Jackrabbit prototype (WIP)
refactor: remove ItemManager interface
Added:
jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManager.java
- copied, changed from r1170733, jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManagerImpl.java
Modified:
jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManagerImpl.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
Copied: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManager.java (from r1170733, jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManagerImpl.java)
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManager.java?p2=jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManager.java&p1=jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManagerImpl.java&r1=1170733&r2=1170850&rev=1170850&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManagerImpl.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemManager.java Wed Sep 14 21:20:13 2011
@@ -44,10 +44,29 @@ import javax.jcr.RepositoryException;
import java.util.Iterator;
/**
- * {@code ItemManagerImpl} implements the {@code ItemManager} interface.
+ * There's one {@code ItemManager} instance per {@code Session}
+ * instance. It is the factory for {@code Node} and {@code Property}
+ * instances.
+ * <p/>
+ * The {@code ItemManager}'s responsibilities are:
+ * <ul>
+ * <li>providing access to {@code Item} instances by {@code ItemState}
+ * whereas {@code Node} and {@code Item} are only providing relative access.
+ * <li>returning the instance of an existing {@code Node} or {@code Property},
+ * given its absolute path.
+ * <li>creating the per-session instance of a {@code Node}
+ * or {@code Property} that doesn't exist yet and needs to be created first.
+ * <li>guaranteeing that there aren't multiple instances representing the same
+ * {@code Node} or {@code Property} associated with the same
+ * {@code Session} instance.
+ * <li>maintaining a cache of the item instances it created.
+ * </ul>
+ * <p/>
+ * If the parent {@code Session} is an {@code XASession}, there is
+ * one {@code ItemManager} instance per started global transaction.
*/
-public class ItemManagerImpl implements ItemManager, ItemStateCreationListener {
- private static final Logger log = LoggerFactory.getLogger(ItemManagerImpl.class);
+public class ItemManager implements ItemStateCreationListener {
+ private static final Logger log = LoggerFactory.getLogger(ItemManager.class);
private final SessionImpl session;
@@ -69,7 +88,7 @@ public class ItemManagerImpl implements
* @param session the session associated with the new instance
* @param cache the ItemCache to be used.
*/
- ItemManagerImpl(HierarchyManager hierarchyManager, SessionImpl session, ItemCache cache) {
+ ItemManager(HierarchyManager hierarchyManager, SessionImpl session, ItemCache cache) {
this.hierarchyManager = hierarchyManager;
this.session = session;
itemCache = cache;
@@ -82,7 +101,9 @@ public class ItemManagerImpl implements
//--------------------------------------------------------< ItemManager >---
- @Override
+ /**
+ * Disposes this {@code ItemManager} and frees resources.
+ */
public void dispose() {
// stop listening
WorkspaceImpl wsp = session.getWorkspace();
@@ -91,7 +112,12 @@ public class ItemManagerImpl implements
itemCache.clear();
}
- @Override
+ /**
+ * Checks if the node with the given path exists.
+ *
+ * @param path path to the node to be checked
+ * @return true if the specified item exists
+ */
public boolean nodeExists(Path path) {
try {
// session-sanity & permissions are checked upon itemExists(ItemState)
@@ -106,7 +132,12 @@ public class ItemManagerImpl implements
}
}
- @Override
+ /**
+ * Checks if the property with the given path exists.
+ *
+ * @param path path to the property to be checked
+ * @return true if the specified item exists
+ */
public boolean propertyExists(Path path) {
try {
// session-sanity & permissions are checked upon itemExists(ItemState)
@@ -121,7 +152,12 @@ public class ItemManagerImpl implements
}
}
- @Override
+ /**
+ * Checks if the item for given HierarchyEntry exists.
+ *
+ * @param hierarchyEntry
+ * @return true if the specified item exists
+ */
public boolean itemExists(HierarchyEntry hierarchyEntry) {
try {
// session-sanity & permissions are checked upon itemExists(ItemState)
@@ -153,7 +189,12 @@ public class ItemManagerImpl implements
}
}
- @Override
+ /**
+ * @param path
+ * @return
+ * @throws PathNotFoundException
+ * @throws RepositoryException
+ */
public synchronized Node getNode(Path path) throws RepositoryException {
NodeEntry nodeEntry = hierarchyManager.getNodeEntry(path);
try {
@@ -163,7 +204,12 @@ public class ItemManagerImpl implements
}
}
- @Override
+ /**
+ * @param path
+ * @return
+ * @throws PathNotFoundException
+ * @throws RepositoryException
+ */
public synchronized Property getProperty(Path path) throws RepositoryException {
PropertyEntry propertyEntry = hierarchyManager.getPropertyEntry(path);
try {
@@ -173,7 +219,12 @@ public class ItemManagerImpl implements
}
}
- @Override
+ /**
+ * @param hierarchyEntry
+ * @return
+ * @throws ItemNotFoundException
+ * @throws RepositoryException
+ */
public Item getItem(HierarchyEntry hierarchyEntry) throws RepositoryException {
session.checkIsAlive();
ItemState state = hierarchyEntry.getItemState();
@@ -195,7 +246,12 @@ public class ItemManagerImpl implements
return item;
}
- @Override
+ /**
+ * @param parentEntry
+ * @return
+ * @throws ItemNotFoundException
+ * @throws RepositoryException
+ */
public synchronized boolean hasChildNodes(NodeEntry parentEntry) throws RepositoryException {
// check sanity of session
session.checkIsAlive();
@@ -215,7 +271,12 @@ public class ItemManagerImpl implements
return false;
}
- @Override
+ /**
+ * @param parentEntry
+ * @return
+ * @throws ItemNotFoundException
+ * @throws RepositoryException
+ */
public synchronized NodeIterator getChildNodes(NodeEntry parentEntry) throws RepositoryException {
// check sanity of session
session.checkIsAlive();
@@ -224,7 +285,12 @@ public class ItemManagerImpl implements
return LazyItemIterator.nodeIterator(this, it);
}
- @Override
+ /**
+ * @param parentEntry
+ * @return
+ * @throws ItemNotFoundException
+ * @throws RepositoryException
+ */
public synchronized boolean hasProperties(NodeEntry parentEntry) throws RepositoryException {
// check sanity of session
session.checkIsAlive();
@@ -244,7 +310,12 @@ public class ItemManagerImpl implements
return false;
}
- @Override
+ /**
+ * @param parentEntry
+ * @return
+ * @throws ItemNotFoundException
+ * @throws RepositoryException
+ */
public synchronized PropertyIterator getProperties(NodeEntry parentEntry) throws RepositoryException {
// check sanity of session
session.checkIsAlive();
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=1170850&r1=1170849&r2=1170850&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 Wed Sep 14 21:20:13 2011
@@ -149,7 +149,7 @@ public class SessionImpl extends Abstrac
HierarchyManagerImpl hMgr = getHierarchyManager();
ItemCache cache = new ItemCacheImpl(this.config.getItemCacheSize());
- itemManager = new ItemManagerImpl(hMgr, this, cache);
+ itemManager = new ItemManager(hMgr, this, cache);
if (hMgr instanceof HierarchyManagerImpl) {
hMgr.setResolver(npResolver);
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=1170850&r1=1170849&r2=1170850&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 Wed Sep 14 21:20:13 2011
@@ -16,10 +16,15 @@
*/
package org.apache.jackrabbit.jcr2spi.query;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.NoSuchElementException;
+import org.apache.jackrabbit.jcr2spi.ItemManager;
+import org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyManager;
+import org.apache.jackrabbit.spi.NodeId;
+import org.apache.jackrabbit.spi.QValue;
+import org.apache.jackrabbit.spi.QueryInfo;
+import org.apache.jackrabbit.spi.QueryResultRow;
+import org.apache.jackrabbit.spi.commons.conversion.NameException;
+import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
+import org.apache.jackrabbit.spi.commons.value.ValueFormat;
import javax.jcr.ItemNotFoundException;
import javax.jcr.Node;
@@ -29,16 +34,10 @@ import javax.jcr.Value;
import javax.jcr.ValueFactory;
import javax.jcr.query.Row;
import javax.jcr.query.RowIterator;
-
-import org.apache.jackrabbit.spi.QValue;
-import org.apache.jackrabbit.spi.QueryInfo;
-import org.apache.jackrabbit.spi.QueryResultRow;
-import org.apache.jackrabbit.spi.NodeId;
-import org.apache.jackrabbit.spi.commons.conversion.NameException;
-import org.apache.jackrabbit.spi.commons.conversion.NamePathResolver;
-import org.apache.jackrabbit.spi.commons.value.ValueFormat;
-import org.apache.jackrabbit.jcr2spi.ItemManager;
-import org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyManager;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.NoSuchElementException;
/**
* Implements the {@link javax.jcr.query.RowIterator} interface returned by