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

MIchail Nikolaev commented on CXF-5776:
---------------------------------------

This is the code to reproduce issue (works in 2.7.9 and not works 2.7.11-12 
(throws exception))
{code}
    @GET
    @Path("/{type}/{identity}/parent")
    ResourceDescriptor getParentResource(@BeanParam ResourceDescriptor child);

public class ResourceDescriptor {
    @PathParam("identity")
    private Identity identity;

    @PathParam("type")
    private ResourceType type;

    public ResourceDescriptor() {
    }

    @PathParam("identity")
    @Nonnull
    public Identity getIdentity() {
        return identity;
    }

    @PathParam("type")
    @Nonnull
    public ResourceType getType() {
        return type;
    }
{code}

> @PathParam not works inside @BeanParam
> --------------------------------------
>
>                 Key: CXF-5776
>                 URL: https://issues.apache.org/jira/browse/CXF-5776
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-RS
>    Affects Versions: 2.7.11
>            Reporter: MIchail Nikolaev
>            Assignee: Sergey Beryozkin
>            Priority: Minor
>
> Check line:
> https://fisheye6.atlassian.com/browse/~br=2.7.x-fixes/cxf/rt/frontend/jaxrs/src/main/java/org/apache/cxf/jaxrs/client/ClientProxyImpl.java?r=3248da800fdf25f5bd962b962b7ff2d9d98cd225#to485
> Error in the snippet
> {code}
>  m.getParameterAnnotations()[0]
> {code}
> - for some reason you get first annotation from *parameter* of the method 
> (setter?).
> So, to make it worked I need to use such workaround:
> {code}
>     @PathParam("identity")
>     public void setIdentity(@Nonnull @PathParam("identity") Identity 
> identity) {
>         this.identity = identity;
>     }
> {code}
> Probably you need to call _getter.getAnnotation(anClass)_ to allow such 
> properties to work (it worked in 2.7.9 as far as I remember):
> {code}
>     public void setIdentity(@Nonnull Identity identity) {
>         this.identity = identity;
>     }
>     @PathParam("identity")
>     @Nonnull
>     public Identity getIdentity() {
>         return identity;
>     }
> {code}
> Also, it is better to catch Exception instead of Throwable.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to