/* * Copyright 2007 Sun Microsystems, Inc. * * This file is part of jVoiceBridge. * * jVoiceBridge is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation and distributed hereunder * to you. * * jVoiceBridge is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. * * Sun designates this particular file as subject to the "Classpath" * exception as provided by Sun in the License file that accompanied this * code. */ package com.sun.voip; import java.lang.reflect.Constructor; /* * Create a Ticker using the specifed Ticker implementation class. */ public class TickerFactory { private static TickerFactory tickerFactory; private TickerFactory() { } public static TickerFactory getInstance() { if (tickerFactory != null) { return tickerFactory; } tickerFactory = new TickerFactory(); return tickerFactory; } public Ticker createTicker(String tickerClassName, String id) throws TickerException { Ticker ticker = null; if (tickerClassName != null && tickerClassName.length() > 0) { try { Class tickerClass = Class.forName(tickerClassName); Class[] params = new Class[] {String.class}; Constructor constructor = tickerClass.getConstructor(params); if (constructor != null) { Object[] args = new Object[] { new String("TickerTest") }; ticker = (Ticker) (constructor.newInstance(args)); } else { Logger.println(id + ": Unable to find constructor for class " + tickerClassName); } } catch (Exception e) { Logger.println(id + ": Unable to create ticker for class " + tickerClassName + " " + e.getMessage()); } } if (ticker == null) { ticker = new TickerSleep(id); if (Logger.logLevel >= Logger.LOG_MOREINFO) { Logger.println(id + ": using default ticker TickerSleep"); } } return ticker; } }