Author: mreutegg
Date: Tue Dec 18 00:35:40 2007
New Revision: 605134
URL: http://svn.apache.org/viewvc?rev=605134&view=rev
Log:
JCR-1209: NodeImpl.checkout() calls save() two times
Modified:
jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java
Modified: jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java?rev=605134&r1=605133&r2=605134&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java
(original)
+++ jackrabbit/trunk/jackrabbit-core/src/main/java/org/apache/jackrabbit/core/NodeImpl.java
Tue Dec 18 00:35:40 2007
@@ -3020,13 +3020,26 @@
// check lock status
checkLock();
- Property prop = internalSetProperty(NameConstants.JCR_ISCHECKEDOUT, InternalValue.create(true));
- prop.save();
- prop = internalSetProperty(NameConstants.JCR_PREDECESSORS,
+ boolean hasPendingChanges = session.hasPendingChanges();
+
+ Property[] props = new Property[2];
+ props[0] = internalSetProperty(NameConstants.JCR_ISCHECKEDOUT, InternalValue.create(true));
+ props[1] = internalSetProperty(NameConstants.JCR_PREDECESSORS,
new InternalValue[]{
InternalValue.create(new UUID(getBaseVersion().getUUID()))
});
- prop.save();
+ if (hasPendingChanges) {
+ for (int i = 0; i < props.length; i++) {
+ props[i].save();
+ }
+ } else {
+ try {
+ session.save();
+ } catch (RepositoryException e) {
+ session.refresh(false);
+ throw e;
+ }
+ }
}
/**
|