[
https://issues.apache.org/jira/browse/CXF-5288?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sergey Beryozkin resolved CXF-5288.
-----------------------------------
Resolution: Duplicate
Assignee: Sergey Beryozkin
Hi, has been fixed for CXF 2.7.7, to be released in a few days:
https://issues.apache.org/jira/browse/CXF-5247
> 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