Author: chetanm
Date: Wed May 20 07:11:41 2015
New Revision: 1680461
URL: http://svn.apache.org/r1680461
Log:
OAK-2882 - Support migration without access to DataStore
Fix issue related to reference handling. getRecordFromReference needs to be
overridden as reference creation is handled within LengthCachingDataStore
Modified:
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/blob/LengthCachingDataStore.java
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/blob/LengthCachingDataStoreTest.java
Modified:
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/blob/LengthCachingDataStore.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/blob/LengthCachingDataStore.java?rev=1680461&r1=1680460&r2=1680461&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/blob/LengthCachingDataStore.java
(original)
+++
jackrabbit/oak/trunk/oak-upgrade/src/main/java/org/apache/jackrabbit/oak/upgrade/blob/LengthCachingDataStore.java
Wed May 20 07:11:41 2015
@@ -118,6 +118,19 @@ public class LengthCachingDataStore exte
}
@Override
+ public DataRecord getRecordFromReference(String reference) throws
DataStoreException {
+ //Override the getRecordFromReference so that reference handling does
not
+ //trigger a call to FS
+ if (reference != null) {
+ int colon = reference.indexOf(':');
+ if (colon != -1) {
+ return getRecordIfStored(new
DataIdentifier(reference.substring(0, colon)));
+ }
+ }
+ return null;
+ }
+
+ @Override
public DataRecord addRecord(InputStream inputStream) throws
DataStoreException {
checkIfReadOnly();
DataRecord result = getDelegate().addRecord(inputStream);
Modified:
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/blob/LengthCachingDataStoreTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/blob/LengthCachingDataStoreTest.java?rev=1680461&r1=1680460&r2=1680461&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/blob/LengthCachingDataStoreTest.java
(original)
+++
jackrabbit/oak/trunk/oak-upgrade/src/test/java/org/apache/jackrabbit/oak/upgrade/blob/LengthCachingDataStoreTest.java
Wed May 20 07:11:41 2015
@@ -158,6 +158,19 @@ public class LengthCachingDataStoreTest
}
+ @Test
+ public void referenceHandling() throws Exception{
+ int minSize = new FileDataStore().getMinRecordLength();
+ LengthCachingDataStore fds = new LengthCachingDataStore();
+ fds.setDelegateClass(FileDataStore.class.getName());
+ fds.init(tempFolder.newFolder().getAbsolutePath());
+ fds.setReadOnly(false);
+
+ DataRecord dr1 = fds.addRecord(byteStream(minSize + 10));
+ assertNotNull(fds.getRecordFromReference(dr1.getReference()));
+ assertEquals(dr1.getIdentifier(),
fds.getRecordFromReference(dr1.getReference()).getIdentifier());
+ }
+
private InputStream byteStream(int size) {
return new ByteArrayInputStream(bytes(size));
}