2

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 :

  • How can we get a repository object using MicroKernel in JackRabbit Oak(not JackRabbit 2.0).

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

Aman Arora
  • 1,232
  • 1
  • 10
  • 26

2 Answers2

3

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)));
Thomas Mueller
  • 48,905
  • 14
  • 116
  • 132
michid
  • 10,536
  • 3
  • 32
  • 59
1

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();
tmarwen
  • 15,750
  • 5
  • 43
  • 62