---
apiVersion: v1
kind: ConfigMap
metadata:
  labels:
    funktion.fabric8.io/kind: Connector
  name: aws-sdb
data:
  deployment.yml: |
    ---
    apiVersion: extensions/v1beta1
    kind: Deployment
    metadata:
      labels:
        funktion.fabric8.io/kind: Subscription
        connector: aws-sdb
    spec:
      replicas: 1
      template:
        metadata:
          labels:
            funktion.fabric8.io/kind: Subscription
            connector: aws-sdb
        spec:
          containers:
          - image: funktion/connector-aws-sdb:${project.version}
            name: connector
  schema.yml: |
    ---
    component:
      kind: component
      scheme: aws-sdb
      syntax: aws-sdb:domainName
      title: AWS SimpleDB
      description: The aws-sdb component is for storing and retrieving data from/to Amazon's SDB service.
      label: cloud,database,nosql
      deprecated: false
      async: false
      producerOnly: true
      javaType: org.apache.camel.component.aws.sdb.SdbComponent
      groupId: org.apache.camel
      artifactId: camel-aws
      version: 2.18.3
    componentProperties: {}
    properties:
      domainName:
        kind: path
        group: producer
        required: true
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The name of the domain currently worked with.
        order: 0
      accessKey:
        kind: parameter
        group: producer
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: Amazon AWS Access Key
        order: 1
      amazonSDBClient:
        kind: parameter
        group: producer
        type: object
        javaType: com.amazonaws.services.simpledb.AmazonSimpleDB
        deprecated: false
        secret: false
        description: To use the AmazonSimpleDB as the client
        order: 2
      amazonSdbEndpoint:
        kind: parameter
        group: producer
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: The region with which the AWS-SDB client wants to work with.
        order: 3
      consistentRead:
        kind: parameter
        group: producer
        type: boolean
        javaType: boolean
        deprecated: false
        secret: false
        defaultValue: false
        description: Determines whether or not strong consistency should be enforced when data is read.
        order: 4
      maxNumberOfDomains:
        kind: parameter
        group: producer
        type: integer
        javaType: java.lang.Integer
        deprecated: false
        secret: false
        description: The maximum number of domain names you want returned. The range is 1 to 100.
        order: 5
      operation:
        kind: parameter
        group: producer
        type: string
        javaType: org.apache.camel.component.aws.sdb.SdbOperations
        enum:
        - BatchDeleteAttributes
        - BatchPutAttributes
        - DeleteAttributes
        - DeleteDomain
        - DomainMetadata
        - GetAttributes
        - ListDomains
        - PutAttributes
        - Select
        deprecated: false
        secret: false
        defaultValue: PutAttributes
        description: Operation to perform
        order: 6
      proxyHost:
        kind: parameter
        group: producer
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: To define a proxy host when instantiating the SQS client
        order: 7
      proxyPort:
        kind: parameter
        group: producer
        type: integer
        javaType: java.lang.Integer
        deprecated: false
        secret: false
        description: To define a proxy port when instantiating the SQS client
        order: 8
      secretKey:
        kind: parameter
        group: producer
        type: string
        javaType: java.lang.String
        deprecated: false
        secret: false
        description: Amazon AWS Secret Key
        order: 9
      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: 10
  documentation.adoc: |+
    [[AWS-SDB-SDBComponent]]
    SDB Component
    ~~~~~~~~~~~~~

    *Available as of Camel 2.8.4*

    The sdb component supports storing and retrieving data from/to
    http://aws.amazon.com/sdb[Amazon's SDB] service.

    Prerequisites

    You must have a valid Amazon Web Services developer account, and be
    signed up to use Amazon SDB. More information are available at
    http://aws.amazon.com/sdb[Amazon SDB].

    [[AWS-SDB-URIFormat]]
    URI Format
    ^^^^^^^^^^

    [source,java]
    ------------------------------
    aws-sdb://domainName[?options]
    ------------------------------

    You can append query options to the URI in the following format,
    ?options=value&option2=value&...

    [[AWS-SDB-URIOptions]]
    URI Options
    ^^^^^^^^^^^


    // component options: START
    The AWS SimpleDB component has no options.
    // component options: END




    // endpoint options: START
    The AWS SimpleDB component supports 11 endpoint options which are listed below:

    {% raw %}
    [width="100%",cols="2,1,1m,1m,5",options="header"]
    |=======================================================================
    | Name | Group | Default | Java Type | Description
    | domainName | producer |  | String | *Required* The name of the domain currently worked with.
    | accessKey | producer |  | String | Amazon AWS Access Key
    | amazonSDBClient | producer |  | AmazonSimpleDB | To use the AmazonSimpleDB as the client
    | amazonSdbEndpoint | producer |  | String | The region with which the AWS-SDB client wants to work with.
    | consistentRead | producer | false | boolean | Determines whether or not strong consistency should be enforced when data is read.
    | maxNumberOfDomains | producer |  | Integer | The maximum number of domain names you want returned. The range is 1 to 100.
    | operation | producer | PutAttributes | SdbOperations | Operation to perform
    | proxyHost | producer |  | String | To define a proxy host when instantiating the SQS client
    | proxyPort | producer |  | Integer | To define a proxy port when instantiating the SQS client
    | secretKey | producer |  | String | Amazon AWS Secret Key
    | 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



    Required SDB component options

    You have to provide the amazonSDBClient in the
    link:registry.html[Registry] or your accessKey and secretKey to access
    the http://aws.amazon.com/sdb[Amazon's SDB].

    [[AWS-SDB-Usage]]
    Usage
    ^^^^^

    [[AWS-SDB-MessageheadersevaluatedbytheSDBproducer]]
    Message headers evaluated by the SDB producer
    +++++++++++++++++++++++++++++++++++++++++++++

    [width="100%",cols="10%,10%,80%",options="header",]
    |=======================================================================
    |Header |Type |Description

    |`CamelAwsSdbAttributes` |`Collection<Attribute>` |List of attributes to be acted upon.

    |`CamelAwsSdbAttributeNames` |`Collection<String>` |The names of the attributes to be retrieved.

    |`CamelAwsSdbConsistentRead` |`Boolean` |Determines whether or not strong consistency should be enforced when
    data is read.

    |`CamelAwsSdbDeletableItems` |`Collection<DeletableItem>` |A list of items on which to perform the delete operation in a batch.

    |`CamelAwsSdbDomainName` |`String` |The name of the domain currently worked with.

    |`CamelAwsSdbItemName` |`String` |The unique key for this item

    |`CamelAwsSdbMaxNumberOfDomains` |`Integer` |The maximum number of domain names you want returned. The range is 1 *
    to 100.

    |`CamelAwsSdbNextToken` |`String` |A string specifying where to start the next list of domain/item names.

    |`CamelAwsSdbOperation` |`String` |To override the operation from the URI options.

    |`CamelAwsSdbReplaceableAttributes` |`Collection<ReplaceableAttribute>` |List of attributes to put in an Item.

    |`CamelAwsSdbReplaceableItems` |`Collection<ReplaceableItem>` |A list of items to put in a Domain.

    |`CamelAwsSdbSelectExpression` |`String` |The expression used to query the domain.

    |`CamelAwsSdbUpdateCondition` |`UpdateCondition` |The update condition which, if specified, determines whether the
    specified attributes will be updated/deleted or not.
    |=======================================================================

    [[AWS-SDB-MessageheaderssetduringDomainMetadataoperation]]
    Message headers set during DomainMetadata operation
    +++++++++++++++++++++++++++++++++++++++++++++++++++

    [width="100%",cols="10%,10%,80%",options="header",]
    |=======================================================================
    |Header |Type |Description

    |`CamelAwsSdbTimestamp` |`Integer` |The data and time when metadata was calculated, in Epoch (UNIX) seconds.

    |`CamelAwsSdbItemCount` |`Integer` |The number of all items in the domain.

    |`CamelAwsSdbAttributeNameCount` |`Integer` |The number of unique attribute names in the domain.

    |`CamelAwsSdbAttributeValueCount` |`Integer` |The number of all attribute name/value pairs in the domain.

    |`CamelAwsSdbAttributeNameSize` |`Long` |The total size of all unique attribute names in the domain, in bytes.

    |`CamelAwsSdbAttributeValueSize` |`Long` |The total size of all attribute values in the domain, in bytes.

    |`CamelAwsSdbItemNameSize` |`Long` |The total size of all item names in the domain, in bytes.
    |=======================================================================

    [[AWS-SDB-MessageheaderssetduringGetAttributesoperation]]
    Message headers set during GetAttributes operation
    ++++++++++++++++++++++++++++++++++++++++++++++++++

    [width="100%",cols="10%,10%,80%",options="header",]
    |=======================================================================
    |Header |Type |Description

    |`CamelAwsSdbAttributes` |`List<Attribute>` |The list of attributes returned by the operation.
    |=======================================================================

    [[AWS-SDB-MessageheaderssetduringListDomainsoperation]]
    Message headers set during ListDomains operation
    ++++++++++++++++++++++++++++++++++++++++++++++++

    [width="100%",cols="10%,10%,80%",options="header",]
    |=======================================================================
    |Header |Type |Description

    |`CamelAwsSdbDomainNames` |`List<String>` |A list of domain names that match the expression.

    |`CamelAwsSdbNextToken` |`String` |An opaque token indicating that there are more domains than the
    specified MaxNumberOfDomains still available.
    |=======================================================================

    [[AWS-SDB-MessageheaderssetduringSelectoperation]]
    Message headers set during Select operation
    +++++++++++++++++++++++++++++++++++++++++++

    [width="100%",cols="10%,10%,80%",options="header",]
    |=======================================================================
    |Header |Type |Description

    |`CamelAwsSdbItems` |`List<Item>` |A list of items that match the select expression.

    |`CamelAwsSdbNextToken` |`String` |An opaque token indicating that more items than MaxNumberOfItems were
    matched, the response size exceeded 1 megabyte, or the execution time
    exceeded 5 seconds.
    |=======================================================================

    [[AWS-SDB-AdvancedAmazonSimpleDBconfiguration]]
    Advanced AmazonSimpleDB configuration
    +++++++++++++++++++++++++++++++++++++

    If you need more control over the `AmazonSimpleDB` instance
    configuration you can create your own instance and refer to it from the
    URI:

    [source,java]
    ----------------------------------------------------
    from("direct:start")
    .to("aws-sdb://domainName?amazonSDBClient=#client");
    ----------------------------------------------------

    The `#client` refers to a `AmazonSimpleDB` in the
    link:registry.html[Registry].

    For example if your Camel Application is running behind a firewall:

    [source,java]
    --------------------------------------------------------------------------------------
    AWSCredentials awsCredentials = new BasicAWSCredentials("myAccessKey", "mySecretKey");
    ClientConfiguration clientConfiguration = new ClientConfiguration();
    clientConfiguration.setProxyHost("http://myProxyHost");
    clientConfiguration.setProxyPort(8080);

    AmazonSimpleDB client = new AmazonSimpleDBClient(awsCredentials, clientConfiguration);

    registry.bind("client", client);
    --------------------------------------------------------------------------------------

    [[AWS-SDB-Dependencies]]
    Dependencies
    ^^^^^^^^^^^^

    Maven users will need to add the following dependency to their pom.xml.

    *pom.xml*

    [source,xml]
    ---------------------------------------
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-aws</artifactId>
        <version>${camel-version}</version>
    </dependency>
    ---------------------------------------

    where `${camel-version`} must be replaced by the actual version of Camel
    (2.8.4 or higher).

    [[AWS-SDB-SeeAlso]]
    See Also
    ^^^^^^^^

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

    * link:aws.html[AWS Component]

