/* Generated by camel build tools - do NOT edit this file! */
package org.apache.camel.component.debezium.mongodb;

import javax.annotation.processing.Generated;
import java.util.Map;

import org.apache.camel.CamelContext;
import org.apache.camel.spi.ExtendedPropertyConfigurerGetter;
import org.apache.camel.spi.PropertyConfigurerGetter;
import org.apache.camel.spi.ConfigurerStrategy;
import org.apache.camel.spi.GeneratedPropertyConfigurer;
import org.apache.camel.util.CaseInsensitiveMap;
import org.apache.camel.support.component.PropertyConfigurerSupport;

/**
 * Generated by camel build tools - do NOT edit this file!
 */
@Generated("org.apache.camel.maven.packaging.EndpointSchemaGeneratorMojo")
@SuppressWarnings("unchecked")
public class DebeziumMongodbEndpointConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {

    @Override
    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
        DebeziumMongodbEndpoint target = (DebeziumMongodbEndpoint) obj;
        switch (ignoreCase ? name.toLowerCase() : name) {
        case "additionalproperties":
        case "additionalProperties": target.getConfiguration().setAdditionalProperties(property(camelContext, java.util.Map.class, value)); return true;
        case "bridgeerrorhandler":
        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
        case "capturemode":
        case "captureMode": target.getConfiguration().setCaptureMode(property(camelContext, java.lang.String.class, value)); return true;
        case "collectionexcludelist":
        case "collectionExcludeList": target.getConfiguration().setCollectionExcludeList(property(camelContext, java.lang.String.class, value)); return true;
        case "collectionincludelist":
        case "collectionIncludeList": target.getConfiguration().setCollectionIncludeList(property(camelContext, java.lang.String.class, value)); return true;
        case "connectionvalidationtimeoutms":
        case "connectionValidationTimeoutMs": target.getConfiguration().setConnectionValidationTimeoutMs(property(camelContext, java.time.Duration.class, value).toMillis()); return true;
        case "converters": target.getConfiguration().setConverters(property(camelContext, java.lang.String.class, value)); return true;
        case "cursormaxawaittimems":
        case "cursorMaxAwaitTimeMs": target.getConfiguration().setCursorMaxAwaitTimeMs(property(camelContext, int.class, value)); return true;
        case "custommetrictags":
        case "customMetricTags": target.getConfiguration().setCustomMetricTags(property(camelContext, java.lang.String.class, value)); return true;
        case "customsanitizepattern":
        case "customSanitizePattern": target.getConfiguration().setCustomSanitizePattern(property(camelContext, java.lang.String.class, value)); return true;
        case "databaseexcludelist":
        case "databaseExcludeList": target.getConfiguration().setDatabaseExcludeList(property(camelContext, java.lang.String.class, value)); return true;
        case "databaseincludelist":
        case "databaseIncludeList": target.getConfiguration().setDatabaseIncludeList(property(camelContext, java.lang.String.class, value)); return true;
        case "errorsmaxretries":
        case "errorsMaxRetries": target.getConfiguration().setErrorsMaxRetries(property(camelContext, int.class, value)); return true;
        case "eventprocessingfailurehandlingmode":
        case "eventProcessingFailureHandlingMode": target.getConfiguration().setEventProcessingFailureHandlingMode(property(camelContext, java.lang.String.class, value)); return true;
        case "exceptionhandler":
        case "exceptionHandler": target.setExceptionHandler(property(camelContext, org.apache.camel.spi.ExceptionHandler.class, value)); return true;
        case "exchangepattern":
        case "exchangePattern": target.setExchangePattern(property(camelContext, org.apache.camel.ExchangePattern.class, value)); return true;
        case "executorshutdowntimeoutms":
        case "executorShutdownTimeoutMs": target.getConfiguration().setExecutorShutdownTimeoutMs(property(camelContext, java.time.Duration.class, value).toMillis()); return true;
        case "extendedheadersenabled":
        case "extendedHeadersEnabled": target.getConfiguration().setExtendedHeadersEnabled(property(camelContext, boolean.class, value)); return true;
        case "fieldexcludelist":
        case "fieldExcludeList": target.getConfiguration().setFieldExcludeList(property(camelContext, java.lang.String.class, value)); return true;
        case "fieldrenames":
        case "fieldRenames": target.getConfiguration().setFieldRenames(property(camelContext, java.lang.String.class, value)); return true;
        case "guardrailcollectionslimitaction":
        case "guardrailCollectionsLimitAction": target.getConfiguration().setGuardrailCollectionsLimitAction(property(camelContext, java.lang.String.class, value)); return true;
        case "guardrailcollectionsmax":
        case "guardrailCollectionsMax": target.getConfiguration().setGuardrailCollectionsMax(property(camelContext, int.class, value)); return true;
        case "heartbeatintervalms":
        case "heartbeatIntervalMs": target.getConfiguration().setHeartbeatIntervalMs(property(camelContext, int.class, value)); return true;
        case "heartbeattopicsprefix":
        case "heartbeatTopicsPrefix": target.getConfiguration().setHeartbeatTopicsPrefix(property(camelContext, java.lang.String.class, value)); return true;
        case "incrementalsnapshotwatermarkingstrategy":
        case "incrementalSnapshotWatermarkingStrategy": target.getConfiguration().setIncrementalSnapshotWatermarkingStrategy(property(camelContext, java.lang.String.class, value)); return true;
        case "internalkeyconverter":
        case "internalKeyConverter": target.getConfiguration().setInternalKeyConverter(property(camelContext, java.lang.String.class, value)); return true;
        case "internalvalueconverter":
        case "internalValueConverter": target.getConfiguration().setInternalValueConverter(property(camelContext, java.lang.String.class, value)); return true;
        case "maxbatchsize":
        case "maxBatchSize": target.getConfiguration().setMaxBatchSize(property(camelContext, int.class, value)); return true;
        case "maxqueuesize":
        case "maxQueueSize": target.getConfiguration().setMaxQueueSize(property(camelContext, int.class, value)); return true;
        case "maxqueuesizeinbytes":
        case "maxQueueSizeInBytes": target.getConfiguration().setMaxQueueSizeInBytes(property(camelContext, long.class, value)); return true;
        case "mongodbauthsource":
        case "mongodbAuthsource": target.getConfiguration().setMongodbAuthsource(property(camelContext, java.lang.String.class, value)); return true;
        case "mongodbconnecttimeoutms":
        case "mongodbConnectTimeoutMs": target.getConfiguration().setMongodbConnectTimeoutMs(property(camelContext, int.class, value)); return true;
        case "mongodbconnectionstring":
        case "mongodbConnectionString": target.getConfiguration().setMongodbConnectionString(property(camelContext, java.lang.String.class, value)); return true;
        case "mongodbheartbeatfrequencyms":
        case "mongodbHeartbeatFrequencyMs": target.getConfiguration().setMongodbHeartbeatFrequencyMs(property(camelContext, int.class, value)); return true;
        case "mongodbpassword":
        case "mongodbPassword": target.getConfiguration().setMongodbPassword(property(camelContext, java.lang.String.class, value)); return true;
        case "mongodbpollintervalms":
        case "mongodbPollIntervalMs": target.getConfiguration().setMongodbPollIntervalMs(property(camelContext, java.time.Duration.class, value).toMillis()); return true;
        case "mongodbserverselectiontimeoutms":
        case "mongodbServerSelectionTimeoutMs": target.getConfiguration().setMongodbServerSelectionTimeoutMs(property(camelContext, int.class, value)); return true;
        case "mongodbsockettimeoutms":
        case "mongodbSocketTimeoutMs": target.getConfiguration().setMongodbSocketTimeoutMs(property(camelContext, int.class, value)); return true;
        case "mongodbsslenabled":
        case "mongodbSslEnabled": target.getConfiguration().setMongodbSslEnabled(property(camelContext, boolean.class, value)); return true;
        case "mongodbsslinvalidhostnameallowed":
        case "mongodbSslInvalidHostnameAllowed": target.getConfiguration().setMongodbSslInvalidHostnameAllowed(property(camelContext, boolean.class, value)); return true;
        case "mongodbuser":
        case "mongodbUser": target.getConfiguration().setMongodbUser(property(camelContext, java.lang.String.class, value)); return true;
        case "notificationenabledchannels":
        case "notificationEnabledChannels": target.getConfiguration().setNotificationEnabledChannels(property(camelContext, java.lang.String.class, value)); return true;
        case "notificationsinktopicname":
        case "notificationSinkTopicName": target.getConfiguration().setNotificationSinkTopicName(property(camelContext, java.lang.String.class, value)); return true;
        case "offsetcommitpolicy":
        case "offsetCommitPolicy": target.getConfiguration().setOffsetCommitPolicy(property(camelContext, java.lang.String.class, value)); return true;
        case "offsetcommittimeoutms":
        case "offsetCommitTimeoutMs": target.getConfiguration().setOffsetCommitTimeoutMs(property(camelContext, java.time.Duration.class, value).toMillis()); return true;
        case "offsetflushintervalms":
        case "offsetFlushIntervalMs": target.getConfiguration().setOffsetFlushIntervalMs(property(camelContext, java.time.Duration.class, value).toMillis()); return true;
        case "offsetstorage":
        case "offsetStorage": target.getConfiguration().setOffsetStorage(property(camelContext, java.lang.String.class, value)); return true;
        case "offsetstoragefilename":
        case "offsetStorageFileName": target.getConfiguration().setOffsetStorageFileName(property(camelContext, java.lang.String.class, value)); return true;
        case "offsetstoragepartitions":
        case "offsetStoragePartitions": target.getConfiguration().setOffsetStoragePartitions(property(camelContext, int.class, value)); return true;
        case "offsetstoragereplicationfactor":
        case "offsetStorageReplicationFactor": target.getConfiguration().setOffsetStorageReplicationFactor(property(camelContext, int.class, value)); return true;
        case "offsetstoragetopic":
        case "offsetStorageTopic": target.getConfiguration().setOffsetStorageTopic(property(camelContext, java.lang.String.class, value)); return true;
        case "openlineageintegrationconfigfilepath":
        case "openlineageIntegrationConfigFilePath": target.getConfiguration().setOpenlineageIntegrationConfigFilePath(property(camelContext, java.lang.String.class, value)); return true;
        case "openlineageintegrationdatasetkafkabootstrapservers":
        case "openlineageIntegrationDatasetKafkaBootstrapServers": target.getConfiguration().setOpenlineageIntegrationDatasetKafkaBootstrapServers(property(camelContext, java.lang.String.class, value)); return true;
        case "openlineageintegrationenabled":
        case "openlineageIntegrationEnabled": target.getConfiguration().setOpenlineageIntegrationEnabled(property(camelContext, boolean.class, value)); return true;
        case "openlineageintegrationjobdescription":
        case "openlineageIntegrationJobDescription": target.getConfiguration().setOpenlineageIntegrationJobDescription(property(camelContext, java.lang.String.class, value)); return true;
        case "openlineageintegrationjobnamespace":
        case "openlineageIntegrationJobNamespace": target.getConfiguration().setOpenlineageIntegrationJobNamespace(property(camelContext, java.lang.String.class, value)); return true;
        case "openlineageintegrationjobowners":
        case "openlineageIntegrationJobOwners": target.getConfiguration().setOpenlineageIntegrationJobOwners(property(camelContext, java.lang.String.class, value)); return true;
        case "openlineageintegrationjobtags":
        case "openlineageIntegrationJobTags": target.getConfiguration().setOpenlineageIntegrationJobTags(property(camelContext, java.lang.String.class, value)); return true;
        case "pollintervalms":
        case "pollIntervalMs": target.getConfiguration().setPollIntervalMs(property(camelContext, java.time.Duration.class, value).toMillis()); return true;
        case "postprocessors":
        case "postProcessors": target.getConfiguration().setPostProcessors(property(camelContext, java.lang.String.class, value)); return true;
        case "providetransactionmetadata":
        case "provideTransactionMetadata": target.getConfiguration().setProvideTransactionMetadata(property(camelContext, boolean.class, value)); return true;
        case "queryfetchsize":
        case "queryFetchSize": target.getConfiguration().setQueryFetchSize(property(camelContext, int.class, value)); return true;
        case "retriablerestartconnectorwaitms":
        case "retriableRestartConnectorWaitMs": target.getConfiguration().setRetriableRestartConnectorWaitMs(property(camelContext, java.time.Duration.class, value).toMillis()); return true;
        case "schemahistoryinternalfilefilename":
        case "schemaHistoryInternalFileFilename": target.getConfiguration().setSchemaHistoryInternalFileFilename(property(camelContext, java.lang.String.class, value)); return true;
        case "schemanameadjustmentmode":
        case "schemaNameAdjustmentMode": target.getConfiguration().setSchemaNameAdjustmentMode(property(camelContext, java.lang.String.class, value)); return true;
        case "signaldatacollection":
        case "signalDataCollection": target.getConfiguration().setSignalDataCollection(property(camelContext, java.lang.String.class, value)); return true;
        case "signalenabledchannels":
        case "signalEnabledChannels": target.getConfiguration().setSignalEnabledChannels(property(camelContext, java.lang.String.class, value)); return true;
        case "signalpollintervalms":
        case "signalPollIntervalMs": target.getConfiguration().setSignalPollIntervalMs(property(camelContext, java.time.Duration.class, value).toMillis()); return true;
        case "skippedoperations":
        case "skippedOperations": target.getConfiguration().setSkippedOperations(property(camelContext, java.lang.String.class, value)); return true;
        case "snapshotcollectionfilteroverrides":
        case "snapshotCollectionFilterOverrides": target.getConfiguration().setSnapshotCollectionFilterOverrides(property(camelContext, java.lang.String.class, value)); return true;
        case "snapshotdelayms":
        case "snapshotDelayMs": target.getConfiguration().setSnapshotDelayMs(property(camelContext, java.time.Duration.class, value).toMillis()); return true;
        case "snapshotfetchsize":
        case "snapshotFetchSize": target.getConfiguration().setSnapshotFetchSize(property(camelContext, int.class, value)); return true;
        case "snapshotincludecollectionlist":
        case "snapshotIncludeCollectionList": target.getConfiguration().setSnapshotIncludeCollectionList(property(camelContext, java.lang.String.class, value)); return true;
        case "snapshotmaxthreads":
        case "snapshotMaxThreads": target.getConfiguration().setSnapshotMaxThreads(property(camelContext, int.class, value)); return true;
        case "snapshotmaxthreadsmultiplier":
        case "snapshotMaxThreadsMultiplier": target.getConfiguration().setSnapshotMaxThreadsMultiplier(property(camelContext, int.class, value)); return true;
        case "snapshotmode":
        case "snapshotMode": target.getConfiguration().setSnapshotMode(property(camelContext, java.lang.String.class, value)); return true;
        case "snapshotmodeconfigurationbasedsnapshotdata":
        case "snapshotModeConfigurationBasedSnapshotData": target.getConfiguration().setSnapshotModeConfigurationBasedSnapshotData(property(camelContext, boolean.class, value)); return true;
        case "snapshotmodeconfigurationbasedsnapshotondataerror":
        case "snapshotModeConfigurationBasedSnapshotOnDataError": target.getConfiguration().setSnapshotModeConfigurationBasedSnapshotOnDataError(property(camelContext, boolean.class, value)); return true;
        case "snapshotmodeconfigurationbasedsnapshotonschemaerror":
        case "snapshotModeConfigurationBasedSnapshotOnSchemaError": target.getConfiguration().setSnapshotModeConfigurationBasedSnapshotOnSchemaError(property(camelContext, boolean.class, value)); return true;
        case "snapshotmodeconfigurationbasedsnapshotschema":
        case "snapshotModeConfigurationBasedSnapshotSchema": target.getConfiguration().setSnapshotModeConfigurationBasedSnapshotSchema(property(camelContext, boolean.class, value)); return true;
        case "snapshotmodeconfigurationbasedstartstream":
        case "snapshotModeConfigurationBasedStartStream": target.getConfiguration().setSnapshotModeConfigurationBasedStartStream(property(camelContext, boolean.class, value)); return true;
        case "snapshotmodecustomname":
        case "snapshotModeCustomName": target.getConfiguration().setSnapshotModeCustomName(property(camelContext, java.lang.String.class, value)); return true;
        case "sourceinfostructmaker":
        case "sourceinfoStructMaker": target.getConfiguration().setSourceinfoStructMaker(property(camelContext, java.lang.String.class, value)); return true;
        case "streamingdelayms":
        case "streamingDelayMs": target.getConfiguration().setStreamingDelayMs(property(camelContext, java.time.Duration.class, value).toMillis()); return true;
        case "tombstonesondelete":
        case "tombstonesOnDelete": target.getConfiguration().setTombstonesOnDelete(property(camelContext, boolean.class, value)); return true;
        case "topicnamingstrategy":
        case "topicNamingStrategy": target.getConfiguration().setTopicNamingStrategy(property(camelContext, java.lang.String.class, value)); return true;
        case "topicprefix":
        case "topicPrefix": target.getConfiguration().setTopicPrefix(property(camelContext, java.lang.String.class, value)); return true;
        case "transactionmetadatafactory":
        case "transactionMetadataFactory": target.getConfiguration().setTransactionMetadataFactory(property(camelContext, java.lang.String.class, value)); return true;
        default: return false;
        }
    }

    @Override
    public Class<?> getOptionType(String name, boolean ignoreCase) {
        switch (ignoreCase ? name.toLowerCase() : name) {
        case "additionalproperties":
        case "additionalProperties": return java.util.Map.class;
        case "bridgeerrorhandler":
        case "bridgeErrorHandler": return boolean.class;
        case "capturemode":
        case "captureMode": return java.lang.String.class;
        case "collectionexcludelist":
        case "collectionExcludeList": return java.lang.String.class;
        case "collectionincludelist":
        case "collectionIncludeList": return java.lang.String.class;
        case "connectionvalidationtimeoutms":
        case "connectionValidationTimeoutMs": return long.class;
        case "converters": return java.lang.String.class;
        case "cursormaxawaittimems":
        case "cursorMaxAwaitTimeMs": return int.class;
        case "custommetrictags":
        case "customMetricTags": return java.lang.String.class;
        case "customsanitizepattern":
        case "customSanitizePattern": return java.lang.String.class;
        case "databaseexcludelist":
        case "databaseExcludeList": return java.lang.String.class;
        case "databaseincludelist":
        case "databaseIncludeList": return java.lang.String.class;
        case "errorsmaxretries":
        case "errorsMaxRetries": return int.class;
        case "eventprocessingfailurehandlingmode":
        case "eventProcessingFailureHandlingMode": return java.lang.String.class;
        case "exceptionhandler":
        case "exceptionHandler": return org.apache.camel.spi.ExceptionHandler.class;
        case "exchangepattern":
        case "exchangePattern": return org.apache.camel.ExchangePattern.class;
        case "executorshutdowntimeoutms":
        case "executorShutdownTimeoutMs": return long.class;
        case "extendedheadersenabled":
        case "extendedHeadersEnabled": return boolean.class;
        case "fieldexcludelist":
        case "fieldExcludeList": return java.lang.String.class;
        case "fieldrenames":
        case "fieldRenames": return java.lang.String.class;
        case "guardrailcollectionslimitaction":
        case "guardrailCollectionsLimitAction": return java.lang.String.class;
        case "guardrailcollectionsmax":
        case "guardrailCollectionsMax": return int.class;
        case "heartbeatintervalms":
        case "heartbeatIntervalMs": return int.class;
        case "heartbeattopicsprefix":
        case "heartbeatTopicsPrefix": return java.lang.String.class;
        case "incrementalsnapshotwatermarkingstrategy":
        case "incrementalSnapshotWatermarkingStrategy": return java.lang.String.class;
        case "internalkeyconverter":
        case "internalKeyConverter": return java.lang.String.class;
        case "internalvalueconverter":
        case "internalValueConverter": return java.lang.String.class;
        case "maxbatchsize":
        case "maxBatchSize": return int.class;
        case "maxqueuesize":
        case "maxQueueSize": return int.class;
        case "maxqueuesizeinbytes":
        case "maxQueueSizeInBytes": return long.class;
        case "mongodbauthsource":
        case "mongodbAuthsource": return java.lang.String.class;
        case "mongodbconnecttimeoutms":
        case "mongodbConnectTimeoutMs": return int.class;
        case "mongodbconnectionstring":
        case "mongodbConnectionString": return java.lang.String.class;
        case "mongodbheartbeatfrequencyms":
        case "mongodbHeartbeatFrequencyMs": return int.class;
        case "mongodbpassword":
        case "mongodbPassword": return java.lang.String.class;
        case "mongodbpollintervalms":
        case "mongodbPollIntervalMs": return long.class;
        case "mongodbserverselectiontimeoutms":
        case "mongodbServerSelectionTimeoutMs": return int.class;
        case "mongodbsockettimeoutms":
        case "mongodbSocketTimeoutMs": return int.class;
        case "mongodbsslenabled":
        case "mongodbSslEnabled": return boolean.class;
        case "mongodbsslinvalidhostnameallowed":
        case "mongodbSslInvalidHostnameAllowed": return boolean.class;
        case "mongodbuser":
        case "mongodbUser": return java.lang.String.class;
        case "notificationenabledchannels":
        case "notificationEnabledChannels": return java.lang.String.class;
        case "notificationsinktopicname":
        case "notificationSinkTopicName": return java.lang.String.class;
        case "offsetcommitpolicy":
        case "offsetCommitPolicy": return java.lang.String.class;
        case "offsetcommittimeoutms":
        case "offsetCommitTimeoutMs": return long.class;
        case "offsetflushintervalms":
        case "offsetFlushIntervalMs": return long.class;
        case "offsetstorage":
        case "offsetStorage": return java.lang.String.class;
        case "offsetstoragefilename":
        case "offsetStorageFileName": return java.lang.String.class;
        case "offsetstoragepartitions":
        case "offsetStoragePartitions": return int.class;
        case "offsetstoragereplicationfactor":
        case "offsetStorageReplicationFactor": return int.class;
        case "offsetstoragetopic":
        case "offsetStorageTopic": return java.lang.String.class;
        case "openlineageintegrationconfigfilepath":
        case "openlineageIntegrationConfigFilePath": return java.lang.String.class;
        case "openlineageintegrationdatasetkafkabootstrapservers":
        case "openlineageIntegrationDatasetKafkaBootstrapServers": return java.lang.String.class;
        case "openlineageintegrationenabled":
        case "openlineageIntegrationEnabled": return boolean.class;
        case "openlineageintegrationjobdescription":
        case "openlineageIntegrationJobDescription": return java.lang.String.class;
        case "openlineageintegrationjobnamespace":
        case "openlineageIntegrationJobNamespace": return java.lang.String.class;
        case "openlineageintegrationjobowners":
        case "openlineageIntegrationJobOwners": return java.lang.String.class;
        case "openlineageintegrationjobtags":
        case "openlineageIntegrationJobTags": return java.lang.String.class;
        case "pollintervalms":
        case "pollIntervalMs": return long.class;
        case "postprocessors":
        case "postProcessors": return java.lang.String.class;
        case "providetransactionmetadata":
        case "provideTransactionMetadata": return boolean.class;
        case "queryfetchsize":
        case "queryFetchSize": return int.class;
        case "retriablerestartconnectorwaitms":
        case "retriableRestartConnectorWaitMs": return long.class;
        case "schemahistoryinternalfilefilename":
        case "schemaHistoryInternalFileFilename": return java.lang.String.class;
        case "schemanameadjustmentmode":
        case "schemaNameAdjustmentMode": return java.lang.String.class;
        case "signaldatacollection":
        case "signalDataCollection": return java.lang.String.class;
        case "signalenabledchannels":
        case "signalEnabledChannels": return java.lang.String.class;
        case "signalpollintervalms":
        case "signalPollIntervalMs": return long.class;
        case "skippedoperations":
        case "skippedOperations": return java.lang.String.class;
        case "snapshotcollectionfilteroverrides":
        case "snapshotCollectionFilterOverrides": return java.lang.String.class;
        case "snapshotdelayms":
        case "snapshotDelayMs": return long.class;
        case "snapshotfetchsize":
        case "snapshotFetchSize": return int.class;
        case "snapshotincludecollectionlist":
        case "snapshotIncludeCollectionList": return java.lang.String.class;
        case "snapshotmaxthreads":
        case "snapshotMaxThreads": return int.class;
        case "snapshotmaxthreadsmultiplier":
        case "snapshotMaxThreadsMultiplier": return int.class;
        case "snapshotmode":
        case "snapshotMode": return java.lang.String.class;
        case "snapshotmodeconfigurationbasedsnapshotdata":
        case "snapshotModeConfigurationBasedSnapshotData": return boolean.class;
        case "snapshotmodeconfigurationbasedsnapshotondataerror":
        case "snapshotModeConfigurationBasedSnapshotOnDataError": return boolean.class;
        case "snapshotmodeconfigurationbasedsnapshotonschemaerror":
        case "snapshotModeConfigurationBasedSnapshotOnSchemaError": return boolean.class;
        case "snapshotmodeconfigurationbasedsnapshotschema":
        case "snapshotModeConfigurationBasedSnapshotSchema": return boolean.class;
        case "snapshotmodeconfigurationbasedstartstream":
        case "snapshotModeConfigurationBasedStartStream": return boolean.class;
        case "snapshotmodecustomname":
        case "snapshotModeCustomName": return java.lang.String.class;
        case "sourceinfostructmaker":
        case "sourceinfoStructMaker": return java.lang.String.class;
        case "streamingdelayms":
        case "streamingDelayMs": return long.class;
        case "tombstonesondelete":
        case "tombstonesOnDelete": return boolean.class;
        case "topicnamingstrategy":
        case "topicNamingStrategy": return java.lang.String.class;
        case "topicprefix":
        case "topicPrefix": return java.lang.String.class;
        case "transactionmetadatafactory":
        case "transactionMetadataFactory": return java.lang.String.class;
        default: return null;
        }
    }

    @Override
    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
        DebeziumMongodbEndpoint target = (DebeziumMongodbEndpoint) obj;
        switch (ignoreCase ? name.toLowerCase() : name) {
        case "additionalproperties":
        case "additionalProperties": return target.getConfiguration().getAdditionalProperties();
        case "bridgeerrorhandler":
        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
        case "capturemode":
        case "captureMode": return target.getConfiguration().getCaptureMode();
        case "collectionexcludelist":
        case "collectionExcludeList": return target.getConfiguration().getCollectionExcludeList();
        case "collectionincludelist":
        case "collectionIncludeList": return target.getConfiguration().getCollectionIncludeList();
        case "connectionvalidationtimeoutms":
        case "connectionValidationTimeoutMs": return target.getConfiguration().getConnectionValidationTimeoutMs();
        case "converters": return target.getConfiguration().getConverters();
        case "cursormaxawaittimems":
        case "cursorMaxAwaitTimeMs": return target.getConfiguration().getCursorMaxAwaitTimeMs();
        case "custommetrictags":
        case "customMetricTags": return target.getConfiguration().getCustomMetricTags();
        case "customsanitizepattern":
        case "customSanitizePattern": return target.getConfiguration().getCustomSanitizePattern();
        case "databaseexcludelist":
        case "databaseExcludeList": return target.getConfiguration().getDatabaseExcludeList();
        case "databaseincludelist":
        case "databaseIncludeList": return target.getConfiguration().getDatabaseIncludeList();
        case "errorsmaxretries":
        case "errorsMaxRetries": return target.getConfiguration().getErrorsMaxRetries();
        case "eventprocessingfailurehandlingmode":
        case "eventProcessingFailureHandlingMode": return target.getConfiguration().getEventProcessingFailureHandlingMode();
        case "exceptionhandler":
        case "exceptionHandler": return target.getExceptionHandler();
        case "exchangepattern":
        case "exchangePattern": return target.getExchangePattern();
        case "executorshutdowntimeoutms":
        case "executorShutdownTimeoutMs": return target.getConfiguration().getExecutorShutdownTimeoutMs();
        case "extendedheadersenabled":
        case "extendedHeadersEnabled": return target.getConfiguration().isExtendedHeadersEnabled();
        case "fieldexcludelist":
        case "fieldExcludeList": return target.getConfiguration().getFieldExcludeList();
        case "fieldrenames":
        case "fieldRenames": return target.getConfiguration().getFieldRenames();
        case "guardrailcollectionslimitaction":
        case "guardrailCollectionsLimitAction": return target.getConfiguration().getGuardrailCollectionsLimitAction();
        case "guardrailcollectionsmax":
        case "guardrailCollectionsMax": return target.getConfiguration().getGuardrailCollectionsMax();
        case "heartbeatintervalms":
        case "heartbeatIntervalMs": return target.getConfiguration().getHeartbeatIntervalMs();
        case "heartbeattopicsprefix":
        case "heartbeatTopicsPrefix": return target.getConfiguration().getHeartbeatTopicsPrefix();
        case "incrementalsnapshotwatermarkingstrategy":
        case "incrementalSnapshotWatermarkingStrategy": return target.getConfiguration().getIncrementalSnapshotWatermarkingStrategy();
        case "internalkeyconverter":
        case "internalKeyConverter": return target.getConfiguration().getInternalKeyConverter();
        case "internalvalueconverter":
        case "internalValueConverter": return target.getConfiguration().getInternalValueConverter();
        case "maxbatchsize":
        case "maxBatchSize": return target.getConfiguration().getMaxBatchSize();
        case "maxqueuesize":
        case "maxQueueSize": return target.getConfiguration().getMaxQueueSize();
        case "maxqueuesizeinbytes":
        case "maxQueueSizeInBytes": return target.getConfiguration().getMaxQueueSizeInBytes();
        case "mongodbauthsource":
        case "mongodbAuthsource": return target.getConfiguration().getMongodbAuthsource();
        case "mongodbconnecttimeoutms":
        case "mongodbConnectTimeoutMs": return target.getConfiguration().getMongodbConnectTimeoutMs();
        case "mongodbconnectionstring":
        case "mongodbConnectionString": return target.getConfiguration().getMongodbConnectionString();
        case "mongodbheartbeatfrequencyms":
        case "mongodbHeartbeatFrequencyMs": return target.getConfiguration().getMongodbHeartbeatFrequencyMs();
        case "mongodbpassword":
        case "mongodbPassword": return target.getConfiguration().getMongodbPassword();
        case "mongodbpollintervalms":
        case "mongodbPollIntervalMs": return target.getConfiguration().getMongodbPollIntervalMs();
        case "mongodbserverselectiontimeoutms":
        case "mongodbServerSelectionTimeoutMs": return target.getConfiguration().getMongodbServerSelectionTimeoutMs();
        case "mongodbsockettimeoutms":
        case "mongodbSocketTimeoutMs": return target.getConfiguration().getMongodbSocketTimeoutMs();
        case "mongodbsslenabled":
        case "mongodbSslEnabled": return target.getConfiguration().isMongodbSslEnabled();
        case "mongodbsslinvalidhostnameallowed":
        case "mongodbSslInvalidHostnameAllowed": return target.getConfiguration().isMongodbSslInvalidHostnameAllowed();
        case "mongodbuser":
        case "mongodbUser": return target.getConfiguration().getMongodbUser();
        case "notificationenabledchannels":
        case "notificationEnabledChannels": return target.getConfiguration().getNotificationEnabledChannels();
        case "notificationsinktopicname":
        case "notificationSinkTopicName": return target.getConfiguration().getNotificationSinkTopicName();
        case "offsetcommitpolicy":
        case "offsetCommitPolicy": return target.getConfiguration().getOffsetCommitPolicy();
        case "offsetcommittimeoutms":
        case "offsetCommitTimeoutMs": return target.getConfiguration().getOffsetCommitTimeoutMs();
        case "offsetflushintervalms":
        case "offsetFlushIntervalMs": return target.getConfiguration().getOffsetFlushIntervalMs();
        case "offsetstorage":
        case "offsetStorage": return target.getConfiguration().getOffsetStorage();
        case "offsetstoragefilename":
        case "offsetStorageFileName": return target.getConfiguration().getOffsetStorageFileName();
        case "offsetstoragepartitions":
        case "offsetStoragePartitions": return target.getConfiguration().getOffsetStoragePartitions();
        case "offsetstoragereplicationfactor":
        case "offsetStorageReplicationFactor": return target.getConfiguration().getOffsetStorageReplicationFactor();
        case "offsetstoragetopic":
        case "offsetStorageTopic": return target.getConfiguration().getOffsetStorageTopic();
        case "openlineageintegrationconfigfilepath":
        case "openlineageIntegrationConfigFilePath": return target.getConfiguration().getOpenlineageIntegrationConfigFilePath();
        case "openlineageintegrationdatasetkafkabootstrapservers":
        case "openlineageIntegrationDatasetKafkaBootstrapServers": return target.getConfiguration().getOpenlineageIntegrationDatasetKafkaBootstrapServers();
        case "openlineageintegrationenabled":
        case "openlineageIntegrationEnabled": return target.getConfiguration().isOpenlineageIntegrationEnabled();
        case "openlineageintegrationjobdescription":
        case "openlineageIntegrationJobDescription": return target.getConfiguration().getOpenlineageIntegrationJobDescription();
        case "openlineageintegrationjobnamespace":
        case "openlineageIntegrationJobNamespace": return target.getConfiguration().getOpenlineageIntegrationJobNamespace();
        case "openlineageintegrationjobowners":
        case "openlineageIntegrationJobOwners": return target.getConfiguration().getOpenlineageIntegrationJobOwners();
        case "openlineageintegrationjobtags":
        case "openlineageIntegrationJobTags": return target.getConfiguration().getOpenlineageIntegrationJobTags();
        case "pollintervalms":
        case "pollIntervalMs": return target.getConfiguration().getPollIntervalMs();
        case "postprocessors":
        case "postProcessors": return target.getConfiguration().getPostProcessors();
        case "providetransactionmetadata":
        case "provideTransactionMetadata": return target.getConfiguration().isProvideTransactionMetadata();
        case "queryfetchsize":
        case "queryFetchSize": return target.getConfiguration().getQueryFetchSize();
        case "retriablerestartconnectorwaitms":
        case "retriableRestartConnectorWaitMs": return target.getConfiguration().getRetriableRestartConnectorWaitMs();
        case "schemahistoryinternalfilefilename":
        case "schemaHistoryInternalFileFilename": return target.getConfiguration().getSchemaHistoryInternalFileFilename();
        case "schemanameadjustmentmode":
        case "schemaNameAdjustmentMode": return target.getConfiguration().getSchemaNameAdjustmentMode();
        case "signaldatacollection":
        case "signalDataCollection": return target.getConfiguration().getSignalDataCollection();
        case "signalenabledchannels":
        case "signalEnabledChannels": return target.getConfiguration().getSignalEnabledChannels();
        case "signalpollintervalms":
        case "signalPollIntervalMs": return target.getConfiguration().getSignalPollIntervalMs();
        case "skippedoperations":
        case "skippedOperations": return target.getConfiguration().getSkippedOperations();
        case "snapshotcollectionfilteroverrides":
        case "snapshotCollectionFilterOverrides": return target.getConfiguration().getSnapshotCollectionFilterOverrides();
        case "snapshotdelayms":
        case "snapshotDelayMs": return target.getConfiguration().getSnapshotDelayMs();
        case "snapshotfetchsize":
        case "snapshotFetchSize": return target.getConfiguration().getSnapshotFetchSize();
        case "snapshotincludecollectionlist":
        case "snapshotIncludeCollectionList": return target.getConfiguration().getSnapshotIncludeCollectionList();
        case "snapshotmaxthreads":
        case "snapshotMaxThreads": return target.getConfiguration().getSnapshotMaxThreads();
        case "snapshotmaxthreadsmultiplier":
        case "snapshotMaxThreadsMultiplier": return target.getConfiguration().getSnapshotMaxThreadsMultiplier();
        case "snapshotmode":
        case "snapshotMode": return target.getConfiguration().getSnapshotMode();
        case "snapshotmodeconfigurationbasedsnapshotdata":
        case "snapshotModeConfigurationBasedSnapshotData": return target.getConfiguration().isSnapshotModeConfigurationBasedSnapshotData();
        case "snapshotmodeconfigurationbasedsnapshotondataerror":
        case "snapshotModeConfigurationBasedSnapshotOnDataError": return target.getConfiguration().isSnapshotModeConfigurationBasedSnapshotOnDataError();
        case "snapshotmodeconfigurationbasedsnapshotonschemaerror":
        case "snapshotModeConfigurationBasedSnapshotOnSchemaError": return target.getConfiguration().isSnapshotModeConfigurationBasedSnapshotOnSchemaError();
        case "snapshotmodeconfigurationbasedsnapshotschema":
        case "snapshotModeConfigurationBasedSnapshotSchema": return target.getConfiguration().isSnapshotModeConfigurationBasedSnapshotSchema();
        case "snapshotmodeconfigurationbasedstartstream":
        case "snapshotModeConfigurationBasedStartStream": return target.getConfiguration().isSnapshotModeConfigurationBasedStartStream();
        case "snapshotmodecustomname":
        case "snapshotModeCustomName": return target.getConfiguration().getSnapshotModeCustomName();
        case "sourceinfostructmaker":
        case "sourceinfoStructMaker": return target.getConfiguration().getSourceinfoStructMaker();
        case "streamingdelayms":
        case "streamingDelayMs": return target.getConfiguration().getStreamingDelayMs();
        case "tombstonesondelete":
        case "tombstonesOnDelete": return target.getConfiguration().isTombstonesOnDelete();
        case "topicnamingstrategy":
        case "topicNamingStrategy": return target.getConfiguration().getTopicNamingStrategy();
        case "topicprefix":
        case "topicPrefix": return target.getConfiguration().getTopicPrefix();
        case "transactionmetadatafactory":
        case "transactionMetadataFactory": return target.getConfiguration().getTransactionMetadataFactory();
        default: return null;
        }
    }

    @Override
    public Object getCollectionValueType(Object target, String name, boolean ignoreCase) {
        switch (ignoreCase ? name.toLowerCase() : name) {
        case "additionalproperties":
        case "additionalProperties": return java.lang.Object.class;
        default: return null;
        }
    }
}

