# ---------------------------------------------------------------------------
# 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/v1
kind: Kamelet
metadata:
  name: log-action
  annotations:
    camel.apache.org/kamelet.support.level: "Stable"
    camel.apache.org/catalog.version: "4.6.0-SNAPSHOT"
    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: "action"
spec:
  definition:
    title: "Log Action"
    description: |-
      Logs all data that flows between source and sink, useful for debugging purposes.
    type: object
    properties:
      loggerName:
        title: Logger Name
        description: Name of the logging category to use
        type: string
        default: "log-action"
      level:
        title: Log Level
        description: Logging level to use
        type: string
        default: "INFO"
        enum: ["TRACE", "DEBUG", "INFO", "WARN", "ERROR", "OFF"]
      logMask:
        title: Log Mask
        description: Mask sensitive information like password or passphrase in the log
        type: boolean
        default: false        
      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        
      showAllProperties:
        title: Show All Properties
        description: Show all of the exchange properties (both internal and custom)
        type: boolean
        default: false        
      showBody:
        title: Show Body
        description: Show the message body
        type: boolean
        default: true        
      showBodyType:
        title: Show Body Type
        description: Show the body Java type
        type: boolean
        default: true        
      showExchangePattern:
        title: Show Exchange Pattern
        description: Shows the Message Exchange Pattern (or MEP for short)
        type: boolean
        default: true        
      showHeaders:
        title: Show Headers
        description: Show the headers received
        type: boolean
        default: false       
      showProperties:
        title: Show Properties
        description: Show the exchange properties (only custom). Use showAllProperties to show both internal and custom properties.
        type: boolean
        default: false       
      showStreams:
        title: Show Streams
        description: Show the stream bodies (they may not be available in following steps)
        type: boolean
        default: false        
      showCachedStreams:
        title: Show Cached Streams
        description: Whether Camel should show cached stream bodies or not.
        type: boolean
        default: true        
  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}}"
