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

Sambit Dikshit edited comment on CXF-5108 at 7/9/13 5:23 AM:
-------------------------------------------------------------

Hi [~sergey_beryozkin] [~sergeyb],
   
I tried with following book class. It failed because it tries to find the keys 
for methods like isEmpty in HashMap.  Suppose you have one attribute in the 
bean which is a map and which is initialized as an empty HashMap. Then when it 
tries to find params it fails.  

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Book")
@XmlRootElement(name = "Book")
public class Book implements Serializable {
        private String name;
     private long id;
        
     private Map<Long, Chapter> chapters = new HashMap<Long,Chapter>();
        
     public Book() {
        }

     public Book(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 Map<Long, Chapter> getChapters() {
                return chapters;
        }
        public void setChapters(Map<Long, Chapter> chapters) {
                this.chapters = chapters;
        }

}

You can try the same test case with the above bean and let me know. 
                
      was (Author: sambitd):
    Hi Sergey,
   I tried with following book class. It failed because it tries to find the 
keys for methods like isEmpty in HashMap.  Suppose you have one attribute in 
the bean which is a map and which is initialized as an empty HashMap. Then when 
it tries to find params it fails.  

@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Book")
@XmlRootElement(name = "Book")
public class Book implements Serializable {
        private String name;
     private long id;
        
     private Map<Long, Chapter> chapters = new HashMap<Long,Chapter>();
        
     public Book() {
        }

     public Book(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 Map<Long, Chapter> getChapters() {
                return chapters;
        }
        public void setChapters(Map<Long, Chapter> chapters) {
                this.chapters = chapters;
        }

}

You can try the same test case with the above bean and let me know. 

                  
> parameter beans feature not working through dynamic proxy based clients for 
> JAXRS
> ---------------------------------------------------------------------------------
>
>                 Key: CXF-5108
>                 URL: https://issues.apache.org/jira/browse/CXF-5108
>             Project: CXF
>          Issue Type: Bug
>          Components: Core, JAX-RS
>    Affects Versions: 2.7.3, 2.7.5
>            Reporter: Sambit Dikshit
>            Assignee: Sergey Beryozkin
>
> We have a resource method declared as below. 
> @Path("/books")
> @Produces({ MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON })
> Book searchBook(@QueryParam("") Book book) throws ServiceException;
> Here the query param can be any combination of property of the book bean 
> which are searchable. 
> When we construct the URL with appropriate query string and use the web 
> client, it works fine.  
> But it does not work when some one is using the proxy based approach where 
> the client get hold of the interface for e.g BookStoreResourceI and try to 
> get call the searchBook(Book b) method on that resource interface.  
> When debug found that, the client side conversion for cases like 
> @QueryParam("")
> @PathParam(""), @MatrixParam("")  are missing and its being implemented in 
> the JAXRSInvoker.invoke operation just before invoking the resource 
> API/method. 
> We need to have this feature of conversion from these parameter types to 
> actual URL so that irrespective of which type of client is consuming your 
> service, it will work. Otherwise it will become a half baked client 
> consumption model. 

--
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