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 th...@apache.org on 2013/07/17 17:10:17 UTC
svn commit: r1504167 -
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MemoryDocumentStore.java
Author: thomasm
Date: Wed Jul 17 15:10:17 2013
New Revision: 1504167
URL: http://svn.apache.org/r1504167
Log:
OAK-825 Small MongoMK performance improvement
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MemoryDocumentStore.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MemoryDocumentStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MemoryDocumentStore.java?rev=1504167&r1=1504166&r2=1504167&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MemoryDocumentStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/mongomk/MemoryDocumentStore.java Wed Jul 17 15:10:17 2013
@@ -221,7 +221,6 @@ public class MemoryDocumentStore impleme
public static void applyChanges(Map<String, Object> target, UpdateOp update) {
for (Entry<String, Operation> e : update.changes.entrySet()) {
String k = e.getKey();
- String[] kv = k.split("\\.");
Operation op = e.getValue();
switch (op.type) {
case SET: {
@@ -238,6 +237,7 @@ public class MemoryDocumentStore impleme
break;
}
case SET_MAP_ENTRY: {
+ String[] kv = splitInTwo(k, '.');
Object old = target.get(kv[0]);
@SuppressWarnings("unchecked")
Map<String, Object> m = (Map<String, Object>) old;
@@ -249,6 +249,7 @@ public class MemoryDocumentStore impleme
break;
}
case REMOVE_MAP_ENTRY: {
+ String[] kv = splitInTwo(k, '.');
Object old = target.get(kv[0]);
@SuppressWarnings("unchecked")
Map<String, Object> m = (Map<String, Object>) old;
@@ -258,6 +259,7 @@ public class MemoryDocumentStore impleme
break;
}
case SET_MAP: {
+ String[] kv = splitInTwo(k, '.');
Object old = target.get(kv[0]);
@SuppressWarnings("unchecked")
Map<String, Object> m = (Map<String, Object>) old;
@@ -274,6 +276,14 @@ public class MemoryDocumentStore impleme
}
}
}
+
+ private static String[] splitInTwo(String s, char separator) {
+ int index = s.indexOf(separator);
+ if (index < 0) {
+ return new String[] { s };
+ }
+ return new String[] { s.substring(0, index), s.substring(index + 1) };
+ }
@Override
public boolean create(Collection collection, List<UpdateOp> updateOps) {