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 2013/12/24 12:18:59 UTC

git commit: CAMEL-7067: Use message headers instead of exchange properties.

Updated Branches:
  refs/heads/master 39abbbf1a -> 431daf45d


CAMEL-7067: Use message headers instead of exchange properties.

Signed-off-by: Gregor Zurowski <gr...@zurowski.org>

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

Branch: refs/heads/master
Commit: 431daf45dd929b48c41cf7662e9971dac60dfa92
Parents: 39abbbf
Author: Gregor Zurowski <gr...@zurowski.org>
Authored: Tue Dec 24 00:25:30 2013 -0500
Committer: Gregor Zurowski <gr...@zurowski.org>
Committed: Tue Dec 24 00:25:30 2013 -0500

----------------------------------------------------------------------
 .../apache/camel/component/jcr/JcrProducer.java | 39 ++++++++++++++------
 .../jcr/AuthTokenLoginFailureTest.java          |  4 +-
 .../jcr/JcrAuthTokenWithLoginTest.java          |  4 +-
 .../camel/component/jcr/JcrGetNodeByIdTest.java |  4 +-
 .../component/jcr/JcrNodePathCreationTest.java  |  4 +-
 .../component/jcr/JcrProducerSubNodeTest.java   |  4 +-
 .../camel/component/jcr/JcrProducerTest.java    |  4 +-
 7 files changed, 39 insertions(+), 24 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/431daf45/components/camel-jcr/src/main/java/org/apache/camel/component/jcr/JcrProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-jcr/src/main/java/org/apache/camel/component/jcr/JcrProducer.java b/components/camel-jcr/src/main/java/org/apache/camel/component/jcr/JcrProducer.java
index fd7c950..de4b8f3 100644
--- a/components/camel-jcr/src/main/java/org/apache/camel/component/jcr/JcrProducer.java
+++ b/components/camel-jcr/src/main/java/org/apache/camel/component/jcr/JcrProducer.java
@@ -19,6 +19,9 @@ package org.apache.camel.component.jcr;
 import java.io.InputStream;
 import java.math.BigDecimal;
 import java.util.Calendar;
+import java.util.HashMap;
+import java.util.Map;
+
 import javax.jcr.Node;
 import javax.jcr.Property;
 import javax.jcr.PropertyIterator;
@@ -28,6 +31,7 @@ import javax.jcr.Session;
 import javax.jcr.Value;
 
 import org.apache.camel.Exchange;
+import org.apache.camel.Message;
 import org.apache.camel.TypeConverter;
 import org.apache.camel.impl.DefaultProducer;
 import org.apache.jackrabbit.util.Text;
@@ -41,13 +45,15 @@ public class JcrProducer extends DefaultProducer {
     public void process(Exchange exchange) throws Exception {
         TypeConverter converter = exchange.getContext().getTypeConverter();
         Session session = openSession();
-        String operation = determineOperation(exchange);
+        Message message = exchange.getIn();
+        String operation = determineOperation(message);
         try {
             if (JcrConstants.JCR_INSERT.equals(operation)) {
                 Node base = findOrCreateNode(session.getRootNode(), getJcrEndpoint().getBase());
-                Node node = findOrCreateNode(base, getNodeName(exchange));
-                for (String key : exchange.getProperties().keySet()) {
-                    Value value = converter.convertTo(Value.class, exchange, exchange.getProperty(key));
+                Node node = findOrCreateNode(base, getNodeName(message));
+                Map<String, Object> headers = filterComponentHeaders(message.getHeaders());
+                for (String key : headers.keySet()) {
+                    Value value = converter.convertTo(Value.class, exchange, message.getHeader(key));
                     node.setProperty(key, value);
                 }
                 node.addMixin("mix:referenceable");
@@ -60,7 +66,7 @@ public class JcrProducer extends DefaultProducer {
                     Property property = properties.nextProperty();
                     Class<?> aClass = classForJCRType(property);
                     Object value = converter.convertTo(aClass, exchange, property.getValue());
-                    exchange.setProperty(property.getName(), value);
+                    message.setHeader(property.getName(), value);
                 }
             } else {
                 throw new RuntimeException("Unsupported operation: " + operation);
@@ -74,6 +80,17 @@ public class JcrProducer extends DefaultProducer {
         }
     }
 
+    private Map<String, Object> filterComponentHeaders(Map<String, Object> properties) {
+        Map<String, Object> result = new HashMap<String, Object>(properties.size());
+        for (Map.Entry<String, Object> entry : properties.entrySet()) {
+            String key = entry.getKey();
+            if (!key.equals(JcrConstants.JCR_NODE_NAME) && !key.equals(JcrConstants.JCR_OPERATION)) {
+                result.put(entry.getKey(), entry.getValue());
+            }
+        }
+        return result;
+    }
+    
     private Class<?> classForJCRType(Property property) throws RepositoryException {
         switch (property.getType()) {
         case PropertyType.STRING:
@@ -107,16 +124,14 @@ public class JcrProducer extends DefaultProducer {
         }
     }
 
-    private String determineOperation(Exchange exchange) {
-        String operation = exchange.getIn().getHeader(JcrConstants.JCR_OPERATION, String.class);
+    private String determineOperation(Message message) {
+        String operation = message.getHeader(JcrConstants.JCR_OPERATION, String.class);
         return operation != null ? operation : JcrConstants.JCR_INSERT;
     }
 
-    private String getNodeName(Exchange exchange) {
-        if (exchange.getProperty(JcrConstants.JCR_NODE_NAME) != null) {
-            return exchange.getProperty(JcrConstants.JCR_NODE_NAME, String.class);
-        }
-        return exchange.getExchangeId();
+    private String getNodeName(Message message) {
+        String nodeName = message.getHeader(JcrConstants.JCR_NODE_NAME, String.class);
+        return nodeName != null ? nodeName : message.getExchange().getExchangeId();
     }
 
     private Node findOrCreateNode(Node parent, String path) throws RepositoryException {

http://git-wip-us.apache.org/repos/asf/camel/blob/431daf45/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/AuthTokenLoginFailureTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/AuthTokenLoginFailureTest.java b/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/AuthTokenLoginFailureTest.java
index 5cf762e..406bf2c 100644
--- a/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/AuthTokenLoginFailureTest.java
+++ b/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/AuthTokenLoginFailureTest.java
@@ -54,8 +54,8 @@ public class AuthTokenLoginFailureTest extends JcrAuthTestBase {
             @Override
             public void configure() throws Exception {
                 // START SNIPPET: jcr
-                from("direct:a").setProperty(JcrConstants.JCR_NODE_NAME,
-                        constant("node")).setProperty("my.contents.property",
+                from("direct:a").setHeader(JcrConstants.JCR_NODE_NAME,
+                        constant("node")).setHeader("my.contents.property",
                         body()).to(
                         "jcr://test:quatloos@repository" + BASE_REPO_PATH);
                 // END SNIPPET: jcr

http://git-wip-us.apache.org/repos/asf/camel/blob/431daf45/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrAuthTokenWithLoginTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrAuthTokenWithLoginTest.java b/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrAuthTokenWithLoginTest.java
index c79c456..e1dee1a 100644
--- a/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrAuthTokenWithLoginTest.java
+++ b/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrAuthTokenWithLoginTest.java
@@ -39,8 +39,8 @@ public class JcrAuthTokenWithLoginTest extends JcrAuthTestBase {
             @Override
             public void configure() throws Exception {
                 // START SNIPPET: jcr
-                from("direct:a").setProperty(JcrConstants.JCR_NODE_NAME,
-                        constant("node")).setProperty("my.contents.property",
+                from("direct:a").setHeader(JcrConstants.JCR_NODE_NAME,
+                        constant("node")).setHeader("my.contents.property",
                         body()).to(
                         "jcr://not-a-user:nonexisting-password@repository" + BASE_REPO_PATH);
                 // END SNIPPET: jcr

http://git-wip-us.apache.org/repos/asf/camel/blob/431daf45/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrGetNodeByIdTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrGetNodeByIdTest.java b/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrGetNodeByIdTest.java
index 99621d0..d0ea37a 100644
--- a/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrGetNodeByIdTest.java
+++ b/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrGetNodeByIdTest.java
@@ -53,8 +53,8 @@ public class JcrGetNodeByIdTest extends JcrRouteTestSupport {
     @Test
     public void testJcrProducer() throws Exception {
         result.expectedMessageCount(1);
-        result.expectedPropertyReceived("my.contents.property", CONTENT);
-        result.expectedPropertyReceived("content.approved", APPROVED);
+        result.expectedHeaderReceived("my.contents.property", CONTENT);
+        result.expectedHeaderReceived("content.approved", APPROVED);
 
         Exchange exchange = createExchangeWithBody(identifier);
         template.send("direct:a", exchange);

http://git-wip-us.apache.org/repos/asf/camel/blob/431daf45/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrNodePathCreationTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrNodePathCreationTest.java b/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrNodePathCreationTest.java
index f688faf..4c004b2 100644
--- a/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrNodePathCreationTest.java
+++ b/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrNodePathCreationTest.java
@@ -65,8 +65,8 @@ public class JcrNodePathCreationTest extends CamelTestSupport {
             @Override
             public void configure() throws Exception {
                 // START SNIPPET: jcr
-                from("direct:a").setProperty(JcrConstants.JCR_NODE_NAME, constant("node/with/path"))
-                    .setProperty("my.contents.property", body()).to("jcr://user:pass@repository/home/test");
+                from("direct:a").setHeader(JcrConstants.JCR_NODE_NAME, constant("node/with/path"))
+                    .setHeader("my.contents.property", body()).to("jcr://user:pass@repository/home/test");
                 // END SNIPPET: jcr
             }
         };

http://git-wip-us.apache.org/repos/asf/camel/blob/431daf45/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrProducerSubNodeTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrProducerSubNodeTest.java b/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrProducerSubNodeTest.java
index 951b1dd..42d4a55 100644
--- a/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrProducerSubNodeTest.java
+++ b/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrProducerSubNodeTest.java
@@ -41,7 +41,7 @@ public class JcrProducerSubNodeTest extends JcrRouteTestSupport {
         try {
             // create node
             Exchange exchange1 = ExchangeBuilder.anExchange(context)
-                .withProperty(JcrConstants.JCR_NODE_NAME, "node")
+                .withHeader(JcrConstants.JCR_NODE_NAME, "node")
                 .build();
             Exchange out1 = template.send("direct:a", exchange1);
             assertNotNull(out1);
@@ -53,7 +53,7 @@ public class JcrProducerSubNodeTest extends JcrRouteTestSupport {
             
             // create sub node
             Exchange exchange2 = ExchangeBuilder.anExchange(context)
-                .withProperty(JcrConstants.JCR_NODE_NAME, "node/subnode")
+                .withHeader(JcrConstants.JCR_NODE_NAME, "node/subnode")
                 .build();
             Exchange out2 = template.send("direct:a", exchange2);
             assertNotNull(out2);

http://git-wip-us.apache.org/repos/asf/camel/blob/431daf45/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrProducerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrProducerTest.java b/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrProducerTest.java
index 8c66863..231fefa 100644
--- a/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrProducerTest.java
+++ b/components/camel-jcr/src/test/java/org/apache/camel/component/jcr/JcrProducerTest.java
@@ -58,8 +58,8 @@ public class JcrProducerTest extends JcrRouteTestSupport {
             @Override
             public void configure() throws Exception {
                 // START SNIPPET: jcr-create-node
-                from("direct:a").setProperty(JcrConstants.JCR_NODE_NAME, constant("node"))
-                        .setProperty("my.contents.property", body())
+                from("direct:a").setHeader(JcrConstants.JCR_NODE_NAME, constant("node"))
+                        .setHeader("my.contents.property", body())
                         .to("jcr://user:pass@repository/home/test");
                 // END SNIPPET: jcr-create-node
             }