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

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!
 */
@SuppressWarnings("unchecked")
public class JMXEndpointConfigurer extends PropertyConfigurerSupport implements GeneratedPropertyConfigurer, PropertyConfigurerGetter {

    @Override
    public boolean configure(CamelContext camelContext, Object obj, String name, Object value, boolean ignoreCase) {
        JMXEndpoint target = (JMXEndpoint) obj;
        switch (ignoreCase ? name.toLowerCase() : name) {
        case "bridgeerrorhandler":
        case "bridgeErrorHandler": target.setBridgeErrorHandler(property(camelContext, boolean.class, value)); return true;
        case "differencemode":
        case "differenceMode": target.setDifferenceMode(property(camelContext, boolean.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 "executorservice":
        case "executorService": target.setExecutorService(property(camelContext, java.util.concurrent.ExecutorService.class, value)); return true;
        case "format": target.setFormat(property(camelContext, java.lang.String.class, value)); return true;
        case "granularityperiod":
        case "granularityPeriod": target.setGranularityPeriod(property(camelContext, java.time.Duration.class, value).toMillis()); return true;
        case "handback": target.setHandback(property(camelContext, java.lang.Object.class, value)); return true;
        case "initthreshold":
        case "initThreshold": target.setInitThreshold(property(camelContext, int.class, value)); return true;
        case "modulus": target.setModulus(property(camelContext, int.class, value)); return true;
        case "monitortype":
        case "monitorType": target.setMonitorType(property(camelContext, java.lang.String.class, value)); return true;
        case "notificationfilter":
        case "notificationFilter": target.setNotificationFilter(property(camelContext, javax.management.NotificationFilter.class, value)); return true;
        case "notifydiffer":
        case "notifyDiffer": target.setNotifyDiffer(property(camelContext, boolean.class, value)); return true;
        case "notifyhigh":
        case "notifyHigh": target.setNotifyHigh(property(camelContext, boolean.class, value)); return true;
        case "notifylow":
        case "notifyLow": target.setNotifyLow(property(camelContext, boolean.class, value)); return true;
        case "notifymatch":
        case "notifyMatch": target.setNotifyMatch(property(camelContext, boolean.class, value)); return true;
        case "objectdomain":
        case "objectDomain": target.setObjectDomain(property(camelContext, java.lang.String.class, value)); return true;
        case "objectname":
        case "objectName": target.setObjectName(property(camelContext, java.lang.String.class, value)); return true;
        case "objectproperties":
        case "objectProperties": target.setObjectProperties(property(camelContext, java.util.Map.class, value)); return true;
        case "observedattribute":
        case "observedAttribute": target.setObservedAttribute(property(camelContext, java.lang.String.class, value)); return true;
        case "offset": target.setOffset(property(camelContext, int.class, value)); return true;
        case "password": target.setPassword(property(camelContext, java.lang.String.class, value)); return true;
        case "reconnectdelay":
        case "reconnectDelay": target.setReconnectDelay(property(camelContext, int.class, value)); return true;
        case "reconnectonconnectionfailure":
        case "reconnectOnConnectionFailure": target.setReconnectOnConnectionFailure(property(camelContext, boolean.class, value)); return true;
        case "stringtocompare":
        case "stringToCompare": target.setStringToCompare(property(camelContext, java.lang.String.class, value)); return true;
        case "testconnectiononstartup":
        case "testConnectionOnStartup": target.setTestConnectionOnStartup(property(camelContext, boolean.class, value)); return true;
        case "thresholdhigh":
        case "thresholdHigh": target.setThresholdHigh(property(camelContext, java.lang.Double.class, value)); return true;
        case "thresholdlow":
        case "thresholdLow": target.setThresholdLow(property(camelContext, java.lang.Double.class, value)); return true;
        case "user": target.setUser(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 "bridgeerrorhandler":
        case "bridgeErrorHandler": return boolean.class;
        case "differencemode":
        case "differenceMode": return boolean.class;
        case "exceptionhandler":
        case "exceptionHandler": return org.apache.camel.spi.ExceptionHandler.class;
        case "exchangepattern":
        case "exchangePattern": return org.apache.camel.ExchangePattern.class;
        case "executorservice":
        case "executorService": return java.util.concurrent.ExecutorService.class;
        case "format": return java.lang.String.class;
        case "granularityperiod":
        case "granularityPeriod": return long.class;
        case "handback": return java.lang.Object.class;
        case "initthreshold":
        case "initThreshold": return int.class;
        case "modulus": return int.class;
        case "monitortype":
        case "monitorType": return java.lang.String.class;
        case "notificationfilter":
        case "notificationFilter": return javax.management.NotificationFilter.class;
        case "notifydiffer":
        case "notifyDiffer": return boolean.class;
        case "notifyhigh":
        case "notifyHigh": return boolean.class;
        case "notifylow":
        case "notifyLow": return boolean.class;
        case "notifymatch":
        case "notifyMatch": return boolean.class;
        case "objectdomain":
        case "objectDomain": return java.lang.String.class;
        case "objectname":
        case "objectName": return java.lang.String.class;
        case "objectproperties":
        case "objectProperties": return java.util.Map.class;
        case "observedattribute":
        case "observedAttribute": return java.lang.String.class;
        case "offset": return int.class;
        case "password": return java.lang.String.class;
        case "reconnectdelay":
        case "reconnectDelay": return int.class;
        case "reconnectonconnectionfailure":
        case "reconnectOnConnectionFailure": return boolean.class;
        case "stringtocompare":
        case "stringToCompare": return java.lang.String.class;
        case "testconnectiononstartup":
        case "testConnectionOnStartup": return boolean.class;
        case "thresholdhigh":
        case "thresholdHigh": return java.lang.Double.class;
        case "thresholdlow":
        case "thresholdLow": return java.lang.Double.class;
        case "user": return java.lang.String.class;
        default: return null;
        }
    }

    @Override
    public Object getOptionValue(Object obj, String name, boolean ignoreCase) {
        JMXEndpoint target = (JMXEndpoint) obj;
        switch (ignoreCase ? name.toLowerCase() : name) {
        case "bridgeerrorhandler":
        case "bridgeErrorHandler": return target.isBridgeErrorHandler();
        case "differencemode":
        case "differenceMode": return target.isDifferenceMode();
        case "exceptionhandler":
        case "exceptionHandler": return target.getExceptionHandler();
        case "exchangepattern":
        case "exchangePattern": return target.getExchangePattern();
        case "executorservice":
        case "executorService": return target.getExecutorService();
        case "format": return target.getFormat();
        case "granularityperiod":
        case "granularityPeriod": return target.getGranularityPeriod();
        case "handback": return target.getHandback();
        case "initthreshold":
        case "initThreshold": return target.getInitThreshold();
        case "modulus": return target.getModulus();
        case "monitortype":
        case "monitorType": return target.getMonitorType();
        case "notificationfilter":
        case "notificationFilter": return target.getNotificationFilter();
        case "notifydiffer":
        case "notifyDiffer": return target.isNotifyDiffer();
        case "notifyhigh":
        case "notifyHigh": return target.isNotifyHigh();
        case "notifylow":
        case "notifyLow": return target.isNotifyLow();
        case "notifymatch":
        case "notifyMatch": return target.isNotifyMatch();
        case "objectdomain":
        case "objectDomain": return target.getObjectDomain();
        case "objectname":
        case "objectName": return target.getObjectName();
        case "objectproperties":
        case "objectProperties": return target.getObjectProperties();
        case "observedattribute":
        case "observedAttribute": return target.getObservedAttribute();
        case "offset": return target.getOffset();
        case "password": return target.getPassword();
        case "reconnectdelay":
        case "reconnectDelay": return target.getReconnectDelay();
        case "reconnectonconnectionfailure":
        case "reconnectOnConnectionFailure": return target.isReconnectOnConnectionFailure();
        case "stringtocompare":
        case "stringToCompare": return target.getStringToCompare();
        case "testconnectiononstartup":
        case "testConnectionOnStartup": return target.isTestConnectionOnStartup();
        case "thresholdhigh":
        case "thresholdHigh": return target.getThresholdHigh();
        case "thresholdlow":
        case "thresholdLow": return target.getThresholdLow();
        case "user": return target.getUser();
        default: return null;
        }
    }

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

