# ---------------------------------------------------------------------------
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# ---------------------------------------------------------------------------
apiVersion: camel.apache.org/v1alpha1
kind: Kamelet
metadata:
  name: log-sink
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "3.21.0"
    camel.apache.org/kamelet.icon: "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iaXNvLTg4NTktMSI/Pg0KPCEtLSBHZW5lcmF0b3I6IEFkb2JlIElsbHVzdHJhdG9yIDE2LjAuMCwgU1ZHIEV4cG9ydCBQbHVnLUluIC4gU1ZHIFZlcnNpb246IDYuMDAgQnVpbGQgMCkgIC0tPg0KPCFET0NUWVBFIHN2ZyBQVUJMSUMgIi0vL1czQy8vRFREIFNWRyAxLjEvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvR3JhcGhpY3MvU1ZHLzEuMS9EVEQvc3ZnMTEuZHRkIj4NCjxzdmcgdmVyc2lvbj0iMS4xIiBpZD0iQ2FwYV8xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4PSIwcHgiIHk9IjBweCINCgkgd2lkdGg9IjUxMnB4IiBoZWlnaHQ9IjUxMnB4IiB2aWV3Qm94PSIwIDAgNTEyIDUxMiIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAgNTEyIDUxMjsiIHhtbDpzcGFjZT0icHJlc2VydmUiPg0KPGc+DQoJPHBhdGggZD0iTTQ0OCwwSDY0QzQ2LjMyOCwwLDMyLDE0LjMxMywzMiwzMnY0NDhjMCwxNy42ODgsMTQuMzI4LDMyLDMyLDMyaDM4NGMxNy42ODgsMCwzMi0xNC4zMTIsMzItMzJWMzINCgkJQzQ4MCwxNC4zMTMsNDY1LjY4OCwwLDQ0OCwweiBNNjQsNDgwVjEyOGg4MHY2NEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY0OEg5NnYxNmg0OHY4MEg2NHogTTQ0OCw0ODBIMTYwdi04MGgyNTZ2LTE2DQoJCUgxNjB2LTQ4aDI1NnYtMTZIMTYwdi00OGgyNTZ2LTE2SDE2MHYtNDhoMjU2di0xNkgxNjB2LTY0aDI4OFY0ODB6Ii8+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8Zz4NCjwvZz4NCjxnPg0KPC9nPg0KPGc+DQo8L2c+DQo8L3N2Zz4NCg=="
    camel.apache.org/provider: "Apache Software Foundation"
    camel.apache.org/kamelet.group: "Logging"
    camel.apache.org/kamelet.namespace: "Logging"
  labels:
    camel.apache.org/kamelet.type: "sink"
spec:
  definition:
    title: "Log Sink"
    description: |-
      A sink that logs all data that it receives, useful for debugging purposes.
    type: object
    properties:
      loggerName:
        title: Logger Name
        description: Name of the logging category to use
        type: string
        default: "log-sink"
      level:
        title: Log Level
        description: Logging level to use
        type: string
        default: "INFO"
        x-descriptors:
        - 'urn:alm:descriptor:com.tectonic.ui:select:TRACE'
        - 'urn:alm:descriptor:com.tectonic.ui:select:DEBUG'
        - 'urn:alm:descriptor:com.tectonic.ui:select:INFO'
        - 'urn:alm:descriptor:com.tectonic.ui:select:WARN'
        - 'urn:alm:descriptor:com.tectonic.ui:select:ERROR'
        - 'urn:alm:descriptor:com.tectonic.ui:select:OFF'
      logMask:
        title: Log Mask
        description: Mask sensitive information like password or passphrase in the log
        type: boolean
        default: false
        x-descriptors:
        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
      marker:
        title: Marker
        description: An optional Marker name to use
        type: string
      multiline:
        title: Multiline
        description: If enabled then each information is outputted on a newline
        type: boolean
        default: false
        x-descriptors:
        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
      showAllProperties:
        title: Show All Properties
        description: Show all of the exchange properties (both internal and custom)
        type: boolean
        default: false
        x-descriptors:
        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
      showBody:
        title: Show Body
        description: Show the message body
        type: boolean
        default: true
        x-descriptors:
        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
      showBodyType:
        title: Show Body Type
        description: Show the body Java type
        type: boolean
        default: true
        x-descriptors:
        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
      showExchangePattern:
        title: Show Exchange Pattern
        description: Shows the Message Exchange Pattern (or MEP for short)
        type: boolean
        default: true
        x-descriptors:
        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
      showHeaders:
        title: Show Headers
        description: Show the headers received
        type: boolean
        default: false
        x-descriptors:
        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
      showProperties:
        title: Show Properties
        description: Show the exchange properties (only custom). Use showAllProperties to show both internal and custom properties.
        type: boolean
        default: false
        x-descriptors:
        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
      showStreams:
        title: Show Streams
        description: Show the stream bodies (they may not be available in following steps)
        type: boolean
        default: false
        x-descriptors:
        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
      showCachedStreams:
        title: Show Cached Streams
        description: Whether Camel should show cached stream bodies or not.
        type: boolean
        default: true
        x-descriptors:
        - 'urn:alm:descriptor:com.tectonic.ui:checkbox'
  dependencies:
  - "camel:kamelet"
  - "camel:log"
  template:
    from:
      uri: "kamelet:source"
      steps:
      - to:
          uri: "log:{{loggerName}}"
          parameters:
            level: "{{?level}}"
            logMask: "{{?logMask}}"
            marker: "{{?marker}}"
            multiline: "{{?multiline}}"
            showAllProperties: "{{?showAllProperties}}"
            showBody: "{{?showBody}}"
            showBodyType: "{{?showBodyType}}"
            showExchangePattern: "{{?showExchangePattern}}"
            showHeaders: "{{?showHeaders}}"
            showProperties: "{{?showProperties}}"
            showStreams: "{{?showStreams}}"
            showCachedStreams: "{{?showCachedStreams}}"