/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * <p/> * http://www.apache.org/licenses/LICENSE-2.0 * <p/> * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.apache.hadoop.gateway.ha.provider.impl; import org.apache.hadoop.gateway.ha.provider.HaDescriptor; import org.apache.hadoop.gateway.ha.provider.HaServiceConfig; import java.util.HashMap; import java.util.Map; public abstract class HaDescriptorFactory implements HaServiceConfigConstants { public static HaDescriptor createDescriptor() { return new DefaultHaDescriptor(); } public static HaServiceConfig createServiceConfig(String serviceName, String config) { Map<String, String> configMap = parseHaConfiguration(config); String enabledValue = configMap.get(CONFIG_PARAM_ENABLED); String maxFailoverAttempts = configMap.get(CONFIG_PARAM_MAX_FAILOVER_ATTEMPTS); String failoverSleep = configMap.get(CONFIG_PARAM_FAILOVER_SLEEP); String maxRetryAttempts = configMap.get(CONFIG_PARAM_MAX_RETRY_ATTEMPTS); String retrySleep = configMap.get(CONFIG_PARAM_RETRY_SLEEP); String zookeeperEnsemble = configMap.get(CONFIG_PARAM_ZOOKEEPER_ENSEMBLE); String zookeeperNamespace = configMap.get(CONFIG_PARAM_ZOOKEEPER_NAMESPACE); return createServiceConfig(serviceName, enabledValue, maxFailoverAttempts, failoverSleep, maxRetryAttempts, retrySleep, zookeeperEnsemble, zookeeperNamespace); } public static HaServiceConfig createServiceConfig(String serviceName, String enabledValue, String maxFailoverAttemptsValue, String failoverSleepValue, String maxRetryAttemptsValue, String retrySleepValue, String zookeeperEnsemble, String zookeeperNamespace) { boolean enabled = DEFAULT_ENABLED; int maxFailoverAttempts = DEFAULT_MAX_FAILOVER_ATTEMPTS; int failoverSleep = DEFAULT_FAILOVER_SLEEP; int maxRetryAttempts = DEFAULT_MAX_RETRY_ATTEMPTS; int retrySleep = DEFAULT_RETRY_SLEEP; if (enabledValue != null && enabledValue.trim().length() > 0) { enabled = Boolean.parseBoolean(enabledValue); } if (maxFailoverAttemptsValue != null && maxFailoverAttemptsValue.trim().length() > 0) { maxFailoverAttempts = Integer.parseInt(maxFailoverAttemptsValue); } if (failoverSleepValue != null && failoverSleepValue.trim().length() > 0) { failoverSleep = Integer.parseInt(failoverSleepValue); } if (maxRetryAttemptsValue != null && maxRetryAttemptsValue.trim().length() > 0) { maxRetryAttempts = Integer.parseInt(maxRetryAttemptsValue); } if (retrySleepValue != null && retrySleepValue.trim().length() > 0) { retrySleep = Integer.parseInt(retrySleepValue); } DefaultHaServiceConfig serviceConfig = new DefaultHaServiceConfig(serviceName); serviceConfig.setEnabled(enabled); serviceConfig.setMaxFailoverAttempts(maxFailoverAttempts); serviceConfig.setFailoverSleep(failoverSleep); serviceConfig.setMaxRetryAttempts(maxRetryAttempts); serviceConfig.setRetrySleep(retrySleep); serviceConfig.setZookeeperEnsemble(zookeeperEnsemble); serviceConfig.setZookeeperNamespace(zookeeperNamespace); return serviceConfig; } private static Map<String, String> parseHaConfiguration(String configuration) { Map<String, String> parameters = new HashMap<String, String>(); if (configuration != null) { String[] pairs = configuration.split(CONFIG_PAIRS_DELIMITER); for (String pair : pairs) { String[] tokens = pair.split(CONFIG_PAIR_DELIMITER); if (tokens.length == 2) { parameters.put(tokens[0], tokens[1]); } } } return parameters; } }