---
apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    funktion.fabric8.io/kind: Connector
  name: sap-netweaver
data:
  deployment.yml: |
    ---
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      labels:
        funktion.fabric8.io/kind: Subscription
        connector: sap-netweaver
    spec:
      replicas: 1
      template:
        metadata:
          labels:
            funktion.fabric8.io/kind: Subscription
            connector: sap-netweaver
        spec:
          containers:
          - image: funktion/connector-sap-netweaver:${project.version}
            name: connector
  schema.yml: |
    ---
    component:
      kind: component
      scheme: sap-netweaver
      syntax: sap-netweaver:url
      title: SAP NetWeaver
      description: The sap-netweaver component integrates with the SAP NetWeaver Gateway using HTTP transports.
      label: sap
      deprecated: false
      async: false
      producerOnly: true
      javaType: org.apache.camel.component.sap.netweaver.NetWeaverComponent
      groupId: org.apache.camel
      artifactId: camel-sap-netweaver
      version: 2.18.3
    componentProperties: {}
    properties:
      url:
        kind: path
        group: producer
        required: true
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: Url to the SAP net-weaver gateway server.
        order: 0
      flatternMap:
        kind: parameter
        group: producer
        type: boolean
        javaType: boolean
        deprecated: false
        secret: false
        defaultValue: true
        description: If the JSON Map contains only a single entry then flattern by storing that single entry value as the message body.
        order: 1
      json:
        kind: parameter
        group: producer
        type: boolean
        javaType: boolean
        deprecated: false
        secret: false
        defaultValue: true
        description: Whether to return data in JSON format. If this option is false then XML is returned in Atom format.
        order: 2
      jsonAsMap:
        kind: parameter
        group: producer
        type: boolean
        javaType: boolean
        deprecated: false
        secret: false
        defaultValue: true
        description: To transform the JSON from a String to a Map in the message body.
        order: 3
      password:
        kind: parameter
        group: producer
        required: true
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: Password for account.
        order: 4
      username:
        kind: parameter
        group: producer
        required: true
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: Username for account.
        order: 5
      synchronous:
        kind: parameter
        group: advanced
        label: advanced
        type: boolean
        javaType: boolean
        deprecated: false
        secret: false
        defaultValue: false
        description: Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
        order: 6
  documentation.adoc: |+
    [[SAPNetWeaver-SAPNetWeaverGatewaycomponent]]
    SAP NetWeaver Gateway component
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    *Available as of Camel 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>
    ------------------------------------------------------------

    [[SAPNetWeaver-URIformat]]
    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&...`

    [[SAPNetWeaver-Prerequisites]]
    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-Componentandendpointoptions]]
    SAPNetWeaver options
    ^^^^^^^^^^^^^^^^^^^^


    // component options: START
    The SAP NetWeaver component has no options.
    // component options: END



    // endpoint options: START
    The SAP NetWeaver component supports 7 endpoint options which are listed below:

    {% raw %}
    [width="100%",cols="2,1,1m,1m,5",options="header"]
    |=======================================================================
    | Name | Group | Default | Java Type | Description
    | url | producer |  | String | *Required* Url to the SAP net-weaver gateway server.
    | flatternMap | producer | true | boolean | If the JSON Map contains only a single entry then flattern by storing that single entry value as the message body.
    | json | producer | true | boolean | Whether to return data in JSON format. If this option is false then XML is returned in Atom format.
    | jsonAsMap | producer | true | boolean | To transform the JSON from a String to a Map in the message body.
    | password | producer |  | String | *Required* Password for account.
    | username | producer |  | String | *Required* Username for account.
    | synchronous | advanced | false | boolean | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
    |=======================================================================
    {% endraw %}
    // endpoint options: END


    [[SAPNetWeaver-MessageHeaders]]
    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.
    |=======================================================================

    [[SAPNetWeaver-Examples]]
    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")
        .toF("sap-netweaver:%s?username=%s&password=%s", url, username, password)
        .to("log:response")
        .to("velocity:flight-info.vm")
    -----------------------------------------------------------------------------

    Where url, username, and password 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
    -------------------------------

    [[SAPNetWeaver-SeeAlso]]
    See Also
    ^^^^^^^^

    * link:configuring-camel.html[Configuring Camel]
    * link:component.html[Component]
    * link:endpoint.html[Endpoint]
    * link:getting-started.html[Getting Started]

    * link:http.html[HTTP]

