/* * Copyright 2009 Mustard Grain, Inc., 2009-2010 LinkedIn, Inc. * * Licensed 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 * * http://www.apache.org/licenses/LICENSE-2.0 * * 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 voldemort.cluster.failuredetector; import voldemort.utils.JmxUtils; import voldemort.utils.ReflectUtils; /** * FailureDetectorUtils serves as a factory for creating a FailureDetector * implementation. * */ public class FailureDetectorUtils { public static FailureDetector create(FailureDetectorConfig failureDetectorConfig, boolean registerMbean, FailureDetectorListener... failureDetectorListeners) { Class<?> clazz = ReflectUtils.loadClass(failureDetectorConfig.getImplementationClassName()); FailureDetector failureDetector = (FailureDetector) ReflectUtils.callConstructor(clazz, new Class[] { FailureDetectorConfig.class }, new Object[] { failureDetectorConfig }); if(failureDetectorListeners != null) { for(FailureDetectorListener failureDetectorListener: failureDetectorListeners) failureDetector.addFailureDetectorListener(failureDetectorListener); } if(registerMbean) JmxUtils.registerMbean(failureDetector.getClass().getSimpleName(), failureDetector); return failureDetector; } }