On Mon, Dec 29, 2014 at 1:22 PM, Willem Jiang <willem.ji...@gmail.com> wrote: > Hi Claus, > > Thanks for pointing that out. It looks like the Camel Spring already > support it, but how about the blueprint? >
They both support the same. They use the same shared code in camel-core-xml. See this class https://github.com/apache/camel/blob/master/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java#L147 So if we add other pluggable spi's in the future, its just a matter of adding a bit of code to that class. > > Willem Jiang > > Red Hat, Inc. > FuseSource is now part of Red Hat > Web: http://www.fusesource.com | http://www.redhat.com > Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/) > (English) > http://jnn.iteye.com (http://jnn.javaeye.com/) (Chinese) > Twitter: willemjiang > Weibo: 姜宁willem > > On Sun, Dec 28, 2014 at 10:01 PM, Claus Ibsen <claus.ib...@gmail.com> wrote: > >> -1 >> >> You can already do this. There is no need to have an >> inflightRepositoryRef option. Just declare the bean and its auto >> configured which is standard already. >> >> See >> >> http://camel.apache.org/advanced-configuration-of-camelcontext-using-spring.html >> >> On Tue, Dec 23, 2014 at 3:40 PM, <ningji...@apache.org> wrote: >> > CAMEL-8173 Support to set InflightRepository from Camel XML DSL >> > >> > >> > Project: http://git-wip-us.apache.org/repos/asf/camel/repo >> > Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/d3d3161b >> > Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/d3d3161b >> > Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/d3d3161b >> > >> > Branch: refs/heads/master >> > Commit: d3d3161b408a12349d55a26277590fcafc49c99f >> > Parents: 524a4e5 >> > Author: Willem Jiang <willem.ji...@gmail.com> >> > Authored: Tue Dec 23 22:05:49 2014 +0800 >> > Committer: Willem Jiang <willem.ji...@gmail.com> >> > Committed: Tue Dec 23 22:19:49 2014 +0800 >> > >> > ---------------------------------------------------------------------- >> > .../blueprint/CamelContextFactoryBean.java | 10 +++++ >> > .../xml/AbstractCamelContextFactoryBean.java | 11 ++++++ >> > .../camel/spring/CamelContextFactoryBean.java | 12 +++++- >> > .../spring/config/MyInflightRepositoryTest.java | 39 +++++++++++++++++++ >> > .../spring/config/myInflightRepository.xml | 40 >> ++++++++++++++++++++ >> > 5 files changed, 111 insertions(+), 1 deletion(-) >> > ---------------------------------------------------------------------- >> > >> > >> > >> http://git-wip-us.apache.org/repos/asf/camel/blob/d3d3161b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java >> > ---------------------------------------------------------------------- >> > diff --git >> a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java >> b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java >> > index 56f1fba..d89f2d8 100644 >> > --- >> a/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java >> > +++ >> b/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/CamelContextFactoryBean.java >> > @@ -107,6 +107,8 @@ public class CamelContextFactoryBean extends >> AbstractCamelContextFactoryBean<Blu >> > @XmlAttribute(required = false) >> > private String threadNamePattern; >> > @XmlAttribute(required = false) >> > + private String inflightRepositoryRef; >> > + @XmlAttribute(required = false) >> > private Boolean useBlueprintPropertyResolver; >> > @XmlAttribute(required = false) >> > private ShutdownRoute shutdownRoute; >> > @@ -377,6 +379,14 @@ public class CamelContextFactoryBean extends >> AbstractCamelContextFactoryBean<Blu >> > this.threadNamePattern = threadNamePattern; >> > } >> > >> > + public String getInflightRepositoryRef() { >> > + return inflightRepositoryRef; >> > + } >> > + >> > + public void setInflightRepositoryRef(String inflightRepositoryRef) { >> > + this.inflightRepositoryRef = inflightRepositoryRef; >> > + } >> > + >> > @Deprecated >> > public Boolean getLazyLoadTypeConverters() { >> > // use false by default >> > >> > >> http://git-wip-us.apache.org/repos/asf/camel/blob/d3d3161b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java >> > ---------------------------------------------------------------------- >> > diff --git >> a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java >> b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java >> > index 8aca563..c12ce14 100644 >> > --- >> a/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java >> > +++ >> b/components/camel-core-xml/src/main/java/org/apache/camel/core/xml/AbstractCamelContextFactoryBean.java >> > @@ -24,6 +24,7 @@ import java.util.Map; >> > import java.util.Map.Entry; >> > import java.util.Set; >> > import java.util.concurrent.atomic.AtomicBoolean; >> > + >> > import javax.xml.bind.annotation.XmlAccessType; >> > import javax.xml.bind.annotation.XmlAccessorType; >> > import javax.xml.bind.annotation.XmlTransient; >> > @@ -672,6 +673,8 @@ public abstract class >> AbstractCamelContextFactoryBean<T extends ModelCamelContex >> > public abstract List<RestContextRefDefinition> getRestRefs(); >> > >> > public abstract String getErrorHandlerRef(); >> > + >> > + public abstract String getInflightRepositoryRef(); >> > >> > public abstract DataFormatsDefinition getDataFormats(); >> > >> > @@ -715,6 +718,14 @@ public abstract class >> AbstractCamelContextFactoryBean<T extends ModelCamelContex >> > if (getErrorHandlerRef() != null) { >> > ctx.setErrorHandlerBuilder(new >> ErrorHandlerBuilderRef(getErrorHandlerRef())); >> > } >> > + if (getInflightRepositoryRef() != null) { >> > + InflightRepository repository = >> ctx.getRegistry().lookupByNameAndType(getInflightRepositoryRef(), >> InflightRepository.class); >> > + if (repository == null) { >> > + throw new IllegalArgumentException("Cannot not find >> InflightRepository instance from CamelContext registry with " + >> getInflightRepositoryRef()); >> > + } >> > + ctx.addService(repository); >> > + ctx.setInflightRepository(repository); >> > + } >> > if (getAutoStartup() != null) { >> > >> ctx.setAutoStartup(CamelContextHelper.parseBoolean(getContext(), >> getAutoStartup())); >> > } >> > >> > >> http://git-wip-us.apache.org/repos/asf/camel/blob/d3d3161b/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java >> > ---------------------------------------------------------------------- >> > diff --git >> a/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java >> b/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java >> > index 0a39e2a..859b963 100644 >> > --- >> a/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java >> > +++ >> b/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java >> > @@ -19,6 +19,7 @@ package org.apache.camel.spring; >> > import java.util.ArrayList; >> > import java.util.List; >> > import java.util.Map; >> > + >> > import javax.xml.bind.annotation.XmlAccessType; >> > import javax.xml.bind.annotation.XmlAccessorType; >> > import javax.xml.bind.annotation.XmlAttribute; >> > @@ -70,7 +71,6 @@ import >> org.springframework.context.ApplicationContextAware; >> > import org.springframework.context.ApplicationEvent; >> > import org.springframework.context.ApplicationListener; >> > import org.springframework.context.event.ContextRefreshedEvent; >> > - >> > import static >> org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException; >> > >> > /** >> > @@ -118,6 +118,8 @@ public class CamelContextFactoryBean extends >> AbstractCamelContextFactoryBean<Spr >> > @XmlAttribute(required = false) >> > private String threadNamePattern; >> > @XmlAttribute(required = false) >> > + private String inflightRepositoryRef; >> > + @XmlAttribute(required = false) >> > private ShutdownRoute shutdownRoute; >> > @XmlAttribute(required = false) >> > private ShutdownRunningTask shutdownRunningTask; >> > @@ -630,6 +632,14 @@ public class CamelContextFactoryBean extends >> AbstractCamelContextFactoryBean<Spr >> > this.threadNamePattern = threadNamePattern; >> > } >> > >> > + public String getInflightRepositoryRef() { >> > + return inflightRepositoryRef; >> > + } >> > + >> > + public void setInflightRepositoryRef(String inflightRepositoryRef) { >> > + this.inflightRepositoryRef = inflightRepositoryRef; >> > + } >> > + >> > @Deprecated >> > public Boolean getLazyLoadTypeConverters() { >> > return lazyLoadTypeConverters; >> > >> > >> http://git-wip-us.apache.org/repos/asf/camel/blob/d3d3161b/components/camel-spring/src/test/java/org/apache/camel/spring/config/MyInflightRepositoryTest.java >> > ---------------------------------------------------------------------- >> > diff --git >> a/components/camel-spring/src/test/java/org/apache/camel/spring/config/MyInflightRepositoryTest.java >> b/components/camel-spring/src/test/java/org/apache/camel/spring/config/MyInflightRepositoryTest.java >> > new file mode 100644 >> > index 0000000..53c19e2 >> > --- /dev/null >> > +++ >> b/components/camel-spring/src/test/java/org/apache/camel/spring/config/MyInflightRepositoryTest.java >> > @@ -0,0 +1,39 @@ >> > +/** >> > + * Licensed to the Apache Software Foundation (ASF) under one or more >> > + * contributor license agreements. See the NOTICE file distributed with >> > + * this work for additional information regarding copyright ownership. >> > + * The ASF licenses this file to You under the Apache License, Version >> 2.0 >> > + * (the "License"); you may not use this file except in compliance with >> > + * the License. You may obtain a copy of the License at >> > + * >> > + * http://www.apache.org/licenses/LICENSE-2.0 >> > + * >> > + * Unless required by applicable law or agreed to in writing, software >> > + * distributed under the License is distributed on an "AS IS" BASIS, >> > + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >> implied. >> > + * See the License for the specific language governing permissions and >> > + * limitations under the License. >> > + */ >> > +package org.apache.camel.spring.config; >> > + >> > +import org.apache.camel.impl.DefaultInflightRepository; >> > +import org.apache.camel.spring.SpringCamelContext; >> > +import org.apache.camel.spring.SpringTestSupport; >> > +import >> org.springframework.context.support.AbstractXmlApplicationContext; >> > +import >> org.springframework.context.support.ClassPathXmlApplicationContext; >> > + >> > +public class MyInflightRepositoryTest extends SpringTestSupport { >> > + protected AbstractXmlApplicationContext createApplicationContext() { >> > + return new >> ClassPathXmlApplicationContext("org/apache/camel/spring/config/myInflightRepository.xml"); >> > + } >> > + >> > + public void testEndpointConfiguration() throws Exception { >> > + SpringCamelContext context = >> applicationContext.getBeansOfType(SpringCamelContext.class).values().iterator().next(); >> > + assertTrue("Get a wrong inflight repository", >> context.getInflightRepository() instanceof MyInflightRepository); >> > + } >> > + >> > + public static class MyInflightRepository extends >> DefaultInflightRepository { >> > + >> > + } >> > + >> > +} >> > >> > >> http://git-wip-us.apache.org/repos/asf/camel/blob/d3d3161b/components/camel-spring/src/test/resources/org/apache/camel/spring/config/myInflightRepository.xml >> > ---------------------------------------------------------------------- >> > diff --git >> a/components/camel-spring/src/test/resources/org/apache/camel/spring/config/myInflightRepository.xml >> b/components/camel-spring/src/test/resources/org/apache/camel/spring/config/myInflightRepository.xml >> > new file mode 100644 >> > index 0000000..3536ccf >> > --- /dev/null >> > +++ >> b/components/camel-spring/src/test/resources/org/apache/camel/spring/config/myInflightRepository.xml >> > @@ -0,0 +1,40 @@ >> > +<?xml version="1.0" encoding="UTF-8"?> >> > +<!-- >> > + Licensed to the Apache Software Foundation (ASF) under one or more >> > + contributor license agreements. See the NOTICE file distributed >> with >> > + this work for additional information regarding copyright ownership. >> > + The ASF licenses this file to You under the Apache License, Version >> 2.0 >> > + (the "License"); you may not use this file except in compliance with >> > + the License. You may obtain a copy of the License at >> > + >> > + http://www.apache.org/licenses/LICENSE-2.0 >> > + >> > + Unless required by applicable law or agreed to in writing, software >> > + distributed under the License is distributed on an "AS IS" BASIS, >> > + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or >> implied. >> > + See the License for the specific language governing permissions and >> > + limitations under the License. >> > +--> >> > +<beans xmlns="http://www.springframework.org/schema/beans" >> > + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" >> > + xsi:schemaLocation=" >> > + http://www.springframework.org/schema/beans >> http://www.springframework.org/schema/beans/spring-beans.xsd >> > + http://camel.apache.org/schema/spring >> http://camel.apache.org/schema/spring/camel-spring.xsd >> > + "> >> > + >> > + >> > + <camelContext inflightRepositoryRef="myinflightRepository" xmlns=" >> http://camel.apache.org/schema/spring"> >> > + <jmxAgent id="agent" disabled="true"/> >> > + <route> >> > + <from uri="seda:a"/> >> > + <to uri="seda:b"/> >> > + </route> >> > + <route> >> > + <from uri="direct:c"/> >> > + <to uri="direct:d"/> >> > + </route> >> > + </camelContext> >> > + >> > + <bean id="myinflightRepository" >> class="org.apache.camel.spring.config.MyInflightRepositoryTest$MyInflightRepository" >> /> >> > + >> > +</beans> >> > >> >> >> >> -- >> Claus Ibsen >> ----------------- >> Red Hat, Inc. >> Email: cib...@redhat.com >> Twitter: davsclaus >> Blog: http://davsclaus.com >> Author of Camel in Action: http://www.manning.com/ibsen >> hawtio: http://hawt.io/ >> fabric8: http://fabric8.io/ >> -- Claus Ibsen ----------------- Red Hat, Inc. Email: cib...@redhat.com Twitter: davsclaus Blog: http://davsclaus.com Author of Camel in Action: http://www.manning.com/ibsen hawtio: http://hawt.io/ fabric8: http://fabric8.io/