package org.marketcetera.module; import org.marketcetera.util.misc.ClassVersion; import org.marketcetera.util.log.I18NBoundMessage1P; import java.util.Date; import java.io.File; import java.net.URL; /* $License$ */ /** * This provider supports multiple module instances that * are not auto-instantiated and need to manually started. * * Moreover, this factory needs a complex set of parameters to * create new modules. * * @author anshul@marketcetera.com */ @ClassVersion("$Id: ComplexModuleFactory.java 16154 2012-07-14 16:34:05Z colin $") public class ComplexModuleFactory extends ModuleFactory { public ComplexModuleFactory() { super(PROVIDER_URN, TestMessages.MULTIPLE_2_PROVIDER, true, false, String.class, File.class, URL.class, Date.class); } public MultipleModule create(Object... parameters) throws ModuleCreationException { ModuleURN u = new ModuleURN(PROVIDER_URN ,(String)parameters[0]); File f = (File) parameters[1]; URL url = (URL) parameters[2]; Date date = (Date) parameters[3]; if(!f.isAbsolute()) { throw new ModuleCreationException(new I18NBoundMessage1P( TestMessages.INCORRECT_FILE_PATH, f.toString())); } if(!"http".equals(url.getProtocol())) { throw new ModuleCreationException(new I18NBoundMessage1P( TestMessages.INCORRECT_URL, url)); } if(date == null) { throw new ModuleCreationException(new I18NBoundMessage1P( TestMessages.DATE_NOT_SUPPLIED, date)); } return new MultipleModule(u, false); } static final ModuleURN PROVIDER_URN = new ModuleURN("metc:test:multiple2"); }