camel-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Dean Thompson (JIRA)" <j...@apache.org>
Subject [jira] Commented: (CAMEL-494) CamelBeanPostProcessor.camelContext cannot be injected if SpringCamelContext is proxied (e.g. AOP)
Date Wed, 25 Jun 2008 13:19:00 GMT

    [ https://issues.apache.org/activemq/browse/CAMEL-494?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=43702#action_43702
] 

Dean Thompson commented on CAMEL-494:
-------------------------------------

One other thought on this: Any class that is intended as a Spring bean really should make
its functionality available through an interface.
Proxying class interfaces in Spring is possible in many cases, but is certainly not the norm
or the recommended approach.  Although
I agree, Claus, that the best first approach was to create a unit test that would fail, would
you consider creating an interface for SpringCamelContext
just as a matter of good general Spring practice, and just verifying that the existing unit
tests still work?

> CamelBeanPostProcessor.camelContext cannot be injected if SpringCamelContext is proxied
(e.g. AOP)
> --------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-494
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-494
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-spring
>    Affects Versions: 1.3.0
>            Reporter: Dean Thompson
>            Assignee: Claus Ibsen
>             Fix For: 1.4.0
>
>         Attachments: camel-example-spring-jms-1.4-SNAPSHOT.jar, iris-framework.xml, spring-magic.xml
>
>
> Because CamelBeanPostProcessor.setCamelContext(SpringCamelContext) takes the class SpringCamelContext
as its parameter, bean initialization fails if SpringCamelContext is proxied.  The error is
as follows:
> {code}
> org.springframework.beans.factory.BeanCreationException: Error creating bean with name
'camelContext:beanPostProcessor': Initialization of bean failed; nested exception is org.springframework.beans.TypeMismatchException:
Failed to convert property value of type [$Proxy61] to required type [org.apache.camel.spring.SpringCamelContext]
for property 'camelContext'; nested exception is java.lang.IllegalArgumentException: Cannot
convert value of type [$Proxy61] to required type [org.apache.camel.spring.SpringCamelContext]
for property 'camelContext': no matching editors or conversion strategy found
> {code}
> In my project's Spring conf, we declare <aop:aspectj-autoproxy/>, which causes
all Spring beans to be proxied.  This triggers the problem shown above.  The problem should
be reproducible by adding <aop:aspectj-autoproxy/> to any Spring config that uses <camel:camelContext>.
> The fix will be to separate the interface and class for SpringCamelContext, and use the
interface where appropriate.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message