camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claus Ibsen <claus.ib...@gmail.com>
Subject Re: MinaConfiguration codec property
Date Thu, 05 Mar 2009 09:21:05 GMT
Hi

Sorry yeah its a string as this was how its done in Camel 1.x

We could change it to a real ProtocolCodecFactory object instead of
String and then it should work

For uri you should use the # notation to lookup the codec.

Btw the NPE you get is because you create it like that using Spring
style and the endpoint does not have the CamelContext associated.
And thus it can not got hold of the registry to lookup the codec.

I will fix it.



On Thu, Mar 5, 2009 at 10:11 AM, Nicolas Bouillon <nicolas@bouil.org> wrote:
> I've already tried that. But the codec property IS a string property,
> and then i got the following error :
>
> Caused by: org.springframework.beans.TypeMismatchException: Failed to
> convert property value of type [com.example.MyProtocolCodecFactory] to
> required type [java.lang.String] for property 'codec'; nested
> exception is java.lang.IllegalArgumentException: Cannot convert value
> of type [com.example.MyProtocolCodecFactory] to required type
> [java.lang.String] for property 'codec': no matching editors or
> conversion strategy found
>        at org.springframework.beans.BeanWrapperImpl.convertForProperty(BeanWrapperImpl.java:391)
>        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.convertForProperty(AbstractAutowireCapableBeanFactory.java:1289)
>        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1250)
>        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1010)
>        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:472)
>        ... 29 more
>
>
> On Thu, Mar 5, 2009 at 10:04, Claus Ibsen <claus.ibsen@gmail.com> wrote:
>> Hi
>>
>> You should use ref to refer to another spring bean
>>  <property name="codec" ref="myCodec" />
>>
>> value is for string litterals, numbers and such.
>>
>>
>> On Thu, Mar 5, 2009 at 9:55 AM, Nicolas Bouillon <nicolas@bouil.org> wrote:
>>> Hi,
>>>
>>> i've got an error when trying to create my mina endpoint with spring dsl :
>>>
>>>        <bean id="myCodec" class="com.example.MyProtocolCodecFactory">
>>>        </bean>
>>>
>>>        <bean id="myMinaFactory"
>>> class="org.apache.camel.component.mina.MinaComponent"/>
>>>
>>>        <bean id="myMinaEndpoint"
>>>              factory-bean="myMinaFactory"
>>>              factory-method="createEndpoint">
>>>            <constructor-arg index="0" ref="myMinaConfig"/>
>>>        </bean>
>>>
>>>        <bean id="myMinaConfig"
>>> class="org.apache.camel.component.mina.MinaConfiguration">
>>>                <property name="protocol" value="tcp" />
>>>                <property name="host" value="localhost" />
>>>                <property name="port" value="7777" />
>>>                <property name="sync" value="true" />
>>>                <property name="codec" value="myCodec" />
>>>        </bean>
>>>
>>> I got the following error :
>>> org.springframework.beans.factory.BeanCreationException: Error
>>> creating bean with name 'myMinaEndpoint' defined in class path
>>> resource [spring.xml]: Instantiation of bean failed; nested exception
>>> is org.springframework.beans.factory.BeanDefinitionStoreException:
>>> Factory method [public org.apache.camel.Endpoint
>>> org.apache.camel.component.mina.MinaComponent.createEndpoint(org.apache.camel.component.mina.MinaConfiguration)
>>> throws java.lang.Exception] threw exception; nested exception is
>>> java.lang.NullPointerException
>>>        at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:444)
>>>        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:903)
>>>        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:817)
>>>        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:440)
>>>        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$1.run(AbstractAutowireCapableBeanFactory.java:409)
>>>        at java.security.AccessController.doPrivileged(Native Method)
>>>        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:380)
>>>        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:264)
>>>        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
>>>        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:261)
>>>        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:185)
>>>        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:164)
>>>        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:429)
>>>        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
>>>        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
>>>        at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
>>>        at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
>>>        at com.example.main(App.java:15)
>>> Caused by: org.springframework.beans.factory.BeanDefinitionStoreException:
>>> Factory method [public org.apache.camel.Endpoint
>>> org.apache.camel.component.mina.MinaComponent.createEndpoint(org.apache.camel.component.mina.MinaConfiguration)
>>> throws java.lang.Exception] threw exception; nested exception is
>>> java.lang.NullPointerException
>>>        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:127)
>>>        at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:435)
>>>        ... 17 more
>>> Caused by: java.lang.NullPointerException
>>>        at org.apache.camel.util.CamelContextHelper.lookup(CamelContextHelper.java:152)
>>>        at org.apache.camel.util.CamelContextHelper.mandatoryLookup(CamelContextHelper.java:170)
>>>        at org.apache.camel.impl.DefaultComponent.mandatoryLookup(DefaultComponent.java:315)
>>>        at org.apache.camel.component.mina.MinaComponent.getCodecFactory(MinaComponent.java:360)
>>>        at org.apache.camel.component.mina.MinaComponent.configureCodecFactory(MinaComponent.java:213)
>>>        at org.apache.camel.component.mina.MinaComponent.createSocketEndpoint(MinaComponent.java:175)
>>>        at org.apache.camel.component.mina.MinaComponent.createEndpoint(MinaComponent.java:109)
>>>        at org.apache.camel.component.mina.MinaComponent.createEndpoint(MinaComponent.java:101)
>>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>        at java.lang.reflect.Method.invoke(Method.java:597)
>>>        at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:115)
>>>        ... 18 more
>>>
>>> if i remove the property "codec", it works. I believe it's because the
>>> "myCodec" bean is not already created. It is reference as a spring
>>> value, not as a bean reference. But i tried to add depends-on but it
>>> doesn't work.
>>> <bean depends-on="myCodec" id="myMinaConfig"  ...
>>>
>>> Regards.
>>> NicolaS.
>>>
>>
>>
>>
>> --
>> Claus Ibsen
>> Apache Camel Committer
>>
>> Open Source Integration: http://fusesource.com
>> Blog: http://davsclaus.blogspot.com/
>>
>



-- 
Claus Ibsen
Apache Camel Committer

Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/

Mime
View raw message