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 > >> > >> > >> > >> >
