/** * This Source Code Form is subject to the terms of the Mozilla Public License, * v. 2.0. If a copy of the MPL was not distributed with this file, You can * obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under * the terms of the Healthcare Disclaimer located at http://openmrs.org/license. * * Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS * graphic logo is a trademark of OpenMRS Inc. */ package org.openmrs.module.webservices.rest.web; import org.openmrs.module.Module; import org.openmrs.module.webservices.helper.ModuleFactoryWrapper; import org.springframework.web.multipart.MultipartFile; import javax.servlet.ServletContext; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; import java.util.List; public class MockModuleFactoryWrapper extends ModuleFactoryWrapper { public List<Module> loadedModules = new ArrayList<Module>(); public List<Module> startedModules = new ArrayList<Module>(); public Module loadModuleMock; @Override public Module getModuleById(String id) { for (Module module : loadedModules) { if (module.getModuleId().equals(id)) { return module; } } return null; } @Override public Module parseModuleFile(MultipartFile file) throws IOException { return new Module("ParsedModule", "atlas", "name", "author", "description", "version"); } @Override public void refreshWebApplicationContext(ServletContext context) { //do nothing } @Override public Collection<Module> getLoadedModules() { return loadedModules; } @Override public boolean isModuleStarted(Module module) { return startedModules.contains(module); } @Override public void unloadModule(Module module) { startedModules.remove(module); loadedModules.remove(module); } @Override public File insertModuleFile(Module module, String filename) { return new File("fake"); } @Override public Module loadModule(File moduleFile) { return loadModuleMock; } @Override public List<Module> stopModuleAndGetDependent(Module module) { return Collections.singletonList(new Module("dependent", "atlas", "name", "author", "description", "version")); } @Override public void stopModule(Module module, ServletContext servletContext) { startedModules.remove(module); } @Override public boolean startModule(Module module, ServletContext servletContext) { return startModule(module, servletContext, false); } @Override public boolean startModule(Module module, ServletContext servletContext, boolean delayRefreshContext) { if (!loadedModules.contains(module)) { loadedModules.add(module); } return startedModules.add(module); } @Override public void stopModuleSkipRefresh(Module module, ServletContext servletContext) { startedModules.remove(module); } @Override public Collection<Module> getModulesInStartupOrder(Collection<Module> modules) { return modules; } }