You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@sling.apache.org by "Tobias Bocanegra (JIRA)" <ji...@apache.org> on 2009/03/29 23:53:50 UTC

[jira] Commented: (SLING-902) add java annotation support for sling scr components/servlets

    [ https://issues.apache.org/jira/browse/SLING-902?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12693622#action_12693622 ] 

Tobias Bocanegra commented on SLING-902:
----------------------------------------

see also my suggestions in http://markmail.org/message/4nu226ueie25dxgt

> add java annotation support for sling scr components/servlets
> -------------------------------------------------------------
>
>                 Key: SLING-902
>                 URL: https://issues.apache.org/jira/browse/SLING-902
>             Project: Sling
>          Issue Type: New Feature
>          Components: Servlets Resolver
>            Reporter: Stefan Seifert
>         Attachments: 090329_sling_scr_annotations.zip
>
>
> please note: this proposal depends on a felix-scr-plugin proposal described in
> https://issues.apache.org/jira/browse/FELIX-1010
> with the described scr plugin enhancement it is possible to define SCR component definitions via annotations. furthermore it is possible for felix/SCR based projects to define their own and less verbose annotations for specific need, together with a provider class mapping them to the SCR tags needed by the plugin internally.
> the attached zip file provides such a implemented for one new annotation "SlingServlet", see example below.
> i was not sure into which project and classpath this classes should be placed, so i attached a ZIP file for discussion and try-out. the best solution would be to split them up into two projects - one project containing only the annotation, and the other containing the provider and tag mapping. the first project has no dependencies and can be referenced by any other project needing the annotation. the second has to import the felix-scr-plugin as dependency, this results in a lot of transitive dependency not to be wished in a normal project.
> Example
> -------
> QDox version:
> /**
>  * Sample servlet with sling mappings.
>  * 
>  * @scr.component immediate="true"
>  * @scr.service interface="javax.servlet.Servlet"
>  * @scr.property name="sling.servlet.methods" value="GET"
>  * @scr.property name="sling.servlet.resourceTypes"
>  *               value="/apps/test/components/samplecomponent"
>  * @scr.property name="sling.servlet.extensions" values.0="html" values.1="json"
>  */
> public class SlingServletQDox implements Servlet {
> Annotation version:
> /**
>  * Sample servlet with sling mappings.
>  */
> @SlingServlet(methods = "GET", resourceTypes = "/apps/test/components/samplecomponent", extensions = { "html", "json" })
> public class SlingServletAnnotation implements Servlet {
> Custom annotation mappings can be integrated by defining a class implementing "org.apache.felix.scrplugin.tags.annotation.AnnotationTagProvider" for the new plugin property "annotationTagProviders" in the pom.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.