Aman Arora
Aman Arora

Reputation: 1252

How to create repository instance in JackRabbit Oak using MicroKernel

According to JackRabbit Oak official documentation, one of the ways of creating Repository instance is to create a MicroKernel object and pass it to JCR's parameterized constructor like this:

MicroKernel kernel = ...;
Repository repository = new Jcr(kernel).createRepository();

But looking at the JCR class javadocs, i can't find any constructor which takes an object of type MicroKernel.
So my questions is :

Note: I want a repository which uses normal file system as the content storage medium.

Upvotes: 2

Views: 1315

Answers (2)

michid
michid

Reputation: 10814

The documentations is unfortunately lagging behind in some areas. The MicroKernel interface has been superseded by the NodeStoreinterface in Oak.

For file system persistence you'd use the SegmentNodeStore. Have a look at how the respective test cases set up the repository.

In a nutshell:

File directory = ...
NodeStore store = new FileStore(directory, 1, false);
Jcr jcr = new Jcr(new Oak(new SegmentNodeStore(store)));

Upvotes: 3

tmarwen
tmarwen

Reputation: 16354

Try to use the MicroKernelImpl public no-arg constructor to create an in-memory kernel instance:

MicroKernel kernel = new MicroKernelImpl();
Repository repository = new Jcr(kernel).createRepository();

Alternativelly, you can use the OAK class entry to create a Repository:

MicroKernel kernel = new MicroKernelImpl();
Repository repo = new Oak(kernel).createRepository();

Upvotes: 1

Related Questions