You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by mr...@apache.org on 2006/08/18 10:47:19 UTC
svn commit: r432523 - in
/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state:
SessionItemStateManager.java TransientItemStateManager.java
Author: mreutegg
Date: Fri Aug 18 01:47:16 2006
New Revision: 432523
URL: http://svn.apache.org/viewvc?rev=432523&view=rev
Log:
- Implement SessionItemStateManager.getRootState()
- Use ItemState from TransientItemStateManager and check status in methods SessionItemStateManager.getItemState() and SessionItemStateManager.hasItemState()
- Rename some methods in TransientItemStateManager to clarify their use.
- Remove unused metho TransientItemStateManager.moveItemStateToAttic().
Modified:
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/SessionItemStateManager.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/TransientItemStateManager.java
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/SessionItemStateManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/SessionItemStateManager.java?rev=432523&r1=432522&r2=432523&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/SessionItemStateManager.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/SessionItemStateManager.java Fri Aug 18 01:47:16 2006
@@ -112,11 +112,6 @@
private final ItemStateValidator validator;
/**
- * The root node state or <code>null</code> if it hasn't been retrieved yet.
- */
- private NodeState rootNodeState;
-
- /**
* Creates a new <code>SessionItemStateManager</code> instance.
*
* @param workspaceItemStateMgr
@@ -154,8 +149,8 @@
* @see ItemStateManager#getRootState()
*/
public NodeState getRootState() throws ItemStateException {
- // TODO
- return null;
+ // always retrieve from transientStateMgr
+ return transientStateMgr.getRootState();
}
/**
@@ -165,29 +160,13 @@
public ItemState getItemState(ItemId id)
throws NoSuchItemStateException, ItemStateException {
- // first check if the specified item has been transiently removed
- if (transientStateMgr.getAttic().hasItemState(id)) {
- /**
- * check if there's new transient state for the specified item
- * (e.g. if a property with name 'x' has been removed and a new
- * property with same name has been created);
- * this will throw a NoSuchItemStateException if there's no new
- * transient state
- */
- return transientStateMgr.getItemState(id);
- }
-
- // check if there's transient state for the specified item
- if (transientStateMgr.hasItemState(id)) {
- return transientStateMgr.getItemState(id);
- }
-
- // check if there's persistent state for the specified item
- if (workspaceItemStateMgr.hasItemState(id)) {
- return workspaceItemStateMgr.getItemState(id);
+ ItemState itemState = transientStateMgr.getItemState(id);
+ // check status of ItemState. Transient ISM also returns removed ItemStates
+ if (itemState.isValid()) {
+ return itemState;
+ } else {
+ throw new NoSuchItemStateException(id.toString());
}
-
- throw new NoSuchItemStateException(id.toString());
}
/**
@@ -195,21 +174,19 @@
* @see ItemStateManager#hasItemState(ItemId)
*/
public boolean hasItemState(ItemId id) {
- // first check if the specified item has been transiently removed
- if (transientStateMgr.getAttic().hasItemState(id)) {
- /**
- * check if there's new transient state for the specified item
- * (e.g. if a property with name 'x' has been removed and a new
- * property with same name has been created);
- */
- return transientStateMgr.hasItemState(id);
- }
- // check if there's transient state for the specified item
+ // first check if the specified item exists at all in the transient ISM
if (transientStateMgr.hasItemState(id)) {
- return true;
+ // retrieve item and check state
+ try {
+ ItemState itemState = transientStateMgr.getItemState(id);
+ if (itemState.isValid()) {
+ return true;
+ }
+ } catch (ItemStateException e) {
+ // has been removed in the meantime
+ }
}
- // check if there's persistent state for the specified item
- return workspaceItemStateMgr.hasItemState(id);
+ return false;
}
/**
@@ -267,8 +244,7 @@
* <code>false</code> otherwise.
*/
public boolean hasPendingChanges() {
- // DIFF JACKRABBIT: return transientStateMgr.hasAnyItemStates();
- return transientStateMgr.getEntriesCount() > 0;
+ return transientStateMgr.hasPendingChanges();
}
/**
@@ -469,8 +445,7 @@
* @return an iterator over descendant transient item state instances
*/
private Iterator getDescendantTransientItemStates(NodeState parent) {
- // DIFF JACKRABBIT: if (!transientStateMgr.hasAnyItemStates()) {
- if (transientStateMgr.getEntriesCount() == 0) {
+ if (!transientStateMgr.hasPendingChanges()) {
return Collections.EMPTY_LIST.iterator();
}
@@ -481,7 +456,7 @@
// the depth is used as array index
List[] la = new List[10];
try {
- Iterator iter = transientStateMgr.getEntries();
+ Iterator iter = transientStateMgr.getModifiedOrAddedItemStates();
while (iter.hasNext()) {
ItemState state = (ItemState) iter.next();
// determine relative depth: > 0 means it's a descendant
@@ -560,7 +535,7 @@
*/
private Iterator getDescendantTransientItemStatesInAttic(NodeState parent) {
// DIFF JACKRABBIT: if (!transientStateMgr.hasAnyItemStatesInAttic()) {
- if (!transientStateMgr.hasEntriesInAttic()) {
+ if (!transientStateMgr.hasDeletedItemStates()) {
return Collections.EMPTY_LIST.iterator();
}
@@ -575,7 +550,7 @@
// the depth is used as array index
List[] la = new List[10];
try {
- Iterator iter = transientStateMgr.getEntriesInAttic();
+ Iterator iter = transientStateMgr.getDeletedItemStates();
while (iter.hasNext()) {
ItemState state = (ItemState) iter.next();
// determine relative depth: > 0 means it's a descendant
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/TransientItemStateManager.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/TransientItemStateManager.java?rev=432523&r1=432522&r2=432523&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/TransientItemStateManager.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/TransientItemStateManager.java Fri Aug 18 01:47:16 2006
@@ -180,23 +180,23 @@
}
/**
- * @return the number of entries
+ * @return <code>true</code> if this transient ISM has pending changes.
*/
- public int getEntriesCount() {
- return changeLog.addedStates.size() + changeLog.modifiedStates.size();
+ public boolean hasPendingChanges() {
+ return !changeLog.isEmpty();
}
/**
- * @return <code>true</code> if there are any entries in attic.
+ * @return <code>true</code> if there are any deleted item states.
*/
- public boolean hasEntriesInAttic() {
- return changeLog.deletedStates.size() > 0;
+ public boolean hasDeletedItemStates() {
+ return !changeLog.deletedStates.isEmpty();
}
/**
- * @return an iterator over all entries
+ * @return an iterator over all modified or added item states.
*/
- public Iterator getEntries() {
+ public Iterator getModifiedOrAddedItemStates() {
IteratorChain it = new IteratorChain();
it.addIterator(changeLog.modifiedStates());
it.addIterator(changeLog.addedStates());
@@ -204,9 +204,9 @@
}
/**
- * @return an iterator over all entries in attic
+ * @return an iterator over all deleted item states.
*/
- public Iterator getEntriesInAttic() {
+ public Iterator getDeletedItemStates() {
return changeLog.deletedStates();
}
@@ -268,21 +268,6 @@
changeLog.modifiedStates.remove(state);
}
state.onDisposed();
- }
-
- /**
- * A state has been deleted. If the state is not a new state
- * (not in the collection of added ones), then remove
- * it from the modified states collection.
- * The state is added to the deleted states collection in any case.
- *
- * @param state state that has been deleted
- */
- public void moveItemStateToAttic(ItemState state) {
- if (changeLog.addedStates.remove(state)) {
- changeLog.modifiedStates.remove(state);
- }
- changeLog.deleted(state);
}
/**