You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2009/03/12 04:50:13 UTC
svn commit: r752763 - in /camel/branches/camel-1.x: ./
camel-core/src/main/java/org/apache/camel/
camel-core/src/main/java/org/apache/camel/converter/stream/
camel-core/src/main/java/org/apache/camel/impl/
camel-core/src/main/java/org/apache/camel/mode...
Author: ningjiang
Date: Thu Mar 12 03:50:12 2009
New Revision: 752763
URL: http://svn.apache.org/viewvc?rev=752763&view=rev
Log:
Merged revisions 750396 via svnmerge from
https://svn.apache.org/repos/asf/camel/trunk
........
r750396 | ningjiang | 2009-03-05 17:16:39 +0800 (Thu, 05 Mar 2009) | 1 line
CAMEL-1425 Added the properties to the camel context
........
Added:
camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/config/PropertiesType.java
- copied unchanged from r750396, camel/trunk/camel-core/src/main/java/org/apache/camel/model/config/PropertiesType.java
camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/model/config/PropertyType.java
- copied unchanged from r750396, camel/trunk/camel-core/src/main/java/org/apache/camel/model/config/PropertyType.java
Modified:
camel/branches/camel-1.x/ (props changed)
camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/CamelContext.java
camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/CachedOutputStream.java
camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/StreamCacheConverter.java
camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
camel/branches/camel-1.x/camel-core/src/main/resources/org/apache/camel/model/config/jaxb.index
camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/converter/stream/StreamCacheConverterTest.java
camel/branches/camel-1.x/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
camel/branches/camel-1.x/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java
camel/branches/camel-1.x/components/camel-spring/src/test/java/org/apache/camel/spring/CamelContextAwareTest.java
camel/branches/camel-1.x/components/camel-spring/src/test/resources/org/apache/camel/spring/camelContextAwareBean.xml
Propchange: camel/branches/camel-1.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Thu Mar 12 03:50:12 2009
@@ -1 +1 @@
-/camel/trunk:736980,739733,739904,740251,740295,740306,740596,740663,741848,742231,742705,742739,742854,742856,742898,742906,743613,743762,743773,743920,743959-743960,744123,745105,745367,745541,745751,745826,745978,746269,746872,746895,746962,747258,747678-747704,748392,748436,748821,749563-749564,749574,749628-749629,749936,749956,750017,750334,750761,750796,752068,752117
+/camel/trunk:736980,739733,739904,740251,740295,740306,740596,740663,741848,742231,742705,742739,742854,742856,742898,742906,743613,743762,743773,743920,743959-743960,744123,745105,745367,745541,745751,745826,745978,746269,746872,746895,746962,747258,747678-747704,748392,748436,748821,749563-749564,749574,749628-749629,749936,749956,750017,750334,750396,750761,750796,752068,752117
Propchange: camel/branches/camel-1.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/CamelContext.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/CamelContext.java?rev=752763&r1=752762&r2=752763&view=diff
==============================================================================
--- camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/CamelContext.java (original)
+++ camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/CamelContext.java Thu Mar 12 03:50:12 2009
@@ -335,6 +335,16 @@
Map<String, DataFormatType> getDataFormats();
/**
+ * Sets the properties that can be referenced in the camel context
+ */
+ void setProperties(Map<String, String> properties);
+
+ /**
+ * Gets the properties that can be referenced in the camel context
+ */
+ Map<String, String> getProperties();
+
+ /**
* Create a FactoryFinder which will be used for the loading the factory class from META-INF
* @return the factory finder
*/
Modified: camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/CachedOutputStream.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/CachedOutputStream.java?rev=752763&r1=752762&r2=752763&view=diff
==============================================================================
--- camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/CachedOutputStream.java (original)
+++ camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/CachedOutputStream.java Thu Mar 12 03:50:12 2009
@@ -28,40 +28,20 @@
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
import org.apache.camel.converter.IOConverter;
import org.apache.camel.util.FileUtil;
import org.apache.camel.util.IOHelper;
public class CachedOutputStream extends OutputStream {
- private static final File DEFAULT_TEMP_DIR;
- private static final int DEFAULT_THRESHOLD;
- static {
- String s = System.getProperty("org.apache.camel.util.CachedOutputStream.Threshold",
- "-1");
- int i = Integer.parseInt(s);
- if (i <= 0) {
- i = 64 * 1024;
- }
- DEFAULT_THRESHOLD = i;
-
- s = System.getProperty("org.apache.camel.util.CachedOutputStream.OutputDirectory");
- if (s != null) {
- File f = new File(s);
- if (f.exists() && f.isDirectory()) {
- DEFAULT_TEMP_DIR = f;
- } else {
- DEFAULT_TEMP_DIR = null;
- }
- } else {
- DEFAULT_TEMP_DIR = null;
- }
- }
-
+ public static final String THRESHOLD = "CamelCachedOutputStreamThreshold";
+ public static final String TEMP_DIR = "CamelCachedOutputStreamOutputDirectory";
+
protected boolean outputLocked;
protected OutputStream currentStream;
- private long threshold = DEFAULT_THRESHOLD;
+ private long threshold = 64 * 1024;
private int totalLength;
@@ -69,7 +49,7 @@
private File tempFile;
- private File outputDir = DEFAULT_TEMP_DIR;
+ private File outputDir;
private List<Object> streamList = new ArrayList<Object>();
@@ -80,9 +60,30 @@
}
public CachedOutputStream(long threshold) {
- this.threshold = threshold;
- currentStream = new ByteArrayOutputStream(2048);
- inmem = true;
+ this();
+ this.threshold = threshold;
+ }
+
+ public CachedOutputStream(Map<String, String> properties) {
+ this();
+ String value = properties.get(THRESHOLD);
+ if (value != null) {
+ int i = Integer.parseInt(value);
+ if (i > 0) {
+ threshold = i;
+ }
+ }
+ value = properties.get(TEMP_DIR);
+ if (value != null) {
+ File f = new File(value);
+ if (f.exists() && f.isDirectory()) {
+ outputDir = f;
+ } else {
+ outputDir = null;
+ }
+ } else {
+ outputDir = null;
+ }
}
/**
Modified: camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/StreamCacheConverter.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/StreamCacheConverter.java?rev=752763&r1=752762&r2=752763&view=diff
==============================================================================
--- camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/StreamCacheConverter.java (original)
+++ camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/converter/stream/StreamCacheConverter.java Thu Mar 12 03:50:12 2009
@@ -69,7 +69,8 @@
@Converter
public StreamCache convertToStreamCache(InputStream stream, Exchange exchange) throws IOException {
- CachedOutputStream cos = new CachedOutputStream();
+ // set up CachedOutputStream with the properties
+ CachedOutputStream cos = new CachedOutputStream(exchange.getContext().getProperties());
IOHelper.copyAndCloseInput(stream, cos);
return cos.getStreamCache();
}
Modified: camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java?rev=752763&r1=752762&r2=752763&view=diff
==============================================================================
--- camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java (original)
+++ camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java Thu Mar 12 03:50:12 2009
@@ -97,6 +97,7 @@
private Long delay;
private ErrorHandlerBuilder errorHandlerBuilder;
private Map<String, DataFormatType> dataFormats = new HashMap<String, DataFormatType>();
+ private Map<String, String> properties = new HashMap<String, String>();
private Class<? extends FactoryFinder> factoryFinderClass = FactoryFinder.class;
public DefaultCamelContext() {
@@ -784,6 +785,14 @@
public void setFactoryFinderClass(Class<? extends FactoryFinder> finderClass) {
factoryFinderClass = finderClass;
}
+
+ public Map<String, String> getProperties() {
+ return properties;
+ }
+
+ public void setProperties(Map<String, String> properties) {
+ this.properties = properties;
+ }
public FactoryFinder createFactoryFinder() {
try {
@@ -818,6 +827,5 @@
}
}
}
-
-
+
}
Modified: camel/branches/camel-1.x/camel-core/src/main/resources/org/apache/camel/model/config/jaxb.index
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/camel-core/src/main/resources/org/apache/camel/model/config/jaxb.index?rev=752763&r1=752762&r2=752763&view=diff
==============================================================================
--- camel/branches/camel-1.x/camel-core/src/main/resources/org/apache/camel/model/config/jaxb.index (original)
+++ camel/branches/camel-1.x/camel-core/src/main/resources/org/apache/camel/model/config/jaxb.index Thu Mar 12 03:50:12 2009
@@ -14,5 +14,7 @@
## See the License for the specific language governing permissions and
## limitations under the License.
## ------------------------------------------------------------------------
+PropertyType
+PropertiesType
StreamResequencerConfig
BatchResequencerConfig
Modified: camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/converter/stream/StreamCacheConverterTest.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/converter/stream/StreamCacheConverterTest.java?rev=752763&r1=752762&r2=752763&view=diff
==============================================================================
--- camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/converter/stream/StreamCacheConverterTest.java (original)
+++ camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/converter/stream/StreamCacheConverterTest.java Thu Mar 12 03:50:12 2009
@@ -19,6 +19,8 @@
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
+import java.util.HashMap;
+import java.util.Map;
import javax.xml.transform.Source;
import javax.xml.transform.TransformerException;
@@ -63,6 +65,24 @@
assertNotNull(IOConverter.toString(cache));
assertNotNull(IOConverter.toString(cache));
}
+
+ public void testConvertToStreamCacheInpuStreamWithFileCache() throws Exception {
+ // set up the properties
+ Map<String, String> properties = new HashMap<String, String>();
+ properties.put(CachedOutputStream.THRESHOLD, "1");
+ exchange.getContext().setProperties(properties);
+ InputStream is = getTestFileStream();
+ InputStream cache = (InputStream)converter.convertToStreamCache(is, exchange);
+ assertNotNull(IOConverter.toString(cache));
+ try {
+ // since the stream is closed you delete the temp file
+ // reset will not work any more
+ cache.reset();
+ fail("except the exception here");
+ } catch (Exception exception) {
+ // do nothing
+ }
+ }
protected InputStream getTestFileStream() {
Modified: camel/branches/camel-1.x/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java?rev=752763&r1=752762&r2=752763&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java (original)
+++ camel/branches/camel-1.x/components/camel-spring/src/main/java/org/apache/camel/spring/CamelContextFactoryBean.java Thu Mar 12 03:50:12 2009
@@ -42,6 +42,7 @@
import org.apache.camel.model.RouteBuilderRef;
import org.apache.camel.model.RouteContainer;
import org.apache.camel.model.RouteType;
+import org.apache.camel.model.config.PropertiesType;
import org.apache.camel.model.dataformat.DataFormatsType;
import org.apache.camel.processor.interceptor.Debugger;
import org.apache.camel.processor.interceptor.Delayer;
@@ -91,16 +92,18 @@
private String errorHandlerRef;
@XmlAttribute(required = false)
private Boolean shouldStartContext = Boolean.TRUE;
+ @XmlElement(name = "properties", required = false)
+ private PropertiesType properties;
@XmlElement(name = "package", required = false)
private String[] packages = {};
@XmlElement(name = "jmxAgent", type = CamelJMXAgentType.class, required = false)
- private CamelJMXAgentType camelJMXAgent;
+ private CamelJMXAgentType camelJMXAgent;
@XmlElements({
@XmlElement(name = "beanPostProcessor", type = CamelBeanPostProcessor.class, required = false),
@XmlElement(name = "template", type = CamelTemplateFactoryBean.class, required = false),
@XmlElement(name = "proxy", type = CamelProxyFactoryType.class, required = false),
@XmlElement(name = "export", type = CamelServiceExporterType.class, required = false)})
- private List beans;
+ private List beans;
@XmlElement(name = "routeBuilderRef", required = false)
private List<RouteBuilderRef> builderRefs = new ArrayList<RouteBuilderRef>();
@XmlElement(name = "endpoint", required = false)
@@ -110,7 +113,7 @@
@XmlElement(name = "intercept", required = false)
private List<InterceptType> intercepts = new ArrayList<InterceptType>();
@XmlElement(name = "route", required = false)
- private List<RouteType> routes = new ArrayList<RouteType>();
+ private List<RouteType> routes = new ArrayList<RouteType>();
@XmlTransient
private SpringCamelContext context;
@XmlTransient
@@ -151,7 +154,9 @@
public void afterPropertiesSet() throws Exception {
// TODO there should be a neater way to do this!
-
+ if (properties != null) {
+ getContext().setProperties(properties.asMap());
+ }
Debugger debugger = getBeanForType(Debugger.class);
if (debugger != null) {
getContext().addInterceptStrategy(debugger);
@@ -370,6 +375,14 @@
public void setApplicationContext(ApplicationContext applicationContext) {
this.applicationContext = applicationContext;
}
+
+ public PropertiesType getProperties() {
+ return properties;
+ }
+
+ public void setProperties(PropertiesType properties) {
+ this.properties = properties;
+ }
public String[] getPackages() {
return packages;
Modified: camel/branches/camel-1.x/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java?rev=752763&r1=752762&r2=752763&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java (original)
+++ camel/branches/camel-1.x/components/camel-spring/src/main/java/org/apache/camel/spring/handler/CamelNamespaceHandler.java Thu Mar 12 03:50:12 2009
@@ -31,6 +31,7 @@
import org.apache.camel.ExchangePattern;
import org.apache.camel.builder.xml.Namespaces;
+import org.apache.camel.model.config.PropertiesType;
import org.apache.camel.model.dataformat.ArtixDSDataFormat;
import org.apache.camel.model.dataformat.JaxbDataFormat;
import org.apache.camel.model.dataformat.SerializationDataFormat;
@@ -174,7 +175,7 @@
classes.add(org.apache.camel.spring.CamelContextFactoryBean.class);
classes.add(ExchangePattern.class);
classes.add(org.apache.camel.model.RouteType.class);
- classes.add(org.apache.camel.model.config.StreamResequencerConfig.class);
+ classes.add(org.apache.camel.model.config.StreamResequencerConfig.class);
classes.add(org.apache.camel.model.dataformat.DataFormatType.class);
classes.add(org.apache.camel.model.language.ExpressionType.class);
classes.add(org.apache.camel.model.loadbalancer.LoadBalancerType.class);
@@ -208,6 +209,7 @@
builder.addPropertyValue("intercepts", factoryBean.getIntercepts());
builder.addPropertyValue("dataFormats", factoryBean.getDataFormats());
builder.addPropertyValue("builderRefs", factoryBean.getBuilderRefs());
+ builder.addPropertyValue("properties", factoryBean.getProperties());
if (factoryBean.getPackages().length > 0) {
builder.addPropertyValue("packages", factoryBean.getPackages());
Modified: camel/branches/camel-1.x/components/camel-spring/src/test/java/org/apache/camel/spring/CamelContextAwareTest.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-spring/src/test/java/org/apache/camel/spring/CamelContextAwareTest.java?rev=752763&r1=752762&r2=752763&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-spring/src/test/java/org/apache/camel/spring/CamelContextAwareTest.java (original)
+++ camel/branches/camel-1.x/components/camel-spring/src/test/java/org/apache/camel/spring/CamelContextAwareTest.java Thu Mar 12 03:50:12 2009
@@ -16,6 +16,8 @@
*/
package org.apache.camel.spring;
+import java.util.Map;
+
import org.springframework.context.support.AbstractXmlApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
@@ -27,6 +29,10 @@
public void testInjectionPoints() throws Exception {
assertNotNull("No CamelContext injected!", bean.getCamelContext());
+ Map<String, String> properties = bean.getCamelContext().getProperties();
+ assertNotNull("the properties should not been null", properties);
+ assertEquals("No properties injected", properties.size(), 1);
+ assertEquals("Should get the value of org.apache.camel.test", properties.get("org.apache.camel.test"), "this is a test");
}
@Override
Modified: camel/branches/camel-1.x/components/camel-spring/src/test/resources/org/apache/camel/spring/camelContextAwareBean.xml
URL: http://svn.apache.org/viewvc/camel/branches/camel-1.x/components/camel-spring/src/test/resources/org/apache/camel/spring/camelContextAwareBean.xml?rev=752763&r1=752762&r2=752763&view=diff
==============================================================================
--- camel/branches/camel-1.x/components/camel-spring/src/test/resources/org/apache/camel/spring/camelContextAwareBean.xml (original)
+++ camel/branches/camel-1.x/components/camel-spring/src/test/resources/org/apache/camel/spring/camelContextAwareBean.xml Thu Mar 12 03:50:12 2009
@@ -23,12 +23,9 @@
">
<camelContext id="camel" xmlns="http://activemq.apache.org/camel/schema/spring">
-<!--
- <route>
- <from uri="seda:a"/>
- <to uri="seda:b"/>
- </route>
--->
+ <properties>
+ <property key="org.apache.camel.test" value="this is a test"/>
+ </properties>
<beanPostProcessor/>
</camelContext>