You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by st...@apache.org on 2012/01/26 17:11:47 UTC
svn commit: r1236263 - in
/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model:
ChildNodeEntries.java ChildNodeEntriesInlined.java ChildNodeEntriesTree.java
Author: stefan
Date: Thu Jan 26 16:11:46 2012
New Revision: 1236263
URL: http://svn.apache.org/viewvc?rev=1236263&view=rev
Log:
flat hierarchy support (WIP)
Modified:
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntries.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesInlined.java
jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesTree.java
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntries.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntries.java?rev=1236263&r1=1236262&r2=1236263&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntries.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntries.java Thu Jan 26 16:11:46 2012
@@ -47,9 +47,30 @@ public interface ChildNodeEntries extend
//-------------------------------------------------------------< diff ops >
+ /**
+ * Returns those entries that exist in <code>other</code> but not in
+ * <code>this</code>.
+ *
+ * @param other
+ * @return
+ */
Iterator<ChildNodeEntry> getAdded(final ChildNodeEntries other);
+ /**
+ * Returns those entries that exist in <code>this</code> but not in
+ * <code>other</code>.
+ *
+ * @param other
+ * @return
+ */
Iterator<ChildNodeEntry> getRemoved(final ChildNodeEntries other);
+ /**
+ * Returns <code>this</code> instance's entries that have namesakes in
+ * <code>other</code> but with different <code>id</code>s.
+ *
+ * @param other
+ * @return
+ */
Iterator<ChildNodeEntry> getModified(final ChildNodeEntries other);
}
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesInlined.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesInlined.java?rev=1236263&r1=1236262&r2=1236263&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesInlined.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesInlined.java Thu Jan 26 16:11:46 2012
@@ -213,23 +213,14 @@ public class ChildNodeEntriesInlined imp
};
}
- public Iterator<ChildNodeEntry> getModified(ChildNodeEntries other) {
+ public Iterator<ChildNodeEntry> getModified(final ChildNodeEntries other) {
if (equals(other)) {
return EMPTY_ITER;
}
-
- final ChildNodeEntries cnes1, cnes2;
- if (other.getCount() < getCount()) {
- cnes1 = other;
- cnes2 = this;
- } else {
- cnes1 = this;
- cnes2 = other;
- }
- return new AbstractFilteringIterator<ChildNodeEntry>(cnes1.getEntries(0, -1)) {
+ return new AbstractFilteringIterator<ChildNodeEntry>(getEntries(0, -1)) {
@Override
protected boolean include(ChildNodeEntry entry) {
- ChildNodeEntry namesake = cnes2.get(entry.getName());
+ ChildNodeEntry namesake = other.get(entry.getName());
return (namesake != null && !namesake.getId().equals(entry.getId()));
}
};
Modified: jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesTree.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesTree.java?rev=1236263&r1=1236262&r2=1236263&view=diff
==============================================================================
--- jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesTree.java (original)
+++ jackrabbit/sandbox/microkernel/src/main/java/org/apache/jackrabbit/mk/model/ChildNodeEntriesTree.java Thu Jan 26 16:11:46 2012
@@ -385,7 +385,7 @@ public class ChildNodeEntriesTree implem
}
}
- public Iterator<ChildNodeEntry> getModified(ChildNodeEntries other) {
+ public Iterator<ChildNodeEntry> getModified(final ChildNodeEntries other) {
if (equals(other)) {
return EMPTY_ITER;
}
@@ -396,27 +396,49 @@ public class ChildNodeEntriesTree implem
for (int i = 0; i < index.length; i++) {
IndexEntry ie1 = index[i];
IndexEntry ie2 = otherEntries.index[i];
- if (! (ie1 == null ? ie2 == null : ie1.equals(ie2))) {
- // index entries aren't equal
-
- // todo implement
+ if (ie1 != null && ie2 != null && !ie1.equals(ie2)) {
+ // index entries are non-null and not equal
+ if (ie1 instanceof NodeInfo
+ && ie2 instanceof NodeInfo) {
+ NodeInfo ni1 = (NodeInfo) ie1;
+ NodeInfo ni2 = (NodeInfo) ie2;
+ if (ni1.getName().equals(ni2.getName())
+ && !ni1.getId().equals(ni2.getId())) {
+ modified.add(ni1);
+ continue;
+ }
+ }
+
+ ChildNodeEntriesBucket bucket1;
+ if (ie1 instanceof NodeInfo) {
+ bucket1 = new ChildNodeEntriesBucket();
+ bucket1.add((ChildNodeEntry) ie1);
+ } else {
+ BucketInfo bi = (BucketInfo) ie1;
+ bucket1 = retrieveBucket(bi.getId());
+ }
+ ChildNodeEntriesBucket bucket2;
+ if (ie2 instanceof NodeInfo) {
+ bucket2 = new ChildNodeEntriesBucket();
+ bucket2.add((ChildNodeEntry) ie2);
+ } else {
+ BucketInfo bi = (BucketInfo) ie2;
+ bucket2 = retrieveBucket(bi.getId());
+ }
+
+ for (Iterator<ChildNodeEntry> it = bucket1.getModified(bucket2);
+ it.hasNext(); ) {
+ modified.add(it.next());
+ }
}
}
return modified.iterator();
} else {
- final ChildNodeEntries cnes1, cnes2;
- if (other.getCount() < getCount()) {
- cnes1 = other;
- cnes2 = this;
- } else {
- cnes1 = this;
- cnes2 = other;
- }
- return new AbstractFilteringIterator<ChildNodeEntry>(cnes1.getEntries(0, -1)) {
+ return new AbstractFilteringIterator<ChildNodeEntry>(getEntries(0, -1)) {
@Override
protected boolean include(ChildNodeEntry entry) {
- ChildNodeEntry namesake = cnes2.get(entry.getName());
+ ChildNodeEntry namesake = other.get(entry.getName());
return (namesake != null && !namesake.getId().equals(entry.getId()));
}
};