You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Justin Edelson (JIRA)" <ji...@apache.org> on 2016/10/28 15:02:58 UTC

[jira] [Assigned] (SLING-6183) Sling Models - Provide a mechanism to export model objects via servlets

     [ https://issues.apache.org/jira/browse/SLING-6183?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Justin Edelson reassigned SLING-6183:
-------------------------------------

    Assignee: Justin Edelson

> Sling Models - Provide a mechanism to export model objects via servlets
> -----------------------------------------------------------------------
>
>                 Key: SLING-6183
>                 URL: https://issues.apache.org/jira/browse/SLING-6183
>             Project: Sling
>          Issue Type: New Feature
>          Components: Extensions
>            Reporter: Justin Edelson
>            Assignee: Justin Edelson
>             Fix For: Sling Models API 1.3.0, Sling Models Impl 1.3.0, Sling Models Jackson Exporter 1.0.0
>
>         Attachments: SLING-6183.patch
>
>
> I would like to introduce a new feature to Sling Models named Exporters.
> Exporters allow for a model class to be exported into a specific Java object type in a automated fashion. The simplest example is to support String serialization, although different Exporters may support whatever target classes they see fit.
> Exporters are implemented through an SPI. This initial contribution includes an exporter using the Jackson library which supports both {{String}} and {{Map}} exports.
> Interfacing with the registered Exporters is done through three new methods on the {{ModelFactory}} interface:
> * {{exportMode}}
> * {{exportModelForResource}}
> * {{exportModelForRequest}}
> In addition, using these functionality, model objects can have automatically-registered servlets which export the model (from either the request or the request's resource) as a {{String}} and then serve that {{String}} to the client.
> Registering these servlets is done through a new annotation named {{@Exporter}}
> For example, you might add this annotation to a Model class
> {{@Exporter(name = 'jackson', extension = 'json')}}
> This will register a servlet for the model's resource type with the extension `json` and a selector of `model` (by default, the {{@Exporter}} annotation can also define a different selector).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)