/*
 * 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.nettyhttp;

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 CamelNettyhttpSinkConnectorConfig
        extends
            CamelSinkConnectorConfig {

    public static final String CAMEL_SINK_NETTYHTTP_PATH_PROTOCOL_CONF = "camel.sink.path.protocol";
    public static final String CAMEL_SINK_NETTYHTTP_PATH_PROTOCOL_DOC = "The protocol to use which is either http, https or proxy - a consumer only option. One of: [http] [https]";
    public static final String CAMEL_SINK_NETTYHTTP_PATH_PROTOCOL_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_PATH_HOST_CONF = "camel.sink.path.host";
    public static final String CAMEL_SINK_NETTYHTTP_PATH_HOST_DOC = "The local hostname such as localhost, or 0.0.0.0 when being a consumer. The remote HTTP server hostname when using producer.";
    public static final String CAMEL_SINK_NETTYHTTP_PATH_HOST_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_PATH_PORT_CONF = "camel.sink.path.port";
    public static final String CAMEL_SINK_NETTYHTTP_PATH_PORT_DOC = "The host port number";
    public static final Integer CAMEL_SINK_NETTYHTTP_PATH_PORT_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_PATH_PATH_CONF = "camel.sink.path.path";
    public static final String CAMEL_SINK_NETTYHTTP_PATH_PATH_DOC = "Resource path";
    public static final String CAMEL_SINK_NETTYHTTP_PATH_PATH_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_BRIDGE_ENDPOINT_CONF = "camel.sink.endpoint.bridgeEndpoint";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_BRIDGE_ENDPOINT_DOC = "If the option is true, the producer will ignore the NettyHttpConstants.HTTP_URI header, and use the endpoint's URI for request. You may also set the throwExceptionOnFailure to be false to let the producer send all the fault response back. The consumer working in the bridge mode will skip the gzip compression and WWW URL form encoding (by adding the Exchange.SKIP_GZIP_ENCODING and Exchange.SKIP_WWW_FORM_URLENCODED headers to the consumed exchange).";
    public static final Boolean CAMEL_SINK_NETTYHTTP_ENDPOINT_BRIDGE_ENDPOINT_DEFAULT = false;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_DISCONNECT_CONF = "camel.sink.endpoint.disconnect";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_DISCONNECT_DOC = "Whether or not to disconnect(close) from Netty Channel right after use. Can be used for both consumer and producer.";
    public static final Boolean CAMEL_SINK_NETTYHTTP_ENDPOINT_DISCONNECT_DEFAULT = false;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_KEEP_ALIVE_CONF = "camel.sink.endpoint.keepAlive";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_KEEP_ALIVE_DOC = "Setting to ensure socket is not closed due to inactivity";
    public static final Boolean CAMEL_SINK_NETTYHTTP_ENDPOINT_KEEP_ALIVE_DEFAULT = true;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_REUSE_ADDRESS_CONF = "camel.sink.endpoint.reuseAddress";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_REUSE_ADDRESS_DOC = "Setting to facilitate socket multiplexing";
    public static final Boolean CAMEL_SINK_NETTYHTTP_ENDPOINT_REUSE_ADDRESS_DEFAULT = true;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_REUSE_CHANNEL_CONF = "camel.sink.endpoint.reuseChannel";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_REUSE_CHANNEL_DOC = "This option allows producers and consumers (in client mode) to reuse the same Netty Channel for the lifecycle of processing the Exchange. This is useful if you need to call a server multiple times in a Camel route and want to use the same network connection. When using this, the channel is not returned to the connection pool until the Exchange is done; or disconnected if the disconnect option is set to true. The reused Channel is stored on the Exchange as an exchange property with the key NettyConstants#NETTY_CHANNEL which allows you to obtain the channel during routing and use it as well.";
    public static final Boolean CAMEL_SINK_NETTYHTTP_ENDPOINT_REUSE_CHANNEL_DEFAULT = false;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_SYNC_CONF = "camel.sink.endpoint.sync";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_SYNC_DOC = "Setting to set endpoint as one-way or request-response";
    public static final Boolean CAMEL_SINK_NETTYHTTP_ENDPOINT_SYNC_DEFAULT = true;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_TCP_NO_DELAY_CONF = "camel.sink.endpoint.tcpNoDelay";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_TCP_NO_DELAY_DOC = "Setting to improve TCP protocol performance";
    public static final Boolean CAMEL_SINK_NETTYHTTP_ENDPOINT_TCP_NO_DELAY_DEFAULT = true;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_CONNECT_TIMEOUT_CONF = "camel.sink.endpoint.connectTimeout";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_CONNECT_TIMEOUT_DOC = "Time to wait for a socket connection to be available. Value is in milliseconds.";
    public static final Integer CAMEL_SINK_NETTYHTTP_ENDPOINT_CONNECT_TIMEOUT_DEFAULT = 10000;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_COOKIE_HANDLER_CONF = "camel.sink.endpoint.cookieHandler";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_COOKIE_HANDLER_DOC = "Configure a cookie handler to maintain a HTTP session";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_COOKIE_HANDLER_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_REQUEST_TIMEOUT_CONF = "camel.sink.endpoint.requestTimeout";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_REQUEST_TIMEOUT_DOC = "Allows to use a timeout for the Netty producer when calling a remote server. By default no timeout is in use. The value is in milli seconds, so eg 30000 is 30 seconds. The requestTimeout is using Netty's ReadTimeoutHandler to trigger the timeout.";
    public static final Long CAMEL_SINK_NETTYHTTP_ENDPOINT_REQUEST_TIMEOUT_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_THROW_EXCEPTION_ON_FAILURE_CONF = "camel.sink.endpoint.throwExceptionOnFailure";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_THROW_EXCEPTION_ON_FAILURE_DOC = "Option to disable throwing the HttpOperationFailedException in case of failed responses from the remote server. This allows you to get all responses regardless of the HTTP status code.";
    public static final Boolean CAMEL_SINK_NETTYHTTP_ENDPOINT_THROW_EXCEPTION_ON_FAILURE_DEFAULT = true;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_CLIENT_INITIALIZER_FACTORY_CONF = "camel.sink.endpoint.clientInitializerFactory";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_CLIENT_INITIALIZER_FACTORY_DOC = "To use a custom ClientInitializerFactory";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_CLIENT_INITIALIZER_FACTORY_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_LAZY_CHANNEL_CREATION_CONF = "camel.sink.endpoint.lazyChannelCreation";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_LAZY_CHANNEL_CREATION_DOC = "Channels can be lazily created to avoid exceptions, if the remote server is not up and running when the Camel producer is started.";
    public static final Boolean CAMEL_SINK_NETTYHTTP_ENDPOINT_LAZY_CHANNEL_CREATION_DEFAULT = true;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_LAZY_START_PRODUCER_CONF = "camel.sink.endpoint.lazyStartProducer";
    public static final String CAMEL_SINK_NETTYHTTP_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_NETTYHTTP_ENDPOINT_LAZY_START_PRODUCER_DEFAULT = false;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_OK_STATUS_CODE_RANGE_CONF = "camel.sink.endpoint.okStatusCodeRange";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_OK_STATUS_CODE_RANGE_DOC = "The status codes which are considered a success response. The values are inclusive. Multiple ranges can be defined, separated by comma, e.g. 200-204,209,301-304. Each range must be a single number or from-to with the dash included. The default range is 200-299";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_OK_STATUS_CODE_RANGE_DEFAULT = "200-299";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_BLOCK_WHEN_EXHAUSTED_CONF = "camel.sink.endpoint.producerPoolBlockWhenExhausted";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_BLOCK_WHEN_EXHAUSTED_DOC = "Sets the value for the blockWhenExhausted configuration attribute. It determines whether to block when the borrowObject() method is invoked when the pool is exhausted (the maximum number of active objects has been reached).";
    public static final Boolean CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_BLOCK_WHEN_EXHAUSTED_DEFAULT = true;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_ENABLED_CONF = "camel.sink.endpoint.producerPoolEnabled";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_ENABLED_DOC = "Whether producer pool is enabled or not. Important: If you turn this off then a single shared connection is used for the producer, also if you are doing request/reply. That means there is a potential issue with interleaved responses if replies comes back out-of-order. Therefore you need to have a correlation id in both the request and reply messages so you can properly correlate the replies to the Camel callback that is responsible for continue processing the message in Camel. To do this you need to implement NettyCamelStateCorrelationManager as correlation manager and configure it via the correlationManager option. See also the correlationManager option for more details.";
    public static final Boolean CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_ENABLED_DEFAULT = true;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MAX_IDLE_CONF = "camel.sink.endpoint.producerPoolMaxIdle";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MAX_IDLE_DOC = "Sets the cap on the number of idle instances in the pool.";
    public static final Integer CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MAX_IDLE_DEFAULT = 100;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MAX_TOTAL_CONF = "camel.sink.endpoint.producerPoolMaxTotal";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MAX_TOTAL_DOC = "Sets the cap on the number of objects that can be allocated by the pool (checked out to clients, or idle awaiting checkout) at a given time. Use a negative value for no limit.";
    public static final Integer CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MAX_TOTAL_DEFAULT = -1;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MAX_WAIT_CONF = "camel.sink.endpoint.producerPoolMaxWait";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MAX_WAIT_DOC = "Sets the maximum duration (value in millis) the borrowObject() method should block before throwing an exception when the pool is exhausted and producerPoolBlockWhenExhausted is true. When less than 0, the borrowObject() method may block indefinitely.";
    public static final Long CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MAX_WAIT_DEFAULT = -1L;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MIN_EVICTABLE_IDLE_CONF = "camel.sink.endpoint.producerPoolMinEvictableIdle";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MIN_EVICTABLE_IDLE_DOC = "Sets the minimum amount of time (value in millis) an object may sit idle in the pool before it is eligible for eviction by the idle object evictor.";
    public static final Long CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MIN_EVICTABLE_IDLE_DEFAULT = 300000L;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MIN_IDLE_CONF = "camel.sink.endpoint.producerPoolMinIdle";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MIN_IDLE_DOC = "Sets the minimum number of instances allowed in the producer pool before the evictor thread (if active) spawns new objects.";
    public static final Integer CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MIN_IDLE_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_USE_RELATIVE_PATH_CONF = "camel.sink.endpoint.useRelativePath";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_USE_RELATIVE_PATH_DOC = "Sets whether to use a relative path in HTTP requests.";
    public static final Boolean CAMEL_SINK_NETTYHTTP_ENDPOINT_USE_RELATIVE_PATH_DEFAULT = true;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_HOSTNAME_VERIFICATION_CONF = "camel.sink.endpoint.hostnameVerification";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_HOSTNAME_VERIFICATION_DOC = "To enable/disable hostname verification on SSLEngine";
    public static final Boolean CAMEL_SINK_NETTYHTTP_ENDPOINT_HOSTNAME_VERIFICATION_DEFAULT = false;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_ALLOW_SERIALIZED_HEADERS_CONF = "camel.sink.endpoint.allowSerializedHeaders";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_ALLOW_SERIALIZED_HEADERS_DOC = "Only used for TCP when transferExchange is true. When set to true, serializable objects in headers and properties will be added to the exchange. Otherwise Camel will exclude any non-serializable objects and log it at WARN level.";
    public static final Boolean CAMEL_SINK_NETTYHTTP_ENDPOINT_ALLOW_SERIALIZED_HEADERS_DEFAULT = false;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_CHANNEL_GROUP_CONF = "camel.sink.endpoint.channelGroup";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_CHANNEL_GROUP_DOC = "To use a explicit ChannelGroup.";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_CHANNEL_GROUP_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_CONFIGURATION_CONF = "camel.sink.endpoint.configuration";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_CONFIGURATION_DOC = "To use a custom configured NettyHttpConfiguration for configuring this endpoint.";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_CONFIGURATION_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_DISABLE_STREAM_CACHE_CONF = "camel.sink.endpoint.disableStreamCache";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_DISABLE_STREAM_CACHE_DOC = "Determines whether or not the raw input stream from Netty HttpRequest#getContent() or HttpResponset#getContent() is cached or not (Camel will read the stream into a in light-weight memory based Stream caching) cache. By default Camel will cache the Netty input stream to support reading it multiple times to ensure it Camel can retrieve all data from the stream. However you can set this option to true when you for example need to access the raw stream, such as streaming it directly to a file or other persistent store. Mind that if you enable this option, then you cannot read the Netty stream multiple times out of the box, and you would need manually to reset the reader index on the Netty raw stream. Also Netty will auto-close the Netty stream when the Netty HTTP server/HTTP client is done processing, which means that if the asynchronous routing engine is in use then any asynchronous thread that may continue routing the org.apache.camel.Exchange may not be able to read the Netty stream, because Netty has closed it.";
    public static final Boolean CAMEL_SINK_NETTYHTTP_ENDPOINT_DISABLE_STREAM_CACHE_DEFAULT = false;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_HEADER_FILTER_STRATEGY_CONF = "camel.sink.endpoint.headerFilterStrategy";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_HEADER_FILTER_STRATEGY_DOC = "To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers.";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_HEADER_FILTER_STRATEGY_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_NATIVE_TRANSPORT_CONF = "camel.sink.endpoint.nativeTransport";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_NATIVE_TRANSPORT_DOC = "Whether to use native transport instead of NIO. Native transport takes advantage of the host operating system and is only supported on some platforms. You need to add the netty JAR for the host operating system you are using. See more details at: http://netty.io/wiki/native-transports.html";
    public static final Boolean CAMEL_SINK_NETTYHTTP_ENDPOINT_NATIVE_TRANSPORT_DEFAULT = false;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_NETTY_HTTP_BINDING_CONF = "camel.sink.endpoint.nettyHttpBinding";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_NETTY_HTTP_BINDING_DOC = "To use a custom org.apache.camel.component.netty.http.NettyHttpBinding for binding to/from Netty and Camel Message API.";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_NETTY_HTTP_BINDING_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_OPTIONS_CONF = "camel.sink.endpoint.options";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_OPTIONS_DOC = "Allows to configure additional netty options using option. as prefix. For example option.child.keepAlive=false to set the netty option child.keepAlive=false. See the Netty documentation for possible options that can be used.";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_OPTIONS_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_RECEIVE_BUFFER_SIZE_CONF = "camel.sink.endpoint.receiveBufferSize";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_RECEIVE_BUFFER_SIZE_DOC = "The TCP/UDP buffer sizes to be used during inbound communication. Size is bytes.";
    public static final Integer CAMEL_SINK_NETTYHTTP_ENDPOINT_RECEIVE_BUFFER_SIZE_DEFAULT = 65536;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_RECEIVE_BUFFER_SIZE_PREDICTOR_CONF = "camel.sink.endpoint.receiveBufferSizePredictor";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_RECEIVE_BUFFER_SIZE_PREDICTOR_DOC = "Configures the buffer size predictor. See details at Jetty documentation and this mail thread.";
    public static final Integer CAMEL_SINK_NETTYHTTP_ENDPOINT_RECEIVE_BUFFER_SIZE_PREDICTOR_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_SEND_BUFFER_SIZE_CONF = "camel.sink.endpoint.sendBufferSize";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_SEND_BUFFER_SIZE_DOC = "The TCP/UDP buffer sizes to be used during outbound communication. Size is bytes.";
    public static final Integer CAMEL_SINK_NETTYHTTP_ENDPOINT_SEND_BUFFER_SIZE_DEFAULT = 65536;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_SYNCHRONOUS_CONF = "camel.sink.endpoint.synchronous";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_SYNCHRONOUS_DOC = "Sets whether synchronous processing should be strictly used";
    public static final Boolean CAMEL_SINK_NETTYHTTP_ENDPOINT_SYNCHRONOUS_DEFAULT = false;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_TRANSFER_EXCEPTION_CONF = "camel.sink.endpoint.transferException";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_TRANSFER_EXCEPTION_DOC = "If enabled and an Exchange failed processing on the consumer side, and if the caused Exception was send back serialized in the response as a application/x-java-serialized-object content type. On the producer side the exception will be deserialized and thrown as is, instead of the HttpOperationFailedException. The caused exception is required to be serialized. This is by default turned off. If you enable this then be aware that Java will deserialize the incoming data from the request to Java and that can be a potential security risk.";
    public static final Boolean CAMEL_SINK_NETTYHTTP_ENDPOINT_TRANSFER_EXCEPTION_DEFAULT = false;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_TRANSFER_EXCHANGE_CONF = "camel.sink.endpoint.transferExchange";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_TRANSFER_EXCHANGE_DOC = "Only used for TCP. You can transfer the exchange over the wire instead of just the body. The following fields are transferred: In body, Out body, fault body, In headers, Out headers, fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level.";
    public static final Boolean CAMEL_SINK_NETTYHTTP_ENDPOINT_TRANSFER_EXCHANGE_DEFAULT = false;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_UNIX_DOMAIN_SOCKET_PATH_CONF = "camel.sink.endpoint.unixDomainSocketPath";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_UNIX_DOMAIN_SOCKET_PATH_DOC = "Path to unix domain socket to use instead of inet socket. Host and port parameters will not be used, however required. It is ok to set dummy values for them. Must be used with nativeTransport=true and clientMode=false.";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_UNIX_DOMAIN_SOCKET_PATH_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_WORKER_COUNT_CONF = "camel.sink.endpoint.workerCount";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_WORKER_COUNT_DOC = "When netty works on nio mode, it uses default workerCount parameter from Netty (which is cpu_core_threads x 2). User can use this option to override the default workerCount from Netty.";
    public static final Integer CAMEL_SINK_NETTYHTTP_ENDPOINT_WORKER_COUNT_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_WORKER_GROUP_CONF = "camel.sink.endpoint.workerGroup";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_WORKER_GROUP_DOC = "To use a explicit EventLoopGroup as the boss thread pool. For example to share a thread pool with multiple consumers or producers. By default each consumer or producer has their own worker pool with 2 x cpu count core threads.";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_WORKER_GROUP_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_DECODERS_CONF = "camel.sink.endpoint.decoders";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_DECODERS_DOC = "A list of decoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup.";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_DECODERS_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_ENCODERS_CONF = "camel.sink.endpoint.encoders";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_ENCODERS_DOC = "A list of encoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup.";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_ENCODERS_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_ENABLED_PROTOCOLS_CONF = "camel.sink.endpoint.enabledProtocols";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_ENABLED_PROTOCOLS_DOC = "Which protocols to enable when using SSL";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_ENABLED_PROTOCOLS_DEFAULT = "TLSv1.2,TLSv1.3";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_KEY_STORE_FILE_CONF = "camel.sink.endpoint.keyStoreFile";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_KEY_STORE_FILE_DOC = "Client side certificate keystore to be used for encryption";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_KEY_STORE_FILE_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_KEY_STORE_FORMAT_CONF = "camel.sink.endpoint.keyStoreFormat";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_KEY_STORE_FORMAT_DOC = "Keystore format to be used for payload encryption. Defaults to JKS if not set";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_KEY_STORE_FORMAT_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_KEY_STORE_RESOURCE_CONF = "camel.sink.endpoint.keyStoreResource";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_KEY_STORE_RESOURCE_DOC = "Client side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems.";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_KEY_STORE_RESOURCE_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_PASSPHRASE_CONF = "camel.sink.endpoint.passphrase";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_PASSPHRASE_DOC = "Password setting to use in order to encrypt/decrypt payloads sent using SSH";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_PASSPHRASE_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_SECURITY_PROVIDER_CONF = "camel.sink.endpoint.securityProvider";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_SECURITY_PROVIDER_DOC = "Security provider to be used for payload encryption. Defaults to SunX509 if not set.";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_SECURITY_PROVIDER_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_SSL_CONF = "camel.sink.endpoint.ssl";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_SSL_DOC = "Setting to specify whether SSL encryption is applied to this endpoint";
    public static final Boolean CAMEL_SINK_NETTYHTTP_ENDPOINT_SSL_DEFAULT = false;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_SSL_CLIENT_CERT_HEADERS_CONF = "camel.sink.endpoint.sslClientCertHeaders";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_SSL_CLIENT_CERT_HEADERS_DOC = "When enabled and in SSL mode, then the Netty consumer will enrich the Camel Message with headers having information about the client certificate such as subject name, issuer name, serial number, and the valid date range.";
    public static final Boolean CAMEL_SINK_NETTYHTTP_ENDPOINT_SSL_CLIENT_CERT_HEADERS_DEFAULT = false;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_SSL_CONTEXT_PARAMETERS_CONF = "camel.sink.endpoint.sslContextParameters";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_SSL_CONTEXT_PARAMETERS_DOC = "To configure security using SSLContextParameters";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_SSL_CONTEXT_PARAMETERS_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_SSL_HANDLER_CONF = "camel.sink.endpoint.sslHandler";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_SSL_HANDLER_DOC = "Reference to a class that could be used to return an SSL Handler";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_SSL_HANDLER_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_TRUST_STORE_FILE_CONF = "camel.sink.endpoint.trustStoreFile";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_TRUST_STORE_FILE_DOC = "Server side certificate keystore to be used for encryption";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_TRUST_STORE_FILE_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_TRUST_STORE_RESOURCE_CONF = "camel.sink.endpoint.trustStoreResource";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_TRUST_STORE_RESOURCE_DOC = "Server side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems.";
    public static final String CAMEL_SINK_NETTYHTTP_ENDPOINT_TRUST_STORE_RESOURCE_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_CONFIGURATION_CONF = "camel.component.netty-http.configuration";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_CONFIGURATION_DOC = "To use the NettyConfiguration as configuration when creating endpoints.";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_CONFIGURATION_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_DISCONNECT_CONF = "camel.component.netty-http.disconnect";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_DISCONNECT_DOC = "Whether or not to disconnect(close) from Netty Channel right after use. Can be used for both consumer and producer.";
    public static final Boolean CAMEL_SINK_NETTYHTTP_COMPONENT_DISCONNECT_DEFAULT = false;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_KEEP_ALIVE_CONF = "camel.component.netty-http.keepAlive";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_KEEP_ALIVE_DOC = "Setting to ensure socket is not closed due to inactivity";
    public static final Boolean CAMEL_SINK_NETTYHTTP_COMPONENT_KEEP_ALIVE_DEFAULT = true;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_REUSE_ADDRESS_CONF = "camel.component.netty-http.reuseAddress";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_REUSE_ADDRESS_DOC = "Setting to facilitate socket multiplexing";
    public static final Boolean CAMEL_SINK_NETTYHTTP_COMPONENT_REUSE_ADDRESS_DEFAULT = true;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_REUSE_CHANNEL_CONF = "camel.component.netty-http.reuseChannel";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_REUSE_CHANNEL_DOC = "This option allows producers and consumers (in client mode) to reuse the same Netty Channel for the lifecycle of processing the Exchange. This is useful if you need to call a server multiple times in a Camel route and want to use the same network connection. When using this, the channel is not returned to the connection pool until the Exchange is done; or disconnected if the disconnect option is set to true. The reused Channel is stored on the Exchange as an exchange property with the key NettyConstants#NETTY_CHANNEL which allows you to obtain the channel during routing and use it as well.";
    public static final Boolean CAMEL_SINK_NETTYHTTP_COMPONENT_REUSE_CHANNEL_DEFAULT = false;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_SYNC_CONF = "camel.component.netty-http.sync";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_SYNC_DOC = "Setting to set endpoint as one-way or request-response";
    public static final Boolean CAMEL_SINK_NETTYHTTP_COMPONENT_SYNC_DEFAULT = true;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_TCP_NO_DELAY_CONF = "camel.component.netty-http.tcpNoDelay";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_TCP_NO_DELAY_DOC = "Setting to improve TCP protocol performance";
    public static final Boolean CAMEL_SINK_NETTYHTTP_COMPONENT_TCP_NO_DELAY_DEFAULT = true;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_CONNECT_TIMEOUT_CONF = "camel.component.netty-http.connectTimeout";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_CONNECT_TIMEOUT_DOC = "Time to wait for a socket connection to be available. Value is in milliseconds.";
    public static final Integer CAMEL_SINK_NETTYHTTP_COMPONENT_CONNECT_TIMEOUT_DEFAULT = 10000;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_LAZY_START_PRODUCER_CONF = "camel.component.netty-http.lazyStartProducer";
    public static final String CAMEL_SINK_NETTYHTTP_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_NETTYHTTP_COMPONENT_LAZY_START_PRODUCER_DEFAULT = false;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_REQUEST_TIMEOUT_CONF = "camel.component.netty-http.requestTimeout";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_REQUEST_TIMEOUT_DOC = "Allows to use a timeout for the Netty producer when calling a remote server. By default no timeout is in use. The value is in milli seconds, so eg 30000 is 30 seconds. The requestTimeout is using Netty's ReadTimeoutHandler to trigger the timeout.";
    public static final Long CAMEL_SINK_NETTYHTTP_COMPONENT_REQUEST_TIMEOUT_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_CLIENT_INITIALIZER_FACTORY_CONF = "camel.component.netty-http.clientInitializerFactory";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_CLIENT_INITIALIZER_FACTORY_DOC = "To use a custom ClientInitializerFactory";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_CLIENT_INITIALIZER_FACTORY_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_CORRELATION_MANAGER_CONF = "camel.component.netty-http.correlationManager";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_CORRELATION_MANAGER_DOC = "To use a custom correlation manager to manage how request and reply messages are mapped when using request/reply with the netty producer. This should only be used if you have a way to map requests together with replies such as if there is correlation ids in both the request and reply messages. This can be used if you want to multiplex concurrent messages on the same channel (aka connection) in netty. When doing this you must have a way to correlate the request and reply messages so you can store the right reply on the inflight Camel Exchange before its continued routed. We recommend extending the TimeoutCorrelationManagerSupport when you build custom correlation managers. This provides support for timeout and other complexities you otherwise would need to implement as well. See also the producerPoolEnabled option for more details.";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_CORRELATION_MANAGER_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_LAZY_CHANNEL_CREATION_CONF = "camel.component.netty-http.lazyChannelCreation";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_LAZY_CHANNEL_CREATION_DOC = "Channels can be lazily created to avoid exceptions, if the remote server is not up and running when the Camel producer is started.";
    public static final Boolean CAMEL_SINK_NETTYHTTP_COMPONENT_LAZY_CHANNEL_CREATION_DEFAULT = true;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_BLOCK_WHEN_EXHAUSTED_CONF = "camel.component.netty-http.producerPoolBlockWhenExhausted";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_BLOCK_WHEN_EXHAUSTED_DOC = "Sets the value for the blockWhenExhausted configuration attribute. It determines whether to block when the borrowObject() method is invoked when the pool is exhausted (the maximum number of active objects has been reached).";
    public static final Boolean CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_BLOCK_WHEN_EXHAUSTED_DEFAULT = true;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_ENABLED_CONF = "camel.component.netty-http.producerPoolEnabled";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_ENABLED_DOC = "Whether producer pool is enabled or not. Important: If you turn this off then a single shared connection is used for the producer, also if you are doing request/reply. That means there is a potential issue with interleaved responses if replies comes back out-of-order. Therefore you need to have a correlation id in both the request and reply messages so you can properly correlate the replies to the Camel callback that is responsible for continue processing the message in Camel. To do this you need to implement NettyCamelStateCorrelationManager as correlation manager and configure it via the correlationManager option. See also the correlationManager option for more details.";
    public static final Boolean CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_ENABLED_DEFAULT = true;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MAX_IDLE_CONF = "camel.component.netty-http.producerPoolMaxIdle";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MAX_IDLE_DOC = "Sets the cap on the number of idle instances in the pool.";
    public static final Integer CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MAX_IDLE_DEFAULT = 100;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MAX_TOTAL_CONF = "camel.component.netty-http.producerPoolMaxTotal";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MAX_TOTAL_DOC = "Sets the cap on the number of objects that can be allocated by the pool (checked out to clients, or idle awaiting checkout) at a given time. Use a negative value for no limit.";
    public static final Integer CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MAX_TOTAL_DEFAULT = -1;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MAX_WAIT_CONF = "camel.component.netty-http.producerPoolMaxWait";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MAX_WAIT_DOC = "Sets the maximum duration (value in millis) the borrowObject() method should block before throwing an exception when the pool is exhausted and producerPoolBlockWhenExhausted is true. When less than 0, the borrowObject() method may block indefinitely.";
    public static final Long CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MAX_WAIT_DEFAULT = -1L;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MIN_EVICTABLE_IDLE_CONF = "camel.component.netty-http.producerPoolMinEvictableIdle";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MIN_EVICTABLE_IDLE_DOC = "Sets the minimum amount of time (value in millis) an object may sit idle in the pool before it is eligible for eviction by the idle object evictor.";
    public static final Long CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MIN_EVICTABLE_IDLE_DEFAULT = 300000L;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MIN_IDLE_CONF = "camel.component.netty-http.producerPoolMinIdle";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MIN_IDLE_DOC = "Sets the minimum number of instances allowed in the producer pool before the evictor thread (if active) spawns new objects.";
    public static final Integer CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MIN_IDLE_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_UDP_CONNECTIONLESS_SENDING_CONF = "camel.component.netty-http.udpConnectionlessSending";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_UDP_CONNECTIONLESS_SENDING_DOC = "This option supports connection less udp sending which is a real fire and forget. A connected udp send receive the PortUnreachableException if no one is listen on the receiving port.";
    public static final Boolean CAMEL_SINK_NETTYHTTP_COMPONENT_UDP_CONNECTIONLESS_SENDING_DEFAULT = false;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_USE_BYTE_BUF_CONF = "camel.component.netty-http.useByteBuf";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_USE_BYTE_BUF_DOC = "If the useByteBuf is true, netty producer will turn the message body into ByteBuf before sending it out.";
    public static final Boolean CAMEL_SINK_NETTYHTTP_COMPONENT_USE_BYTE_BUF_DEFAULT = false;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_HOSTNAME_VERIFICATION_CONF = "camel.component.netty-http.hostnameVerification";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_HOSTNAME_VERIFICATION_DOC = "To enable/disable hostname verification on SSLEngine";
    public static final Boolean CAMEL_SINK_NETTYHTTP_COMPONENT_HOSTNAME_VERIFICATION_DEFAULT = false;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_ALLOW_SERIALIZED_HEADERS_CONF = "camel.component.netty-http.allowSerializedHeaders";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_ALLOW_SERIALIZED_HEADERS_DOC = "Only used for TCP when transferExchange is true. When set to true, serializable objects in headers and properties will be added to the exchange. Otherwise Camel will exclude any non-serializable objects and log it at WARN level.";
    public static final Boolean CAMEL_SINK_NETTYHTTP_COMPONENT_ALLOW_SERIALIZED_HEADERS_DEFAULT = false;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_AUTOWIRED_ENABLED_CONF = "camel.component.netty-http.autowiredEnabled";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_AUTOWIRED_ENABLED_DOC = "Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc.";
    public static final Boolean CAMEL_SINK_NETTYHTTP_COMPONENT_AUTOWIRED_ENABLED_DEFAULT = true;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_CHANNEL_GROUP_CONF = "camel.component.netty-http.channelGroup";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_CHANNEL_GROUP_DOC = "To use a explicit ChannelGroup.";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_CHANNEL_GROUP_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_HEADER_FILTER_STRATEGY_CONF = "camel.component.netty-http.headerFilterStrategy";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_HEADER_FILTER_STRATEGY_DOC = "To use a custom org.apache.camel.spi.HeaderFilterStrategy to filter headers.";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_HEADER_FILTER_STRATEGY_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_NATIVE_TRANSPORT_CONF = "camel.component.netty-http.nativeTransport";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_NATIVE_TRANSPORT_DOC = "Whether to use native transport instead of NIO. Native transport takes advantage of the host operating system and is only supported on some platforms. You need to add the netty JAR for the host operating system you are using. See more details at: http://netty.io/wiki/native-transports.html";
    public static final Boolean CAMEL_SINK_NETTYHTTP_COMPONENT_NATIVE_TRANSPORT_DEFAULT = false;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_NETTY_HTTP_BINDING_CONF = "camel.component.netty-http.nettyHttpBinding";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_NETTY_HTTP_BINDING_DOC = "To use a custom org.apache.camel.component.netty.http.NettyHttpBinding for binding to/from Netty and Camel Message API.";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_NETTY_HTTP_BINDING_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_OPTIONS_CONF = "camel.component.netty-http.options";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_OPTIONS_DOC = "Allows to configure additional netty options using option. as prefix. For example option.child.keepAlive=false to set the netty option child.keepAlive=false. See the Netty documentation for possible options that can be used.";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_OPTIONS_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_RECEIVE_BUFFER_SIZE_CONF = "camel.component.netty-http.receiveBufferSize";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_RECEIVE_BUFFER_SIZE_DOC = "The TCP/UDP buffer sizes to be used during inbound communication. Size is bytes.";
    public static final Integer CAMEL_SINK_NETTYHTTP_COMPONENT_RECEIVE_BUFFER_SIZE_DEFAULT = 65536;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_RECEIVE_BUFFER_SIZE_PREDICTOR_CONF = "camel.component.netty-http.receiveBufferSizePredictor";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_RECEIVE_BUFFER_SIZE_PREDICTOR_DOC = "Configures the buffer size predictor. See details at Jetty documentation and this mail thread.";
    public static final Integer CAMEL_SINK_NETTYHTTP_COMPONENT_RECEIVE_BUFFER_SIZE_PREDICTOR_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_SEND_BUFFER_SIZE_CONF = "camel.component.netty-http.sendBufferSize";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_SEND_BUFFER_SIZE_DOC = "The TCP/UDP buffer sizes to be used during outbound communication. Size is bytes.";
    public static final Integer CAMEL_SINK_NETTYHTTP_COMPONENT_SEND_BUFFER_SIZE_DEFAULT = 65536;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_TRANSFER_EXCHANGE_CONF = "camel.component.netty-http.transferExchange";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_TRANSFER_EXCHANGE_DOC = "Only used for TCP. You can transfer the exchange over the wire instead of just the body. The following fields are transferred: In body, Out body, fault body, In headers, Out headers, fault headers, exchange properties, exchange exception. This requires that the objects are serializable. Camel will exclude any non-serializable objects and log it at WARN level.";
    public static final Boolean CAMEL_SINK_NETTYHTTP_COMPONENT_TRANSFER_EXCHANGE_DEFAULT = false;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_UDP_BYTE_ARRAY_CODEC_CONF = "camel.component.netty-http.udpByteArrayCodec";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_UDP_BYTE_ARRAY_CODEC_DOC = "For UDP only. If enabled the using byte array codec instead of Java serialization protocol.";
    public static final Boolean CAMEL_SINK_NETTYHTTP_COMPONENT_UDP_BYTE_ARRAY_CODEC_DEFAULT = false;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_UNIX_DOMAIN_SOCKET_PATH_CONF = "camel.component.netty-http.unixDomainSocketPath";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_UNIX_DOMAIN_SOCKET_PATH_DOC = "Path to unix domain socket to use instead of inet socket. Host and port parameters will not be used, however required. It is ok to set dummy values for them. Must be used with nativeTransport=true and clientMode=false.";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_UNIX_DOMAIN_SOCKET_PATH_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_WORKER_COUNT_CONF = "camel.component.netty-http.workerCount";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_WORKER_COUNT_DOC = "When netty works on nio mode, it uses default workerCount parameter from Netty (which is cpu_core_threads x 2). User can use this option to override the default workerCount from Netty.";
    public static final Integer CAMEL_SINK_NETTYHTTP_COMPONENT_WORKER_COUNT_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_WORKER_GROUP_CONF = "camel.component.netty-http.workerGroup";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_WORKER_GROUP_DOC = "To use a explicit EventLoopGroup as the boss thread pool. For example to share a thread pool with multiple consumers or producers. By default each consumer or producer has their own worker pool with 2 x cpu count core threads.";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_WORKER_GROUP_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_ALLOW_DEFAULT_CODEC_CONF = "camel.component.netty-http.allowDefaultCodec";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_ALLOW_DEFAULT_CODEC_DOC = "The netty component installs a default codec if both, encoder/decoder is null and textline is false. Setting allowDefaultCodec to false prevents the netty component from installing a default codec as the first element in the filter chain.";
    public static final Boolean CAMEL_SINK_NETTYHTTP_COMPONENT_ALLOW_DEFAULT_CODEC_DEFAULT = true;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_AUTO_APPEND_DELIMITER_CONF = "camel.component.netty-http.autoAppendDelimiter";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_AUTO_APPEND_DELIMITER_DOC = "Whether or not to auto append missing end delimiter when sending using the textline codec.";
    public static final Boolean CAMEL_SINK_NETTYHTTP_COMPONENT_AUTO_APPEND_DELIMITER_DEFAULT = true;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_DECODER_MAX_LINE_LENGTH_CONF = "camel.component.netty-http.decoderMaxLineLength";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_DECODER_MAX_LINE_LENGTH_DOC = "The max line length to use for the textline codec.";
    public static final Integer CAMEL_SINK_NETTYHTTP_COMPONENT_DECODER_MAX_LINE_LENGTH_DEFAULT = 1024;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_DECODERS_CONF = "camel.component.netty-http.decoders";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_DECODERS_DOC = "A list of decoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup.";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_DECODERS_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_DELIMITER_CONF = "camel.component.netty-http.delimiter";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_DELIMITER_DOC = "The delimiter to use for the textline codec. Possible values are LINE and NULL. One of: [LINE] [NULL]";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_DELIMITER_DEFAULT = "LINE";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_ENCODERS_CONF = "camel.component.netty-http.encoders";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_ENCODERS_DOC = "A list of encoders to be used. You can use a String which have values separated by comma, and have the values be looked up in the Registry. Just remember to prefix the value with # so Camel knows it should lookup.";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_ENCODERS_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_ENCODING_CONF = "camel.component.netty-http.encoding";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_ENCODING_DOC = "The encoding (a charset name) to use for the textline codec. If not provided, Camel will use the JVM default Charset.";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_ENCODING_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_TEXTLINE_CONF = "camel.component.netty-http.textline";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_TEXTLINE_DOC = "Only used for TCP. If no codec is specified, you can use this flag to indicate a text line based codec; if not specified or the value is false, then Object Serialization is assumed over TCP - however only Strings are allowed to be serialized by default.";
    public static final Boolean CAMEL_SINK_NETTYHTTP_COMPONENT_TEXTLINE_DEFAULT = false;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_ENABLED_PROTOCOLS_CONF = "camel.component.netty-http.enabledProtocols";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_ENABLED_PROTOCOLS_DOC = "Which protocols to enable when using SSL";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_ENABLED_PROTOCOLS_DEFAULT = "TLSv1.2,TLSv1.3";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_KEY_STORE_FILE_CONF = "camel.component.netty-http.keyStoreFile";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_KEY_STORE_FILE_DOC = "Client side certificate keystore to be used for encryption";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_KEY_STORE_FILE_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_KEY_STORE_FORMAT_CONF = "camel.component.netty-http.keyStoreFormat";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_KEY_STORE_FORMAT_DOC = "Keystore format to be used for payload encryption. Defaults to JKS if not set";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_KEY_STORE_FORMAT_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_KEY_STORE_RESOURCE_CONF = "camel.component.netty-http.keyStoreResource";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_KEY_STORE_RESOURCE_DOC = "Client side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems.";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_KEY_STORE_RESOURCE_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_PASSPHRASE_CONF = "camel.component.netty-http.passphrase";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_PASSPHRASE_DOC = "Password setting to use in order to encrypt/decrypt payloads sent using SSH";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_PASSPHRASE_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_SECURITY_CONFIGURATION_CONF = "camel.component.netty-http.securityConfiguration";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_SECURITY_CONFIGURATION_DOC = "Refers to a org.apache.camel.component.netty.http.NettyHttpSecurityConfiguration for configuring secure web resources.";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_SECURITY_CONFIGURATION_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_SECURITY_PROVIDER_CONF = "camel.component.netty-http.securityProvider";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_SECURITY_PROVIDER_DOC = "Security provider to be used for payload encryption. Defaults to SunX509 if not set.";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_SECURITY_PROVIDER_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_SSL_CONF = "camel.component.netty-http.ssl";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_SSL_DOC = "Setting to specify whether SSL encryption is applied to this endpoint";
    public static final Boolean CAMEL_SINK_NETTYHTTP_COMPONENT_SSL_DEFAULT = false;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_SSL_CLIENT_CERT_HEADERS_CONF = "camel.component.netty-http.sslClientCertHeaders";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_SSL_CLIENT_CERT_HEADERS_DOC = "When enabled and in SSL mode, then the Netty consumer will enrich the Camel Message with headers having information about the client certificate such as subject name, issuer name, serial number, and the valid date range.";
    public static final Boolean CAMEL_SINK_NETTYHTTP_COMPONENT_SSL_CLIENT_CERT_HEADERS_DEFAULT = false;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_SSL_CONTEXT_PARAMETERS_CONF = "camel.component.netty-http.sslContextParameters";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_SSL_CONTEXT_PARAMETERS_DOC = "To configure security using SSLContextParameters";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_SSL_CONTEXT_PARAMETERS_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_SSL_HANDLER_CONF = "camel.component.netty-http.sslHandler";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_SSL_HANDLER_DOC = "Reference to a class that could be used to return an SSL Handler";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_SSL_HANDLER_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_TRUST_STORE_FILE_CONF = "camel.component.netty-http.trustStoreFile";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_TRUST_STORE_FILE_DOC = "Server side certificate keystore to be used for encryption";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_TRUST_STORE_FILE_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_TRUST_STORE_RESOURCE_CONF = "camel.component.netty-http.trustStoreResource";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_TRUST_STORE_RESOURCE_DOC = "Server side certificate keystore to be used for encryption. Is loaded by default from classpath, but you can prefix with classpath:, file:, or http: to load the resource from different systems.";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_TRUST_STORE_RESOURCE_DEFAULT = null;
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_USE_GLOBAL_SSL_CONTEXT_PARAMETERS_CONF = "camel.component.netty-http.useGlobalSslContextParameters";
    public static final String CAMEL_SINK_NETTYHTTP_COMPONENT_USE_GLOBAL_SSL_CONTEXT_PARAMETERS_DOC = "Enable usage of global SSL context parameters.";
    public static final Boolean CAMEL_SINK_NETTYHTTP_COMPONENT_USE_GLOBAL_SSL_CONTEXT_PARAMETERS_DEFAULT = false;

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

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

    public static ConfigDef conf() {
        ConfigDef conf = new ConfigDef(CamelSinkConnectorConfig.conf());
        conf.define(CAMEL_SINK_NETTYHTTP_PATH_PROTOCOL_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_PATH_PROTOCOL_DEFAULT, ConfigDef.Importance.HIGH, CAMEL_SINK_NETTYHTTP_PATH_PROTOCOL_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_PATH_HOST_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_PATH_HOST_DEFAULT, ConfigDef.Importance.HIGH, CAMEL_SINK_NETTYHTTP_PATH_HOST_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_PATH_PORT_CONF, ConfigDef.Type.INT, CAMEL_SINK_NETTYHTTP_PATH_PORT_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_PATH_PORT_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_PATH_PATH_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_PATH_PATH_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_PATH_PATH_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_BRIDGE_ENDPOINT_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_ENDPOINT_BRIDGE_ENDPOINT_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_BRIDGE_ENDPOINT_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_DISCONNECT_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_ENDPOINT_DISCONNECT_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_DISCONNECT_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_KEEP_ALIVE_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_ENDPOINT_KEEP_ALIVE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_KEEP_ALIVE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_REUSE_ADDRESS_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_ENDPOINT_REUSE_ADDRESS_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_REUSE_ADDRESS_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_REUSE_CHANNEL_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_ENDPOINT_REUSE_CHANNEL_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_REUSE_CHANNEL_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_SYNC_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_ENDPOINT_SYNC_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_SYNC_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_TCP_NO_DELAY_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_ENDPOINT_TCP_NO_DELAY_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_TCP_NO_DELAY_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_CONNECT_TIMEOUT_CONF, ConfigDef.Type.INT, CAMEL_SINK_NETTYHTTP_ENDPOINT_CONNECT_TIMEOUT_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_CONNECT_TIMEOUT_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_COOKIE_HANDLER_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_ENDPOINT_COOKIE_HANDLER_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_COOKIE_HANDLER_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_REQUEST_TIMEOUT_CONF, ConfigDef.Type.LONG, CAMEL_SINK_NETTYHTTP_ENDPOINT_REQUEST_TIMEOUT_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_REQUEST_TIMEOUT_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_THROW_EXCEPTION_ON_FAILURE_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_ENDPOINT_THROW_EXCEPTION_ON_FAILURE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_THROW_EXCEPTION_ON_FAILURE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_CLIENT_INITIALIZER_FACTORY_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_ENDPOINT_CLIENT_INITIALIZER_FACTORY_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_CLIENT_INITIALIZER_FACTORY_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_LAZY_CHANNEL_CREATION_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_ENDPOINT_LAZY_CHANNEL_CREATION_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_LAZY_CHANNEL_CREATION_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_LAZY_START_PRODUCER_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_ENDPOINT_LAZY_START_PRODUCER_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_LAZY_START_PRODUCER_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_OK_STATUS_CODE_RANGE_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_ENDPOINT_OK_STATUS_CODE_RANGE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_OK_STATUS_CODE_RANGE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_BLOCK_WHEN_EXHAUSTED_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_BLOCK_WHEN_EXHAUSTED_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_BLOCK_WHEN_EXHAUSTED_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_ENABLED_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_ENABLED_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_ENABLED_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MAX_IDLE_CONF, ConfigDef.Type.INT, CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MAX_IDLE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MAX_IDLE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MAX_TOTAL_CONF, ConfigDef.Type.INT, CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MAX_TOTAL_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MAX_TOTAL_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MAX_WAIT_CONF, ConfigDef.Type.LONG, CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MAX_WAIT_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MAX_WAIT_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MIN_EVICTABLE_IDLE_CONF, ConfigDef.Type.LONG, CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MIN_EVICTABLE_IDLE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MIN_EVICTABLE_IDLE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MIN_IDLE_CONF, ConfigDef.Type.INT, CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MIN_IDLE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_PRODUCER_POOL_MIN_IDLE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_USE_RELATIVE_PATH_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_ENDPOINT_USE_RELATIVE_PATH_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_USE_RELATIVE_PATH_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_HOSTNAME_VERIFICATION_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_ENDPOINT_HOSTNAME_VERIFICATION_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_HOSTNAME_VERIFICATION_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_ALLOW_SERIALIZED_HEADERS_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_ENDPOINT_ALLOW_SERIALIZED_HEADERS_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_ALLOW_SERIALIZED_HEADERS_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_CHANNEL_GROUP_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_ENDPOINT_CHANNEL_GROUP_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_CHANNEL_GROUP_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_CONFIGURATION_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_ENDPOINT_CONFIGURATION_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_CONFIGURATION_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_DISABLE_STREAM_CACHE_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_ENDPOINT_DISABLE_STREAM_CACHE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_DISABLE_STREAM_CACHE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_HEADER_FILTER_STRATEGY_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_ENDPOINT_HEADER_FILTER_STRATEGY_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_HEADER_FILTER_STRATEGY_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_NATIVE_TRANSPORT_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_ENDPOINT_NATIVE_TRANSPORT_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_NATIVE_TRANSPORT_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_NETTY_HTTP_BINDING_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_ENDPOINT_NETTY_HTTP_BINDING_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_NETTY_HTTP_BINDING_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_OPTIONS_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_ENDPOINT_OPTIONS_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_OPTIONS_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_RECEIVE_BUFFER_SIZE_CONF, ConfigDef.Type.INT, CAMEL_SINK_NETTYHTTP_ENDPOINT_RECEIVE_BUFFER_SIZE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_RECEIVE_BUFFER_SIZE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_RECEIVE_BUFFER_SIZE_PREDICTOR_CONF, ConfigDef.Type.INT, CAMEL_SINK_NETTYHTTP_ENDPOINT_RECEIVE_BUFFER_SIZE_PREDICTOR_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_RECEIVE_BUFFER_SIZE_PREDICTOR_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_SEND_BUFFER_SIZE_CONF, ConfigDef.Type.INT, CAMEL_SINK_NETTYHTTP_ENDPOINT_SEND_BUFFER_SIZE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_SEND_BUFFER_SIZE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_SYNCHRONOUS_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_ENDPOINT_SYNCHRONOUS_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_SYNCHRONOUS_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_TRANSFER_EXCEPTION_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_ENDPOINT_TRANSFER_EXCEPTION_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_TRANSFER_EXCEPTION_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_TRANSFER_EXCHANGE_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_ENDPOINT_TRANSFER_EXCHANGE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_TRANSFER_EXCHANGE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_UNIX_DOMAIN_SOCKET_PATH_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_ENDPOINT_UNIX_DOMAIN_SOCKET_PATH_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_UNIX_DOMAIN_SOCKET_PATH_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_WORKER_COUNT_CONF, ConfigDef.Type.INT, CAMEL_SINK_NETTYHTTP_ENDPOINT_WORKER_COUNT_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_WORKER_COUNT_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_WORKER_GROUP_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_ENDPOINT_WORKER_GROUP_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_WORKER_GROUP_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_DECODERS_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_ENDPOINT_DECODERS_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_DECODERS_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_ENCODERS_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_ENDPOINT_ENCODERS_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_ENCODERS_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_ENABLED_PROTOCOLS_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_ENDPOINT_ENABLED_PROTOCOLS_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_ENABLED_PROTOCOLS_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_KEY_STORE_FILE_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_ENDPOINT_KEY_STORE_FILE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_KEY_STORE_FILE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_KEY_STORE_FORMAT_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_ENDPOINT_KEY_STORE_FORMAT_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_KEY_STORE_FORMAT_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_KEY_STORE_RESOURCE_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_ENDPOINT_KEY_STORE_RESOURCE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_KEY_STORE_RESOURCE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_PASSPHRASE_CONF, ConfigDef.Type.PASSWORD, CAMEL_SINK_NETTYHTTP_ENDPOINT_PASSPHRASE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_PASSPHRASE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_SECURITY_PROVIDER_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_ENDPOINT_SECURITY_PROVIDER_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_SECURITY_PROVIDER_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_SSL_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_ENDPOINT_SSL_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_SSL_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_SSL_CLIENT_CERT_HEADERS_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_ENDPOINT_SSL_CLIENT_CERT_HEADERS_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_SSL_CLIENT_CERT_HEADERS_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_SSL_CONTEXT_PARAMETERS_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_ENDPOINT_SSL_CONTEXT_PARAMETERS_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_SSL_CONTEXT_PARAMETERS_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_SSL_HANDLER_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_ENDPOINT_SSL_HANDLER_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_SSL_HANDLER_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_TRUST_STORE_FILE_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_ENDPOINT_TRUST_STORE_FILE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_TRUST_STORE_FILE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_ENDPOINT_TRUST_STORE_RESOURCE_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_ENDPOINT_TRUST_STORE_RESOURCE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_ENDPOINT_TRUST_STORE_RESOURCE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_CONFIGURATION_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_COMPONENT_CONFIGURATION_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_CONFIGURATION_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_DISCONNECT_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_COMPONENT_DISCONNECT_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_DISCONNECT_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_KEEP_ALIVE_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_COMPONENT_KEEP_ALIVE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_KEEP_ALIVE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_REUSE_ADDRESS_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_COMPONENT_REUSE_ADDRESS_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_REUSE_ADDRESS_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_REUSE_CHANNEL_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_COMPONENT_REUSE_CHANNEL_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_REUSE_CHANNEL_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_SYNC_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_COMPONENT_SYNC_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_SYNC_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_TCP_NO_DELAY_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_COMPONENT_TCP_NO_DELAY_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_TCP_NO_DELAY_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_CONNECT_TIMEOUT_CONF, ConfigDef.Type.INT, CAMEL_SINK_NETTYHTTP_COMPONENT_CONNECT_TIMEOUT_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_CONNECT_TIMEOUT_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_LAZY_START_PRODUCER_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_COMPONENT_LAZY_START_PRODUCER_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_LAZY_START_PRODUCER_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_REQUEST_TIMEOUT_CONF, ConfigDef.Type.LONG, CAMEL_SINK_NETTYHTTP_COMPONENT_REQUEST_TIMEOUT_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_REQUEST_TIMEOUT_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_CLIENT_INITIALIZER_FACTORY_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_COMPONENT_CLIENT_INITIALIZER_FACTORY_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_CLIENT_INITIALIZER_FACTORY_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_CORRELATION_MANAGER_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_COMPONENT_CORRELATION_MANAGER_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_CORRELATION_MANAGER_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_LAZY_CHANNEL_CREATION_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_COMPONENT_LAZY_CHANNEL_CREATION_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_LAZY_CHANNEL_CREATION_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_BLOCK_WHEN_EXHAUSTED_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_BLOCK_WHEN_EXHAUSTED_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_BLOCK_WHEN_EXHAUSTED_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_ENABLED_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_ENABLED_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_ENABLED_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MAX_IDLE_CONF, ConfigDef.Type.INT, CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MAX_IDLE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MAX_IDLE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MAX_TOTAL_CONF, ConfigDef.Type.INT, CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MAX_TOTAL_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MAX_TOTAL_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MAX_WAIT_CONF, ConfigDef.Type.LONG, CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MAX_WAIT_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MAX_WAIT_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MIN_EVICTABLE_IDLE_CONF, ConfigDef.Type.LONG, CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MIN_EVICTABLE_IDLE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MIN_EVICTABLE_IDLE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MIN_IDLE_CONF, ConfigDef.Type.INT, CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MIN_IDLE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_PRODUCER_POOL_MIN_IDLE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_UDP_CONNECTIONLESS_SENDING_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_COMPONENT_UDP_CONNECTIONLESS_SENDING_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_UDP_CONNECTIONLESS_SENDING_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_USE_BYTE_BUF_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_COMPONENT_USE_BYTE_BUF_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_USE_BYTE_BUF_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_HOSTNAME_VERIFICATION_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_COMPONENT_HOSTNAME_VERIFICATION_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_HOSTNAME_VERIFICATION_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_ALLOW_SERIALIZED_HEADERS_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_COMPONENT_ALLOW_SERIALIZED_HEADERS_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_ALLOW_SERIALIZED_HEADERS_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_AUTOWIRED_ENABLED_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_COMPONENT_AUTOWIRED_ENABLED_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_AUTOWIRED_ENABLED_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_CHANNEL_GROUP_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_COMPONENT_CHANNEL_GROUP_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_CHANNEL_GROUP_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_HEADER_FILTER_STRATEGY_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_COMPONENT_HEADER_FILTER_STRATEGY_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_HEADER_FILTER_STRATEGY_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_NATIVE_TRANSPORT_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_COMPONENT_NATIVE_TRANSPORT_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_NATIVE_TRANSPORT_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_NETTY_HTTP_BINDING_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_COMPONENT_NETTY_HTTP_BINDING_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_NETTY_HTTP_BINDING_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_OPTIONS_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_COMPONENT_OPTIONS_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_OPTIONS_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_RECEIVE_BUFFER_SIZE_CONF, ConfigDef.Type.INT, CAMEL_SINK_NETTYHTTP_COMPONENT_RECEIVE_BUFFER_SIZE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_RECEIVE_BUFFER_SIZE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_RECEIVE_BUFFER_SIZE_PREDICTOR_CONF, ConfigDef.Type.INT, CAMEL_SINK_NETTYHTTP_COMPONENT_RECEIVE_BUFFER_SIZE_PREDICTOR_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_RECEIVE_BUFFER_SIZE_PREDICTOR_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_SEND_BUFFER_SIZE_CONF, ConfigDef.Type.INT, CAMEL_SINK_NETTYHTTP_COMPONENT_SEND_BUFFER_SIZE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_SEND_BUFFER_SIZE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_TRANSFER_EXCHANGE_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_COMPONENT_TRANSFER_EXCHANGE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_TRANSFER_EXCHANGE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_UDP_BYTE_ARRAY_CODEC_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_COMPONENT_UDP_BYTE_ARRAY_CODEC_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_UDP_BYTE_ARRAY_CODEC_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_UNIX_DOMAIN_SOCKET_PATH_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_COMPONENT_UNIX_DOMAIN_SOCKET_PATH_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_UNIX_DOMAIN_SOCKET_PATH_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_WORKER_COUNT_CONF, ConfigDef.Type.INT, CAMEL_SINK_NETTYHTTP_COMPONENT_WORKER_COUNT_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_WORKER_COUNT_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_WORKER_GROUP_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_COMPONENT_WORKER_GROUP_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_WORKER_GROUP_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_ALLOW_DEFAULT_CODEC_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_COMPONENT_ALLOW_DEFAULT_CODEC_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_ALLOW_DEFAULT_CODEC_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_AUTO_APPEND_DELIMITER_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_COMPONENT_AUTO_APPEND_DELIMITER_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_AUTO_APPEND_DELIMITER_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_DECODER_MAX_LINE_LENGTH_CONF, ConfigDef.Type.INT, CAMEL_SINK_NETTYHTTP_COMPONENT_DECODER_MAX_LINE_LENGTH_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_DECODER_MAX_LINE_LENGTH_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_DECODERS_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_COMPONENT_DECODERS_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_DECODERS_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_DELIMITER_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_COMPONENT_DELIMITER_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_DELIMITER_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_ENCODERS_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_COMPONENT_ENCODERS_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_ENCODERS_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_ENCODING_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_COMPONENT_ENCODING_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_ENCODING_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_TEXTLINE_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_COMPONENT_TEXTLINE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_TEXTLINE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_ENABLED_PROTOCOLS_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_COMPONENT_ENABLED_PROTOCOLS_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_ENABLED_PROTOCOLS_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_KEY_STORE_FILE_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_COMPONENT_KEY_STORE_FILE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_KEY_STORE_FILE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_KEY_STORE_FORMAT_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_COMPONENT_KEY_STORE_FORMAT_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_KEY_STORE_FORMAT_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_KEY_STORE_RESOURCE_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_COMPONENT_KEY_STORE_RESOURCE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_KEY_STORE_RESOURCE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_PASSPHRASE_CONF, ConfigDef.Type.PASSWORD, CAMEL_SINK_NETTYHTTP_COMPONENT_PASSPHRASE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_PASSPHRASE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_SECURITY_CONFIGURATION_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_COMPONENT_SECURITY_CONFIGURATION_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_SECURITY_CONFIGURATION_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_SECURITY_PROVIDER_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_COMPONENT_SECURITY_PROVIDER_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_SECURITY_PROVIDER_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_SSL_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_COMPONENT_SSL_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_SSL_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_SSL_CLIENT_CERT_HEADERS_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_COMPONENT_SSL_CLIENT_CERT_HEADERS_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_SSL_CLIENT_CERT_HEADERS_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_SSL_CONTEXT_PARAMETERS_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_COMPONENT_SSL_CONTEXT_PARAMETERS_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_SSL_CONTEXT_PARAMETERS_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_SSL_HANDLER_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_COMPONENT_SSL_HANDLER_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_SSL_HANDLER_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_TRUST_STORE_FILE_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_COMPONENT_TRUST_STORE_FILE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_TRUST_STORE_FILE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_TRUST_STORE_RESOURCE_CONF, ConfigDef.Type.STRING, CAMEL_SINK_NETTYHTTP_COMPONENT_TRUST_STORE_RESOURCE_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_TRUST_STORE_RESOURCE_DOC);
        conf.define(CAMEL_SINK_NETTYHTTP_COMPONENT_USE_GLOBAL_SSL_CONTEXT_PARAMETERS_CONF, ConfigDef.Type.BOOLEAN, CAMEL_SINK_NETTYHTTP_COMPONENT_USE_GLOBAL_SSL_CONTEXT_PARAMETERS_DEFAULT, ConfigDef.Importance.MEDIUM, CAMEL_SINK_NETTYHTTP_COMPONENT_USE_GLOBAL_SSL_CONTEXT_PARAMETERS_DOC);
        return conf;
    }
}