Hello,

Cool, Atmosphere is a very interesting project.  I think what you
suggest is doable.

(1)  For the processing of Atmosphere's annotations, you may want to
take a look at the
org.apache.wink.server.internal.registry.ServerInjectableFactory.  You
can change the behavior for JAX-RS injections there.  For the example
you've given, the PathParamBinding static inner class should be your
starting point.  The BoundInjectable class that *Binding extends from
contains the meta-information for the injectable field/property.

(2)  You can create your own customized handler(s) to process the
response however you like.  org.apache.wink.server.internal.handlers
are the default server side handlers.  Users can create their own
handlers themselves to alter the behavior but I think you'd have to
make some deeper changes depending on the processing, so you probably
want to extend org.apache.wink.server.internal.DeploymentConfiguration
and change the handler ordering.

http://incubator.apache.org/wink/1.1.1/Apache_Wink_User_Guide.pdf
Chapter 5.7 Handler chain might be of the most use from an
architectural perspective.

If you have more questions, please feel free to ask.  Thanks!

On Thu, Nov 4, 2010 at 9:32 AM, jfarcand <[email protected]> wrote:
> Salut,
>
> first, I apology if there is some documentation I could have read on the
> topic. Just point me to the proper location if that exist.
>
> I'm the lead/creator of Atmosphere, a Comet/Websocket Framework:
>
>    https://github.com/Atmosphere/atmosphere
>
> Atmosphere has several entries point, and one of them is a REST based
> module. What the module offer is new set of annotation to add support for
> Comet based transaction (ya, it's totally opposite of REST...but still fun).
>
>   http://is.gd/gIciG
>
> Currently Atmosphere support Jersey, but I would also like to support Wink.
> Mainly, I would like to be able to do:
>
>>    /**
>>     * Inject a {...@link Broadcaster} based on @Path
>>     */
>>    private @PathParam("topic") Broadcaster topic;
>>
>>    /**
>>     * Suspend the response, and register a {...@link
>> AtmosphereResourceEventListener}
>>     * that get notified when events occurs like client disconnection,
>> broadcast
>>     * or when the response get resumed.
>>     *
>>     * @return A {...@link Broadcastable} used to broadcast events.
>>     */
>>   �...@get
>>   �...@suspend(listeners = {EventsLogger.class})
>>    public Broadcastable subscribe() {
>>        return new Broadcastable(topic);
>>    }
>
> In short, I need to learn how I can extend Wink in order to:
>
>  (1) process the Atmosphere's annotation
>  (2) Intercept the Resource's response in order to take the appropriate
> Atmosphere action.
>
> As an example, here is how I do it in Jersey:
>
>  http://is.gd/gIfNI
>
> Please let me know if that's doable or not. I already able to support Wink
> by injecting the HttpServletRequest and retrieving Atmosphere's object from
> there, but it is not as simple as the snippet above.
>
> Thanks!
>
> -- Jeanfrancois
>
>
>

Reply via email to