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>