---
apiVersion: v1
kind: List
items:
- apiVersion: v1
  kind: ConfigMap
  metadata:
    labels:
      funktion.fabric8.io/kind: Connector
      provider: fabric8
      project: connector-sap-netweaver
      version: 1.1.41
      group: io.fabric8.funktion.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:1.1.41
              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.1
      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]

