[
https://issues.apache.org/jira/browse/SLING-902?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Felix Meschberger updated SLING-902:
------------------------------------
Component/s: (was: Servlets Resolver)
Maven Plugins
> 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: Maven Plugins
> 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.