You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by md...@apache.org on 2012/02/13 19:28:02 UTC
svn commit: r1243638 - in /jackrabbit/sandbox/jackrabbit-microkernel/src:
main/java/org/apache/jackrabbit/state/ChangeTree.java
main/java/org/apache/jackrabbit/state/NodeState.java
test/java/org/apache/jackrabbit/RepositoryTest.java
Author: mduerig
Date: Mon Feb 13 18:28:02 2012
New Revision: 1243638
URL: http://svn.apache.org/viewvc?rev=1243638&view=rev
Log:
Microkernel based prototype of JCR implementation (WIP)
- correctly overlay persisted properties with transiently modified properties
Modified:
jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/ChangeTree.java
jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/NodeState.java
jackrabbit/sandbox/jackrabbit-microkernel/src/test/java/org/apache/jackrabbit/RepositoryTest.java
Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/ChangeTree.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/ChangeTree.java?rev=1243638&r1=1243637&r2=1243638&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/ChangeTree.java (original)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/ChangeTree.java Mon Feb 13 18:28:02 2012
@@ -263,10 +263,15 @@ public class ChangeTree {
}
/**
- * @return an iterator of all added, removed and modified properties.
+ * @return an iterator of all added and modified properties.
*/
public Iterator<Entry<String, JsonValue>> getProperties() {
- return properties.entrySet().iterator();
+ return Iterators.filterIterator(properties.entrySet().iterator(), new Predicate<Entry<String, JsonValue>>() {
+ @Override
+ public boolean evaluate(Entry<String, JsonValue> e) {
+ return e.getValue() != JsonAtom.NULL;
+ }
+ });
}
/**
Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/NodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/NodeState.java?rev=1243638&r1=1243637&r2=1243638&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/NodeState.java (original)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/main/java/org/apache/jackrabbit/state/NodeState.java Mon Feb 13 18:28:02 2012
@@ -135,8 +135,19 @@ public class NodeState {
}
public Iterator<Entry<String, JsonValue>> getProperties() {
- // fixme: correctly overlay modified properties and removed properties
- return Iterators.iteratorChain(getPersistedProperties(), nodeDelta.getProperties());
+ Map<String, JsonValue> childEntries = getJsonObject().value();
+
+ Iterator<Entry<String, JsonValue>> propertyEntries =
+ Iterators.filterIterator(childEntries.entrySet().iterator(),
+ new Predicate<Entry<String, JsonValue>>() {
+ @Override
+ public boolean evaluate(Entry<String, JsonValue> entry) {
+ return !entry.getKey().startsWith(":") && !isNode(entry.getValue())
+ && !nodeDelta.hasProperty(entry.getKey());
+ }
+ });
+
+ return Iterators.iteratorChain(propertyEntries, nodeDelta.getProperties());
}
public Iterator<Entry<String, JsonValue>> getProperties(Predicate<Entry<String, JsonValue>> condition) {
@@ -213,18 +224,6 @@ public class NodeState {
return value.isObject();
}
- private Iterator<Entry<String, JsonValue>> getPersistedProperties() {
- Map<String, JsonValue> childEntries = getJsonObject().value();
-
- return Iterators.filterIterator(childEntries.entrySet().iterator(),
- new Predicate<Entry<String, JsonValue>>() {
- @Override
- public boolean evaluate(Entry<String, JsonValue> entry) {
- return !entry.getKey().startsWith(":") && !isNode(entry.getValue());
- }
- });
- }
-
private JsonValue getPropertyValueOrNull(String name) {
JsonValue value = nodeDelta.getProperty(name);
if (value == null) {
Modified: jackrabbit/sandbox/jackrabbit-microkernel/src/test/java/org/apache/jackrabbit/RepositoryTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/sandbox/jackrabbit-microkernel/src/test/java/org/apache/jackrabbit/RepositoryTest.java?rev=1243638&r1=1243637&r2=1243638&view=diff
==============================================================================
--- jackrabbit/sandbox/jackrabbit-microkernel/src/test/java/org/apache/jackrabbit/RepositoryTest.java (original)
+++ jackrabbit/sandbox/jackrabbit-microkernel/src/test/java/org/apache/jackrabbit/RepositoryTest.java Mon Feb 13 18:28:02 2012
@@ -246,13 +246,13 @@ public class RepositoryTest {
@Test
public void getProperties() throws RepositoryException {
Set<String> propertyNames = new HashSet<String>() {{
- add("stringProp");
add("intProp");
add("mvProp");
+ add("added");
}};
Set<String> values = new HashSet<String>() {{
- add("stringVal");
+ add("added");
add("1");
add("2");
add("3");
@@ -260,9 +260,14 @@ public class RepositoryTest {
}};
Node node = getNode("/foo");
+ node.setProperty("added", "added"); // transiently added
+ node.getProperty("stringProp").remove(); // transiently removed
+ node.getProperty("intProp").remove(); // transiently removed...
+ node.setProperty("intProp", 42); // ...and added again
PropertyIterator properties = node.getProperties();
while (properties.hasNext()) {
Property p = properties.nextProperty();
+ System.out.println(p.getName() + ":" + p.toString());
assertTrue(propertyNames.remove(p.getName()));
if (p.isMultiple()) {
for (Value v : p.getValues()) {