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 2007/02/16 16:41:01 UTC
svn commit: r508454 -
/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChangeLog.java
Author: mreutegg
Date: Fri Feb 16 07:41:00 2007
New Revision: 508454
URL: http://svn.apache.org/viewvc?view=rev&rev=508454
Log:
ChangeLog.removeAffected() removes too many operations
- must also check name of item state
Modified:
jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChangeLog.java
Modified: jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChangeLog.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChangeLog.java?view=diff&rev=508454&r1=508453&r2=508454
==============================================================================
--- jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChangeLog.java (original)
+++ jackrabbit/trunk/contrib/spi/jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/state/ChangeLog.java Fri Feb 16 07:41:00 2007
@@ -118,6 +118,7 @@
* Call this method when this change log has been sucessfully persisted.
* This implementation will call {@link ItemState#persisted(ChangeLog, CacheBehaviour)
* ItemState.refresh(this)} on the target item of this change log.
+ * TODO: remove parameter CacheBehaviour
*/
public void persisted(CacheBehaviour cacheBehaviour) {
target.persisted(this, cacheBehaviour);
@@ -253,12 +254,21 @@
if (parent.getStatus() != Status.REMOVED) {
for (Iterator it = operations.iterator(); it.hasNext();) {
Operation op = (Operation) it.next();
- if (op instanceof AddNode && ((AddNode)op).getParentState() == parent) {
- it.remove();
- break;
- } else if (op instanceof AddProperty && ((AddProperty)op).getParentState() == parent) {
- it.remove();
- break;
+ if (op instanceof AddNode) {
+ AddNode operation = (AddNode) op;
+ if (operation.getParentState() == parent
+ && operation.getNodeName().equals(state.getQName())) {
+ // TODO: this will not work for name name siblings!
+ it.remove();
+ break;
+ }
+ } else if (op instanceof AddProperty) {
+ AddProperty operation = (AddProperty) op;
+ if (operation.getParentState() == parent
+ && operation.getPropertyName().equals(state.getQName())) {
+ it.remove();
+ break;
+ }
} else if (op instanceof SetMixin &&
QName.JCR_MIXINTYPES.equals(state.getQName()) &&
((SetMixin)op).getNodeState() == parent) {