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 <nico...@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.ib...@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 <nico...@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/