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