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

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.component.etcd3.cloud.Etcd3ServiceDiscoveryFactory;

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

    @Override
    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
        org.apache.camel.component.etcd3.cloud.Etcd3ServiceDiscoveryFactory target = (org.apache.camel.component.etcd3.cloud.Etcd3ServiceDiscoveryFactory) obj;
        switch (ignoreCase ? name.toLowerCase() : name) {
        case "authheaders":
        case "authHeaders": target.setAuthHeaders(property(camelContext, java.util.Map.class, value)); return true;
        case "authority": target.setAuthority(property(camelContext, java.lang.String.class, value)); return true;
        case "connectiontimeout":
        case "connectionTimeout": target.setConnectionTimeout(property(camelContext, java.time.Duration.class, value)); return true;
        case "endpoints": target.setEndpoints(property(camelContext, java.lang.String.class, value)); return true;
        case "headers": target.setHeaders(property(camelContext, java.util.Map.class, value)); return true;
        case "keepalivetime":
        case "keepAliveTime": target.setKeepAliveTime(property(camelContext, java.time.Duration.class, value)); return true;
        case "keepalivetimeout":
        case "keepAliveTimeout": target.setKeepAliveTimeout(property(camelContext, java.time.Duration.class, value)); return true;
        case "keycharset":
        case "keyCharset": target.setKeyCharset(property(camelContext, java.lang.String.class, value)); return true;
        case "loadbalancerpolicy":
        case "loadBalancerPolicy": target.setLoadBalancerPolicy(property(camelContext, java.lang.String.class, value)); return true;
        case "maxinboundmessagesize":
        case "maxInboundMessageSize": target.setMaxInboundMessageSize(property(camelContext, java.lang.Integer.class, value)); return true;
        case "namespace": target.setNamespace(property(camelContext, java.lang.String.class, value)); return true;
        case "password": target.setPassword(property(camelContext, java.lang.String.class, value)); return true;
        case "retrydelay":
        case "retryDelay": target.setRetryDelay(property(camelContext, long.class, value)); return true;
        case "retrymaxdelay":
        case "retryMaxDelay": target.setRetryMaxDelay(property(camelContext, long.class, value)); return true;
        case "retrymaxduration":
        case "retryMaxDuration": target.setRetryMaxDuration(property(camelContext, java.time.Duration.class, value)); return true;
        case "servicepath":
        case "servicePath": target.setServicePath(property(camelContext, java.lang.String.class, value)); return true;
        case "sslcontext":
        case "sslContext": target.setSslContext(property(camelContext, io.netty.handler.ssl.SslContext.class, value)); return true;
        case "type": target.setType(property(camelContext, java.lang.String.class, value)); return true;
        case "username":
        case "userName": target.setUserName(property(camelContext, java.lang.String.class, value)); return true;
        case "valuecharset":
        case "valueCharset": target.setValueCharset(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 "authheaders":
        case "authHeaders": return java.util.Map.class;
        case "authority": return java.lang.String.class;
        case "connectiontimeout":
        case "connectionTimeout": return java.time.Duration.class;
        case "endpoints": return java.lang.String.class;
        case "headers": return java.util.Map.class;
        case "keepalivetime":
        case "keepAliveTime": return java.time.Duration.class;
        case "keepalivetimeout":
        case "keepAliveTimeout": return java.time.Duration.class;
        case "keycharset":
        case "keyCharset": return java.lang.String.class;
        case "loadbalancerpolicy":
        case "loadBalancerPolicy": return java.lang.String.class;
        case "maxinboundmessagesize":
        case "maxInboundMessageSize": return java.lang.Integer.class;
        case "namespace": return java.lang.String.class;
        case "password": return java.lang.String.class;
        case "retrydelay":
        case "retryDelay": return long.class;
        case "retrymaxdelay":
        case "retryMaxDelay": return long.class;
        case "retrymaxduration":
        case "retryMaxDuration": return java.time.Duration.class;
        case "servicepath":
        case "servicePath": return java.lang.String.class;
        case "sslcontext":
        case "sslContext": return io.netty.handler.ssl.SslContext.class;
        case "type": return java.lang.String.class;
        case "username":
        case "userName": return java.lang.String.class;
        case "valuecharset":
        case "valueCharset": return java.lang.String.class;
        default: return null;
        }
    }

    @Override
    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
        org.apache.camel.component.etcd3.cloud.Etcd3ServiceDiscoveryFactory target = (org.apache.camel.component.etcd3.cloud.Etcd3ServiceDiscoveryFactory) obj;
        switch (ignoreCase ? name.toLowerCase() : name) {
        case "authheaders":
        case "authHeaders": return target.getAuthHeaders();
        case "authority": return target.getAuthority();
        case "connectiontimeout":
        case "connectionTimeout": return target.getConnectionTimeout();
        case "endpoints": return target.getEndpoints();
        case "headers": return target.getHeaders();
        case "keepalivetime":
        case "keepAliveTime": return target.getKeepAliveTime();
        case "keepalivetimeout":
        case "keepAliveTimeout": return target.getKeepAliveTimeout();
        case "keycharset":
        case "keyCharset": return target.getKeyCharset();
        case "loadbalancerpolicy":
        case "loadBalancerPolicy": return target.getLoadBalancerPolicy();
        case "maxinboundmessagesize":
        case "maxInboundMessageSize": return target.getMaxInboundMessageSize();
        case "namespace": return target.getNamespace();
        case "password": return target.getPassword();
        case "retrydelay":
        case "retryDelay": return target.getRetryDelay();
        case "retrymaxdelay":
        case "retryMaxDelay": return target.getRetryMaxDelay();
        case "retrymaxduration":
        case "retryMaxDuration": return target.getRetryMaxDuration();
        case "servicepath":
        case "servicePath": return target.getServicePath();
        case "sslcontext":
        case "sslContext": return target.getSslContext();
        case "type": return target.getType();
        case "username":
        case "userName": return target.getUserName();
        case "valuecharset":
        case "valueCharset": return target.getValueCharset();
        default: return null;
        }
    }

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

