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

Justin Edelson updated SLING-6183:
----------------------------------
    Description: 
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).

  was:
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).


> 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
>             Fix For: Sling Models API 1.3.0, Sling Models Impl 1.3.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)

Reply via email to