Skip to content

Instantly share code, notes, and snippets.

@chetanmeh
Created January 27, 2016 11:37
Show Gist options
  • Save chetanmeh/6242d0a7fe421955d456 to your computer and use it in GitHub Desktop.
Save chetanmeh/6242d0a7fe421955d456 to your computer and use it in GitHub Desktop.
Constructs a Oak repository with FileDataStore configured for testing
import java.io.IOException;
import java.util.Properties;
import javax.jcr.Repository;
import org.apache.jackrabbit.api.JackrabbitRepository;
import org.apache.jackrabbit.core.data.FileDataStore;
import org.apache.jackrabbit.oak.plugins.blob.datastore.DataStoreBlobStore;
import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore;
import org.apache.jackrabbit.oak.plugins.segment.file.FileStore;
import org.apache.jackrabbit.oak.security.SecurityProviderImpl;
import org.apache.jackrabbit.oak.spi.blob.BlobStore;
import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
import org.junit.After;
import org.junit.Before;
import org.junit.Rule;
import org.junit.rules.TemporaryFolder;
public class JcrWithFileDataStoreTest {
@Rule
public TemporaryFolder tempFolder = new TemporaryFolder();
private Repository repository;
private FileStore fileStore;
@Before
public void setupRepo() throws IOException {
BlobStore blobStore = createBlobStore();
fileStore = FileStore.newFileStore(tempFolder.newFolder())
.withBlobStore(blobStore)
.create();
SegmentNodeStore nodeStore = SegmentNodeStore.newSegmentNodeStore(fileStore).create();
repository = new Jcr(nodeStore)
.with(new SecurityProviderImpl(ConfigurationParameters.of(getSecurityProps())))
.createRepository();
}
@After
public void shutdown(){
if (repository instanceof JackrabbitRepository){
((JackrabbitRepository) repository).shutdown();
}
fileStore.close();
}
private Properties getSecurityProps() {
//Configure props
return new Properties();
}
private BlobStore createBlobStore() throws IOException {
FileDataStore fds = new FileDataStore();
fds.setMinRecordLength(4092);
fds.init(tempFolder.newFolder().getAbsolutePath());
return new DataStoreBlobStore(fds);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment