Author: jukka
Date: Fri Feb 28 19:36:05 2014
New Revision: 1573042
URL: http://svn.apache.org/r1573042
Log:
OAK-1418: Read performance regression
Optimize getProperty calls for the common case where the argument is just a
name, with no other path components
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/NodeDelegate.java
Modified:
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/NodeDelegate.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/NodeDelegate.java?rev=1573042&r1=1573041&r2=1573042&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/NodeDelegate.java
(original)
+++
jackrabbit/oak/trunk/oak-jcr/src/main/java/org/apache/jackrabbit/oak/jcr/delegate/NodeDelegate.java
Fri Feb 28 19:36:05 2014
@@ -249,8 +249,15 @@ public class NodeDelegate extends ItemDe
@CheckForNull
public PropertyDelegate getPropertyOrNull(String relPath)
throws RepositoryException {
- Tree parent = getTree(PathUtils.getParentPath(relPath));
- String name = PathUtils.getName(relPath);
+ Tree parent = tree;
+ String name = relPath;
+
+ int slash = relPath.lastIndexOf('/');
+ if (slash != -1) {
+ parent = getTree(relPath.substring(0, slash));
+ name = relPath.substring(slash + 1);
+ }
+
if (parent != null) {
PropertyDelegate property =
new PropertyDelegate(sessionDelegate, parent, name);
@@ -272,8 +279,15 @@ public class NodeDelegate extends ItemDe
*/
@Nonnull
public PropertyDelegate getProperty(String relPath) throws
RepositoryException {
- Tree parent = getTree(PathUtils.getParentPath(relPath));
- String name = PathUtils.getName(relPath);
+ Tree parent = tree;
+ String name = relPath;
+
+ int slash = relPath.lastIndexOf('/');
+ if (slash != -1) {
+ parent = getTree(relPath.substring(0, slash));
+ name = relPath.substring(slash + 1);
+ }
+
return new PropertyDelegate(sessionDelegate, parent, name);
}