You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2017/02/15 21:01:24 UTC

[1/2] camel git commit: CAMEL-10838: camel-cache - Create a better body replacer processor

Repository: camel
Updated Branches:
  refs/heads/master f5ae492ac -> 0d3f461f6


CAMEL-10838: camel-cache - Create a better body replacer processor


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/bdf4aaa6
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/bdf4aaa6
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/bdf4aaa6

Branch: refs/heads/master
Commit: bdf4aaa6b1a6ab6d7a2b7cefc2713cd9605ccaf9
Parents: f5ae492
Author: Claus Ibsen <da...@apache.org>
Authored: Wed Feb 15 21:51:37 2017 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Feb 15 21:51:37 2017 +0100

----------------------------------------------------------------------
 .../cache/CacheBasedMessageBodyReplacer.java    | 46 ++++++++++++++------
 1 file changed, 33 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/bdf4aaa6/components/camel-cache/src/main/java/org/apache/camel/processor/cache/CacheBasedMessageBodyReplacer.java
----------------------------------------------------------------------
diff --git a/components/camel-cache/src/main/java/org/apache/camel/processor/cache/CacheBasedMessageBodyReplacer.java b/components/camel-cache/src/main/java/org/apache/camel/processor/cache/CacheBasedMessageBodyReplacer.java
index 64e80a1..7a33c61 100755
--- a/components/camel-cache/src/main/java/org/apache/camel/processor/cache/CacheBasedMessageBodyReplacer.java
+++ b/components/camel-cache/src/main/java/org/apache/camel/processor/cache/CacheBasedMessageBodyReplacer.java
@@ -20,20 +20,26 @@ import net.sf.ehcache.CacheManager;
 import net.sf.ehcache.Ehcache;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.Expression;
 import org.apache.camel.Processor;
+import org.apache.camel.Service;
+import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.component.cache.CacheConstants;
 import org.apache.camel.component.cache.DefaultCacheManagerFactory;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class CacheBasedMessageBodyReplacer extends CacheValidate implements Processor {
+public class CacheBasedMessageBodyReplacer extends CacheValidate implements Processor, Service {
     private static final Logger LOG = LoggerFactory.getLogger(CacheBasedMessageBodyReplacer.class);
-    CacheManager cacheManager;
-    Ehcache cache;
+    private CacheManager cacheManager;
     private String cacheName;
-    private String key;
+    private Expression key;
 
     public CacheBasedMessageBodyReplacer(String cacheName, String key) {
+        this(cacheName, ExpressionBuilder.constantExpression(key));
+    }
+
+    public CacheBasedMessageBodyReplacer(String cacheName, Expression key) {
         if (cacheName.contains("cache://")) {
             this.setCacheName(cacheName.replace("cache://", ""));
         } else {
@@ -43,16 +49,14 @@ public class CacheBasedMessageBodyReplacer extends CacheValidate implements Proc
     }
 
     public void process(Exchange exchange) throws Exception {
-        // Cache the buffer to the specified Cache against the specified key
-        cacheManager = new DefaultCacheManagerFactory().getInstance();
+        String cacheKey = key.evaluate(exchange, String.class);
 
-        if (isValid(cacheManager, cacheName, key)) {
-            cache = cacheManager.getCache(cacheName);
-            LOG.debug("Replacing Message Body from CacheName {} for key {}", cacheName, key);
-            exchange.getIn().setHeader(CacheConstants.CACHE_KEY, key);
-            exchange.getIn().setBody(cache.get(key).getObjectValue());
+        if (isValid(cacheManager, cacheName, cacheKey)) {
+            Ehcache cache = cacheManager.getCache(cacheName);
+            LOG.debug("Replacing Message Body from CacheName {} for key {}", cacheName, cacheKey);
+            exchange.getIn().setHeader(CacheConstants.CACHE_KEY, cacheKey);
+            exchange.getIn().setBody(cache.get(cacheKey).getObjectValue());
         }
-
     }
 
     public String getCacheName() {
@@ -63,12 +67,28 @@ public class CacheBasedMessageBodyReplacer extends CacheValidate implements Proc
         this.cacheName = cacheName;
     }
 
-    public String getKey() {
+    public Expression getKey() {
         return key;
     }
 
     public void setKey(String key) {
+        this.key = ExpressionBuilder.constantExpression(key);
+    }
+
+    public void setKey(Expression key) {
         this.key = key;
     }
 
+    @Override
+    public void start() throws Exception {
+        // Cache the buffer to the specified Cache against the specified key
+        if (cacheManager == null) {
+            cacheManager = new DefaultCacheManagerFactory().getInstance();
+        }
+    }
+
+    @Override
+    public void stop() throws Exception {
+        // noop
+    }
 }


[2/2] camel git commit: CAMEL-10838: camel-cache - Create a better body replacer processor

Posted by da...@apache.org.
CAMEL-10838: camel-cache - Create a better body replacer processor


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/0d3f461f
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/0d3f461f
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/0d3f461f

Branch: refs/heads/master
Commit: 0d3f461f6f576b74aae8c02118689c570c48d4f2
Parents: bdf4aaa
Author: Claus Ibsen <da...@apache.org>
Authored: Wed Feb 15 22:00:33 2017 +0100
Committer: Claus Ibsen <da...@apache.org>
Committed: Wed Feb 15 22:01:21 2017 +0100

----------------------------------------------------------------------
 .../cache/CacheBasedTokenReplacer.java          | 46 ++++++++++----
 .../cache/CacheBasedXPathReplacer.java          | 65 +++++++++++++-------
 2 files changed, 77 insertions(+), 34 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/0d3f461f/components/camel-cache/src/main/java/org/apache/camel/processor/cache/CacheBasedTokenReplacer.java
----------------------------------------------------------------------
diff --git a/components/camel-cache/src/main/java/org/apache/camel/processor/cache/CacheBasedTokenReplacer.java b/components/camel-cache/src/main/java/org/apache/camel/processor/cache/CacheBasedTokenReplacer.java
index 0fadb72..82d72d1 100755
--- a/components/camel-cache/src/main/java/org/apache/camel/processor/cache/CacheBasedTokenReplacer.java
+++ b/components/camel-cache/src/main/java/org/apache/camel/processor/cache/CacheBasedTokenReplacer.java
@@ -22,7 +22,10 @@ import net.sf.ehcache.CacheManager;
 import net.sf.ehcache.Ehcache;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.Expression;
 import org.apache.camel.Processor;
+import org.apache.camel.Service;
+import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.component.cache.CacheConstants;
 import org.apache.camel.component.cache.DefaultCacheManagerFactory;
 import org.apache.camel.converter.IOConverter;
@@ -30,15 +33,18 @@ import org.apache.camel.util.IOHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class CacheBasedTokenReplacer extends CacheValidate implements Processor {
+public class CacheBasedTokenReplacer extends CacheValidate implements Processor, Service {
     private static final Logger LOG = LoggerFactory.getLogger(CacheBasedTokenReplacer.class);
+    private CacheManager cacheManager;
     private String cacheName;
-    private String key;
+    private Expression key;
     private String replacementToken;
-    private CacheManager cacheManager;
-    private Ehcache cache;
 
     public CacheBasedTokenReplacer(String cacheName, String key, String replacementToken) {
+        this(cacheName, ExpressionBuilder.constantExpression(key), replacementToken);
+    }
+
+    public CacheBasedTokenReplacer(String cacheName, Expression key, String replacementToken) {
         if (cacheName.contains("cache://")) {
             this.setCacheName(cacheName.replace("cache://", ""));
         } else {
@@ -49,17 +55,16 @@ public class CacheBasedTokenReplacer extends CacheValidate implements Processor
     }
 
     public void process(Exchange exchange) throws Exception {
-        // Cache the buffer to the specified Cache against the specified key
-        cacheManager = new DefaultCacheManagerFactory().getInstance();
+        String cacheKey = key.evaluate(exchange, String.class);
 
-        if (isValid(cacheManager, cacheName, key)) {
-            cache = cacheManager.getCache(cacheName);
+        if (isValid(cacheManager, cacheName, cacheKey)) {
+            Ehcache cache = cacheManager.getCache(cacheName);
 
             if (LOG.isDebugEnabled()) {
                 LOG.debug("Replacing Token {} in Message with value stored against key {} in CacheName {}",
-                        new Object[]{replacementToken, key, cacheName});
+                        new Object[]{replacementToken, cacheKey, cacheName});
             }
-            exchange.getIn().setHeader(CacheConstants.CACHE_KEY, key);
+            exchange.getIn().setHeader(CacheConstants.CACHE_KEY, cacheKey);
 
             Object body = exchange.getIn().getBody();
             InputStream is = exchange.getContext().getTypeConverter().convertTo(InputStream.class, body);
@@ -72,7 +77,7 @@ public class CacheBasedTokenReplacer extends CacheValidate implements Processor
 
             // Note: The value in the cache must be a String
             String cacheValue = exchange.getContext().getTypeConverter()
-                    .convertTo(String.class, cache.get(key).getObjectValue());
+                    .convertTo(String.class, cache.get(cacheKey).getObjectValue());
             String replacedTokenString = new String(buffer).replaceAll(replacementToken, cacheValue);
 
             LOG.trace("replacedTokenString = {}", replacedTokenString);
@@ -88,11 +93,15 @@ public class CacheBasedTokenReplacer extends CacheValidate implements Processor
         this.cacheName = cacheName;
     }
 
-    public String getKey() {
+    public Expression getKey() {
         return key;
     }
 
     public void setKey(String key) {
+        this.key = ExpressionBuilder.constantExpression(key);
+    }
+
+    public void setKey(Expression key) {
         this.key = key;
     }
 
@@ -104,4 +113,17 @@ public class CacheBasedTokenReplacer extends CacheValidate implements Processor
         this.replacementToken = replacementToken;
     }
 
+    @Override
+    public void start() throws Exception {
+        // Cache the buffer to the specified Cache against the specified key
+        if (cacheManager == null) {
+            cacheManager = new DefaultCacheManagerFactory().getInstance();
+        }
+    }
+
+    @Override
+    public void stop() throws Exception {
+        // noop
+    }
+
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/0d3f461f/components/camel-cache/src/main/java/org/apache/camel/processor/cache/CacheBasedXPathReplacer.java
----------------------------------------------------------------------
diff --git a/components/camel-cache/src/main/java/org/apache/camel/processor/cache/CacheBasedXPathReplacer.java b/components/camel-cache/src/main/java/org/apache/camel/processor/cache/CacheBasedXPathReplacer.java
index 3077381..44810ab 100755
--- a/components/camel-cache/src/main/java/org/apache/camel/processor/cache/CacheBasedXPathReplacer.java
+++ b/components/camel-cache/src/main/java/org/apache/camel/processor/cache/CacheBasedXPathReplacer.java
@@ -19,7 +19,6 @@ package org.apache.camel.processor.cache;
 import java.io.File;
 import java.io.InputStream;
 import java.io.StringReader;
-
 import javax.xml.transform.Source;
 import javax.xml.transform.Transformer;
 import javax.xml.transform.TransformerFactory;
@@ -30,8 +29,12 @@ import org.w3c.dom.Document;
 
 import net.sf.ehcache.CacheManager;
 import net.sf.ehcache.Ehcache;
+
 import org.apache.camel.Exchange;
+import org.apache.camel.Expression;
 import org.apache.camel.Processor;
+import org.apache.camel.Service;
+import org.apache.camel.builder.ExpressionBuilder;
 import org.apache.camel.component.cache.CacheConstants;
 import org.apache.camel.component.cache.DefaultCacheManagerFactory;
 import org.apache.camel.converter.IOConverter;
@@ -40,18 +43,20 @@ import org.apache.camel.util.IOHelper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class CacheBasedXPathReplacer extends CacheValidate implements Processor {
+public class CacheBasedXPathReplacer extends CacheValidate implements Processor, Service {
     private static final Logger LOG = LoggerFactory.getLogger(CacheBasedXPathReplacer.class);
+
+    private CacheManager cacheManager;
+
     private String cacheName;
-    private String key;
+    private Expression key;
     private String xpath;
-    private CacheManager cacheManager;
-    private Ehcache cache;
-    private Document document;
-    private DOMSource source;
-    private DOMResult result;
 
     public CacheBasedXPathReplacer(String cacheName, String key, String xpath) {
+        this(cacheName, ExpressionBuilder.constantExpression(key), xpath);
+    }
+
+    public CacheBasedXPathReplacer(String cacheName, Expression key, String xpath) {
         if (cacheName.contains("cache://")) {
             this.setCacheName(cacheName.replace("cache://", ""));
         } else {
@@ -62,19 +67,19 @@ public class CacheBasedXPathReplacer extends CacheValidate implements Processor
     }
 
     public void process(Exchange exchange) throws Exception {
-        // Cache the buffer to the specified Cache against the specified key
-        cacheManager = new DefaultCacheManagerFactory().getInstance();
+        String cacheKey = key.evaluate(exchange, String.class);
 
-        if (isValid(cacheManager, cacheName, key)) {
-            cache = cacheManager.getCache(cacheName);
+        if (isValid(cacheManager, cacheName, cacheKey)) {
+            Ehcache cache = cacheManager.getCache(cacheName);
 
             if (LOG.isDebugEnabled()) {
                 LOG.debug("Replacing XPath value {} in Message with value stored against key {} in CacheName {}",
-                        new Object[]{xpath, key, cacheName});
+                        new Object[]{xpath, cacheKey, cacheName});
             }
-            exchange.getIn().setHeader(CacheConstants.CACHE_KEY, key);
+            exchange.getIn().setHeader(CacheConstants.CACHE_KEY, cacheKey);
             Object body = exchange.getIn().getBody();
             InputStream is = exchange.getContext().getTypeConverter().convertTo(InputStream.class, body);
+            Document document;
             try {
                 document = exchange.getContext().getTypeConverter().convertTo(Document.class, exchange, is);
             } finally {
@@ -82,7 +87,7 @@ public class CacheBasedXPathReplacer extends CacheValidate implements Processor
             }
 
             InputStream cis = exchange.getContext().getTypeConverter()
-                .convertTo(InputStream.class, cache.get(key).getObjectValue());
+                .convertTo(InputStream.class, cache.get(cacheKey).getObjectValue());
 
             try {
                 Document cacheValueDocument = exchange.getContext().getTypeConverter()
@@ -95,19 +100,19 @@ public class CacheBasedXPathReplacer extends CacheValidate implements Processor
                 Source xslSource = xmlConverter.toStreamSource(new StringReader(xslString));
                 TransformerFactory transformerFactory = xmlConverter.createTransformerFactory();
                 Transformer transformer = transformerFactory.newTransformer(xslSource);
-                source = xmlConverter.toDOMSource(document);
-                result = new DOMResult();
+                DOMSource source = xmlConverter.toDOMSource(document);
+                DOMResult result = new DOMResult();
 
                 transformer.setParameter("cacheValue", cacheValueDocument);
                 transformer.transform(source, result);
+
+                // DOMSource can be converted to byte[] by camel type converter mechanism
+                DOMSource dom = new DOMSource(result.getNode());
+                exchange.getIn().setBody(dom, byte[].class);
             } finally {
                 IOHelper.close(cis, "cis", LOG);
             }
         }
-
-        // DOMSource can be converted to byte[] by camel type converter mechanism
-        DOMSource dom = new DOMSource(result.getNode());
-        exchange.getIn().setBody(dom, byte[].class);
     }
 
     public String getCacheName() {
@@ -118,11 +123,15 @@ public class CacheBasedXPathReplacer extends CacheValidate implements Processor
         this.cacheName = cacheName;
     }
 
-    public String getKey() {
+    public Expression getKey() {
         return key;
     }
 
     public void setKey(String key) {
+        this.key = ExpressionBuilder.constantExpression(key);
+    }
+
+    public void setKey(Expression key) {
         this.key = key;
     }
 
@@ -134,4 +143,16 @@ public class CacheBasedXPathReplacer extends CacheValidate implements Processor
         this.xpath = xpath;
     }
 
+    @Override
+    public void start() throws Exception {
+        // Cache the buffer to the specified Cache against the specified key
+        if (cacheManager == null) {
+            cacheManager = new DefaultCacheManagerFactory().getInstance();
+        }
+    }
+
+    @Override
+    public void stop() throws Exception {
+        // noop
+    }
 }