Thank you for replying.

I was hoping to use the MicroKernel with simple JSON for remote
access. If NodeStoreKernel
is not being maintained, can I assume that SegmentMK is? If possible, how
do I obtain a SegmentMK backed oak instance with MongoDB for blob store
exposed through the MicroKernel API?

Thanks,

Adrien

On Mon, Sep 22, 2014 at 9:32 AM, Stefan Guggisberg <
[email protected]> wrote:

> hi adrien,
>
> On Mon, Sep 22, 2014 at 5:35 PM, Adrien Lamoureux
> <[email protected]> wrote:
> > Hi,
> >
> > No one has responded to the issues I'm having with the MicroKernel.
>
> sorry, missed that one.
>
> the problem you're having ('str:' being prepended to ':blobid:...')
> seems to be caused by a bug
> in o.a.j.oak.kernel.NodeStoreKernel.
>
> >
> > Is the correct location to ask these questions? I tried finding a
> solution
> > to this issue in your documentation and found none.
>
> you could file a jira issue. however, i am not sure NodeStoreKernel is
> being actively maintained.
>
> cheers
> stefan
>
> >
> > Thanks,
> >
> > Adrien
> >
> > On Tue, Sep 16, 2014 at 1:51 PM, Adrien Lamoureux <
> > [email protected]> wrote:
> >
> >> Hello,
> >>
> >> I've been testing Oak 1.0.5, and changed Main.java under oak-run to
> enable
> >> a MicroKernel to run at startup with the standalone service at the
> bottom
> >> of the addServlets() method:
> >>
> >>         private void addServlets(Oak oak, String path) {
> >>
> >>             Jcr jcr = new Jcr(oak);
> >>
> >>             // 1 - OakServer
> >>
> >>             ContentRepository repository =
> oak.createContentRepository();
> >>
> >> .............
> >>
> >> org.apache.jackrabbit.oak.core.ContentRepositoryImpl repoImpl =
> >> (org.apache.jackrabbit.oak.core.ContentRepositoryImpl)repository;
> >>
> >> org.apache.jackrabbit.oak.kernel.NodeStoreKernel nodeStoreK = new
> >>
> org.apache.jackrabbit.oak.kernel.NodeStoreKernel(repoImpl.getNodeStore());
> >>
> >> org.apache.jackrabbit.mk.server.Server mkserver = new
> >> org.apache.jackrabbit.mk.server.Server(nodeStoreK);
> >>
> >> mkserver.setPort(28080);
> >>
> >> mkserver.setBindAddress(java.net.InetAddress.getByName("localhost"));
> >>
> >> mkserver.start();
> >> }
> >>
> >> I then used an org.apache.jackrabbit.mk.client.Client to connect to it,
> >> and everything seemed to work fine, including writing / reading blobs,
> >> however, the blobs are not being retained, and it appears to be
> impossible
> >> to set a ":blobId:" prefix for a property value without it forcing an
> >> additional 'str:' prefix.
> >>
> >> Here are a couple of examples using curl to create a node with a single
> >> property to hold the blobId. The first uses the proper ":blobId:"
> prefix,
> >> the other doesn't:
> >>
> >> curl -X POST --data 'path=/&message=' --data-urlencode
> >> 'json_diff=+"testFile1.jpg" :
> >>
> {"testFileRef":":blobId:93e6002eb8f3c4128b2ce18351e16b0d72b870f6e1ee507b5221579f0dd31a33"}'
> >> http://localhost:28080/commit.html
> >>
> >> RETURNED:
> >>
> >> curl -X POST --data
> >>
> 'path=/testFile1.jpg&depth=2&offset=0&count=-1&filter={"nodes":["*"],"properties":["*"]}'
> >> http://localhost:28080/getNodes.html
> >>
> >> {
> >>
> >>   "testFileRef": "*str::blobId:*
> >> 93e6002eb8f3c4128b2ce18351e16b0d72b870f6e1ee507b5221579f0dd31a33",
> >>
> >>   ":childNodeCount": 0
> >>
> >> }
> >>
> >> I then tried without the blobId prefix, and it did not add a prefix:
> >>
> >> curl -X POST --data 'path=/&message=' --data-urlencode
> >> 'json_diff=+"testFile2.jpg" :
> >>
> {"testFileRef":"93e6002eb8f3c4128b2ce18351e16b0d72b870f6e1ee507b5221579f0dd31a33"}'
> >> http://localhost:28080/commit.html
> >>
> >> RETURNED:
> >>
> >> curl -X POST --data
> >>
> 'path=/testFile2.jpg&depth=2&offset=0&count=-1&filter={"nodes":["*"],"properties":["*"]}'
> >> http://localhost:28080/getNodes.html
> >>
> >> {
> >>
> >>   "testFileRef":
> >> "93e6002eb8f3c4128b2ce18351e16b0d72b870f6e1ee507b5221579f0dd31a33",
> >>
> >>   ":childNodeCount": 0
> >>
> >> }
> >>
> >> The blob itself was later removed/deleted, presumably by some sort of
> >> cleanup mechanism. I'm assuming that it couldn't find the reference to
> the
> >> blob.
> >>
> >> For sanity check, I tried saving a different one line text file at the
> >> Java Content Repository level of abstraction, and this is the result:
> >>
> >> curl -X POST --data
> >>
> 'path=/testFile&depth=2&offset=0&count=-2&filter={"nodes":["*"],"properties":["*"]}'
> >> http://localhost:28080/getNodes.html
> >>
> >> {
> >>
> >>   "jcr:created": "dat:2014-09-16T13:41:38.084-07:00",
> >>
> >>   "jcr:createdBy": "admin",
> >>
> >>   "jcr:primaryType": "nam:nt:file",
> >>
> >>   ":childNodeCount": 1,
> >>
> >>   "jcr:content": {
> >>
> >>     ":childOrder": "[0]:Name",
> >>
> >>     "jcr:encoding": "UTF-8",
> >>
> >>     "jcr:lastModified": "dat:2014-09-16T13:41:38.094-07:00",
> >>
> >>     "jcr:mimeType": "text/plain",
> >>
> >>     "jcr:data":
> >>
> ":blobId:428ed7545cd993bf6add8cd74cd6ad70f517341bbc1b31615f9286c652cd214a",
> >>
> >>     "jcr:primaryType": "nam:nt:unstructured",
> >>
> >>     ":childNodeCount": 0
> >>
> >>   }
> >>
> >> }
> >>
> >> The ":blobId:" prefix appears intact in this case..
> >>
> >> Any help would be greatly appreciated, as I would like to start using
> the
> >> MicroKernel for remote access, and file retention is critical.
> >>
> >> Thanks,
> >>
> >> Adrien
> >>
> >>
> >>
> >>
>

Reply via email to