Author: mreutegg
Date: Tue Aug 30 14:38:40 2016
New Revision: 1758399
URL: http://svn.apache.org/viewvc?rev=1758399&view=rev
Log:
OAK-4723: Optimize PathRev as/from String
Added:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/PathRevTest.java
(with props)
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/PathRev.java
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/RevisionVectorTest.java
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/PathRev.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/PathRev.java?rev=1758399&r1=1758398&r2=1758399&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/PathRev.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/PathRev.java
Tue Aug 30 14:38:40 2016
@@ -68,7 +68,12 @@ public final class PathRev implements Ca
@Override
public String toString() {
- return path + "@" + revision;
+ int dim = revision.getDimensions();
+ StringBuilder sb = new StringBuilder(path.length() +
(Revision.REV_STRING_APPROX_SIZE + 1) * dim);
+ sb.append(path);
+ sb.append("@");
+ revision.toStringBuilder(sb);
+ return sb.toString();
}
public String asString() {
Added:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/PathRevTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/PathRevTest.java?rev=1758399&view=auto
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/PathRevTest.java
(added)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/PathRevTest.java
Tue Aug 30 14:38:40 2016
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.jackrabbit.oak.plugins.document;
+
+import org.junit.Test;
+
+import static junit.framework.TestCase.assertEquals;
+
+public class PathRevTest {
+
+ @Test
+ public void roundTrip() {
+ String path = "/this/is/a/test/path";
+ RevisionVector rv = new RevisionVector(
+ Revision.newRevision(1), Revision.newRevision(2));
+ PathRev key = new PathRev(path, rv);
+ assertEquals(key, PathRev.fromString(key.asString()));
+ }
+}
Propchange:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/PathRevTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/RevisionVectorTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/RevisionVectorTest.java?rev=1758399&r1=1758398&r2=1758399&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/RevisionVectorTest.java
(original)
+++
jackrabbit/oak/trunk/oak-core/src/test/java/org/apache/jackrabbit/oak/plugins/document/RevisionVectorTest.java
Tue Aug 30 14:38:40 2016
@@ -402,4 +402,33 @@ public class RevisionVectorTest {
RevisionVector rvFromStr = RevisionVector.fromString(rvstr);
assertEquals(rv, rvFromStr);
}
+
+ @Test
+ public void toStringBuilder() throws Exception {
+ RevisionVector rv = new RevisionVector();
+ StringBuilder sb = new StringBuilder();
+ rv.toStringBuilder(sb);
+ assertEquals("", sb.toString());
+
+ rv = new RevisionVector(
+ new Revision(1, 0, 1),
+ new Revision(2, 0, 2)
+ );
+ rv.toStringBuilder(sb);
+ assertEquals(rv.toString(), sb.toString());
+ }
+
+ @Test
+ public void getDimensions() throws Exception {
+ RevisionVector rv = new RevisionVector();
+ assertEquals(0, rv.getDimensions());
+ rv = new RevisionVector(
+ new Revision(1, 0, 1),
+ new Revision(2, 0, 2)
+ );
+ assertEquals(2, rv.getDimensions());
+ rv = rv.remove(1);
+ assertEquals(1, rv.getDimensions());
+
+ }
}