On 14.05.20 09:25, Carsten Ziegeler wrote:.


What's the input of the api? A resource? A value map? Something else?
What's the output? A string? A Json Object ?

What manipulation operations are supported? Filtering of properties?

Depending on what exactly the api does, we can then argue of where to put it.

Carsten, thanks for picking this up.

From the Sling HP: "Apache Sling™ is a framework for RESTful web-applications..."

The key secret sauce of Sling has always been its approach to REST. Now, I'd like to stress the 'RE' in the acronym. To make Sling really the framework of choice for any type of web app, I expected it to offer real simple generation of representations of all sorts, for Web (html), SPAs & Co (Json), semantic web, CMIS (XML/RDF), etc. This ideally directly based on the Resource as state.

While Sling is very far progressed in this for HTML (e.g. sighlty/HTL), the other representations somehow lack behind though they are equally important, especially for machine-to-machine comms.

So, my idea for the general purpose: have a flexible, extensible rendition engine which could potentially be used for any format. But that's probably something for Sling 16... For the JSON part and this moment, I'd be absolutely happy with the JsonItemWriter API as found in Sling 8 and already discussed in this mail thread (https://sling.apache.org/apidocs/sling8/org/apache/sling/commons/json/jcr/JsonItemWriter.html).

JsonItemWriter includes:

- direct conversion of Nodes/Resources to a JSON string (REST!)
- allows the control of recursion levels
- allows to set a negative list of properties (those not to render)
- let's one choose the date format
- (hopefully) renders multi-value props as a Json array

I think I will raise the issue in Jira going in that direction.

-Juerg



On 13.05.2020 14:05, Robert Munteanu wrote:
On Wed, 2020-05-13 at 11:45 +0200, JCR wrote:
And the invoice goes... to the ASF?

If you're looking for someone to invoice I don't think anyone here can
help :-)


Where can I raise the issue? I don't think I have write access to the
Sling Jira.

https://issues.apache.org/jira/browse/SLING

Once registered you can definitely create issues.

And what would be the best approach? Re-activate the
org.apache.sling.commons.json package?

That package was retired for legal reasons, so it can't be reactivated.
More details are at

   https://issues.apache.org/jira/browse/SLING-6536

However, it's on Maven Central, and you can deploy it to your instance
if you think it's useful and you judget that the licensing terms are
acceptable to you. However, it is not supported by us.

https://search.maven.org/search?q=a:org.apache.sling.commons.json

The approach would be to expose a new API to allows consumers to render
objects as JSON (and probably other formats) in the format used by the
DefaultGetServlet and also filter the properties that are rendered.

Thanks,
Robert


Thanks, Juerg

On 12.05.2020 17:47, Robert Munteanu wrote:
On Tue, 2020-05-12 at 16:09 +0200, JCR wrote:
Thanks Daniel, John,

As the app makes high usage of dynamic JCR Node features (based
on
nt:unstructured, mixins, etc), a relatively static sling model
class
seems a bit unpractical, though a typesafe contract would be
desirable,
of course.

On the other hand, the JsonItemWriter would almost be ideal but
is
not
present in Sling 11 anymore. Actually, the entire commons.json
package
disappeared. Seemingly, this package has been replaced by Apache
Johnzon
but I cannot find anything equivalent to JsonItemWriter.

Anybody aware of its substitute?
FWIW, the rendering in the DefaultGetServlet is not accessible to
the
outside world [1]. I could imagine that we could open on the
default
renderers in ways that do not break encapsulation.

Feel free to raise an issue if that's interesting to you.
Obviously, a
PR would be even better :-)

Thanks,
Robert

Thanks,
Juerg


On 11.05.20 16:39, John Kramer wrote:
You could also use a JsonItemWriter and write your own servlet
if
you want to do it that way:

https://sling.apache.org/apidocs/sling8/org/apache/sling/commons/json/jcr/JsonItemWriter.html


John Kramer
Manager, AEM Engineer
E-Commerce Web Team
e: john.kra...@panerabread.com <mailto:john.kra...@panera.com>
m: 314-435-2370

On 5/11/20, 08:54, "Daniel Klco" <dk...@apache.org> wrote:

       Warning:  This email originated from outside of Panera.
Beware
of clicking links and attachments.
                      Sounds like a use case for Sling Models Exporter:
https://sling.apache.org/documentation/bundles/models.html#exporter-framework-since-130-1
https://blogs.perficient.com/2018/07/26/no-servlets-required-exporting-data-with-sling-models/
              The only caveat is that it's designed for named
parameters, if
you really
       need it to be completely configurable at runtime, I'd
suggest
creating a
       servlet attached to a resource type that filters the
current
resources
       value map and uses Jackson to convert it to a JSON.
              On Mon, May 11, 2020 at 4:31 AM JCR <j...@proxymit.net>
wrote:
              > Before I write anything on my own...
       >
       > Hello
       >
       > There is this convenient .json extension which produces
a
JSON
       > serialization of any given resource in Sling.
       >
       > What would be a "best practice" if I only wanted a
subset of
all
       > properties to be serialized on the json stream? That
is, I
would like to
       > provide a "positive" list (lists all props to be
exported)
or a
       > "negative" one (props to be excluded).
       >
       > Example: I have props a, b and c on a given
node/resource
and only a and
       > c should appear on the output.
       >
       > Thanks for any pattern hint
       > Juerg
       >
       >

[1]:
https://github.com/apache/sling-org-apache-sling-servlets-get/blob/master/src/main/java/org/apache/sling/servlets/get/impl/helpers/JsonRenderer.java



Reply via email to