package org.jbpm.formbuilder.server; import org.jbpm.formbuilder.server.file.FileService; import org.jbpm.formbuilder.shared.form.FormDefinitionService; import org.jbpm.formbuilder.shared.menu.MenuService; import org.jbpm.formbuilder.shared.task.TaskDefinitionService; import org.springframework.beans.BeansException; import org.springframework.beans.factory.BeanFactory; import org.springframework.beans.factory.BeanFactoryAware; public class ServiceFactory implements BeanFactoryAware { private static final ServiceFactory INSTANCE = new ServiceFactory(); public static ServiceFactory getInstance() { return INSTANCE; } private ServiceFactory() { } private BeanFactory beanFactory; @Override public void setBeanFactory(BeanFactory beanFactory) throws BeansException { this.beanFactory = beanFactory; } public FormDefinitionService getFormDefinitionService() { return (FormDefinitionService) getService("FormService"); } public TaskDefinitionService getTaskDefinitionService() { return (TaskDefinitionService) getService("TaskService"); } public FileService getFileService() { return (FileService) getService("FileService"); } public MenuService getMenuService() { return (MenuService) getService("MenuService"); } private Object getService(String name) { String strategy = (String) this.beanFactory.getBean("strategy"); return this.beanFactory.getBean(strategy + name); } }