[ 
https://issues.apache.org/jira/browse/CXF-8119?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16961951#comment-16961951
 ] 

Andriy Redko commented on CXF-8119:
-----------------------------------

Hi [~4535992],

I actually had time to look at it but do not have a final working version just 
yet. So you approach is valid I think, but it will apply only to resources in 
your control. The case with OpenApi integration 
(https://issues.apache.org/jira/browse/CXF-8116), with its own resources, would 
still be problematic.

There are 2 options I am exploring right now:
 - using Jetty (or a y other fronting HTTP server)  and CXF with Camel 
transport [1]
 - using Jetty (or a y other fronting HTTP server) and forward to CXF endpoints

My idea (not proven yet) is that in this both cases CXF would be doing all the 
job, including the contexts injections, etc, may be more than needed but at 
least it should work.  

[1] https://cxf.apache.org/docs/apache-camel-transport.html 

> Can't Inject "javax.ws.rs.core.Context" annotation with camel blueprint
> -----------------------------------------------------------------------
>
>                 Key: CXF-8119
>                 URL: https://issues.apache.org/jira/browse/CXF-8119
>             Project: CXF
>          Issue Type: Bug
>          Components: Bus, Core, JAX-RS, OSGi, Resources
>    Affects Versions: 3.2.7
>            Reporter: Marco Tenti
>            Priority: Major
>
> I have a REST Service project build for a Red Hat Fuse.
> it's a simple set up of a rest service with a "blueprint.xml" and the 
> "cxf:rsServer" and it's work just fine.
> But i need to use the @Context annotation of javax.ws.rs and i ca't find a 
> way to inject dynamically the @Context on my java class.
> A full project for test of the problem can be found here:
> [bug-load-context-annotation-blueprint|https://github.com/p4535992/bug-load-context-annotation-blueprint]
> My goal is to set the value of the field;
> {code:java}
> @javax.ws.rs.core.Context
> public javax.ws.rs.core.HttpHeaders httpHeaders;
> {code}
> Another strange bug is if i call the method:
> {code:java}
>       @GET
>       @Path("/ping")
>       @Produces(MediaType.APPLICATION_JSON)
>       @WebMethod(operationName = "ping")
>       @WebResult(name = "Response")
>       @ApiResponses(value = { 
>               @ApiResponse(code = 200, message = "Success") ,
>               @ApiResponse(code = 500, message = "Error") 
>         }
>       )
>       @ApiOperation( "Get operation with Response and @Default value")
>       public Response ping() {
>               logger.info("PING SIGNATURE SERVICE");
>               return Response.ok().entity("PING SIGNATURE SERVICE").build();
>       }
> }
> {code}
> it's work just fine , but if i call this (i just add the @Context HttpHeaders 
> httpHeaders parameter on the method) :
> {code:java}
>  @GET
>  @Path("/ping")
>  @Produces(MediaType.APPLICATION_JSON)
>  @WebMethod(operationName = "ping")
>  @WebResult(name = "Response")
>  @ApiResponses(value =
> { @ApiResponse(code = 200, message = "Success") , @ApiResponse(code = 500, 
> message = "Error") }
> )
>  @ApiOperation( "Get operation with Response and @Default value")
>  public Response ping(@Context HttpHeaders httpHeaders)
> { logger.info("PING SIGNATURE SERVICE"); return Response.ok().entity("PING 
> SIGNATURE SERVICE").build(); }
> }
> {code}
> i get this error:
> {code}
> 415 Error: Unsupported Media Type
>  {code}
> Teh documentation say something about the attribute "propagateContexts" to 
> true, but seem do nothing:
> {code:}
>  <from id="myRestSereer" 
> uri="cxfrs:bean:myRestSereer?performInvocation=true&amp;bindingStyle=SimpleConsumer&amp;propagateContexts=true"/>
> {code}
> ANOTHER example i can't undestand, the first method is injected with succes, 
> the second give me the "415 Error: Unsupported Media Type":
> {code:java}
>       /**
>        * THIS WORK
>        */
>       @GET
>       @Path("/getheader")
>       public Response getHeaderDetails(
>                       @HeaderParam("User-Agent") String userAgent,
>                       @HeaderParam("Content-Type") String contentType,
>                       @HeaderParam("Accept") String accept
>                       ) {
>               String header = "User-Agent: " + userAgent +
>                               "\nContent-Type: " + contentType +
>                               "\nAccept: " + accept;
>               return Response.status(200).entity(header).build();
>       }
>       /**
>        * THIS NOT WORK error "415 Error: Unsupported Media Type"
>        */
>       @GET
>       @Path("/getallheader")
>       public Response getAllHeader(@Context HttpHeaders httpHeaders) {
>               // local variables
>               StringBuffer stringBuffer = new StringBuffer();
>               String headerValue = "";
>               for(String header : httpHeaders.getRequestHeaders().keySet()) {
>                       headerValue = 
> httpHeaders.getRequestHeader(header).get(0);
>                       stringBuffer.append(header + ": " + headerValue + "\n");
>               }
>               logger.info(stringBuffer.toString());
>               return 
> Response.status(200).entity(stringBuffer.toString()).build();
>       }
> {code}
> Anyone know what i'm doing wrong with camel-blueprint?



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to