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

Sambit Dikshit commented on CXF-5288:
-------------------------------------

[~sergey_beryozkin] The @BeanParam is not working through proxy client when 
trying to call an interface method which is annotated with GET.  For example if 
we have a method in BookStore interface like public Book getBook(@BeanParam 
Bookbean book) and the Bookbean has 2 fields field1 and field2, field1 is 
annotated with @QueryParam("name") and field2 is annotated with 
@HeaderParam("HDR").  But this works fine for POST methods or when trying to 
consume from a WebClient but not through proxy handle. 


                
> BeanParam does not work as expected 
> ------------------------------------
>
>                 Key: CXF-5288
>                 URL: https://issues.apache.org/jira/browse/CXF-5288
>             Project: CXF
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.7.3
>            Reporter: Sambit Dikshit
>            Assignee: Sergey Beryozkin
>
> Hi,
>  I'm using CXF 2.7.3 version. Our resource API look like below. 
> 1. 
> @POST
> @Path("/books-param-bean")
> @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
> @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
> Book addBookWithParamBeans(@BeanParam BookHeaderBean 
> headerBean,@QueryParam("") BookQueryBean queryBean,Book book) throws 
> ServiceException;
> 2. 
> @POST
> @Path("/books-header-bean")
> @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
> @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
> Book addBookWithHeaderBean(@BeanParam BookHeaderBean headerBean,Book req) 
> throws ServiceException;
> 3. 
> @POST
> @Path("/books-query-bean")
> @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
> @Consumes({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
>       Book addBookWithQueryBean(@QueryParam("") BookQueryBean queryBean,Book 
> req) throws ServiceException;
> Then i'm trying to consume the API using proxy based approach like below. 
> Book req = new Book();
> Book b = new Book("CXF Action 127", 127L);
> b.setChapters(null);
> req.setPayload(b);
>                       
> BookHeaderBean headerBean = new BookHeaderBean();
> headerBean.setHeaderName("CXF-127-Book-From-Header");
> headerBean.setTestHeader("test");
> // get handle to BookStore proxy using WebClient, i'm skipping that code 
> here. 
> Book response = bookStoreProxy.addBookWithHeaderBean(headerBean,req);
> The header bean class look like below. 
> public class BookHeaderBean implements Serializable {
>       private static final long serialVersionUID = 1L;        
>       @HeaderParam("NAME")
>       private String headerName;
>         @HeaderParam("TEST")
>       private String testHeader;
>       
>       public String getHeaderName() {
>               return headerName;
>       }
>       public void setHeaderName(String headerName) {
>               this.headerName = headerName;
>       }
>       public String getTestHeader() {
>               return testHeader;
>       }
>       public void setTestHeader(String testHeader) {
>               this.testHeader = testHeader;
>       }
> }
> public class BookQueryBean implements Serializable {
>      private String name;
>      private long id;
>      private String status;
>      public BookQueryBean(String name, long id) {
>               this.name = name;
>               this.id = id;
>      }
>      public void setName(String n) {
>               name = n;
>       }
>       public String getName() {
>               return name;
>       }
>       public void setId(long i) {
>               id = i;
>       }
>       public long getId() {
>               return id;
>       }
>       public String getStatus() {
>               return status;
>       }
>       public void setStatus(String status) {
>               this.status = status;
>       }
> }
> Now when we try the proxy based client to call the methods which take header 
> bean and query beans, only the query bean method is working. The header beans 
> does not work. Basically the @BeanParam defined beans are not working through 
> client side proxy. However when we directly hit the URL from a rest browser 
> and construct the http header and query strings etc, it does work. It means 
> the un-marshaling from header parameters to beans is happening at server 
> side. where as marshaling from bean to header params is not happening at 
> client side proxy impl. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to