You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by mr...@apache.org on 2014/01/15 14:00:02 UTC
svn commit: r1558369 -
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoNodeState.java
Author: mreutegg
Date: Wed Jan 15 13:00:02 2014
New Revision: 1558369
URL: http://svn.apache.org/r1558369
Log:
OAK-1275: Efficient MongoNodeState.getChildNodeEntries() for many child nodes
- more efficient getProperty() and hasProperty() implemenation
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoNodeState.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoNodeState.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoNodeState.java?rev=1558369&r1=1558368&r2=1558369&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoNodeState.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MongoNodeState.java Wed Jan 15 13:00:02 2014
@@ -58,7 +58,6 @@ import static org.apache.jackrabbit.oak.
/**
* A {@link NodeState} implementation for the {@link MongoNodeStore}.
* TODO: merge MongoNodeState with Node
- * TODO: implement more methods for efficient access (getProperty(), etc.)
*/
final class MongoNodeState extends AbstractNodeState {
@@ -120,25 +119,35 @@ final class MongoNodeState extends Abstr
@Override
public boolean exists() {
- return node != null;
+ return true;
+ }
+
+ @Override
+ public PropertyState getProperty(String name) {
+ String value = node.getProperty(name);
+ if (value == null) {
+ return null;
+ }
+ JsopReader reader = new JsopTokenizer(value);
+ if (reader.matches('[')) {
+ return readArrayProperty(name, reader);
+ } else {
+ return readProperty(name, reader);
+ }
+ }
+
+ @Override
+ public boolean hasProperty(String name) {
+ return node.getPropertyNames().contains(name);
}
@Nonnull
@Override
public Iterable<? extends PropertyState> getProperties() {
- if (node == null) {
- return Collections.emptyList();
- }
return Iterables.transform(node.getPropertyNames(), new Function<String, PropertyState>() {
@Override
public PropertyState apply(String name) {
- String value = node.getProperty(name);
- JsopReader reader = new JsopTokenizer(value);
- if (reader.matches('[')) {
- return readArrayProperty(name, reader);
- } else {
- return readProperty(name, reader);
- }
+ return getProperty(name);
}
});
}