Updated Branches:
  refs/heads/master a2a99bf32 -> 37bfa9e7c

camel-sap-netweaver component. Work in progress.


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

Branch: refs/heads/master
Commit: c64f94aa452ca0c3ee1b56dbfe8abb320a315655
Parents: a2a99bf
Author: Claus Ibsen <davscl...@apache.org>
Authored: Wed May 29 10:42:06 2013 +0200
Committer: Claus Ibsen <davscl...@apache.org>
Committed: Wed May 29 10:42:06 2013 +0200

----------------------------------------------------------------------
 .../sap/netweaver/NetWeaverComponent.java          |   11 ++++++
 .../sap/netweaver/NetWeaverConstants.java          |   25 +++++++++++++++
 .../component/sap/netweaver/NetWeaverEndpoint.java |   18 ++++++++++
 .../component/sap/netweaver/NetWeaverProducer.java |   20 ++++++-----
 .../sap/netweaver/NetWeaverFlightDataTest.java     |    9 ++++-
 .../src/test/resources/log4j.properties            |    2 +-
 6 files changed, 73 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/c64f94aa/components/camel-sap-netweaver/src/main/java/org/apache/camel/component/sap/netweaver/NetWeaverComponent.java
----------------------------------------------------------------------
diff --git 
a/components/camel-sap-netweaver/src/main/java/org/apache/camel/component/sap/netweaver/NetWeaverComponent.java
 
b/components/camel-sap-netweaver/src/main/java/org/apache/camel/component/sap/netweaver/NetWeaverComponent.java
index 314724a..9ff0539 100644
--- 
a/components/camel-sap-netweaver/src/main/java/org/apache/camel/component/sap/netweaver/NetWeaverComponent.java
+++ 
b/components/camel-sap-netweaver/src/main/java/org/apache/camel/component/sap/netweaver/NetWeaverComponent.java
@@ -23,14 +23,17 @@ import org.apache.camel.impl.DefaultComponent;
 
 public class NetWeaverComponent extends DefaultComponent {
 
+    private boolean json = true;
     private String username;
     private String password;
 
     @Override
     protected Endpoint createEndpoint(String uri, String remaining, 
Map<String, Object> parameters) throws Exception {
         NetWeaverEndpoint endpoint = new NetWeaverEndpoint(uri, this);
+        endpoint.setUrl(remaining);
         endpoint.setUsername(username);
         endpoint.setPassword(password);
+        endpoint.setJson(json);
         setProperties(endpoint, parameters);
         return endpoint;
     }
@@ -50,4 +53,12 @@ public class NetWeaverComponent extends DefaultComponent {
     public void setPassword(String password) {
         this.password = password;
     }
+
+    public boolean isJson() {
+        return json;
+    }
+
+    public void setJson(boolean json) {
+        this.json = json;
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/c64f94aa/components/camel-sap-netweaver/src/main/java/org/apache/camel/component/sap/netweaver/NetWeaverConstants.java
----------------------------------------------------------------------
diff --git 
a/components/camel-sap-netweaver/src/main/java/org/apache/camel/component/sap/netweaver/NetWeaverConstants.java
 
b/components/camel-sap-netweaver/src/main/java/org/apache/camel/component/sap/netweaver/NetWeaverConstants.java
new file mode 100644
index 0000000..41bb58f
--- /dev/null
+++ 
b/components/camel-sap-netweaver/src/main/java/org/apache/camel/component/sap/netweaver/NetWeaverConstants.java
@@ -0,0 +1,25 @@
+/**
+ * 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.
+ */
+package org.apache.camel.component.sap.netweaver;
+
+public final class NetWeaverConstants {
+
+    public static final String COMMAND = "CamelNetWeaverCommand";
+
+    private NetWeaverConstants() {
+    }
+}

http://git-wip-us.apache.org/repos/asf/camel/blob/c64f94aa/components/camel-sap-netweaver/src/main/java/org/apache/camel/component/sap/netweaver/NetWeaverEndpoint.java
----------------------------------------------------------------------
diff --git 
a/components/camel-sap-netweaver/src/main/java/org/apache/camel/component/sap/netweaver/NetWeaverEndpoint.java
 
b/components/camel-sap-netweaver/src/main/java/org/apache/camel/component/sap/netweaver/NetWeaverEndpoint.java
index 2aed266..1ab003c 100644
--- 
a/components/camel-sap-netweaver/src/main/java/org/apache/camel/component/sap/netweaver/NetWeaverEndpoint.java
+++ 
b/components/camel-sap-netweaver/src/main/java/org/apache/camel/component/sap/netweaver/NetWeaverEndpoint.java
@@ -24,6 +24,8 @@ import org.apache.camel.impl.DefaultEndpoint;
 
 public class NetWeaverEndpoint extends DefaultEndpoint {
 
+    private boolean json;
+    private String url;
     private String username;
     private String password;
 
@@ -46,6 +48,14 @@ public class NetWeaverEndpoint extends DefaultEndpoint {
         return true;
     }
 
+    public String getUrl() {
+        return url;
+    }
+
+    public void setUrl(String url) {
+        this.url = url;
+    }
+
     public String getUsername() {
         return username;
     }
@@ -61,4 +71,12 @@ public class NetWeaverEndpoint extends DefaultEndpoint {
     public void setPassword(String password) {
         this.password = password;
     }
+
+    public boolean isJson() {
+        return json;
+    }
+
+    public void setJson(boolean json) {
+        this.json = json;
+    }
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/c64f94aa/components/camel-sap-netweaver/src/main/java/org/apache/camel/component/sap/netweaver/NetWeaverProducer.java
----------------------------------------------------------------------
diff --git 
a/components/camel-sap-netweaver/src/main/java/org/apache/camel/component/sap/netweaver/NetWeaverProducer.java
 
b/components/camel-sap-netweaver/src/main/java/org/apache/camel/component/sap/netweaver/NetWeaverProducer.java
index dfc1b9c..82ec838 100644
--- 
a/components/camel-sap-netweaver/src/main/java/org/apache/camel/component/sap/netweaver/NetWeaverProducer.java
+++ 
b/components/camel-sap-netweaver/src/main/java/org/apache/camel/component/sap/netweaver/NetWeaverProducer.java
@@ -22,6 +22,7 @@ import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
 import org.apache.camel.Producer;
 import org.apache.camel.impl.DefaultProducer;
+import org.apache.camel.util.ExchangeHelper;
 import org.apache.camel.util.ServiceHelper;
 import org.codehaus.jackson.map.ObjectMapper;
 
@@ -29,9 +30,6 @@ public class NetWeaverProducer extends DefaultProducer {
 
     private Producer http;
 
-    private String url = 
"https://sapes1.sapdevcenter.com/sap/opu/odata/IWBEP/RMTSAMPLEFLIGHT_2/";
-            + 
"FlightCollection(AirLineID='AA',FlightConnectionID='0017',FlightDate=datetime'2012-08-29T00%3A00%3A00')/FlightBooking";
-
     public NetWeaverProducer(Endpoint endpoint) {
         super(endpoint);
     }
@@ -43,11 +41,15 @@ public class NetWeaverProducer extends DefaultProducer {
 
     @Override
     public void process(Exchange exchange) throws Exception {
-        // call net weaver, and use json data format
+        String command = ExchangeHelper.getMandatoryHeader(exchange, 
NetWeaverConstants.COMMAND, String.class);
 
         Exchange dummy = getEndpoint().createExchange();
-        dummy.getIn().setHeader("Accept", "application/json");
-        log.info("Calling SAP Net-Weaver");
+        dummy.getIn().setHeader(Exchange.HTTP_PATH, command);
+        if (getEndpoint().isJson()) {
+            dummy.getIn().setHeader("Accept", "application/json");
+        }
+
+        log.debug("Calling SAP Net-Weaver {} with command {}", http, command);
         http.process(dummy);
 
         String json = dummy.hasOut() ? dummy.getOut().getBody(String.class) : 
dummy.getIn().getBody(String.class);
@@ -63,10 +65,10 @@ public class NetWeaverProducer extends DefaultProducer {
 
     @Override
     protected void doStart() throws Exception {
-        String s = url + "?authUsername=" + getEndpoint().getUsername() + 
"&authPassword=" + getEndpoint().getPassword() + "&authMethod=Basic";
-        log.info("Using url: {}", s);
-        http = getEndpoint().getCamelContext().getEndpoint(s).createProducer();
+        String url = getEndpoint().getUrl() + "?authUsername=" + 
getEndpoint().getUsername() + "&authPassword=" + getEndpoint().getPassword() + 
"&authMethod=Basic";
+        log.info("Creating NetWeaverProducer using url: {}", url);
 
+        http = 
getEndpoint().getCamelContext().getEndpoint(url).createProducer();
         ServiceHelper.startService(http);
     }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/c64f94aa/components/camel-sap-netweaver/src/test/java/org/apache/camel/component/sap/netweaver/NetWeaverFlightDataTest.java
----------------------------------------------------------------------
diff --git 
a/components/camel-sap-netweaver/src/test/java/org/apache/camel/component/sap/netweaver/NetWeaverFlightDataTest.java
 
b/components/camel-sap-netweaver/src/test/java/org/apache/camel/component/sap/netweaver/NetWeaverFlightDataTest.java
index 33796ab..76752de 100644
--- 
a/components/camel-sap-netweaver/src/test/java/org/apache/camel/component/sap/netweaver/NetWeaverFlightDataTest.java
+++ 
b/components/camel-sap-netweaver/src/test/java/org/apache/camel/component/sap/netweaver/NetWeaverFlightDataTest.java
@@ -22,11 +22,16 @@ import org.junit.Test;
 
 public class NetWeaverFlightDataTest extends CamelTestSupport {
 
+    private String username = "P1909969254";
+    private String password = "TODO";
+    private String url = 
"https://sapes1.sapdevcenter.com/sap/opu/odata/IWBEP/RMTSAMPLEFLIGHT_2/";;
+    private String command = 
"FlightCollection(AirLineID='AA',FlightConnectionID='0017',FlightDate=datetime'2012-08-29T00%3A00%3A00')/FlightBooking";
+
     @Test
     public void testNetWeaverFlight() throws Exception {
         getMockEndpoint("mock:result").expectedMessageCount(1);
 
-        template.sendBody("direct:start", "Dummy");
+        template.sendBodyAndHeader("direct:start", "Dummy", 
NetWeaverConstants.COMMAND, command);
 
         assertMockEndpointsSatisfied();
     }
@@ -37,7 +42,7 @@ public class NetWeaverFlightDataTest extends CamelTestSupport 
{
             @Override
             public void configure() throws Exception {
                 from("direct:start").streamCaching()
-                    .to("sap-netweaver:foo?username=P1909969254&password=TODO")
+                    .toF("sap-netweaver:%s?username=%s&password=%s", url, 
username, password)
                     .to("log:response?showStreams=true")
                     .to("mock:result");
             }

http://git-wip-us.apache.org/repos/asf/camel/blob/c64f94aa/components/camel-sap-netweaver/src/test/resources/log4j.properties
----------------------------------------------------------------------
diff --git a/components/camel-sap-netweaver/src/test/resources/log4j.properties 
b/components/camel-sap-netweaver/src/test/resources/log4j.properties
index 2969721..2798566 100644
--- a/components/camel-sap-netweaver/src/test/resources/log4j.properties
+++ b/components/camel-sap-netweaver/src/test/resources/log4j.properties
@@ -22,7 +22,7 @@ log4j.rootLogger=INFO, out
 
 #log4j.logger.org.apache.camel=DEBUG
 log4j.logger.org.apache.camel.component.sap.netweaver=DEBUG
-log4j.logger.org.apache.camel.component.http=DEBUG
+#log4j.logger.org.apache.camel.component.http=DEBUG
 
 # CONSOLE appender not used by default
 log4j.appender.out=org.apache.log4j.ConsoleAppender

Reply via email to