Should I create my Endpoints such they are attached to my CamelContext ?
On Thu, Mar 5, 2009 at 10:21, Claus Ibsen <claus.ib...@gmail.com> wrote: > 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/ >