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

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 EhcacheEndpointConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {

    @Override
    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
        EhcacheEndpoint target = (EhcacheEndpoint) obj;
        switch (ignoreCase ? name.toLowerCase() : name) {
        case "action": target.getConfiguration().setAction(property(camelContext, java.lang.String.class, value)); return true;
        case "bridgeerrorhandler":
        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
        case "cachemanager":
        case "cacheManager": target.getConfiguration().setCacheManager(property(camelContext, org.ehcache.CacheManager.class, value)); return true;
        case "cachemanagerconfiguration":
        case "cacheManagerConfiguration": target.getConfiguration().setCacheManagerConfiguration(property(camelContext, org.ehcache.config.Configuration.class, value)); return true;
        case "configuration": target.getConfiguration().setConfiguration(property(camelContext, org.ehcache.config.CacheConfiguration.class, value)); return true;
        case "configurationuri":
        case "configurationUri": target.getConfiguration().setConfigurationUri(property(camelContext, java.lang.String.class, value)); return true;
        case "configurations": target.getConfiguration().setConfigurations(property(camelContext, java.util.Map.class, value)); return true;
        case "createcacheifnotexist":
        case "createCacheIfNotExist": target.getConfiguration().setCreateCacheIfNotExist(property(camelContext, boolean.class, value)); return true;
        case "eventfiring":
        case "eventFiring": target.getConfiguration().setEventFiring(property(camelContext, org.ehcache.event.EventFiring.class, value)); return true;
        case "eventordering":
        case "eventOrdering": target.getConfiguration().setEventOrdering(property(camelContext, org.ehcache.event.EventOrdering.class, value)); return true;
        case "eventtypes":
        case "eventTypes": target.getConfiguration().setEventTypes(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 "key": target.getConfiguration().setKey(property(camelContext, java.lang.Object.class, value)); return true;
        case "keytype":
        case "keyType": target.getConfiguration().setKeyType(property(camelContext, java.lang.String.class, value)); return true;
        case "lazystartproducer":
        case "lazyStartProducer": target.setLazyStartProducer(property(camelContext, boolean.class, value)); return true;
        case "valuetype":
        case "valueType": target.getConfiguration().setValueType(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 "action": return java.lang.String.class;
        case "bridgeerrorhandler":
        case "bridgeErrorHandler": return boolean.class;
        case "cachemanager":
        case "cacheManager": return org.ehcache.CacheManager.class;
        case "cachemanagerconfiguration":
        case "cacheManagerConfiguration": return org.ehcache.config.Configuration.class;
        case "configuration": return org.ehcache.config.CacheConfiguration.class;
        case "configurationuri":
        case "configurationUri": return java.lang.String.class;
        case "configurations": return java.util.Map.class;
        case "createcacheifnotexist":
        case "createCacheIfNotExist": return boolean.class;
        case "eventfiring":
        case "eventFiring": return org.ehcache.event.EventFiring.class;
        case "eventordering":
        case "eventOrdering": return org.ehcache.event.EventOrdering.class;
        case "eventtypes":
        case "eventTypes": 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 "key": return java.lang.Object.class;
        case "keytype":
        case "keyType": return java.lang.String.class;
        case "lazystartproducer":
        case "lazyStartProducer": return boolean.class;
        case "valuetype":
        case "valueType": return java.lang.String.class;
        default: return null;
        }
    }

    @Override
    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
        EhcacheEndpoint target = (EhcacheEndpoint) obj;
        switch (ignoreCase ? name.toLowerCase() : name) {
        case "action": return target.getConfiguration().getAction();
        case "bridgeerrorhandler":
        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
        case "cachemanager":
        case "cacheManager": return target.getConfiguration().getCacheManager();
        case "cachemanagerconfiguration":
        case "cacheManagerConfiguration": return target.getConfiguration().getCacheManagerConfiguration();
        case "configuration": return target.getConfiguration().getConfiguration();
        case "configurationuri":
        case "configurationUri": return target.getConfiguration().getConfigurationUri();
        case "configurations": return target.getConfiguration().getConfigurations();
        case "createcacheifnotexist":
        case "createCacheIfNotExist": return target.getConfiguration().isCreateCacheIfNotExist();
        case "eventfiring":
        case "eventFiring": return target.getConfiguration().getEventFiring();
        case "eventordering":
        case "eventOrdering": return target.getConfiguration().getEventOrdering();
        case "eventtypes":
        case "eventTypes": return target.getConfiguration().getEventTypes();
        case "exceptionhandler":
        case "exceptionHandler": return target.getExceptionHandler();
        case "exchangepattern":
        case "exchangePattern": return target.getExchangePattern();
        case "key": return target.getConfiguration().getKey();
        case "keytype":
        case "keyType": return target.getConfiguration().getKeyType();
        case "lazystartproducer":
        case "lazyStartProducer": return target.isLazyStartProducer();
        case "valuetype":
        case "valueType": return target.getConfiguration().getValueType();
        default: return null;
        }
    }

    @Override
    public Object getCollectionValueType(Object target, String name, boolean ignoreCase) {
        switch (ignoreCase ? name.toLowerCase() : name) {
        case "configurations": return org.ehcache.config.CacheConfiguration.class;
        default: return null;
        }
    }
}

