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:34:46 UTC
svn commit: r1171166 - in
/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi:
./ state/
Author: mduerig
Date: Thu Sep 15 16:34:46 2011
New Revision: 1171166
URL: http://svn.apache.org/viewvc?rev=1171166&view=rev
Log:
Microkernel based Jackrabbit prototype (WIP)
refactor: specialise ItemManager and ItemCache to reduce 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/ItemLifeCycleListener.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/JcrLockManager.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/state/TransientItemStateManager.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=1171166&r1=1171165&r2=1171166&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:34:46 2011
@@ -23,9 +23,6 @@ import org.apache.jackrabbit.jcr2spi.sta
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;
@@ -37,7 +34,7 @@ import static org.apache.jackrabbit.spi.
public class ItemCache implements ItemLifeCycleListener {
private static final Logger log = LoggerFactory.getLogger(ItemCache.class);
- private final Map<ItemState<?>, Item> cache;
+ private final Map<ItemState<?>, ItemImpl<?>> cache;
ItemCache(int maxSize) {
cache = cast(new LRUMap(maxSize));
@@ -54,7 +51,7 @@ public class ItemCache implements ItemLi
* @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) {
+ public ItemImpl<?> getItem(ItemState<?> state) {
return cache.get(state);
}
@@ -67,8 +64,8 @@ public class ItemCache implements ItemLi
* @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);
+ public NodeImpl getNode(NodeState state) {
+ return (NodeImpl) cache.get(state);
}
/**
@@ -80,8 +77,8 @@ public class ItemCache implements ItemLi
* @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);
+ public PropertyImpl getProperty(PropertyState state) {
+ return (PropertyImpl) cache.get(state);
}
/**
@@ -94,19 +91,19 @@ public class ItemCache implements ItemLi
//----------------------------------------------< ItemLifeCycleListener >---
@Override
- public void itemCreated(Item item, ItemState<?> state) {
- cacheItem(state, item);
+ public void itemCreated(ItemImpl<?> item) {
+ cacheItem(item.getItemState(), item);
}
@Override
- public void itemUpdated(Item item, ItemState<?> state, boolean modified) {
+ public void itemUpdated(ItemImpl<?> item, boolean modified) {
// do nothing: we don't touch the cache here since the LRU
// should only be affected by client side operations.
}
@Override
- public void itemDestroyed(Item item, ItemState<?> state) {
- evictItem(state);
+ public void itemDestroyed(ItemImpl<?> item) {
+ evictItem(item.getItemState());
}
//-------------------------------------------------< item cache methods >---
@@ -117,7 +114,7 @@ public class ItemCache implements ItemLi
*
* @param item the item to cache
*/
- private synchronized void cacheItem(ItemState<?> state, Item item) {
+ private synchronized void cacheItem(ItemState<?> state, ItemImpl<?> item) {
if (log.isDebugEnabled()) {
if (cache.containsKey(state)) {
log.debug("overwriting cached item " + state);
@@ -148,9 +145,9 @@ public class ItemCache implements ItemLi
*/
public String toString() {
StringBuilder builder = new StringBuilder();
- for (Map.Entry<ItemState<?>, Item> entry : cache.entrySet()) {
+ for (Map.Entry<ItemState<?>, ItemImpl<?>> entry : cache.entrySet()) {
ItemState<?> state = entry.getKey();
- Item item = entry.getValue();
+ ItemImpl<?> item = entry.getValue();
if (item.isNode()) {
builder.append("Node: ");
} else {
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=1171166&r1=1171165&r2=1171166&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:34:46 2011
@@ -34,7 +34,6 @@ import org.slf4j.LoggerFactory;
import javax.jcr.InvalidItemStateException;
import javax.jcr.Item;
import javax.jcr.ItemNotFoundException;
-import javax.jcr.Node;
import javax.jcr.PathNotFoundException;
import javax.jcr.Repository;
import javax.jcr.RepositoryException;
@@ -104,7 +103,7 @@ public abstract class ItemImpl<STATE_TYP
}
@Override
- public Node getParent() throws RepositoryException {
+ public NodeImpl getParent() throws RepositoryException {
checkStatus();
// special treatment for root node
@@ -304,7 +303,7 @@ public abstract class ItemImpl<STATE_TYP
*/
private void notifyCreated() {
if (listener != null) {
- listener.itemCreated(this, state);
+ listener.itemCreated(this);
}
}
@@ -313,7 +312,7 @@ public abstract class ItemImpl<STATE_TYP
*/
private void notifyUpdated(boolean modified) {
if (listener != null) {
- listener.itemUpdated(this, state, modified);
+ listener.itemUpdated(this, modified);
}
}
@@ -322,7 +321,7 @@ public abstract class ItemImpl<STATE_TYP
*/
private void notifyDestroyed() {
if (listener != null) {
- listener.itemDestroyed(this, state);
+ listener.itemDestroyed(this);
listener = null; // item is gone for good
}
}
Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemLifeCycleListener.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemLifeCycleListener.java?rev=1171166&r1=1171165&r2=1171166&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemLifeCycleListener.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemLifeCycleListener.java Thu Sep 15 16:34:46 2011
@@ -16,10 +16,6 @@
*/
package org.apache.jackrabbit.jcr2spi;
-import org.apache.jackrabbit.jcr2spi.state.ItemState;
-
-import javax.jcr.Item;
-
/**
* The {@code ItemLifeCycleListener} interface allows an implementing
* object to be informed about changes on an {@code Item} instance.
@@ -31,7 +27,7 @@ public interface ItemLifeCycleListener {
*
* @param item the instance which has been created
*/
- void itemCreated(Item item, ItemState<?> state);
+ void itemCreated(ItemImpl<?> item);
/**
* Called when an {@code Item} instance has been refreshed. If
@@ -40,7 +36,7 @@ public interface ItemLifeCycleListener {
*
* @param item the instance which has been refreshed
*/
- void itemUpdated(Item item, ItemState<?> state, boolean modified);
+ void itemUpdated(ItemImpl<?> item, boolean modified);
/**
* Called when an {@code ItemImpl} instance has been destroyed
@@ -53,5 +49,5 @@ public interface ItemLifeCycleListener {
*
* @param item the instance which has been destroyed
*/
- void itemDestroyed(Item item, ItemState<?> state);
+ void itemDestroyed(ItemImpl<?> item);
}
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=1171166&r1=1171165&r2=1171166&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:34:46 2011
@@ -33,12 +33,9 @@ import org.apache.jackrabbit.spi.commons
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import javax.jcr.Item;
import javax.jcr.ItemNotFoundException;
-import javax.jcr.Node;
import javax.jcr.NodeIterator;
import javax.jcr.PathNotFoundException;
-import javax.jcr.Property;
import javax.jcr.PropertyIterator;
import javax.jcr.RepositoryException;
import java.util.Iterator;
@@ -195,7 +192,7 @@ public class ItemManager implements Item
* @throws PathNotFoundException
* @throws RepositoryException
*/
- public synchronized Node getNode(Path path) throws RepositoryException {
+ public synchronized NodeImpl getNode(Path path) throws RepositoryException {
NodeEntry nodeEntry = hierarchyManager.getNodeEntry(path);
try {
return getItem(nodeEntry);
@@ -210,7 +207,7 @@ public class ItemManager implements Item
* @throws PathNotFoundException
* @throws RepositoryException
*/
- public synchronized Property getProperty(Path path) throws RepositoryException {
+ public synchronized PropertyImpl getProperty(Path path) throws RepositoryException {
PropertyEntry propertyEntry = hierarchyManager.getPropertyEntry(path);
try {
return getItem(propertyEntry);
@@ -224,7 +221,7 @@ public class ItemManager implements Item
* @return
* @throws RepositoryException
*/
- public Node getItem(NodeEntry nodeEntry) throws RepositoryException {
+ public NodeImpl getItem(NodeEntry nodeEntry) throws RepositoryException {
session.checkIsAlive();
NodeState state = nodeEntry.getItemState();
if (!state.isValid()) {
@@ -232,7 +229,7 @@ public class ItemManager implements Item
}
// first try to access node from cache
- Node node = itemCache.getNode(state);
+ NodeImpl node = itemCache.getNode(state);
// not yet in cache, need to create instance
if (node == null) {
// create instance of node
@@ -246,7 +243,7 @@ public class ItemManager implements Item
* @return
* @throws RepositoryException
*/
- public Property getItem(PropertyEntry propertyEntry) throws RepositoryException {
+ public PropertyImpl getItem(PropertyEntry propertyEntry) throws RepositoryException {
session.checkIsAlive();
PropertyState state = propertyEntry.getItemState();
if (!state.isValid()) {
@@ -254,7 +251,7 @@ public class ItemManager implements Item
}
// first try to access property from cache
- Property property = itemCache.getProperty(state);
+ PropertyImpl property = itemCache.getProperty(state);
// not yet in cache, need to create instance
if (property == null) {
// create instance of property
@@ -269,7 +266,7 @@ public class ItemManager implements Item
* @throws ItemNotFoundException
* @throws RepositoryException
*/
- public Item getItem(HierarchyEntry<?> hierarchyEntry) throws RepositoryException {
+ public ItemImpl<?> getItem(HierarchyEntry<?> hierarchyEntry) throws RepositoryException {
if (hierarchyEntry.denotesNode()) {
return getItem((NodeEntry) hierarchyEntry);
} else {
Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/JcrLockManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/JcrLockManager.java?rev=1171166&r1=1171165&r2=1171166&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/JcrLockManager.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/JcrLockManager.java Thu Sep 15 16:34:46 2011
@@ -21,6 +21,7 @@ import org.apache.jackrabbit.spi.commons
import javax.jcr.Node;
import javax.jcr.RepositoryException;
+import javax.jcr.lock.Lock;
import javax.jcr.lock.LockManager;
/**
@@ -40,7 +41,7 @@ public class JcrLockManager implements L
//--------------------------------------------------------< LockManager >---
@Override
- public javax.jcr.lock.Lock getLock(String absPath) throws RepositoryException {
+ public Lock getLock(String absPath) throws RepositoryException {
Node n = itemManager.getNode(resolver.getQPath(absPath));
return n.getLock();
}
@@ -58,11 +59,11 @@ public class JcrLockManager implements L
}
@Override
- public javax.jcr.lock.Lock lock(String absPath, boolean isDeep, boolean isSessionScoped, long timeoutHint,
+ public Lock lock(String absPath, boolean isDeep, boolean isSessionScoped, long timeoutHint,
String ownerInfo) throws RepositoryException {
-
- Node n = itemManager.getNode(resolver.getQPath(absPath));
- return ((NodeImpl) n).lock(isDeep, isSessionScoped, timeoutHint, ownerInfo);
+
+ NodeImpl n = itemManager.getNode(resolver.getQPath(absPath));
+ return n.lock(isDeep, isSessionScoped, timeoutHint, ownerInfo);
}
@Override
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=1171166&r1=1171165&r2=1171166&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:34:46 2011
@@ -87,7 +87,7 @@ public class JcrVersionManager implement
public Version checkpoint(String absPath) throws RepositoryException {
session.checkIsAlive();
- NodeImpl n = (NodeImpl) itemManager.getNode(resolver.getQPath(absPath));
+ NodeImpl n = itemManager.getNode(resolver.getQPath(absPath));
return n.checkpoint();
}
@@ -170,7 +170,7 @@ public class JcrVersionManager implement
session.checkIsAlive();
- NodeImpl n = (NodeImpl) itemManager.getNode(resolver.getQPath(absPath));
+ NodeImpl n = itemManager.getNode(resolver.getQPath(absPath));
n.checkIsWritable();
session.checkHasPendingChanges();
@@ -207,7 +207,7 @@ public class JcrVersionManager implement
public Node createConfiguration(String absPath) throws RepositoryException {
session.checkIsAlive();
- NodeImpl n = (NodeImpl) itemManager.getNode(resolver.getQPath(absPath));
+ NodeImpl n = itemManager.getNode(resolver.getQPath(absPath));
NodeEntry entry = vMgr.createConfiguration(n.getItemState());
return itemManager.getItem(entry);
}
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=1171166&r1=1171165&r2=1171166&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:34:46 2011
@@ -166,7 +166,7 @@ public class NodeImpl extends ItemImpl<N
Path parentPath = nodePath.getAncestor(1);
ItemManager itemMgr = getItemManager();
if (itemMgr.nodeExists(parentPath)) {
- parentNode = (NodeImpl) itemMgr.getNode(parentPath);
+ parentNode = itemMgr.getNode(parentPath);
} else if (itemMgr.propertyExists(parentPath)) {
String msg = "Cannot add a node to property " + LogUtil.safeGetJCRPath(parentPath, session.getNamePathResolver());
log.debug(msg);
@@ -933,7 +933,7 @@ public class NodeImpl extends ItemImpl<N
NodeImpl referenceableNode = this;
while (referenceableNode.getDepth() != Path.ROOT_DEPTH
&& !referenceableNode.isNodeType(NameConstants.MIX_REFERENCEABLE)) {
- referenceableNode = (NodeImpl) referenceableNode.getParent();
+ referenceableNode = referenceableNode.getParent();
}
// if root is common ancestor, corresponding path is same as ours
@@ -1008,9 +1008,9 @@ public class NodeImpl extends ItemImpl<N
Path parentPath = nPath.getAncestor(1);
ItemManager itemMgr = getItemManager();
if (itemMgr.nodeExists(parentPath)) {
- Node parent = itemMgr.getNode(parentPath);
+ NodeImpl parent = itemMgr.getNode(parentPath);
Path relQPath = parentPath.computeRelativePath(nPath);
- NodeImpl parentNode = (NodeImpl) parent;
+ NodeImpl parentNode = parent;
// call the restore
restore(parentNode, relQPath, version, removeExisting);
} else if (itemMgr.propertyExists(parentPath)) {
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=1171166&r1=1171165&r2=1171166&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:34:46 2011
@@ -244,8 +244,8 @@ public class SessionImpl extends Abstrac
@Override
public Node getNodeByUUID(String uuid) throws RepositoryException {
// sanity check performed by getNodeById
- Node node = getNodeById(getIdFactory().createNodeId(uuid));
- if (node instanceof NodeImpl && ((NodeImpl)node).isNodeType(NameConstants.MIX_REFERENCEABLE)) {
+ NodeImpl node = getNodeById(getIdFactory().createNodeId(uuid));
+ if (node.isNodeType(NameConstants.MIX_REFERENCEABLE)) {
return node;
} else {
// fall back
@@ -267,18 +267,12 @@ public class SessionImpl extends Abstrac
* {@code Session} does not have permission to access the node.
* @throws RepositoryException
*/
- private Node getNodeById(NodeId id) throws RepositoryException {
+ private NodeImpl getNodeById(NodeId id) throws RepositoryException {
// check sanity of this session
checkIsAlive();
try {
NodeEntry nodeEntry = getHierarchyManager().getNodeEntry(id);
- Item item = itemManager.getItem(nodeEntry);
- if (item.isNode()) {
- return (Node) item;
- } else {
- log.error("NodeId '" + id + " does not point to a Node");
- throw new ItemNotFoundException(LogUtil.saveGetIdString(id, getNamePathResolver()));
- }
+ return itemManager.getItem(nodeEntry);
} catch (AccessDeniedException e) {
throw new ItemNotFoundException(LogUtil.saveGetIdString(id, getNamePathResolver()));
}
Modified: jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/TransientItemStateManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/TransientItemStateManager.java?rev=1171166&r1=1171165&r2=1171166&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/TransientItemStateManager.java (original)
+++ jackrabbit/sandbox/jackrabbit-mk/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/TransientItemStateManager.java Thu Sep 15 16:34:46 2011
@@ -37,6 +37,8 @@ import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.Set;
+import static org.apache.jackrabbit.spi.commons.util.Unchecked.cast;
+
/**
* {@code TransientItemStateManager} adds support for transient changes on
* {@link ItemState}s and also provides methods to create new item states.
@@ -170,7 +172,7 @@ public class TransientItemStateManager i
chain.addIterator(staleStates.iterator());
}
while (chain.hasNext()) {
- ItemState<?> state = (ItemState<?>) chain.next();
+ ItemState<?> state = cast(chain.next());
if (containedInTree(target, state)) {
affectedStates.add(state);
}