/*
 * 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.
 */
package org.apache.camel.kafkaconnector.vm;

import java.util.Map;
import javax.annotation.Generated;
import org.apache.camel.kafkaconnector.CamelSinkConnectorConfig;
import org.apache.kafka.common.config.ConfigDef;

@Generated("This class has been generated by camel-kafka-connector-generator-maven-plugin, remove this annotation to prevent it from being generated.")
public class CamelVmSinkConnectorConfig extends CamelSinkConnectorConfig {

    public static final String CAMEL_SINK_VM_PATH_NAME_CONF = "camel.sink.path.name";
    public static final String CAMEL_SINK_VM_PATH_NAME_DOC = "Name of queue";
    public static final String CAMEL_SINK_VM_PATH_NAME_DEFAULT = null;
    public static final String CAMEL_SINK_VM_ENDPOINT_SIZE_CONF = "camel.sink.endpoint.size";
    public static final String CAMEL_SINK_VM_ENDPOINT_SIZE_DOC = "The maximum capacity of the SEDA queue (i.e., the number of messages it can hold). Will by default use the defaultSize set on the SEDA component.";
    public static final Integer CAMEL_SINK_VM_ENDPOINT_SIZE_DEFAULT = 1000;
    public static final String CAMEL_SINK_VM_ENDPOINT_BLOCK_WHEN_FULL_CONF = "camel.sink.endpoint.blockWhenFull";
    public static final String CAMEL_SINK_VM_ENDPOINT_BLOCK_WHEN_FULL_DOC = "Whether a thread that sends messages to a full SEDA queue will block until the queue's capacity is no longer exhausted. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will instead block and wait until the message can be accepted.";
    public static final Boolean CAMEL_SINK_VM_ENDPOINT_BLOCK_WHEN_FULL_DEFAULT = false;
    public static final String CAMEL_SINK_VM_ENDPOINT_DISCARD_IF_NO_CONSUMERS_CONF = "camel.sink.endpoint.discardIfNoConsumers";
    public static final String CAMEL_SINK_VM_ENDPOINT_DISCARD_IF_NO_CONSUMERS_DOC = "Whether the producer should discard the message (do not add the message to the queue), when sending to a queue with no active consumers. Only one of the options discardIfNoConsumers and failIfNoConsumers can be enabled at the same time.";
    public static final Boolean CAMEL_SINK_VM_ENDPOINT_DISCARD_IF_NO_CONSUMERS_DEFAULT = false;
    public static final String CAMEL_SINK_VM_ENDPOINT_DISCARD_WHEN_FULL_CONF = "camel.sink.endpoint.discardWhenFull";
    public static final String CAMEL_SINK_VM_ENDPOINT_DISCARD_WHEN_FULL_DOC = "Whether a thread that sends messages to a full SEDA queue will be discarded. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will give up sending and continue, meaning that the message was not sent to the SEDA queue.";
    public static final Boolean CAMEL_SINK_VM_ENDPOINT_DISCARD_WHEN_FULL_DEFAULT = false;
    public static final String CAMEL_SINK_VM_ENDPOINT_FAIL_IF_NO_CONSUMERS_CONF = "camel.sink.endpoint.failIfNoConsumers";
    public static final String CAMEL_SINK_VM_ENDPOINT_FAIL_IF_NO_CONSUMERS_DOC = "Whether the producer should fail by throwing an exception, when sending to a queue with no active consumers. Only one of the options discardIfNoConsumers and failIfNoConsumers can be enabled at the same time.";
    public static final Boolean CAMEL_SINK_VM_ENDPOINT_FAIL_IF_NO_CONSUMERS_DEFAULT = false;
    public static final String CAMEL_SINK_VM_ENDPOINT_LAZY_START_PRODUCER_CONF = "camel.sink.endpoint.lazyStartProducer";
    public static final String CAMEL_SINK_VM_ENDPOINT_LAZY_START_PRODUCER_DOC = "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing.";
    public static final Boolean CAMEL_SINK_VM_ENDPOINT_LAZY_START_PRODUCER_DEFAULT = false;
    public static final String CAMEL_SINK_VM_ENDPOINT_OFFER_TIMEOUT_CONF = "camel.sink.endpoint.offerTimeout";
    public static final String CAMEL_SINK_VM_ENDPOINT_OFFER_TIMEOUT_DOC = "offerTimeout (in milliseconds) can be added to the block case when queue is full. You can disable timeout by using 0 or a negative value.";
    public static final Long CAMEL_SINK_VM_ENDPOINT_OFFER_TIMEOUT_DEFAULT = null;
    public static final String CAMEL_SINK_VM_ENDPOINT_TIMEOUT_CONF = "camel.sink.endpoint.timeout";
    public static final String CAMEL_SINK_VM_ENDPOINT_TIMEOUT_DOC = "Timeout (in milliseconds) before a SEDA producer will stop waiting for an asynchronous task to complete. You can disable timeout by using 0 or a negative value.";
    public static final Long CAMEL_SINK_VM_ENDPOINT_TIMEOUT_DEFAULT = 30000L;
    public static final String CAMEL_SINK_VM_ENDPOINT_WAIT_FOR_TASK_TO_COMPLETE_CONF = "camel.sink.endpoint.waitForTaskToComplete";
    public static final String CAMEL_SINK_VM_ENDPOINT_WAIT_FOR_TASK_TO_COMPLETE_DOC = "Option to specify whether the caller should wait for the async task to complete or not before continuing. The following three options are supported: Always, Never or IfReplyExpected. The first two values are self-explanatory. The last value, IfReplyExpected, will only wait if the message is Request Reply based. The default option is IfReplyExpected. One of: [Never] [IfReplyExpected] [Always]";
    public static final String CAMEL_SINK_VM_ENDPOINT_WAIT_FOR_TASK_TO_COMPLETE_DEFAULT = "IfReplyExpected";
    public static final String CAMEL_SINK_VM_ENDPOINT_BASIC_PROPERTY_BINDING_CONF = "camel.sink.endpoint.basicPropertyBinding";
    public static final String CAMEL_SINK_VM_ENDPOINT_BASIC_PROPERTY_BINDING_DOC = "Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities";
    public static final Boolean CAMEL_SINK_VM_ENDPOINT_BASIC_PROPERTY_BINDING_DEFAULT = false;
    public static final String CAMEL_SINK_VM_ENDPOINT_QUEUE_CONF = "camel.sink.endpoint.queue";
    public static final String CAMEL_SINK_VM_ENDPOINT_QUEUE_DOC = "Define the queue instance which will be used by the endpoint";
    public static final String CAMEL_SINK_VM_ENDPOINT_QUEUE_DEFAULT = null;
    public static final String CAMEL_SINK_VM_ENDPOINT_SYNCHRONOUS_CONF = "camel.sink.endpoint.synchronous";
    public static final String CAMEL_SINK_VM_ENDPOINT_SYNCHRONOUS_DOC = "Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported).";
    public static final Boolean CAMEL_SINK_VM_ENDPOINT_SYNCHRONOUS_DEFAULT = false;
    public static final String CAMEL_SINK_VM_COMPONENT_DEFAULT_BLOCK_WHEN_FULL_CONF = "camel.component.vm.defaultBlockWhenFull";
    public static final String CAMEL_SINK_VM_COMPONENT_DEFAULT_BLOCK_WHEN_FULL_DOC = "Whether a thread that sends messages to a full SEDA queue will block until the queue's capacity is no longer exhausted. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will instead block and wait until the message can be accepted.";
    public static final Boolean CAMEL_SINK_VM_COMPONENT_DEFAULT_BLOCK_WHEN_FULL_DEFAULT = false;
    public static final String CAMEL_SINK_VM_COMPONENT_DEFAULT_DISCARD_WHEN_FULL_CONF = "camel.component.vm.defaultDiscardWhenFull";
    public static final String CAMEL_SINK_VM_COMPONENT_DEFAULT_DISCARD_WHEN_FULL_DOC = "Whether a thread that sends messages to a full SEDA queue will be discarded. By default, an exception will be thrown stating that the queue is full. By enabling this option, the calling thread will give up sending and continue, meaning that the message was not sent to the SEDA queue.";
    public static final Boolean CAMEL_SINK_VM_COMPONENT_DEFAULT_DISCARD_WHEN_FULL_DEFAULT = false;
    public static final String CAMEL_SINK_VM_COMPONENT_DEFAULT_OFFER_TIMEOUT_CONF = "camel.component.vm.defaultOfferTimeout";
    public static final String CAMEL_SINK_VM_COMPONENT_DEFAULT_OFFER_TIMEOUT_DOC = "Whether a thread that sends messages to a full SEDA queue will block until the queue's capacity is no longer exhausted. By default, an exception will be thrown stating that the queue is full. By enabling this option, where a configured timeout can be added to the block case. Utilizing the .offer(timeout) method of the underlining java queue";
    public static final Long CAMEL_SINK_VM_COMPONENT_DEFAULT_OFFER_TIMEOUT_DEFAULT = null;
    public static final String CAMEL_SINK_VM_COMPONENT_LAZY_START_PRODUCER_CONF = "camel.component.vm.lazyStartProducer";
    public static final String CAMEL_SINK_VM_COMPONENT_LAZY_START_PRODUCER_DOC = "Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel's routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing.";
    public static final Boolean CAMEL_SINK_VM_COMPONENT_LAZY_START_PRODUCER_DEFAULT = false;
    public static final String CAMEL_SINK_VM_COMPONENT_BASIC_PROPERTY_BINDING_CONF = "camel.component.vm.basicPropertyBinding";
    public static final String CAMEL_SINK_VM_COMPONENT_BASIC_PROPERTY_BINDING_DOC = "Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities";
    public static final Boolean CAMEL_SINK_VM_COMPONENT_BASIC_PROPERTY_BINDING_DEFAULT = false;
    public static final String CAMEL_SINK_VM_COMPONENT_DEFAULT_QUEUE_FACTORY_CONF = "camel.component.vm.defaultQueueFactory";
    public static final String CAMEL_SINK_VM_COMPONENT_DEFAULT_QUEUE_FACTORY_DOC = "Sets the default queue factory.";
    public static final String CAMEL_SINK_VM_COMPONENT_DEFAULT_QUEUE_FACTORY_DEFAULT = null;
    public static final String CAMEL_SINK_VM_COMPONENT_QUEUE_SIZE_CONF = "camel.component.vm.queueSize";
    public static final String CAMEL_SINK_VM_COMPONENT_QUEUE_SIZE_DOC = "Sets the default maximum capacity of the SEDA queue (i.e., the number of messages it can hold).";
    public static final Integer CAMEL_SINK_VM_COMPONENT_QUEUE_SIZE_DEFAULT = 1000;

    public CamelVmSinkConnectorConfig(
            ConfigDef config,
            Map<String, String> parsedConfig) {
        super(config, parsedConfig);
    }

    public CamelVmSinkConnectorConfig(Map<String, String> parsedConfig) {
        this(conf(), parsedConfig);
    }

    public static ConfigDef conf() {
        ConfigDef conf = new ConfigDef(CamelSinkConnectorConfig.conf());
        conf.define(CAMEL_SINK_VM_PATH_NAME_CONF, ConfigDef.Type.STRING, CAMEL_SINK_VM_PATH_NAME_DEFAULT, ConfigDef.Importance.HIGH, CAMEL_SINK_VM_PATH_NAME_DOC);
        conf.define(CAMEL_SINK_VM_ENDPOINT_SIZE_CONF, ConfigDef.Type.INT, CAMEL_SINK_VM_ENDPOINT_SIZE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_VM_ENDPOINT_SIZE_DOC);
        conf.define(CAMEL_SINK_VM_ENDPOINT_BLOCK_WHEN_FULL_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_VM_ENDPOINT_BLOCK_WHEN_FULL_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_VM_ENDPOINT_BLOCK_WHEN_FULL_DOC);
        conf.define(CAMEL_SINK_VM_ENDPOINT_DISCARD_IF_NO_CONSUMERS_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_VM_ENDPOINT_DISCARD_IF_NO_CONSUMERS_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_VM_ENDPOINT_DISCARD_IF_NO_CONSUMERS_DOC);
        conf.define(CAMEL_SINK_VM_ENDPOINT_DISCARD_WHEN_FULL_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_VM_ENDPOINT_DISCARD_WHEN_FULL_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_VM_ENDPOINT_DISCARD_WHEN_FULL_DOC);
        conf.define(CAMEL_SINK_VM_ENDPOINT_FAIL_IF_NO_CONSUMERS_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_VM_ENDPOINT_FAIL_IF_NO_CONSUMERS_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_VM_ENDPOINT_FAIL_IF_NO_CONSUMERS_DOC);
        conf.define(CAMEL_SINK_VM_ENDPOINT_LAZY_START_PRODUCER_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_VM_ENDPOINT_LAZY_START_PRODUCER_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_VM_ENDPOINT_LAZY_START_PRODUCER_DOC);
        conf.define(CAMEL_SINK_VM_ENDPOINT_OFFER_TIMEOUT_CONF, ConfigDef.Type.LONG, CAMEL_SINK_VM_ENDPOINT_OFFER_TIMEOUT_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_VM_ENDPOINT_OFFER_TIMEOUT_DOC);
        conf.define(CAMEL_SINK_VM_ENDPOINT_TIMEOUT_CONF, ConfigDef.Type.LONG, CAMEL_SINK_VM_ENDPOINT_TIMEOUT_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_VM_ENDPOINT_TIMEOUT_DOC);
        conf.define(CAMEL_SINK_VM_ENDPOINT_WAIT_FOR_TASK_TO_COMPLETE_CONF, ConfigDef.Type.STRING, CAMEL_SINK_VM_ENDPOINT_WAIT_FOR_TASK_TO_COMPLETE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_VM_ENDPOINT_WAIT_FOR_TASK_TO_COMPLETE_DOC);
        conf.define(CAMEL_SINK_VM_ENDPOINT_BASIC_PROPERTY_BINDING_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_VM_ENDPOINT_BASIC_PROPERTY_BINDING_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_VM_ENDPOINT_BASIC_PROPERTY_BINDING_DOC);
        conf.define(CAMEL_SINK_VM_ENDPOINT_QUEUE_CONF, ConfigDef.Type.STRING, CAMEL_SINK_VM_ENDPOINT_QUEUE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_VM_ENDPOINT_QUEUE_DOC);
        conf.define(CAMEL_SINK_VM_ENDPOINT_SYNCHRONOUS_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_VM_ENDPOINT_SYNCHRONOUS_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_VM_ENDPOINT_SYNCHRONOUS_DOC);
        conf.define(CAMEL_SINK_VM_COMPONENT_DEFAULT_BLOCK_WHEN_FULL_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_VM_COMPONENT_DEFAULT_BLOCK_WHEN_FULL_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_VM_COMPONENT_DEFAULT_BLOCK_WHEN_FULL_DOC);
        conf.define(CAMEL_SINK_VM_COMPONENT_DEFAULT_DISCARD_WHEN_FULL_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_VM_COMPONENT_DEFAULT_DISCARD_WHEN_FULL_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_VM_COMPONENT_DEFAULT_DISCARD_WHEN_FULL_DOC);
        conf.define(CAMEL_SINK_VM_COMPONENT_DEFAULT_OFFER_TIMEOUT_CONF, ConfigDef.Type.LONG, CAMEL_SINK_VM_COMPONENT_DEFAULT_OFFER_TIMEOUT_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_VM_COMPONENT_DEFAULT_OFFER_TIMEOUT_DOC);
        conf.define(CAMEL_SINK_VM_COMPONENT_LAZY_START_PRODUCER_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_VM_COMPONENT_LAZY_START_PRODUCER_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_VM_COMPONENT_LAZY_START_PRODUCER_DOC);
        conf.define(CAMEL_SINK_VM_COMPONENT_BASIC_PROPERTY_BINDING_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_VM_COMPONENT_BASIC_PROPERTY_BINDING_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_VM_COMPONENT_BASIC_PROPERTY_BINDING_DOC);
        conf.define(CAMEL_SINK_VM_COMPONENT_DEFAULT_QUEUE_FACTORY_CONF, ConfigDef.Type.STRING, CAMEL_SINK_VM_COMPONENT_DEFAULT_QUEUE_FACTORY_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_VM_COMPONENT_DEFAULT_QUEUE_FACTORY_DOC);
        conf.define(CAMEL_SINK_VM_COMPONENT_QUEUE_SIZE_CONF, ConfigDef.Type.INT, CAMEL_SINK_VM_COMPONENT_QUEUE_SIZE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_VM_COMPONENT_QUEUE_SIZE_DOC);
        return conf;
    }
}