cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sergey Beryozkin (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CXF-5316) REST Overriding request URI doesn't change serviceBeans
Date Tue, 15 Oct 2013 10:32:42 GMT

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

Sergey Beryozkin commented on CXF-5316:
---------------------------------------

Hi Again; actually you may be right, there was an issue resolved in CXF 2.7.7 to do with PreMatching
container filters not able to set Content-Type or Accept. So first, try CXF 2.7.7, and if
the method resolution is still not affected, then try changing the media types as suggested
in my last comment, should work in the end

> REST Overriding request URI doesn't change serviceBeans
> -------------------------------------------------------
>
>                 Key: CXF-5316
>                 URL: https://issues.apache.org/jira/browse/CXF-5316
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-RS
>    Affects Versions: 2.7.6
>            Reporter: DUCHEOL KIM
>            Assignee: Sergey Beryozkin
>
> Hi All.
> I am writing RESTful API code using CXF.
> For the versioning, we plan to implement based on Content-Type header.
> For this, I'm trying to two ways but both of them aren't work.
> 1. Use different Consumes annotation at same class.
>     I try to set different Content-Type at same class, but it always work with one method.
>     @POST
>     @Path("/")
>     @Produces("application/json")
>     @Consumes("application/json; application,v=2")
>     public Response createProjectV2(Person person) {
>     ....
>     }
> ...
>     @POST
>     @Path("/")
>     @Produces("application/json")
>     @Consumes("application/json")
>     public Response createProject(Person person) {
>     ....
>     }
> always "createProject" which has "application/json" on Consumes annotation.
> 2.  Update Request URI at interceptor to use different serviceBean for differnt version.
> public class CommonInInterceptorImpl  implements RequestHandler{
> 	public Response handleRequest(Message message , ClassResourceInfo resourceClass) {
> ...
> 				String requestUri = (String)message.get(Message.REQUEST_URI);
> 				String basePath = (String)message.get(Message.BASE_PATH);
> 				
> 				String targetPath = basePath+"ver-"+version+"/"+requestUri.substring(basePath.length());
> 				message.put(Message.CONTENT_TYPE, "application/json;application,v=2");
> 				message.put(Message.REQUEST_URI, targetPath);
> ...
> }
> ....
> Service Bean 1 
> @Path(PersonService.PERSON_SERVICE_URL)
> public class PersonService extends RESTApiHandler{
> ...
> }
> Service Bean 2  ( in different package ) 
> @Path("/ver-2/"+com.tfsm.palette.api.rest.PersonService.PERSON_SERVICE_URL)
> public class PersonService {
> ...
> }
> I update REQUEST_URI at interceptor to redirect request to other serviceBean, but request
is processed orginal desired serviceBean.
> ( I expect redirect request to 2nd service Bean , but it always processed at 1st service
Bean. )
> I don't know whether 1st approach is correct in JAX RS spec, but I expect 2nd have to
be work because it is mentioned at your documentation.
> http://cxf.apache.org/docs/jax-rs-filters.html#JAX-RSFilters-OverridingrequestURI%2Cqueryandheaders
> Could you let me know how we could redirect request to different serviceBean ? 



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Mime
View raw message