You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by tr...@apache.org on 2004/11/05 15:19:21 UTC
svn commit: rev 56666 - incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version
Author: tripod
Date: Fri Nov 5 06:19:20 2004
New Revision: 56666
Modified:
incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/PersistentNode.java
Log:
(JCR-15) PersistentNode.store() ignores status when storing
Modified: incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/PersistentNode.java
==============================================================================
--- incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/PersistentNode.java (original)
+++ incubator/jackrabbit/trunk/src/java/org/apache/jackrabbit/core/version/PersistentNode.java Fri Nov 5 06:19:20 2004
@@ -217,7 +217,10 @@
PropertyId propId = new PropertyId(nodeState.getUUID(), name);
if (stateMgr.hasItemState(propId)) {
try {
- return (PersistentPropertyState) stateMgr.getItemState(propId);
+ PersistentPropertyState propState = (PersistentPropertyState) stateMgr.getItemState(propId);
+ // someone calling this method will always alter the property state, so set status to modified
+ propState.setStatus(ItemState.STATUS_EXISTING_MODIFIED);
+ return propState;
} catch (ItemStateException e) {
throw new RepositoryException("Unable to create property: " + e.toString());
}
@@ -230,6 +233,7 @@
// need to store nodestate
nodeState.addPropertyEntry(name);
+ nodeState.setStatus(ItemState.STATUS_EXISTING_MODIFIED);
return propState;
} catch (ItemStateException e) {
throw new RepositoryException("Unable to store property: " + e.toString());
@@ -320,6 +324,7 @@
*/
protected boolean removeNode(QName name, int index) throws RepositoryException {
if (nodeState.removeChildNodeEntry(name, index)) {
+ nodeState.setStatus(ItemState.STATUS_EXISTING_MODIFIED);
return true;
} else {
return false;
@@ -423,6 +428,7 @@
PersistentNode node = new PersistentNode(stateMgr, ntMgr, state);
// add new child node entry
nodeState.addChildNodeEntry(name, state.getUUID());
+ nodeState.setStatus(ItemState.STATUS_EXISTING_MODIFIED);
// add 'auto-create' properties defined in node type
PropertyDef[] pda = nodeType.getAutoCreatePropertyDefs();
@@ -484,24 +490,24 @@
* @throws ItemStateException
*/
private void store(PersistentNodeState state) throws ItemStateException {
- // first store all transient properties
- List props = state.getPropertyEntries();
- for (int i = 0; i < props.size(); i++) {
- NodeState.PropertyEntry entry = (NodeState.PropertyEntry) props.get(i);
- PersistentPropertyState pstate = (PersistentPropertyState) stateMgr.getItemState(new PropertyId(state.getUUID(), entry.getName()));
- if (pstate.isTransient()) {
- pstate.store();
- }
- }
- // now store all child node entries
- List nodes = state.getChildNodeEntries();
- for (int i = 0; i < nodes.size(); i++) {
- NodeState.ChildNodeEntry entry = (NodeState.ChildNodeEntry) nodes.get(i);
- PersistentNodeState nstate = (PersistentNodeState) stateMgr.getItemState(new NodeId(entry.getUUID()));
- store(nstate);
- }
- // and store itself
if (state.isTransient()) {
+ // first store all transient properties
+ List props = state.getPropertyEntries();
+ for (int i = 0; i < props.size(); i++) {
+ NodeState.PropertyEntry entry = (NodeState.PropertyEntry) props.get(i);
+ PersistentPropertyState pstate = (PersistentPropertyState) stateMgr.getItemState(new PropertyId(state.getUUID(), entry.getName()));
+ if (pstate.isTransient()) {
+ pstate.store();
+ }
+ }
+ // now store all child node entries
+ List nodes = state.getChildNodeEntries();
+ for (int i = 0; i < nodes.size(); i++) {
+ NodeState.ChildNodeEntry entry = (NodeState.ChildNodeEntry) nodes.get(i);
+ PersistentNodeState nstate = (PersistentNodeState) stateMgr.getItemState(new NodeId(entry.getUUID()));
+ store(nstate);
+ }
+ // and store itself
state.store();
}
}
@@ -528,24 +534,24 @@
* @throws ItemStateException
*/
private void reload(PersistentNodeState state) throws ItemStateException {
- // first discard all all transient properties
- List props = state.getPropertyEntries();
- for (int i = 0; i < props.size(); i++) {
- NodeState.PropertyEntry entry = (NodeState.PropertyEntry) props.get(i);
- PersistentPropertyState pstate = (PersistentPropertyState) stateMgr.getItemState(new PropertyId(state.getUUID(), entry.getName()));
- if (pstate.isTransient()) {
- pstate.discard();
- }
- }
- // now reload all child node entries
- List nodes = state.getChildNodeEntries();
- for (int i = 0; i < nodes.size(); i++) {
- NodeState.ChildNodeEntry entry = (NodeState.ChildNodeEntry) nodes.get(i);
- PersistentNodeState nstate = (PersistentNodeState) stateMgr.getItemState(new NodeId(entry.getUUID()));
- reload(nstate);
- }
- // and reload itself
if (state.isTransient()) {
+ // first discard all all transient properties
+ List props = state.getPropertyEntries();
+ for (int i = 0; i < props.size(); i++) {
+ NodeState.PropertyEntry entry = (NodeState.PropertyEntry) props.get(i);
+ PersistentPropertyState pstate = (PersistentPropertyState) stateMgr.getItemState(new PropertyId(state.getUUID(), entry.getName()));
+ if (pstate.isTransient()) {
+ pstate.discard();
+ }
+ }
+ // now reload all child node entries
+ List nodes = state.getChildNodeEntries();
+ for (int i = 0; i < nodes.size(); i++) {
+ NodeState.ChildNodeEntry entry = (NodeState.ChildNodeEntry) nodes.get(i);
+ PersistentNodeState nstate = (PersistentNodeState) stateMgr.getItemState(new NodeId(entry.getUUID()));
+ reload(nstate);
+ }
+ // and reload itself
state.discard();
}
}