So when you say data structure you're talking about nodes in the jcr structure 
and their contents. Each node is wrapped in concept called a resource. 

When you wrote the url earlier  http://localhost:8090/var/content.tidy.json  
the underlying REST engine is finding the resource at the path /var/content/ 
which in this case is specifically a jcr node resource and then it's looking at 
the extension you're using and selecting an OSGi that renders that service. In 
this case there's a specific resource renderer that handles json and it's the 
renderer that is taking your request for that resource and returning the json 
object. You could actually get the entire tree that you are authorized to see 
with one call by using http://localhost:8090/var/content.infinity.json  

More information at 
http://sling.apache.org/documentation/the-sling-engine/architecture.html




-----Original Message-----
From: Bruce Edge [mailto:bruce.e...@nextissuemedia.com] 
Sent: Wednesday, November 12, 2014 2:29 PM
To: users@sling.apache.org
Subject: Re: HATEOAS compliant json self/child references from sling?

I must be missing some fundamental concept here.
I'm not sure exactly what you mean by "default json rendering of resources". 
I'm after structure data here, not actual content rendering.
I just want to be able to obtain self & child references in json responses so 
the UI can create the appropriate tree structure to navigate the JCR data.
The actual representation of the leaf node data will be specific to that data 
type and handled by the client UI.

-Bruce

From: Sarwar Bhuiyan <sarwar.bhui...@gmail.com<mailto:sarwar.bhui...@gmail.com>>
Reply-To: "users@sling.apache.org<mailto:users@sling.apache.org>" 
<users@sling.apache.org<mailto:users@sling.apache.org>>
Date: Wednesday, November 12, 2014 at 11:20 AM
To: "users@sling.apache.org<mailto:users@sling.apache.org>" 
<users@sling.apache.org<mailto:users@sling.apache.org>>
Subject: Re: HATEOAS compliant json self/child references from sling?

Bruce, it's not the format that's the problem. It's the default json rendering 
of resources that's the issue for things exposed to the public side. Typically 
what we do for the web side of things is either write our own servlets or 
component jsps where we can have more control of what to output.

On Wednesday, November 12, 2014, Bruce Edge 
<bruce.e...@nextissuemedia.com<mailto:bruce.e...@nextissuemedia.com>>
wrote:

I can understand how exposing that level of structure may be a risk in some 
circumstances but it allows for a huge leg up on the client side code.
Things like https://github.com/GonzaloAlvarez/restangular-hateoas provide a 
superbly simple way to wrap a UI around the whole thing if you have HATEOAS on 
the server side. It's as close as you can get to a CRUD UI with seriously 
minimal code.
Also, this is the data format provided by spring-data-rest, so it's a format 
that already has wide acceptance.

I suppose one could enable this only for specific paths if security was a 
concern.

-Bruce

From: Jason Bailey <jason.bai...@sas.com<mailto:jason.bai...@sas.com> 
<javascript:;><mailto:
jason.bai...@sas.com<mailto:jason.bai...@sas.com> <javascript:;>>>
Reply-To: "users@sling.apache.org<mailto:users@sling.apache.org> 
<javascript:;><mailto:
users@sling.apache.org<mailto:users@sling.apache.org> <javascript:;>>" 
<users@sling.apache.org<mailto:users@sling.apache.org>
<javascript:;><mailto:users@sling.apache.org <javascript:;>>>
Date: Wednesday, November 12, 2014 at 11:05 AM
To: "users@sling.apache.org<mailto:users@sling.apache.org> 
<javascript:;><mailto:users@sling.apache.org
<javascript:;>>" <users@sling.apache.org<mailto:users@sling.apache.org> 
<javascript:;><mailto:
users@sling.apache.org<mailto:users@sling.apache.org> <javascript:;>>>
Subject: RE: HATEOAS compliant json self/child references from sling?

Not unless you add it yourself. As a note, you may not want to design your 
application where you are relying on the default json renderer to supply 
information to the front end client. It can reveal more information and 
structure then a lot of people are comfortable with.

-----Original Message-----
From: Bruce Edge [mailto:bruce.e...@nextissuemedia.com <javascript:;>]
Sent: Wednesday, November 12, 2014 1:49 PM
To: users
Subject: HATEOAS compliant json self/child references from sling?

Can one retrieve HATEOAS format responses form sling?

%> curl -qu admin:admin http://localhost:8090/var/content.tidy.json
{
   "jcr:createdBy": "admin",
   "jcr:mimeType": "application/octet-stream",
   "jcr:created": "Sat Nov 08 2014 16:17:51 GMT-0800",
   "jcr:lastModified": "Sat Nov 08 2014 16:17:51 GMT-0800",
   "jcr:primaryType": "sling:Folder"
}

Using a HATEOAS server I would expect something like this:
{
   "jcr:createdBy": "admin",
   "jcr:mimeType": "application/octet-stream",
   "jcr:created": "Sat Nov 08 2014 16:17:51 GMT-0800",
   "jcr:lastModified": "Sat Nov 08 2014 16:17:51 GMT-0800",
   "jcr:primaryType": ³sling:Folder"
"_links":{
     "self":{
       "href":"http://localhost:8090/var/content";
     }
   }
}

Is it possible to have sling insert both self and child references into all 
json responses?

-Bruce




Reply via email to