I think it makes sense to discuss API options first, to avoid going back and forth.

First question being, which JSON library do we support? As we settled on johnzon, I assume thats the one.

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.

Just some thoughts.

Regards
Carsten

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



--
--
Carsten Ziegeler
Adobe Research Switzerland
cziege...@apache.org

Reply via email to