Check out http://neba.io/ it should do what you need with Spring
instead of Jersey.

hope this helps
--mike

On Fri, Jan 27, 2017 at 3:27 PM, lancedolan <lance.do...@gmail.com> wrote:
> Hi friends,
>
> I've tried routing questions through stackoverflow to cut down my mails to
> this list. I'm losing lots of time on this one, though, and am stuck.
>
> I need to create APIs which don't represent Sling Resources. Example:
> /services/images/123123123
> that image will exist somewhere else.
>
> Bertrand suggests creating a ResourceProvider, as in the example here [1].
> However, that uses the spi package which is not in version 2.9.0 of
> org.apache.sling.api, and thus, not available to me in Sling 8.
>
> I did find a ResourceProvider interface to implement though, and created
> this code:
>
> /**
>  * Created by lancedolan on 1/27/17.
>  */
> @Component
> @Service(value=ResourceProvider.class)
> @Properties({
>         @Property(name = ResourceProvider.ROOTS, value = "things"),
>         @Property(name = ResourceProvider.OWNS_ROOTS, value = "true")
> })
> public class ImageResourceProvider implements ResourceProvider {
>
>     /** If this provider required a context this would be more elaborate,
>      *  but for this simple example we don't need one.
>      */
>     public static class DoesNotNeedAContext {
>     };
>
>     @Override
>     public Resource getResource(ResourceResolver resourceResolver, String
> path) {
>         Resource returnResource = new SyntheticResource(resourceResolver,
> path, "edlio/microservice/image");
>         returnResource.getValueMap().put("myProp" , "myValue");
>         return returnResource;
>     }
>
>     @Override
>     public Resource getResource(ResourceResolver resourceResolver,
> HttpServletRequest httpServletRequest, String path) {
>         return getResource(resourceResolver , path);
>     }
>
>     @Override
>     public Iterator<Resource> listChildren(Resource resource) {
>         return null;
>     }
> }
>
>
> The result is that I get a 403 response. How do I control the authentication
> for resources that don't actually exist? The fact that I'm not getting 404
> means that my ResourceProvider is at least registering successfully.
>
> Finally, I'd much prefer to use Jersey if possible... Anybody have success
> getting Jersey to work in Sling 8? I dumped a bunch of time into it and gave
> up after class not found errors for classes that should be found [2].
>
> The ultimate goal is just to provide a restful API in Sling 8 and the
> static-path-declaration of SlingSafeMethodsServlet just doesn't cut it.
>
> Thanks a million guys...
>
>
>
> [1]
> https://github.com/apache/sling/blob/trunk/launchpad/test-services/src/main/java/org/apache/sling/launchpad/testservices/resourceprovider/PlanetsResourceProvider.java
>
> [2] http://stackoverflow.com/questions/41901337/how-to-use-jersey-in-sling
>
>
>
>
>
> --
> View this message in context: 
> http://apache-sling.73963.n3.nabble.com/How-to-create-Rest-APIs-for-non-JCR-data-in-Sling-8-tp4069947.html
> Sent from the Sling - Users mailing list archive at Nabble.com.

Reply via email to