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 re...@apache.org on 2014/02/14 12:07:01 UTC
svn commit: r1568238 -
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
Author: reschke
Date: Fri Feb 14 11:07:00 2014
New Revision: 1568238
URL: http://svn.apache.org/r1568238
Log:
OAK-1266 - code cleanup
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java?rev=1568238&r1=1568237&r2=1568238&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/rdb/RDBDocumentStore.java Fri Feb 14 11:07:00 2014
@@ -97,18 +97,13 @@ public class RDBDocumentStore implements
@Override
public <T extends Document> T find(Collection<T> collection, String id, int maxCacheAge) {
- if (collection == Collection.NODES && id.equals(ROOT)) {
- synchronized(this) {
- if (this.root != null) {
- long age = System.currentTimeMillis() - rootWritten;
- if (age < maxCacheAge) {
- return (T)this.root;
- }
- }
- }
+ T fromCache = getFromCache(collection, id, maxCacheAge);
+ if (fromCache != null) {
+ return fromCache;
+ }
+ else {
+ return readDocument(collection, id);
}
- // TODO handle maxCacheAge
- return readDocument(collection, id);
}
@Override
@@ -172,7 +167,7 @@ public class RDBDocumentStore implements
@Override
public <T extends Document> T getIfCached(Collection<T> collection, String id) {
if (collection == Collection.NODES && ROOT.equals(id)) {
- return (T) this.root;
+ return castAsT(this.root);
} else {
return null;
}
@@ -563,10 +558,31 @@ public class RDBDocumentStore implements
private long rootWritten;
private static final String ROOT = "0:/";
- private synchronized void updateCache(Collection collection, Document doc) {
+ private <T extends Document> void updateCache(Collection<T> collection, Document doc) {
if (collection == Collection.NODES && doc.getId().equals(ROOT)) {
- this.root = (NodeDocument)doc;
- this.rootWritten = System.currentTimeMillis();
+ synchronized (this) {
+ this.root = (NodeDocument) doc;
+ this.rootWritten = System.currentTimeMillis();
+ }
}
}
+
+ private <T extends Document> T getFromCache(Collection<T> collection, String id, long maxCacheAge) {
+ if (collection == Collection.NODES && id.equals(ROOT)) {
+ synchronized (this) {
+ if (this.root != null) {
+ long age = System.currentTimeMillis() - rootWritten;
+ if (age < maxCacheAge) {
+ return castAsT(this.root);
+ }
+ }
+ }
+ }
+ return null;
+ }
+
+ @SuppressWarnings("unchecked")
+ private static <T extends Document> T castAsT(NodeDocument doc) {
+ return (T) doc;
+ }
}