blob: ea894bb3bfbee7a81ae3e1f404395a79af758584 [file] [log] [blame]
[[sap-netweaver-component]]
== SAP NetWeaver Component
*Available as of Camel version 2.12*
The *sap-netweaver* integrates with the
http://scn.sap.com/community/developer-center/netweaver-gateway[SAP
NetWeaver Gateway] using HTTP transports.
This camel component supports only producer endpoints.
Maven users will need to add the following dependency to their `pom.xml`
for this component:
[source,xml]
------------------------------------------------------------
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-sap-netweaver</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
------------------------------------------------------------
### URI format
The URI scheme for a sap netweaver gateway component is as follows
[source,java]
-----------------------------------------------------------------
sap-netweaver:https://host:8080/path?username=foo&password=secret
-----------------------------------------------------------------
You can append query options to the URI in the following format,
`?option=value&option=value&...`
### Prerequisites
You would need to have an account to the SAP NetWeaver system to be able
to leverage this component. SAP provides a
http://scn.sap.com/docs/DOC-31221#section6[demo setup] where you can
requires for an account.
This component uses the basic authentication scheme for logging into SAP
NetWeaver.
### SAPNetWeaver options
// component options: START
The SAP NetWeaver component has no options.
// component options: END
// endpoint options: START
The SAP NetWeaver endpoint is configured using URI syntax:
----
sap-netweaver:url
----
with the following path and query parameters:
==== Path Parameters (1 parameters):
[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *url* | *Required* Url to the SAP net-weaver gateway server. | | String
|===
==== Query Parameters (6 parameters):
[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *flatternMap* (producer) | If the JSON Map contains only a single entry, then flattern by storing that single entry value as the message body. | true | boolean
| *json* (producer) | Whether to return data in JSON format. If this option is false, then XML is returned in Atom format. | true | boolean
| *jsonAsMap* (producer) | To transform the JSON from a String to a Map in the message body. | true | boolean
| *password* (producer) | *Required* Password for account. | | String
| *username* (producer) | *Required* Username for account. | | String
| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
|===
// endpoint options: END
### Message Headers
The following headers can be used by the producer.
[width="100%",cols="10%,10%,80%",options="header",]
|=======================================================================
|Name |Type |Description
|`CamelNetWeaverCommand` |`String` |*Mandatory*: The command to execute in
http://msdn.microsoft.com/en-us/library/cc956153.aspx[MS ADO.Net Data
Service] format.
|=======================================================================
### Examples
This example is using the flight demo example from SAP, which is
available online over the internet
http://scn.sap.com/docs/DOC-31221[here].
In the route below we request the SAP NetWeaver demo server using the
following url
[source,java]
----------------------------------------------------------------------
https://sapes1.sapdevcenter.com/sap/opu/odata/IWBEP/RMTSAMPLEFLIGHT_2/
----------------------------------------------------------------------
And we want to execute the following command
[source,java]
-------------------------------------------------------------------------------------------------------
FlightCollection(AirLineID='AA',FlightConnectionID='0017',FlightDate=datetime'2012-08-29T00%3A00%3A00')
-------------------------------------------------------------------------------------------------------
To get flight details for the given flight. The command syntax is in
http://msdn.microsoft.com/en-us/library/cc956153.aspx[MS ADO.Net Data
Service] format.
We have the following Camel route
[source,java]
-----------------------------------------------------------------------------
from("direct:start")
.setHeader(NetWeaverConstants.COMMAND, constant(command))
.toF("sap-netweaver:%s?username=%s&password=%s", url, username, password)
.to("log:response")
.to("velocity:flight-info.vm")
-----------------------------------------------------------------------------
Where url, username, password and command is defined as:
[source,java]
---------------------------------------------------------------------------------------------------------------------------------------
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')";
---------------------------------------------------------------------------------------------------------------------------------------
The password is invalid. You would need to create an account at SAP
first to run the demo.
The velocity template is used for formatting the response to a basic
HTML page
[source,xml]
------------------------------------------------------------------------
<html>
<body>
Flight information:
<p/>
<br/>Airline ID: $body["AirLineID"]
<br/>Aircraft Type: $body["AirCraftType"]
<br/>Departure city: $body["FlightDetails"]["DepartureCity"]
<br/>Departure airport: $body["FlightDetails"]["DepartureAirPort"]
<br/>Destination city: $body["FlightDetails"]["DestinationCity"]
<br/>Destination airport: $body["FlightDetails"]["DestinationAirPort"]
</body>
</html>
------------------------------------------------------------------------
When running the application you get sampel output:
[source,java]
-------------------------------
Flight information:
Airline ID: AA
Aircraft Type: 747-400
Departure city: new york
Departure airport: JFK
Destination city: SAN FRANCISCO
Destination airport: SFO
-------------------------------
### See Also
* Configuring Camel
* Component
* Endpoint
* Getting Started
* <<http-component,HTTP>>