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/23 12:11:55 UTC
svn commit: r434001 - in
/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi:
./ state/
Author: mreutegg
Date: Wed Aug 23 03:11:54 2006
New Revision: 434001
URL: http://svn.apache.org/viewvc?rev=434001&view=rev
Log:
- Remove ItemState.isTransient
- Implement ItemState.isTransient() based on ItemState status.
Modified:
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemState.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/NodeState.java
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/PropertyState.java
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
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/WorkspaceItemStateFactory.java
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java?rev=434001&r1=434000&r2=434001&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java Wed Aug 23 03:11:54 2006
@@ -242,18 +242,17 @@
}
// check status of this item's state
- if (isTransient()) {
- switch (state.getStatus()) {
- case ItemState.STATUS_NEW:
- String msg = "Cannot refresh a new item (" + safeGetJCRPath() + ").";
- log.debug(msg);
- throw new RepositoryException(msg);
- case ItemState.STATUS_STALE_DESTROYED:
- msg = "Cannot refresh on a deleted item (" + safeGetJCRPath() + ").";
- log.debug(msg);
- throw new InvalidItemStateException(msg);
- }
+ switch (state.getStatus()) {
+ case ItemState.STATUS_NEW:
+ String msg = "Cannot refresh a new item (" + safeGetJCRPath() + ").";
+ log.debug(msg);
+ throw new RepositoryException(msg);
+ case ItemState.STATUS_STALE_DESTROYED:
+ msg = "Cannot refresh on a deleted item (" + safeGetJCRPath() + ").";
+ log.debug(msg);
+ throw new InvalidItemStateException(msg);
}
+
// reset all transient modifications from this item and its decendants.
try {
session.getSessionItemStateManager().undo(state);
@@ -507,15 +506,6 @@
ItemState getItemState() {
return state;
}
-
- /**
- *
- * @return
- */
- boolean isTransient() {
- return state.isTransient();
- }
-
/**
* Failsafe conversion of internal <code>Path</code> to JCR path for use in
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemState.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemState.java?rev=434001&r1=434000&r2=434001&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemState.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ItemState.java Wed Aug 23 03:11:54 2006
@@ -72,11 +72,6 @@
protected int status;
/**
- * Flag indicating whether this state is transient
- */
- private final boolean isTransient;
-
- /**
* Listeners (weak references)
*/
private final transient Collection listeners = new WeakIdentityCollection(5);
@@ -103,10 +98,8 @@
*
* @param parent
* @param initialStatus the initial status of the item state object
- * @param isTransient flag indicating whether this state is transient or not
*/
- protected ItemState(NodeState parent, int initialStatus, boolean isTransient,
- IdFactory idFactory) {
+ protected ItemState(NodeState parent, int initialStatus, IdFactory idFactory) {
switch (initialStatus) {
case STATUS_EXISTING:
case STATUS_NEW:
@@ -119,7 +112,6 @@
}
this.parent = parent;
overlayedState = null;
- this.isTransient = isTransient;
this.idFactory = idFactory;
}
@@ -129,10 +121,9 @@
*
* @param overlayedState the backing item state being overlayed
* @param initialStatus the initial status of the new <code>ItemState</code> instance
- * @param isTransient flag indicating whether this state is transient or not
*/
- protected ItemState(ItemState overlayedState, NodeState parent, int initialStatus,
- boolean isTransient, IdFactory idFactory) {
+ protected ItemState(ItemState overlayedState, NodeState parent,
+ int initialStatus, IdFactory idFactory) {
switch (initialStatus) {
case STATUS_EXISTING:
case STATUS_EXISTING_MODIFIED:
@@ -144,7 +135,6 @@
log.debug(msg);
throw new IllegalArgumentException(msg);
}
- this.isTransient = isTransient;
this.parent = parent;
this.idFactory = idFactory;
connect(overlayedState);
@@ -329,14 +319,13 @@
/**
* Returns <code>true</code> if this item state represents new or modified
- * state (i.e. the result of copy-on-write) or <code>false</code> if it
- * represents existing, unmodified state.
+ * state or <code>false</code> if it represents existing, unmodified state.
*
* @return <code>true</code> if this item state is modified or new,
* otherwise <code>false</code>
*/
public boolean isTransient() {
- return isTransient;
+ return status == STATUS_EXISTING_MODIFIED || status == STATUS_NEW;
}
/**
@@ -493,10 +482,10 @@
*/
public void stateDestroyed(ItemState destroyed) {
// underlying state has been permanently destroyed
- if (isTransient) {
+ if (isTransient()) {
setStatus(STATUS_STALE_DESTROYED);
} else {
- setStatus(STATUS_EXISTING_REMOVED);
+ setStatus(STATUS_REMOVED);
notifyStateDestroyed();
}
}
@@ -506,7 +495,7 @@
*/
public void stateModified(ItemState modified) {
// underlying state has been modified
- if (isTransient) {
+ if (isTransient()) {
setStatus(STATUS_STALE_MODIFIED);
} else {
synchronized (this) {
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/NodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/NodeState.java?rev=434001&r1=434000&r2=434001&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/NodeState.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/NodeState.java Wed Aug 23 03:11:54 2006
@@ -131,17 +131,15 @@
* @param nodeTypeName node type of this node
* @param definition
* @param initialStatus the initial status of the node state object
- * @param isTransient flag indicating whether this state is transient or
- * not.
* @param isf the item state factory responsible for creating node
* states.
* @param idFactory the <code>IdFactory</code> to create new id
*/
protected NodeState(QName name, String uuid, NodeState parent,
QName nodeTypeName, QNodeDefinition definition,
- int initialStatus, boolean isTransient,
- ItemStateFactory isf, IdFactory idFactory) {
- super(parent, initialStatus, isTransient, idFactory);
+ int initialStatus, ItemStateFactory isf,
+ IdFactory idFactory) {
+ super(parent, initialStatus, idFactory);
this.name = name;
this.uuid = uuid;
this.nodeTypeName = nodeTypeName;
@@ -156,15 +154,13 @@
* @param overlayedState the backing node state being overlayed
* @param parent the parent of this NodeState
* @param initialStatus the initial status of the node state object
- * @param isTransient flag indicating whether this state is transient or
- * not
* @param idFactory the <code>IdFactory</code> to create new id
* instance.
*/
protected NodeState(NodeState overlayedState, NodeState parent,
- int initialStatus, boolean isTransient,
- ItemStateFactory isf, IdFactory idFactory) {
- super(overlayedState, parent, initialStatus, isTransient, idFactory);
+ int initialStatus, ItemStateFactory isf,
+ IdFactory idFactory) {
+ super(overlayedState, parent, initialStatus, idFactory);
this.isf = isf;
pull();
}
@@ -1004,8 +1000,7 @@
* @param references
*/
void setNodeReferences(NodeReferences references) {
- if (isTransient()) {
- // TODO: check again
+ if (getOverlayedState() != null) {
throw new UnsupportedOperationException("Cannot set references to a transient node state.");
}
this.references = references;
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/PropertyState.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/PropertyState.java?rev=434001&r1=434000&r2=434001&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/PropertyState.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/PropertyState.java Wed Aug 23 03:11:54 2006
@@ -64,12 +64,11 @@
* @param overlayedState
* @param parent
* @param initialStatus
- * @param isTransient
* @param idFactory
*/
protected PropertyState(PropertyState overlayedState, NodeState parent,
- int initialStatus, boolean isTransient, IdFactory idFactory) {
- super(overlayedState, parent, initialStatus, isTransient, idFactory);
+ int initialStatus, IdFactory idFactory) {
+ super(overlayedState, parent, initialStatus, idFactory);
pull();
}
@@ -80,12 +79,11 @@
* @param parent
* @param definition
* @param initialStatus
- * @param isTransient
* @param idFactory
*/
- protected PropertyState(QName name, NodeState parent, QPropertyDefinition definition, int initialStatus,
- boolean isTransient, IdFactory idFactory) {
- super(parent, initialStatus, isTransient, idFactory);
+ protected PropertyState(QName name, NodeState parent, QPropertyDefinition definition,
+ int initialStatus, IdFactory idFactory) {
+ super(parent, initialStatus, idFactory);
this.name = name;
this.def = definition;
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=434001&r1=434000&r2=434001&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 Wed Aug 23 03:11:54 2006
@@ -364,30 +364,28 @@
private void collectTransientStates(ItemState state, ChangeLog changeLog, boolean throwOnStale)
throws StaleItemStateException, ItemStateException {
// fail-fast test: check status of this item's state
- if (state.isTransient()) {
+ switch (state.getStatus()) {
+ case ItemState.STATUS_NEW:
+ {
+ String msg = LogUtil.safeGetJCRPath(state, nsResolver, hierMgr) + ": cannot save a new item.";
+ log.debug(msg);
+ throw new ItemStateException(msg);
+ }
+ }
+ if (throwOnStale) {
switch (state.getStatus()) {
- case ItemState.STATUS_NEW:
+ case ItemState.STATUS_STALE_MODIFIED:
{
- String msg = LogUtil.safeGetJCRPath(state, nsResolver, hierMgr) + ": cannot save a new item.";
+ String msg = LogUtil.safeGetJCRPath(state, nsResolver, hierMgr) + ": the item cannot be saved because it has been modified externally.";
log.debug(msg);
- throw new ItemStateException(msg);
+ throw new StaleItemStateException(msg);
+ }
+ case ItemState.STATUS_STALE_DESTROYED:
+ {
+ String msg = LogUtil.safeGetJCRPath(state, nsResolver, hierMgr) + ": the item cannot be saved because it has been deleted externally.";
+ log.debug(msg);
+ throw new StaleItemStateException(msg);
}
- }
- if (throwOnStale) {
- switch (state.getStatus()) {
- case ItemState.STATUS_STALE_MODIFIED:
- {
- String msg = LogUtil.safeGetJCRPath(state, nsResolver, hierMgr) + ": the item cannot be saved because it has been modified externally.";
- log.debug(msg);
- throw new StaleItemStateException(msg);
- }
- case ItemState.STATUS_STALE_DESTROYED:
- {
- String msg = LogUtil.safeGetJCRPath(state, nsResolver, hierMgr) + ": the item cannot be saved because it has been deleted externally.";
- log.debug(msg);
- throw new StaleItemStateException(msg);
- }
- }
}
}
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=434001&r1=434000&r2=434001&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 Wed Aug 23 03:11:54 2006
@@ -413,7 +413,7 @@
NodeState parent, QName nodetypeName,
QNodeDefinition definition) {
NodeState nodeState = new NodeState(name, uuid, parent, nodetypeName,
- definition, ItemState.STATUS_NEW, true, this, idFactory);
+ definition, ItemState.STATUS_NEW, this, idFactory);
// get a notification when this item state is saved or invalidated
nodeState.addListener(listener);
// notify listener that a node state has been created
@@ -427,7 +427,7 @@
*/
public PropertyState createNewPropertyState(QName name, NodeState parent, QPropertyDefinition definition) {
PropertyState propState = new PropertyState(name, parent,
- definition, ItemState.STATUS_NEW, true, idFactory);
+ definition, ItemState.STATUS_NEW, idFactory);
// get a notification when this item state is saved or invalidated
propState.addListener(listener);
// notify listener that a property state has been created
@@ -449,7 +449,7 @@
parentState = (NodeState) ism.getItemState(overlayedParent.getId());
}
NodeState nodeState = new NodeState(overlayedState, parentState,
- ItemState.STATUS_EXISTING, true, this, idFactory);
+ ItemState.STATUS_EXISTING, this, idFactory);
nodeState.addListener(listener);
return nodeState;
}
@@ -463,7 +463,7 @@
// retrieve state to overlay
NodeState overlayedState = (NodeState) parent.getItemState(nodeId);
NodeState nodeState = new NodeState(overlayedState, parentState,
- ItemState.STATUS_EXISTING, true, this, idFactory);
+ ItemState.STATUS_EXISTING, this, idFactory);
nodeState.addListener(listener);
return nodeState;
}
@@ -478,7 +478,7 @@
// retrieve state to overlay
PropertyState overlayedState = (PropertyState) parent.getItemState(propertyId);
PropertyState propState = new PropertyState(overlayedState, parentState,
- ItemState.STATUS_EXISTING, true, idFactory);
+ ItemState.STATUS_EXISTING, idFactory);
propState.addListener(listener);
return propState;
}
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/WorkspaceItemStateFactory.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/WorkspaceItemStateFactory.java?rev=434001&r1=434000&r2=434001&view=diff
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/WorkspaceItemStateFactory.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/WorkspaceItemStateFactory.java Wed Aug 23 03:11:54 2006
@@ -132,7 +132,7 @@
uuid = info.getId().getUUID();
}
NodeState state = new NodeState(info.getQName(), uuid, parent, info.getNodetype(),
- definition, ItemState.STATUS_EXISTING, false, this, service.getIdFactory());
+ definition, ItemState.STATUS_EXISTING, this, service.getIdFactory());
// set mixin nodetypes
state.setMixinTypeNames(info.getMixins());
@@ -225,7 +225,7 @@
// build the PropertyState
PropertyState state = new PropertyState(info.getQName(), parent,
- def, ItemState.STATUS_EXISTING, false, service.getIdFactory());
+ def, ItemState.STATUS_EXISTING, service.getIdFactory());
state.setType(info.getType());
QValue[] qValues;
if (info.getType() == PropertyType.BINARY) {