Hey Oli,

Isnt that the whiteboard that I gave?
https://github.com/apache/aries-jax-rs-whiteboard 
<https://github.com/apache/aries-jax-rs-whiteboard>

Greets
Roy


> On 28 Jan 2017, at 09:43, olimination <oliminat...@gmail.com> wrote:
> 
> Hi Lance,
> 
> as Mike already mentioned the "Neba framework" offers you the full
> Spring power, meaning you can easily write Spring controllers which then
> for example inject your needed OSGi services and you then do whatever
> you need to do plus you have access to all the possibilities Spring
> offers you.
> 
> See doc here: http://neba.io/documentation.html#spring_mvc
> 
> Or as far as I know with OSGi R7 there will be support for JAX-RS.
> 
> See here: https://adapt.to/2016/en/schedule/osgi-r7.html
> 
> cheers,
> Oli
> 
> On 28.01.2017 07:23, Henry Saginor wrote:
>> Can’t you just create sling servlet registered to some resource type? 
>> You can then simply create JCR node(s) mapped to your resource type. 
>> You can also use a SynthaticResource via custom resource provider, which is 
>> the track you’re on and what Steven is suggesting. 
>> But I find that in most cases just creating a JCR node is more convenient 
>> and you can apply JCR ACLs to it control access if you need it. 
>> 
>>> On Jan 27, 2017, at 9:34 PM, Steven Walters <kemu...@gmail.com> wrote:
>>> 
>>> On Sat, Jan 28, 2017 at 6:27 AM, 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...
>>> 
>>> The Sling paradigm for this is to create resources through the
>>> resource provider,
>>> and then create/register a servlet to respond to the resource type
>>> you're creating (not a static path).
>>> 
>>> So from your above code, you'd create an additional servlet registered
>>> to the resourceType "edlio/microservice/image" (instead of registered
>>> to a static path) and implement GET inside it.
>>> 
>>> Without the corresponding servlet, this is most likely being served by
>>> the default GET servlet, which will not particularly understand how to
>>> deal with these resources, thus the errors.
>> 
>> 

Reply via email to