| [[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>> |