You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Zdeněk Obst (JIRA)" <ji...@apache.org> on 2015/01/09 08:45:34 UTC

[jira] [Updated] (CXF-6190) HttpServletRequest injection via Context in setter

     [ https://issues.apache.org/jira/browse/CXF-6190?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Zdeněk Obst updated CXF-6190:
-----------------------------
    Description: 
I'm trying to inject HttpServletRequest to my JAX-RS resource via @Context annotation. It works fine if I inject it via method parameter. But I don't want to "mess" my interfaces with that so I'd like to inject it via setter.

I use this simple method (I'm using Kotlin but I the issue should be the same for Java):

{code:java}
    var req : HttpServletRequest? = null

    Context
    fun setRequest(req : HttpServletRequest) {
        this.req = req
    }
{code}

The thing is, that the setter is called via reflection in org.apache.cxf.jaxrs.utils.InjectionUtils in method injectThroughMethod. The method name is correct but as parameter value is instance of ThreadLocalHttpServletRequest which clearly is not HttpServletRequest (it is not inherited class) so this gets thrown: 

java.lang.IllegalArgumentException: object is not an instance of declaring class

  was:
I'm trying to inject HttpServletRequest to my JAX-RS resource via @Context annotation. It works fine if I inject it via method parameter. But I don't want to "mess" my interfaces with that so I'd like to inject it via setter.

I use this simple method (I'm using Kotlin but I the issue should be the same for Java):

    var req : HttpServletRequest? = null

    Context
    fun setRequest(req : HttpServletRequest) {
        this.req = req
    }

The thing is, that the setter is called via reflection in org.apache.cxf.jaxrs.utils.InjectionUtils in method injectThroughMethod. The method name is correct but as parameter value is instance of ThreadLocalHttpServletRequest which clearly is not HttpServletRequest (it is not inherited class) so this gets thrown: 

java.lang.IllegalArgumentException: object is not an instance of declaring class


> HttpServletRequest injection via Context in setter
> --------------------------------------------------
>
>                 Key: CXF-6190
>                 URL: https://issues.apache.org/jira/browse/CXF-6190
>             Project: CXF
>          Issue Type: Bug
>          Components: JAX-RS
>    Affects Versions: 3.0.3
>            Reporter: Zdeněk Obst
>
> I'm trying to inject HttpServletRequest to my JAX-RS resource via @Context annotation. It works fine if I inject it via method parameter. But I don't want to "mess" my interfaces with that so I'd like to inject it via setter.
> I use this simple method (I'm using Kotlin but I the issue should be the same for Java):
> {code:java}
>     var req : HttpServletRequest? = null
>     Context
>     fun setRequest(req : HttpServletRequest) {
>         this.req = req
>     }
> {code}
> The thing is, that the setter is called via reflection in org.apache.cxf.jaxrs.utils.InjectionUtils in method injectThroughMethod. The method name is correct but as parameter value is instance of ThreadLocalHttpServletRequest which clearly is not HttpServletRequest (it is not inherited class) so this gets thrown: 
> java.lang.IllegalArgumentException: object is not an instance of declaring class



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)