[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jira] [Commented] (ARIES-1867) ContainerResponseFilter not fired for SSE endpoint

    [ ] 

Tom Quarendon commented on ARIES-1867:

I'm running Windows 10.

If I just run "mvn clean install" from the root of the repository I get [^make.out]

Those errors I can reproduce within eclipse, the test just seems a plain junit test. 

The "testResourceWithSubresource" failure, if I print out the "wrappers" list before the assert, I get:
[\{"method":"GET", "consumingMimeType":null, "producingMimeType":["application/xml"], "nameBindings":null, "path":"/"}, \{"method":"POST", "consumingMimeType":["application/xml"], "producingMimeType":["text/plain","application/json"], "nameBindings":null, "path":"\\\\resourc...ce\\{path}"}, \{"method":"GET", "consumingMimeType":["application/json"], "producingMimeType":["application/json"], "nameBindings":null, "path":"\\\\resourc...ce\\{path}"}, \{"method":"POST", "consumingMimeType":["application/xml"], "producingMimeType":["text/plain","application/json"], "nameBindings":null, "path":"\\\\resourc...resource\\"}, \{"method":"GET", "consumingMimeType":["application/json"], "producingMimeType":["application/json"], "nameBindings":null, "path":"\\\\resourc...resource\\"}]

The path values seem wrong, presumably because I'm on Windows? Printing just those values I get:

In testPlainResourceSeveralOperationsWithDifferentPath, it seems the same, I get:
[\{"method":"GET", "consumingMimeType":null, "producingMimeType":null, "nameBindings":null, "path":"/"}, \{"method":"POST", "consumingMimeType":null, "producingMimeType":null, "nameBindings":null, "path":"\\\\common\\different\\"}]

for testPlainResourceSeveralOperationsWIthCommonPath I get:
[\{"method":"GET", "consumingMimeType":null, "producingMimeType":null, "nameBindings":null, "path":"/"}, \{"method":"POST", "consumingMimeType":null, "producingMimeType":null, "nameBindings":null, "path":"/"}] 



> ContainerResponseFilter not fired for SSE endpoint
> --------------------------------------------------
>                 Key: ARIES-1867
>                 URL:
>             Project: Aries
>          Issue Type: Bug
>          Components: jax-rs-whiteboard
>    Affects Versions: jax-rs-whiteboard-1.0.2
>            Reporter: Tom Quarendon
>            Assignee: Carlos Sierra
>            Priority: Major
>         Attachments:,,, make.out
> I have a resource class such as the following:
> {code:java}
> @Path("events")
> @JaxrsResource
> public class EventsResource {
>   private Sse sse;
>   private SseBroadcaster eventBroadcaster;
>   @Context
>   public void setSse(Sse sse) {
>     this.sse = sse;
>     this.eventBroadcaster = sse.newBroadcaster();
>   }
>   @GET
>   @Produces(MediaType.SERVER_SENT_EVENTS)
>   public void suscribeToEvents(@Context SseEventSink eventSink) {
>     eventBroadcaster.register(eventSink);
>   }
> }
> {code}
> In addition, I have a CORS filter:
> {code:java}
> @Component(immediate=true)
> @Provider
> @JaxrsExtension
> public class CORSFilter implements ContainerResponseFilter {
>   @Override
>   public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) throws IOException {
>     System.out.println("CORSFilter for "+requestContext.getUriInfo().getPath());
>     MultivaluedMap<String, Object> headers = responseContext.getHeaders();
>     headers.add("Access-Control-Allow-Origin", requestContext.getHeaderString("Origin"));
>     ...
> {code}
> The CORS filter gets fired on all requests as I expect, _except_ for ones to the EventResource.subscribeToEvents method. Hence browsers complain when receiving SSE events.
> This used to work fine with jersey as the JAXRS implementation. CORS filter got called for the EventsResource.subscribeToEvents call.
> I've no idea whether this is a jaxrs-whiteboard level issue, or a CXF level issue. I will try and come up with a plain CXF test of the same thing for comparison.

This message was sent by Atlassian JIRA