You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2008/09/15 19:02:14 UTC
svn commit: r695550 - in /activemq/camel/trunk:
camel-core/src/main/java/org/apache/camel/
camel-core/src/main/java/org/apache/camel/impl/
camel-core/src/main/java/org/apache/camel/model/dataformat/
camel-core/src/main/java/org/apache/camel/spi/ camel-...
Author: janstey
Date: Mon Sep 15 10:02:12 2008
New Revision: 695550
URL: http://svn.apache.org/viewvc?rev=695550&view=rev
Log:
CAMEL-871 - Adding dataFormats element under camelContext.
Added:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsType.java (with props)
activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/dataformat/
activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/dataformat/SpringDataFormatWithNonChildElementTest.java (with props)
activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/dataformat/
activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/dataformat/dataFormatWithNonChildElementTest.xml
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatType.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/RouteContext.java
activemq/camel/trunk/camel-core/src/main/resources/org/apache/camel/model/dataformat/jaxb.index
activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java?rev=695550&r1=695549&r2=695550&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java Mon Sep 15 10:02:12 2008
@@ -18,10 +18,13 @@
import java.util.Collection;
import java.util.List;
+import java.util.Map;
import java.util.concurrent.Callable;
import org.apache.camel.builder.ErrorHandlerBuilder;
import org.apache.camel.model.RouteType;
+import org.apache.camel.model.dataformat.DataFormatType;
+import org.apache.camel.spi.DataFormat;
import org.apache.camel.spi.ExchangeConverter;
import org.apache.camel.spi.Injector;
import org.apache.camel.spi.InterceptStrategy;
@@ -267,4 +270,16 @@
* @param errorHandlerBuilder the builder
*/
void setErrorHandlerBuilder(ErrorHandlerBuilder errorHandlerBuilder);
+
+ /**
+ * Sets the data formats that can be referenced in the routes.
+ * @param dataFormats the data formats
+ */
+ void setDataFormats(Map<String, DataFormatType> dataFormats);
+
+ /**
+ * Gets the data formats that can be referenced in the routes.
+ * @param dataFormats the data formats
+ */
+ Map<String, DataFormatType> getDataFormats();
}
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java?rev=695550&r1=695549&r2=695550&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java Mon Sep 15 10:02:12 2008
@@ -43,9 +43,11 @@
import org.apache.camel.management.InstrumentationLifecycleStrategy;
import org.apache.camel.management.JmxSystemPropertyKeys;
import org.apache.camel.model.RouteType;
+import org.apache.camel.model.dataformat.DataFormatType;
import org.apache.camel.processor.interceptor.TraceFormatter;
import org.apache.camel.processor.interceptor.Tracer;
import org.apache.camel.spi.ComponentResolver;
+import org.apache.camel.spi.DataFormat;
import org.apache.camel.spi.ExchangeConverter;
import org.apache.camel.spi.Injector;
import org.apache.camel.spi.InterceptStrategy;
@@ -92,6 +94,7 @@
private List<InterceptStrategy> interceptStrategies = new ArrayList<InterceptStrategy>();
private Boolean trace;
private ErrorHandlerBuilder errorHandlerBuilder;
+ private Map<String, DataFormatType> dataFormats = new HashMap<String, DataFormatType>();
public DefaultCamelContext() {
name = NAME_PREFIX + ++nameSuffix;
@@ -681,5 +684,11 @@
return isStarted() && !isStarting();
}
+ public void setDataFormats(Map<String, DataFormatType> dataFormats) {
+ this.dataFormats = dataFormats;
+ }
+ public Map<String, DataFormatType> getDataFormats() {
+ return dataFormats;
+ }
}
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java?rev=695550&r1=695549&r2=695550&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java Mon Sep 15 10:02:12 2008
@@ -18,7 +18,9 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.apache.camel.AsyncProcessor;
import org.apache.camel.CamelContext;
@@ -32,10 +34,12 @@
import org.apache.camel.model.FromType;
import org.apache.camel.model.ProcessorType;
import org.apache.camel.model.RouteType;
+import org.apache.camel.model.dataformat.DataFormatType;
import org.apache.camel.processor.Interceptor;
import org.apache.camel.processor.Pipeline;
import org.apache.camel.processor.ProceedProcessor;
import org.apache.camel.processor.UnitOfWorkProcessor;
+import org.apache.camel.spi.DataFormat;
import org.apache.camel.spi.ErrorHandlerWrappingStrategy;
import org.apache.camel.spi.InterceptStrategy;
import org.apache.camel.spi.RouteContext;
@@ -204,4 +208,13 @@
routeAdded = b;
}
+
+ public DataFormatType getDataFormat(String ref) {
+ Map<String, DataFormatType> dataFormats = getCamelContext().getDataFormats();
+ if (dataFormats != null) {
+ return dataFormats.get(ref);
+ } else {
+ return null;
+ }
+ }
}
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatType.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatType.java?rev=695550&r1=695549&r2=695550&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatType.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatType.java Mon Sep 15 10:02:12 2008
@@ -60,6 +60,11 @@
if (type == null) {
notNull(ref, "ref or dataFormatType");
DataFormat dataFormat = routeContext.lookup(ref, DataFormat.class);
+
+ if (dataFormat == null) {
+ dataFormat = routeContext.getDataFormat(ref);
+ }
+
if (dataFormat instanceof DataFormatType) {
type = (DataFormatType)dataFormat;
} else {
Added: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsType.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsType.java?rev=695550&view=auto
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsType.java (added)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsType.java Mon Sep 15 10:02:12 2008
@@ -0,0 +1,57 @@
+package org.apache.camel.model.dataformat;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+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.XmlElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * Represents the XML type for a collection of DataFormats.
+ */
+@XmlRootElement(name = "dataFormats")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class DataFormatsType {
+
+ // TODO cannot use @XmlElementRef as it doesn't allow optional properties
+ // @XmlElementRef
+ @XmlElements({
+ @XmlElement(required = false, name = "artixDS", type = ArtixDSDataFormat.class),
+ @XmlElement(required = false, name = "csv", type = CsvDataFormat.class),
+ @XmlElement(required = false, name = "flatpack", type = FlatpackDataFormat.class),
+ @XmlElement(required = false, name = "hl7", type = HL7DataFormat.class),
+ @XmlElement(required = false, name = "jaxb", type = JaxbDataFormat.class),
+ @XmlElement(required = false, name = "serialization", type = SerializationDataFormat.class),
+ @XmlElement(required = false, name = "string", type = StringDataFormat.class),
+ @XmlElement(required = false, name = "xmlBeans", type = XMLBeansDataFormat.class),
+ @XmlElement(required = false, name = "xstream", type = XStreamDataFormat.class)}
+ )
+ private List<DataFormatType> dataFormats;
+
+
+ public void setDataFormats(List<DataFormatType> dataFormats) {
+ this.dataFormats = dataFormats;
+ }
+
+ public List<DataFormatType> getDataFormats() {
+ return dataFormats;
+ }
+
+ /***
+ * @return A Map of the contained DataFormatType's indexed by id.
+ */
+ public Map<String, DataFormatType> asMap() {
+ Map<String, DataFormatType> dataFormatsAsMap = new HashMap<String, DataFormatType>();
+ for (DataFormatType dataFormatType : getDataFormats()) {
+ dataFormatsAsMap.put(dataFormatType.getId(), dataFormatType);
+ }
+ return dataFormatsAsMap;
+ }
+}
Propchange: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsType.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/RouteContext.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/RouteContext.java?rev=695550&r1=695549&r2=695550&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/RouteContext.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/RouteContext.java Mon Sep 15 10:02:12 2008
@@ -26,6 +26,7 @@
import org.apache.camel.model.FromType;
import org.apache.camel.model.ProcessorType;
import org.apache.camel.model.RouteType;
+import org.apache.camel.model.dataformat.DataFormatType;
/**
* The context used to activate new routing rules
@@ -174,5 +175,12 @@
* @return the flag
*/
boolean isRouteAdded();
-
+
+ /**
+ * Get a DataFormatType by ref name
+ *
+ * @param ref the ref name to lookup
+ * @return the found object
+ */
+ DataFormatType getDataFormat(String ref);
}
Modified: activemq/camel/trunk/camel-core/src/main/resources/org/apache/camel/model/dataformat/jaxb.index
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/resources/org/apache/camel/model/dataformat/jaxb.index?rev=695550&r1=695549&r2=695550&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/resources/org/apache/camel/model/dataformat/jaxb.index (original)
+++ activemq/camel/trunk/camel-core/src/main/resources/org/apache/camel/model/dataformat/jaxb.index Mon Sep 15 10:02:12 2008
@@ -19,6 +19,7 @@
CsvDataFormat
HL7DataFormat
DataFormatType
+DataFormatsType
JaxbDataFormat
SerializationDataFormat
StringDataFormat
Modified: activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java?rev=695550&r1=695549&r2=695550&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java (original)
+++ activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java Mon Sep 15 10:02:12 2008
@@ -17,6 +17,7 @@
package org.apache.camel.spring;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -42,10 +43,12 @@
import org.apache.camel.model.RouteBuilderRef;
import org.apache.camel.model.RouteContainer;
import org.apache.camel.model.RouteType;
+import org.apache.camel.model.dataformat.DataFormatsType;
import org.apache.camel.model.dataformat.DataFormatType;
import org.apache.camel.processor.interceptor.Debugger;
import org.apache.camel.processor.interceptor.TraceFormatter;
import org.apache.camel.processor.interceptor.Tracer;
+import org.apache.camel.spi.DataFormat;
import org.apache.camel.spi.LifecycleStrategy;
import org.apache.camel.spi.Registry;
import static org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException;
@@ -54,7 +57,9 @@
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.BeanPostProcessor;
+import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ApplicationEvent;
@@ -96,8 +101,8 @@
private List<RouteBuilderRef> builderRefs = new ArrayList<RouteBuilderRef>();
@XmlElement(name = "endpoint", required = false)
private List<EndpointFactoryBean> endpoints;
- @XmlElementRef
- private List<DataFormatType> dataFormats;
+ @XmlElement(name = "dataFormats", required = false)
+ private DataFormatsType dataFormats;
@XmlElement(name = "intercept", required = false)
private List<InterceptType> intercepts = new ArrayList<InterceptType>();
@XmlElement(name = "route", required = false)
@@ -169,8 +174,8 @@
if (beanPostProcessor instanceof CamelBeanPostProcessor) {
((CamelBeanPostProcessor)beanPostProcessor).setCamelContext(getContext());
}
- }
-
+ }
+
// setup the intercepts
for (RouteType route : routes) {
@@ -205,7 +210,12 @@
}
}
+ }
+
+ if (dataFormats != null) {
+ getContext().setDataFormats(dataFormats.asMap());
}
+
// lets force any lazy creation
getContext().addRouteDefinitions(routes);
@@ -496,4 +506,12 @@
finder.appendBuilders(additionalBuilders);
}
}
+
+ public void setDataFormats(DataFormatsType dataFormats) {
+ this.dataFormats = dataFormats;
+ }
+
+ public DataFormatsType getDataFormats() {
+ return dataFormats;
+ }
}
Modified: activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java?rev=695550&r1=695549&r2=695550&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java (original)
+++ activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java Mon Sep 15 10:02:12 2008
@@ -197,6 +197,7 @@
builder.addPropertyValue("id", contextId);
builder.addPropertyValue("routes", factoryBean.getRoutes());
builder.addPropertyValue("intercepts", factoryBean.getIntercepts());
+ builder.addPropertyValue("dataFormats", factoryBean.getDataFormats());
builder.addPropertyValue("builderRefs", factoryBean.getBuilderRefs());
if (factoryBean.getPackages().length > 0) {
Added: activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/dataformat/SpringDataFormatWithNonChildElementTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/dataformat/SpringDataFormatWithNonChildElementTest.java?rev=695550&view=auto
==============================================================================
--- activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/dataformat/SpringDataFormatWithNonChildElementTest.java (added)
+++ activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/dataformat/SpringDataFormatWithNonChildElementTest.java Mon Sep 15 10:02:12 2008
@@ -0,0 +1,14 @@
+package org.apache.camel.spring.dataformat;
+
+import org.springframework.context.support.AbstractXmlApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.spring.SpringTestSupport;
+import org.apache.camel.spring.issues.StringDataFormatTest;
+
+public class SpringDataFormatWithNonChildElementTest extends StringDataFormatTest {
+
+ protected AbstractXmlApplicationContext createApplicationContext() {
+ return new ClassPathXmlApplicationContext("org/apache/camel/spring/dataformat/dataFormatWithNonChildElementTest.xml");
+ }
+}
Propchange: activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/dataformat/SpringDataFormatWithNonChildElementTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/dataformat/dataFormatWithNonChildElementTest.xml
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/dataformat/dataFormatWithNonChildElementTest.xml?rev=695550&view=auto
==============================================================================
--- activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/dataformat/dataFormatWithNonChildElementTest.xml (added)
+++ activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/dataformat/dataFormatWithNonChildElementTest.xml Mon Sep 15 10:02:12 2008
@@ -0,0 +1,46 @@
+<?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-2.5.xsd
+ http://activemq.apache.org/camel/schema/spring http://activemq.apache.org/camel/schema/spring/camel-spring.xsd
+ ">
+
+ <camelContext id="camel" xmlns="http://activemq.apache.org/camel/schema/spring">
+
+ <dataFormats>
+ <string id="xs" charset="utf-8"/>
+ </dataFormats>
+
+ <route>
+ <from uri="direct:marshal"/>
+ <!-- using a bean id -->
+ <marshal ref="xs"/>
+ <to uri="mock:marshal"/>
+ </route>
+
+ <route>
+ <from uri="direct:unmarshal"/>
+ <!-- using a child node -->
+ <unmarshal ref="xs"/>
+ <to uri="mock:unmarshal"/>
+ </route>
+ </camelContext>
+
+</beans>
RE: svn commit: r695550 - in /activemq/camel/trunk:
camel-core/src/main/java/org/apache/camel/
camel-core/src/main/java/org/apache/camel/impl/
camel-core/src/main/java/org/apache/camel/model/dataformat/
camel-core/src/main/java/org/apache/camel/spi/ camel
Posted by janstey <ja...@gmail.com>.
Good ol' copy and paste errors :) Thanks for pointing this out Claus. Its
fixed now.
Cheers,
Jon
Claus Ibsen wrote:
>
> Hi
>
> Great patch. However the comment in the spring xml file in the last
> example is wrong.
> + <!-- using a child node -->
> You are using a ref ;)
>
>
> Med venlig hilsen
>
> Claus Ibsen
> ......................................
> Silverbullet
> Skovsgårdsvænget 21
> 8362 Hørning
> Tlf. +45 2962 7576
> Web: www.silverbullet.dk
> -----Original Message-----
> From: janstey@apache.org [mailto:janstey@apache.org]
> Sent: 15. september 2008 19:02
> To: camel-commits@activemq.apache.org
> Subject: svn commit: r695550 - in /activemq/camel/trunk:
> camel-core/src/main/java/org/apache/camel/
> camel-core/src/main/java/org/apache/camel/impl/
> camel-core/src/main/java/org/apache/camel/model/dataformat/
> camel-core/src/main/java/org/apache/camel/spi/ camel-...
>
> Author: janstey
> Date: Mon Sep 15 10:02:12 2008
> New Revision: 695550
>
> URL: http://svn.apache.org/viewvc?rev=695550&view=rev
> Log:
> CAMEL-871 - Adding dataFormats element under camelContext.
>
>
> Added:
>
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsType.java
> (with props)
>
> activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/dataformat/
>
> activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/dataformat/SpringDataFormatWithNonChildElementTest.java
> (with props)
>
> activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/dataformat/
>
> activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/dataformat/dataFormatWithNonChildElementTest.xml
> Modified:
>
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java
>
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
>
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
>
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatType.java
>
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/RouteContext.java
>
> activemq/camel/trunk/camel-core/src/main/resources/org/apache/camel/model/dataformat/jaxb.index
>
> activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
>
> activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java
>
> Modified:
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java
> URL:
> http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java?rev=695550&r1=695549&r2=695550&view=diff
> ==============================================================================
> ---
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java
> (original)
> +++
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java
> Mon Sep 15 10:02:12 2008
> @@ -18,10 +18,13 @@
>
> import java.util.Collection;
> import java.util.List;
> +import java.util.Map;
> import java.util.concurrent.Callable;
>
> import org.apache.camel.builder.ErrorHandlerBuilder;
> import org.apache.camel.model.RouteType;
> +import org.apache.camel.model.dataformat.DataFormatType;
> +import org.apache.camel.spi.DataFormat;
> import org.apache.camel.spi.ExchangeConverter;
> import org.apache.camel.spi.Injector;
> import org.apache.camel.spi.InterceptStrategy;
> @@ -267,4 +270,16 @@
> * @param errorHandlerBuilder the builder
> */
> void setErrorHandlerBuilder(ErrorHandlerBuilder errorHandlerBuilder);
> +
> + /**
> + * Sets the data formats that can be referenced in the routes.
> + * @param dataFormats the data formats
> + */
> + void setDataFormats(Map<String, DataFormatType> dataFormats);
> +
> + /**
> + * Gets the data formats that can be referenced in the routes.
> + * @param dataFormats the data formats
> + */
> + Map<String, DataFormatType> getDataFormats();
> }
>
> Modified:
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
> URL:
> http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java?rev=695550&r1=695549&r2=695550&view=diff
> ==============================================================================
> ---
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
> (original)
> +++
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
> Mon Sep 15 10:02:12 2008
> @@ -43,9 +43,11 @@
> import org.apache.camel.management.InstrumentationLifecycleStrategy;
> import org.apache.camel.management.JmxSystemPropertyKeys;
> import org.apache.camel.model.RouteType;
> +import org.apache.camel.model.dataformat.DataFormatType;
> import org.apache.camel.processor.interceptor.TraceFormatter;
> import org.apache.camel.processor.interceptor.Tracer;
> import org.apache.camel.spi.ComponentResolver;
> +import org.apache.camel.spi.DataFormat;
> import org.apache.camel.spi.ExchangeConverter;
> import org.apache.camel.spi.Injector;
> import org.apache.camel.spi.InterceptStrategy;
> @@ -92,6 +94,7 @@
> private List<InterceptStrategy> interceptStrategies = new
> ArrayList<InterceptStrategy>();
> private Boolean trace;
> private ErrorHandlerBuilder errorHandlerBuilder;
> + private Map<String, DataFormatType> dataFormats = new HashMap<String,
> DataFormatType>();
>
> public DefaultCamelContext() {
> name = NAME_PREFIX + ++nameSuffix;
> @@ -681,5 +684,11 @@
> return isStarted() && !isStarting();
> }
>
> + public void setDataFormats(Map<String, DataFormatType> dataFormats) {
> + this.dataFormats = dataFormats;
> + }
>
> + public Map<String, DataFormatType> getDataFormats() {
> + return dataFormats;
> + }
> }
>
> Modified:
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
> URL:
> http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java?rev=695550&r1=695549&r2=695550&view=diff
> ==============================================================================
> ---
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
> (original)
> +++
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
> Mon Sep 15 10:02:12 2008
> @@ -18,7 +18,9 @@
>
> import java.util.ArrayList;
> import java.util.Collection;
> +import java.util.HashMap;
> import java.util.List;
> +import java.util.Map;
>
> import org.apache.camel.AsyncProcessor;
> import org.apache.camel.CamelContext;
> @@ -32,10 +34,12 @@
> import org.apache.camel.model.FromType;
> import org.apache.camel.model.ProcessorType;
> import org.apache.camel.model.RouteType;
> +import org.apache.camel.model.dataformat.DataFormatType;
> import org.apache.camel.processor.Interceptor;
> import org.apache.camel.processor.Pipeline;
> import org.apache.camel.processor.ProceedProcessor;
> import org.apache.camel.processor.UnitOfWorkProcessor;
> +import org.apache.camel.spi.DataFormat;
> import org.apache.camel.spi.ErrorHandlerWrappingStrategy;
> import org.apache.camel.spi.InterceptStrategy;
> import org.apache.camel.spi.RouteContext;
> @@ -204,4 +208,13 @@
> routeAdded = b;
>
> }
> +
> + public DataFormatType getDataFormat(String ref) {
> + Map<String, DataFormatType> dataFormats =
> getCamelContext().getDataFormats();
> + if (dataFormats != null) {
> + return dataFormats.get(ref);
> + } else {
> + return null;
> + }
> + }
> }
>
> Modified:
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatType.java
> URL:
> http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatType.java?rev=695550&r1=695549&r2=695550&view=diff
> ==============================================================================
> ---
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatType.java
> (original)
> +++
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatType.java
> Mon Sep 15 10:02:12 2008
> @@ -60,6 +60,11 @@
> if (type == null) {
> notNull(ref, "ref or dataFormatType");
> DataFormat dataFormat = routeContext.lookup(ref,
> DataFormat.class);
> +
> + if (dataFormat == null) {
> + dataFormat = routeContext.getDataFormat(ref);
> + }
> +
> if (dataFormat instanceof DataFormatType) {
> type = (DataFormatType)dataFormat;
> } else {
>
> Added:
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsType.java
> URL:
> http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsType.java?rev=695550&view=auto
> ==============================================================================
> ---
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsType.java
> (added)
> +++
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsType.java
> Mon Sep 15 10:02:12 2008
> @@ -0,0 +1,57 @@
> +package org.apache.camel.model.dataformat;
> +
> +import java.util.ArrayList;
> +import java.util.HashMap;
> +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.XmlElement;
> +import javax.xml.bind.annotation.XmlElementRef;
> +import javax.xml.bind.annotation.XmlElements;
> +import javax.xml.bind.annotation.XmlRootElement;
> +import javax.xml.bind.annotation.XmlType;
> +
> +/**
> + * Represents the XML type for a collection of DataFormats.
> + */
> +@XmlRootElement(name = "dataFormats")
> +@XmlAccessorType(XmlAccessType.FIELD)
> +public class DataFormatsType {
> +
> + // TODO cannot use @XmlElementRef as it doesn't allow optional
> properties
> + // @XmlElementRef
> + @XmlElements({
> + @XmlElement(required = false, name = "artixDS", type =
> ArtixDSDataFormat.class),
> + @XmlElement(required = false, name = "csv", type =
> CsvDataFormat.class),
> + @XmlElement(required = false, name = "flatpack", type =
> FlatpackDataFormat.class),
> + @XmlElement(required = false, name = "hl7", type =
> HL7DataFormat.class),
> + @XmlElement(required = false, name = "jaxb", type =
> JaxbDataFormat.class),
> + @XmlElement(required = false, name = "serialization", type =
> SerializationDataFormat.class),
> + @XmlElement(required = false, name = "string", type =
> StringDataFormat.class),
> + @XmlElement(required = false, name = "xmlBeans", type =
> XMLBeansDataFormat.class),
> + @XmlElement(required = false, name = "xstream", type =
> XStreamDataFormat.class)}
> + )
> + private List<DataFormatType> dataFormats;
> +
> +
> + public void setDataFormats(List<DataFormatType> dataFormats) {
> + this.dataFormats = dataFormats;
> + }
> +
> + public List<DataFormatType> getDataFormats() {
> + return dataFormats;
> + }
> +
> + /***
> + * @return A Map of the contained DataFormatType's indexed by id.
> + */
> + public Map<String, DataFormatType> asMap() {
> + Map<String, DataFormatType> dataFormatsAsMap = new
> HashMap<String, DataFormatType>();
> + for (DataFormatType dataFormatType : getDataFormats()) {
> + dataFormatsAsMap.put(dataFormatType.getId(), dataFormatType);
> + }
> + return dataFormatsAsMap;
> + }
> +}
>
> Propchange:
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsType.java
> ------------------------------------------------------------------------------
> svn:eol-style = native
>
> Modified:
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/RouteContext.java
> URL:
> http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/RouteContext.java?rev=695550&r1=695549&r2=695550&view=diff
> ==============================================================================
> ---
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/RouteContext.java
> (original)
> +++
> activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/RouteContext.java
> Mon Sep 15 10:02:12 2008
> @@ -26,6 +26,7 @@
> import org.apache.camel.model.FromType;
> import org.apache.camel.model.ProcessorType;
> import org.apache.camel.model.RouteType;
> +import org.apache.camel.model.dataformat.DataFormatType;
>
> /**
> * The context used to activate new routing rules
> @@ -174,5 +175,12 @@
> * @return the flag
> */
> boolean isRouteAdded();
> -
> +
> + /**
> + * Get a DataFormatType by ref name
> + *
> + * @param ref the ref name to lookup
> + * @return the found object
> + */
> + DataFormatType getDataFormat(String ref);
> }
>
> Modified:
> activemq/camel/trunk/camel-core/src/main/resources/org/apache/camel/model/dataformat/jaxb.index
> URL:
> http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/resources/org/apache/camel/model/dataformat/jaxb.index?rev=695550&r1=695549&r2=695550&view=diff
> ==============================================================================
> ---
> activemq/camel/trunk/camel-core/src/main/resources/org/apache/camel/model/dataformat/jaxb.index
> (original)
> +++
> activemq/camel/trunk/camel-core/src/main/resources/org/apache/camel/model/dataformat/jaxb.index
> Mon Sep 15 10:02:12 2008
> @@ -19,6 +19,7 @@
> CsvDataFormat
> HL7DataFormat
> DataFormatType
> +DataFormatsType
> JaxbDataFormat
> SerializationDataFormat
> StringDataFormat
>
> Modified:
> activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
> URL:
> http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java?rev=695550&r1=695549&r2=695550&view=diff
> ==============================================================================
> ---
> activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
> (original)
> +++
> activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
> Mon Sep 15 10:02:12 2008
> @@ -17,6 +17,7 @@
> package org.apache.camel.spring;
>
> import java.util.ArrayList;
> +import java.util.HashMap;
> import java.util.List;
> import java.util.Map;
>
> @@ -42,10 +43,12 @@
> import org.apache.camel.model.RouteBuilderRef;
> import org.apache.camel.model.RouteContainer;
> import org.apache.camel.model.RouteType;
> +import org.apache.camel.model.dataformat.DataFormatsType;
> import org.apache.camel.model.dataformat.DataFormatType;
> import org.apache.camel.processor.interceptor.Debugger;
> import org.apache.camel.processor.interceptor.TraceFormatter;
> import org.apache.camel.processor.interceptor.Tracer;
> +import org.apache.camel.spi.DataFormat;
> import org.apache.camel.spi.LifecycleStrategy;
> import org.apache.camel.spi.Registry;
> import static
> org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException;
> @@ -54,7 +57,9 @@
> import org.springframework.beans.factory.DisposableBean;
> import org.springframework.beans.factory.FactoryBean;
> import org.springframework.beans.factory.InitializingBean;
> +import org.springframework.beans.factory.config.BeanDefinition;
> import org.springframework.beans.factory.config.BeanPostProcessor;
> +import org.springframework.beans.factory.support.RootBeanDefinition;
> import org.springframework.context.ApplicationContext;
> import org.springframework.context.ApplicationContextAware;
> import org.springframework.context.ApplicationEvent;
> @@ -96,8 +101,8 @@
> private List<RouteBuilderRef> builderRefs = new
> ArrayList<RouteBuilderRef>();
> @XmlElement(name = "endpoint", required = false)
> private List<EndpointFactoryBean> endpoints;
> - @XmlElementRef
> - private List<DataFormatType> dataFormats;
> + @XmlElement(name = "dataFormats", required = false)
> + private DataFormatsType dataFormats;
> @XmlElement(name = "intercept", required = false)
> private List<InterceptType> intercepts = new
> ArrayList<InterceptType>();
> @XmlElement(name = "route", required = false)
> @@ -169,8 +174,8 @@
> if (beanPostProcessor instanceof CamelBeanPostProcessor) {
>
> ((CamelBeanPostProcessor)beanPostProcessor).setCamelContext(getContext());
> }
> - }
> -
> + }
> +
> // setup the intercepts
> for (RouteType route : routes) {
>
> @@ -205,7 +210,12 @@
> }
> }
>
> + }
> +
> + if (dataFormats != null) {
> + getContext().setDataFormats(dataFormats.asMap());
> }
> +
> // lets force any lazy creation
> getContext().addRouteDefinitions(routes);
>
> @@ -496,4 +506,12 @@
> finder.appendBuilders(additionalBuilders);
> }
> }
> +
> + public void setDataFormats(DataFormatsType dataFormats) {
> + this.dataFormats = dataFormats;
> + }
> +
> + public DataFormatsType getDataFormats() {
> + return dataFormats;
> + }
> }
>
> Modified:
> activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java
> URL:
> http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java?rev=695550&r1=695549&r2=695550&view=diff
> ==============================================================================
> ---
> activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java
> (original)
> +++
> activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java
> Mon Sep 15 10:02:12 2008
> @@ -197,6 +197,7 @@
> builder.addPropertyValue("id", contextId);
> builder.addPropertyValue("routes",
> factoryBean.getRoutes());
> builder.addPropertyValue("intercepts",
> factoryBean.getIntercepts());
> + builder.addPropertyValue("dataFormats",
> factoryBean.getDataFormats());
> builder.addPropertyValue("builderRefs",
> factoryBean.getBuilderRefs());
>
> if (factoryBean.getPackages().length > 0) {
>
> Added:
> activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/dataformat/SpringDataFormatWithNonChildElementTest.java
> URL:
> http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/dataformat/SpringDataFormatWithNonChildElementTest.java?rev=695550&view=auto
> ==============================================================================
> ---
> activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/dataformat/SpringDataFormatWithNonChildElementTest.java
> (added)
> +++
> activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/dataformat/SpringDataFormatWithNonChildElementTest.java
> Mon Sep 15 10:02:12 2008
> @@ -0,0 +1,14 @@
> +package org.apache.camel.spring.dataformat;
> +
> +import org.springframework.context.support.AbstractXmlApplicationContext;
> +import
> org.springframework.context.support.ClassPathXmlApplicationContext;
> +import org.apache.camel.component.mock.MockEndpoint;
> +import org.apache.camel.spring.SpringTestSupport;
> +import org.apache.camel.spring.issues.StringDataFormatTest;
> +
> +public class SpringDataFormatWithNonChildElementTest extends
> StringDataFormatTest {
> +
> + protected AbstractXmlApplicationContext createApplicationContext() {
> + return new
> ClassPathXmlApplicationContext("org/apache/camel/spring/dataformat/dataFormatWithNonChildElementTest.xml");
> + }
> +}
>
> Propchange:
> activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/dataformat/SpringDataFormatWithNonChildElementTest.java
> ------------------------------------------------------------------------------
> svn:eol-style = native
>
> Added:
> activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/dataformat/dataFormatWithNonChildElementTest.xml
> URL:
> http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/dataformat/dataFormatWithNonChildElementTest.xml?rev=695550&view=auto
> ==============================================================================
> ---
> activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/dataformat/dataFormatWithNonChildElementTest.xml
> (added)
> +++
> activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/dataformat/dataFormatWithNonChildElementTest.xml
> Mon Sep 15 10:02:12 2008
> @@ -0,0 +1,46 @@
> +<?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-2.5.xsd
> + http://activemq.apache.org/camel/schema/spring
> http://activemq.apache.org/camel/schema/spring/camel-spring.xsd
> + ">
> +
> + <camelContext id="camel"
> xmlns="http://activemq.apache.org/camel/schema/spring">
> +
> + <dataFormats>
> + <string id="xs" charset="utf-8"/>
> + </dataFormats>
> +
> + <route>
> + <from uri="direct:marshal"/>
> + <!-- using a bean id -->
> + <marshal ref="xs"/>
> + <to uri="mock:marshal"/>
> + </route>
> +
> + <route>
> + <from uri="direct:unmarshal"/>
> + <!-- using a child node -->
> + <unmarshal ref="xs"/>
> + <to uri="mock:unmarshal"/>
> + </route>
> + </camelContext>
> +
> +</beans>
>
>
>
>
--
View this message in context: http://www.nabble.com/RE%3A-svn-commit%3A-r695550---in--activemq-camel-trunk%3A-camel-core-src-main-java-org-apache-camel--camel-core-src-main-java-org-apache-camel-impl--camel-core-src-main-java-org-apache-camel-model-dataformat--camel-core-src-main-java-org-apache-camel-spi--camel-tp19505758s22882p19509014.html
Sent from the Camel - Development mailing list archive at Nabble.com.
RE: svn commit: r695550 - in /activemq/camel/trunk: camel-core/src/main/java/org/apache/camel/ camel-core/src/main/java/org/apache/camel/impl/ camel-core/src/main/java/org/apache/camel/model/dataformat/ camel-core/src/main/java/org/apache/camel/spi/ camel
Posted by Claus Ibsen <ci...@silverbullet.dk>.
Hi
Great patch. However the comment in the spring xml file in the last example is wrong.
+ <!-- using a child node -->
You are using a ref ;)
Med venlig hilsen
Claus Ibsen
......................................
Silverbullet
Skovsgårdsvænget 21
8362 Hørning
Tlf. +45 2962 7576
Web: www.silverbullet.dk
-----Original Message-----
From: janstey@apache.org [mailto:janstey@apache.org]
Sent: 15. september 2008 19:02
To: camel-commits@activemq.apache.org
Subject: svn commit: r695550 - in /activemq/camel/trunk: camel-core/src/main/java/org/apache/camel/ camel-core/src/main/java/org/apache/camel/impl/ camel-core/src/main/java/org/apache/camel/model/dataformat/ camel-core/src/main/java/org/apache/camel/spi/ camel-...
Author: janstey
Date: Mon Sep 15 10:02:12 2008
New Revision: 695550
URL: http://svn.apache.org/viewvc?rev=695550&view=rev
Log:
CAMEL-871 - Adding dataFormats element under camelContext.
Added:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsType.java (with props)
activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/dataformat/
activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/dataformat/SpringDataFormatWithNonChildElementTest.java (with props)
activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/dataformat/
activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/dataformat/dataFormatWithNonChildElementTest.xml
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatType.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/RouteContext.java
activemq/camel/trunk/camel-core/src/main/resources/org/apache/camel/model/dataformat/jaxb.index
activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java?rev=695550&r1=695549&r2=695550&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java Mon Sep 15 10:02:12 2008
@@ -18,10 +18,13 @@
import java.util.Collection;
import java.util.List;
+import java.util.Map;
import java.util.concurrent.Callable;
import org.apache.camel.builder.ErrorHandlerBuilder;
import org.apache.camel.model.RouteType;
+import org.apache.camel.model.dataformat.DataFormatType;
+import org.apache.camel.spi.DataFormat;
import org.apache.camel.spi.ExchangeConverter;
import org.apache.camel.spi.Injector;
import org.apache.camel.spi.InterceptStrategy;
@@ -267,4 +270,16 @@
* @param errorHandlerBuilder the builder
*/
void setErrorHandlerBuilder(ErrorHandlerBuilder errorHandlerBuilder);
+
+ /**
+ * Sets the data formats that can be referenced in the routes.
+ * @param dataFormats the data formats
+ */
+ void setDataFormats(Map<String, DataFormatType> dataFormats);
+
+ /**
+ * Gets the data formats that can be referenced in the routes.
+ * @param dataFormats the data formats
+ */
+ Map<String, DataFormatType> getDataFormats();
}
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java?rev=695550&r1=695549&r2=695550&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java Mon Sep 15 10:02:12 2008
@@ -43,9 +43,11 @@
import org.apache.camel.management.InstrumentationLifecycleStrategy;
import org.apache.camel.management.JmxSystemPropertyKeys;
import org.apache.camel.model.RouteType;
+import org.apache.camel.model.dataformat.DataFormatType;
import org.apache.camel.processor.interceptor.TraceFormatter;
import org.apache.camel.processor.interceptor.Tracer;
import org.apache.camel.spi.ComponentResolver;
+import org.apache.camel.spi.DataFormat;
import org.apache.camel.spi.ExchangeConverter;
import org.apache.camel.spi.Injector;
import org.apache.camel.spi.InterceptStrategy;
@@ -92,6 +94,7 @@
private List<InterceptStrategy> interceptStrategies = new ArrayList<InterceptStrategy>();
private Boolean trace;
private ErrorHandlerBuilder errorHandlerBuilder;
+ private Map<String, DataFormatType> dataFormats = new HashMap<String, DataFormatType>();
public DefaultCamelContext() {
name = NAME_PREFIX + ++nameSuffix;
@@ -681,5 +684,11 @@
return isStarted() && !isStarting();
}
+ public void setDataFormats(Map<String, DataFormatType> dataFormats) {
+ this.dataFormats = dataFormats;
+ }
+ public Map<String, DataFormatType> getDataFormats() {
+ return dataFormats;
+ }
}
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java?rev=695550&r1=695549&r2=695550&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultRouteContext.java Mon Sep 15 10:02:12 2008
@@ -18,7 +18,9 @@
import java.util.ArrayList;
import java.util.Collection;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.apache.camel.AsyncProcessor;
import org.apache.camel.CamelContext;
@@ -32,10 +34,12 @@
import org.apache.camel.model.FromType;
import org.apache.camel.model.ProcessorType;
import org.apache.camel.model.RouteType;
+import org.apache.camel.model.dataformat.DataFormatType;
import org.apache.camel.processor.Interceptor;
import org.apache.camel.processor.Pipeline;
import org.apache.camel.processor.ProceedProcessor;
import org.apache.camel.processor.UnitOfWorkProcessor;
+import org.apache.camel.spi.DataFormat;
import org.apache.camel.spi.ErrorHandlerWrappingStrategy;
import org.apache.camel.spi.InterceptStrategy;
import org.apache.camel.spi.RouteContext;
@@ -204,4 +208,13 @@
routeAdded = b;
}
+
+ public DataFormatType getDataFormat(String ref) {
+ Map<String, DataFormatType> dataFormats = getCamelContext().getDataFormats();
+ if (dataFormats != null) {
+ return dataFormats.get(ref);
+ } else {
+ return null;
+ }
+ }
}
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatType.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatType.java?rev=695550&r1=695549&r2=695550&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatType.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatType.java Mon Sep 15 10:02:12 2008
@@ -60,6 +60,11 @@
if (type == null) {
notNull(ref, "ref or dataFormatType");
DataFormat dataFormat = routeContext.lookup(ref, DataFormat.class);
+
+ if (dataFormat == null) {
+ dataFormat = routeContext.getDataFormat(ref);
+ }
+
if (dataFormat instanceof DataFormatType) {
type = (DataFormatType)dataFormat;
} else {
Added: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsType.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsType.java?rev=695550&view=auto
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsType.java (added)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsType.java Mon Sep 15 10:02:12 2008
@@ -0,0 +1,57 @@
+package org.apache.camel.model.dataformat;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+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.XmlElement;
+import javax.xml.bind.annotation.XmlElementRef;
+import javax.xml.bind.annotation.XmlElements;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * Represents the XML type for a collection of DataFormats.
+ */
+@XmlRootElement(name = "dataFormats")
+@XmlAccessorType(XmlAccessType.FIELD)
+public class DataFormatsType {
+
+ // TODO cannot use @XmlElementRef as it doesn't allow optional properties
+ // @XmlElementRef
+ @XmlElements({
+ @XmlElement(required = false, name = "artixDS", type = ArtixDSDataFormat.class),
+ @XmlElement(required = false, name = "csv", type = CsvDataFormat.class),
+ @XmlElement(required = false, name = "flatpack", type = FlatpackDataFormat.class),
+ @XmlElement(required = false, name = "hl7", type = HL7DataFormat.class),
+ @XmlElement(required = false, name = "jaxb", type = JaxbDataFormat.class),
+ @XmlElement(required = false, name = "serialization", type = SerializationDataFormat.class),
+ @XmlElement(required = false, name = "string", type = StringDataFormat.class),
+ @XmlElement(required = false, name = "xmlBeans", type = XMLBeansDataFormat.class),
+ @XmlElement(required = false, name = "xstream", type = XStreamDataFormat.class)}
+ )
+ private List<DataFormatType> dataFormats;
+
+
+ public void setDataFormats(List<DataFormatType> dataFormats) {
+ this.dataFormats = dataFormats;
+ }
+
+ public List<DataFormatType> getDataFormats() {
+ return dataFormats;
+ }
+
+ /***
+ * @return A Map of the contained DataFormatType's indexed by id.
+ */
+ public Map<String, DataFormatType> asMap() {
+ Map<String, DataFormatType> dataFormatsAsMap = new HashMap<String, DataFormatType>();
+ for (DataFormatType dataFormatType : getDataFormats()) {
+ dataFormatsAsMap.put(dataFormatType.getId(), dataFormatType);
+ }
+ return dataFormatsAsMap;
+ }
+}
Propchange: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/dataformat/DataFormatsType.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/RouteContext.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/RouteContext.java?rev=695550&r1=695549&r2=695550&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/RouteContext.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/RouteContext.java Mon Sep 15 10:02:12 2008
@@ -26,6 +26,7 @@
import org.apache.camel.model.FromType;
import org.apache.camel.model.ProcessorType;
import org.apache.camel.model.RouteType;
+import org.apache.camel.model.dataformat.DataFormatType;
/**
* The context used to activate new routing rules
@@ -174,5 +175,12 @@
* @return the flag
*/
boolean isRouteAdded();
-
+
+ /**
+ * Get a DataFormatType by ref name
+ *
+ * @param ref the ref name to lookup
+ * @return the found object
+ */
+ DataFormatType getDataFormat(String ref);
}
Modified: activemq/camel/trunk/camel-core/src/main/resources/org/apache/camel/model/dataformat/jaxb.index
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/resources/org/apache/camel/model/dataformat/jaxb.index?rev=695550&r1=695549&r2=695550&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/resources/org/apache/camel/model/dataformat/jaxb.index (original)
+++ activemq/camel/trunk/camel-core/src/main/resources/org/apache/camel/model/dataformat/jaxb.index Mon Sep 15 10:02:12 2008
@@ -19,6 +19,7 @@
CsvDataFormat
HL7DataFormat
DataFormatType
+DataFormatsType
JaxbDataFormat
SerializationDataFormat
StringDataFormat
Modified: activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java?rev=695550&r1=695549&r2=695550&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java (original)
+++ activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java Mon Sep 15 10:02:12 2008
@@ -17,6 +17,7 @@
package org.apache.camel.spring;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -42,10 +43,12 @@
import org.apache.camel.model.RouteBuilderRef;
import org.apache.camel.model.RouteContainer;
import org.apache.camel.model.RouteType;
+import org.apache.camel.model.dataformat.DataFormatsType;
import org.apache.camel.model.dataformat.DataFormatType;
import org.apache.camel.processor.interceptor.Debugger;
import org.apache.camel.processor.interceptor.TraceFormatter;
import org.apache.camel.processor.interceptor.Tracer;
+import org.apache.camel.spi.DataFormat;
import org.apache.camel.spi.LifecycleStrategy;
import org.apache.camel.spi.Registry;
import static org.apache.camel.util.ObjectHelper.wrapRuntimeCamelException;
@@ -54,7 +57,9 @@
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.FactoryBean;
import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.config.BeanPostProcessor;
+import org.springframework.beans.factory.support.RootBeanDefinition;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.context.ApplicationEvent;
@@ -96,8 +101,8 @@
private List<RouteBuilderRef> builderRefs = new ArrayList<RouteBuilderRef>();
@XmlElement(name = "endpoint", required = false)
private List<EndpointFactoryBean> endpoints;
- @XmlElementRef
- private List<DataFormatType> dataFormats;
+ @XmlElement(name = "dataFormats", required = false)
+ private DataFormatsType dataFormats;
@XmlElement(name = "intercept", required = false)
private List<InterceptType> intercepts = new ArrayList<InterceptType>();
@XmlElement(name = "route", required = false)
@@ -169,8 +174,8 @@
if (beanPostProcessor instanceof CamelBeanPostProcessor) {
((CamelBeanPostProcessor)beanPostProcessor).setCamelContext(getContext());
}
- }
-
+ }
+
// setup the intercepts
for (RouteType route : routes) {
@@ -205,7 +210,12 @@
}
}
+ }
+
+ if (dataFormats != null) {
+ getContext().setDataFormats(dataFormats.asMap());
}
+
// lets force any lazy creation
getContext().addRouteDefinitions(routes);
@@ -496,4 +506,12 @@
finder.appendBuilders(additionalBuilders);
}
}
+
+ public void setDataFormats(DataFormatsType dataFormats) {
+ this.dataFormats = dataFormats;
+ }
+
+ public DataFormatsType getDataFormats() {
+ return dataFormats;
+ }
}
Modified: activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java?rev=695550&r1=695549&r2=695550&view=diff
==============================================================================
--- activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java (original)
+++ activemq/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java Mon Sep 15 10:02:12 2008
@@ -197,6 +197,7 @@
builder.addPropertyValue("id", contextId);
builder.addPropertyValue("routes", factoryBean.getRoutes());
builder.addPropertyValue("intercepts", factoryBean.getIntercepts());
+ builder.addPropertyValue("dataFormats", factoryBean.getDataFormats());
builder.addPropertyValue("builderRefs", factoryBean.getBuilderRefs());
if (factoryBean.getPackages().length > 0) {
Added: activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/dataformat/SpringDataFormatWithNonChildElementTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/dataformat/SpringDataFormatWithNonChildElementTest.java?rev=695550&view=auto
==============================================================================
--- activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/dataformat/SpringDataFormatWithNonChildElementTest.java (added)
+++ activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/dataformat/SpringDataFormatWithNonChildElementTest.java Mon Sep 15 10:02:12 2008
@@ -0,0 +1,14 @@
+package org.apache.camel.spring.dataformat;
+
+import org.springframework.context.support.AbstractXmlApplicationContext;
+import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.spring.SpringTestSupport;
+import org.apache.camel.spring.issues.StringDataFormatTest;
+
+public class SpringDataFormatWithNonChildElementTest extends StringDataFormatTest {
+
+ protected AbstractXmlApplicationContext createApplicationContext() {
+ return new ClassPathXmlApplicationContext("org/apache/camel/spring/dataformat/dataFormatWithNonChildElementTest.xml");
+ }
+}
Propchange: activemq/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/dataformat/SpringDataFormatWithNonChildElementTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/dataformat/dataFormatWithNonChildElementTest.xml
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/dataformat/dataFormatWithNonChildElementTest.xml?rev=695550&view=auto
==============================================================================
--- activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/dataformat/dataFormatWithNonChildElementTest.xml (added)
+++ activemq/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/dataformat/dataFormatWithNonChildElementTest.xml Mon Sep 15 10:02:12 2008
@@ -0,0 +1,46 @@
+<?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-2.5.xsd
+ http://activemq.apache.org/camel/schema/spring http://activemq.apache.org/camel/schema/spring/camel-spring.xsd
+ ">
+
+ <camelContext id="camel" xmlns="http://activemq.apache.org/camel/schema/spring">
+
+ <dataFormats>
+ <string id="xs" charset="utf-8"/>
+ </dataFormats>
+
+ <route>
+ <from uri="direct:marshal"/>
+ <!-- using a bean id -->
+ <marshal ref="xs"/>
+ <to uri="mock:marshal"/>
+ </route>
+
+ <route>
+ <from uri="direct:unmarshal"/>
+ <!-- using a child node -->
+ <unmarshal ref="xs"/>
+ <to uri="mock:unmarshal"/>
+ </route>
+ </camelContext>
+
+</beans>