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

import java.util.Map;

import org.apache.camel.CamelContext;
import org.apache.camel.spi.GeneratedPropertyConfigurer;
import org.apache.camel.spi.PropertyConfigurerGetter;
import org.apache.camel.util.CaseInsensitiveMap;
import org.apache.camel.model.Resilience4jConfigurationDefinition;

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

    private static final Map<String, Object> ALL_OPTIONS;
    static {
        Map<String, Object> map = new CaseInsensitiveMap();
        map.put("AutomaticTransitionFromOpenToHalfOpenEnabled", java.lang.String.class);
        map.put("BulkheadEnabled", java.lang.String.class);
        map.put("BulkheadMaxConcurrentCalls", java.lang.String.class);
        map.put("BulkheadMaxWaitDuration", java.lang.String.class);
        map.put("CircuitBreakerRef", java.lang.String.class);
        map.put("ConfigRef", java.lang.String.class);
        map.put("FailureRateThreshold", java.lang.String.class);
        map.put("Id", java.lang.String.class);
        map.put("MinimumNumberOfCalls", java.lang.String.class);
        map.put("PermittedNumberOfCallsInHalfOpenState", java.lang.String.class);
        map.put("SlidingWindowSize", java.lang.String.class);
        map.put("SlidingWindowType", java.lang.String.class);
        map.put("SlowCallDurationThreshold", java.lang.String.class);
        map.put("SlowCallRateThreshold", java.lang.String.class);
        map.put("TimeoutCancelRunningFuture", java.lang.String.class);
        map.put("TimeoutDuration", java.lang.String.class);
        map.put("TimeoutEnabled", java.lang.String.class);
        map.put("TimeoutExecutorServiceRef", java.lang.String.class);
        map.put("WaitDurationInOpenState", java.lang.String.class);
        map.put("WritableStackTraceEnabled", java.lang.String.class);
        ALL_OPTIONS = map;
    }

    @Override
    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
        org.apache.camel.model.Resilience4jConfigurationDefinition target = (org.apache.camel.model.Resilience4jConfigurationDefinition) obj;
        switch (ignoreCase ? name.toLowerCase() : name) {
        case "automatictransitionfromopentohalfopenenabled":
        case "AutomaticTransitionFromOpenToHalfOpenEnabled": target.setAutomaticTransitionFromOpenToHalfOpenEnabled(property(camelContext, java.lang.String.class, value)); return true;
        case "bulkheadenabled":
        case "BulkheadEnabled": target.setBulkheadEnabled(property(camelContext, java.lang.String.class, value)); return true;
        case "bulkheadmaxconcurrentcalls":
        case "BulkheadMaxConcurrentCalls": target.setBulkheadMaxConcurrentCalls(property(camelContext, java.lang.String.class, value)); return true;
        case "bulkheadmaxwaitduration":
        case "BulkheadMaxWaitDuration": target.setBulkheadMaxWaitDuration(property(camelContext, java.lang.String.class, value)); return true;
        case "circuitbreakerref":
        case "CircuitBreakerRef": target.setCircuitBreakerRef(property(camelContext, java.lang.String.class, value)); return true;
        case "configref":
        case "ConfigRef": target.setConfigRef(property(camelContext, java.lang.String.class, value)); return true;
        case "failureratethreshold":
        case "FailureRateThreshold": target.setFailureRateThreshold(property(camelContext, java.lang.String.class, value)); return true;
        case "id":
        case "Id": target.setId(property(camelContext, java.lang.String.class, value)); return true;
        case "minimumnumberofcalls":
        case "MinimumNumberOfCalls": target.setMinimumNumberOfCalls(property(camelContext, java.lang.String.class, value)); return true;
        case "permittednumberofcallsinhalfopenstate":
        case "PermittedNumberOfCallsInHalfOpenState": target.setPermittedNumberOfCallsInHalfOpenState(property(camelContext, java.lang.String.class, value)); return true;
        case "slidingwindowsize":
        case "SlidingWindowSize": target.setSlidingWindowSize(property(camelContext, java.lang.String.class, value)); return true;
        case "slidingwindowtype":
        case "SlidingWindowType": target.setSlidingWindowType(property(camelContext, java.lang.String.class, value)); return true;
        case "slowcalldurationthreshold":
        case "SlowCallDurationThreshold": target.setSlowCallDurationThreshold(property(camelContext, java.lang.String.class, value)); return true;
        case "slowcallratethreshold":
        case "SlowCallRateThreshold": target.setSlowCallRateThreshold(property(camelContext, java.lang.String.class, value)); return true;
        case "timeoutcancelrunningfuture":
        case "TimeoutCancelRunningFuture": target.setTimeoutCancelRunningFuture(property(camelContext, java.lang.String.class, value)); return true;
        case "timeoutduration":
        case "TimeoutDuration": target.setTimeoutDuration(property(camelContext, java.lang.String.class, value)); return true;
        case "timeoutenabled":
        case "TimeoutEnabled": target.setTimeoutEnabled(property(camelContext, java.lang.String.class, value)); return true;
        case "timeoutexecutorserviceref":
        case "TimeoutExecutorServiceRef": target.setTimeoutExecutorServiceRef(property(camelContext, java.lang.String.class, value)); return true;
        case "waitdurationinopenstate":
        case "WaitDurationInOpenState": target.setWaitDurationInOpenState(property(camelContext, java.lang.String.class, value)); return true;
        case "writablestacktraceenabled":
        case "WritableStackTraceEnabled": target.setWritableStackTraceEnabled(property(camelContext, java.lang.String.class, value)); return true;
        default: return false;
        }
    }

    @Override
    public Map<String, Object> getAllOptions(Object target) {
        return ALL_OPTIONS;
    }

    @Override
    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
        org.apache.camel.model.Resilience4jConfigurationDefinition target = (org.apache.camel.model.Resilience4jConfigurationDefinition) obj;
        switch (ignoreCase ? name.toLowerCase() : name) {
        case "automatictransitionfromopentohalfopenenabled":
        case "AutomaticTransitionFromOpenToHalfOpenEnabled": return target.getAutomaticTransitionFromOpenToHalfOpenEnabled();
        case "bulkheadenabled":
        case "BulkheadEnabled": return target.getBulkheadEnabled();
        case "bulkheadmaxconcurrentcalls":
        case "BulkheadMaxConcurrentCalls": return target.getBulkheadMaxConcurrentCalls();
        case "bulkheadmaxwaitduration":
        case "BulkheadMaxWaitDuration": return target.getBulkheadMaxWaitDuration();
        case "circuitbreakerref":
        case "CircuitBreakerRef": return target.getCircuitBreakerRef();
        case "configref":
        case "ConfigRef": return target.getConfigRef();
        case "failureratethreshold":
        case "FailureRateThreshold": return target.getFailureRateThreshold();
        case "id":
        case "Id": return target.getId();
        case "minimumnumberofcalls":
        case "MinimumNumberOfCalls": return target.getMinimumNumberOfCalls();
        case "permittednumberofcallsinhalfopenstate":
        case "PermittedNumberOfCallsInHalfOpenState": return target.getPermittedNumberOfCallsInHalfOpenState();
        case "slidingwindowsize":
        case "SlidingWindowSize": return target.getSlidingWindowSize();
        case "slidingwindowtype":
        case "SlidingWindowType": return target.getSlidingWindowType();
        case "slowcalldurationthreshold":
        case "SlowCallDurationThreshold": return target.getSlowCallDurationThreshold();
        case "slowcallratethreshold":
        case "SlowCallRateThreshold": return target.getSlowCallRateThreshold();
        case "timeoutcancelrunningfuture":
        case "TimeoutCancelRunningFuture": return target.getTimeoutCancelRunningFuture();
        case "timeoutduration":
        case "TimeoutDuration": return target.getTimeoutDuration();
        case "timeoutenabled":
        case "TimeoutEnabled": return target.getTimeoutEnabled();
        case "timeoutexecutorserviceref":
        case "TimeoutExecutorServiceRef": return target.getTimeoutExecutorServiceRef();
        case "waitdurationinopenstate":
        case "WaitDurationInOpenState": return target.getWaitDurationInOpenState();
        case "writablestacktraceenabled":
        case "WritableStackTraceEnabled": return target.getWritableStackTraceEnabled();
        default: return null;
        }
    }
}

