📄 testmoduleoperations.java
字号:
OpenCms.getModuleManager().addModule(cms, module1);
module1 = OpenCms.getModuleManager().getModule(moduleName);
assertTrue(module1.getResources().size() == 5);
resources = module1.getResources();
assertTrue(resources.contains(res1));
assertTrue(resources.contains(res2));
assertTrue(resources.contains(res3));
assertTrue(resources.contains(res4));
assertTrue(resources.contains(res5));
}
/**
* Tests a module import.<p>
*
* @throws Throwable if something goes wrong
*/
public void testModuleDependencies() throws Throwable {
CmsObject cms = getCmsObject();
echo("Testing module dependencies");
String moduleName = "org.opencms.test.modules.test2";
String moduleFile = OpenCms.getSystemInfo().getAbsoluteRfsPathRelativeToWebInf(
"packages/" + moduleName + ".zip");
boolean caughtException = false;
try {
OpenCms.getImportExportManager().importData(cms, moduleFile, null, new CmsShellReport(cms.getRequestContext().getLocale()));
} catch (CmsException e) {
// any other CmsException means test failure
caughtException = true;
}
// basic check if the module was _not_ imported
if (!caughtException || OpenCms.getModuleManager().hasModule(moduleName)) {
fail("Module '" + moduleName + "' was imported even though depdencies are not fullfilled!");
}
CmsModule module;
module = CmsModuleImportExportHandler.readModuleFromImport(moduleFile);
List dependencies = OpenCms.getModuleManager().checkDependencies(
module,
CmsModuleManager.DEPENDENCY_MODE_IMPORT);
if (dependencies.size() != 2) {
fail("Module '" + moduleName + "' has 2 dependencies, not " + dependencies.size());
}
CmsModuleDependency dep1 = new CmsModuleDependency("org.opencms.test.dependency1", new CmsModuleVersion("1.0"));
CmsModuleDependency dep2 = new CmsModuleDependency("org.opencms.test.dependency2", new CmsModuleVersion("2.0"));
if (!dependencies.contains(dep1)) {
fail("Missing required dependency: " + dep1);
}
if (!dependencies.contains(dep2)) {
fail("Missing required dependency: " + dep2);
}
// add one (of two) depdendencies, with different but o.k. version number
addDependency(cms, new CmsModuleDependency(dep1.getName(), new CmsModuleVersion("2.5")));
dependencies = OpenCms.getModuleManager().checkDependencies(module, CmsModuleManager.DEPENDENCY_MODE_IMPORT);
if (dependencies.size() != 1) {
fail("Module '" + moduleName + "' still needs 1 dependency, not " + dependencies.size());
}
if (!dependencies.contains(dep2)) {
fail("Missing required dependency: " + dep2);
}
// add depdendency with wrong version
CmsModuleDependency dep3 = new CmsModuleDependency("org.opencms.test.dependency2", new CmsModuleVersion("1.0"));
addDependency(cms, dep3);
dependencies = OpenCms.getModuleManager().checkDependencies(module, CmsModuleManager.DEPENDENCY_MODE_IMPORT);
if (dependencies.size() != 1) {
fail("Module '" + moduleName + "' still needs 1 dependency, not " + dependencies.size());
}
if (!dependencies.contains(dep2)) {
fail("Missing required dependency: " + dep2);
}
// finally add depdendency with right version
addDependency(cms, dep2);
dependencies = OpenCms.getModuleManager().checkDependencies(module, CmsModuleManager.DEPENDENCY_MODE_IMPORT);
if (dependencies.size() != 0) {
fail("Module '" + moduleName + "' must have dependencies fullfilled");
}
// now try the import again, this time it must work
OpenCms.getImportExportManager().importData(cms, moduleFile, null, new CmsShellReport(cms.getRequestContext().getLocale()));
module = OpenCms.getModuleManager().getModule(moduleName);
// check the module data
assertEquals(module.getNiceName(), "OpenCms configuration test module 2");
assertEquals(module.getDescription(), "Test 2 for the OpenCms module import");
assertEquals(module.getVersion(), new CmsModuleVersion("1.5"));
assertTrue(module.getActionClass() == null);
assertEquals(module.getAuthorName(), "Alexander Kandzior");
assertEquals(module.getAuthorEmail(), "alex@opencms.org");
assertEquals(module.getExportPoints().size(), 2);
assertEquals(module.getResources().size(), 1);
assertEquals(module.getResources().get(0), "/system/modules/org.opencms.test.modules.test2/");
assertEquals(module.getParameter("param1"), "value1");
assertEquals(module.getParameter("param2"), "value2");
// now try to delete the dependencies, this must generate an error
caughtException = false;
try {
OpenCms.getModuleManager().deleteModule(cms, dep1.getName(), false, new CmsShellReport(cms.getRequestContext().getLocale()));
} catch (CmsConfigurationException e) {
caughtException = true;
}
if (!caughtException) {
fail("Deleting '" + dep1.getName() + "' must generate an error");
}
caughtException = false;
try {
OpenCms.getModuleManager().deleteModule(cms, dep2.getName(), false, new CmsShellReport(cms.getRequestContext().getLocale()));
} catch (CmsConfigurationException e) {
caughtException = true;
}
if (!caughtException) {
fail("Deleting '" + dep2.getName() + "' must generate an error");
}
CmsModuleDependency dep4 = new CmsModuleDependency(
"org.opencms.test.modules.test2",
new CmsModuleVersion("1.5"));
module = OpenCms.getModuleManager().getModule(dep1.getName());
dependencies = OpenCms.getModuleManager().checkDependencies(module, CmsModuleManager.DEPENDENCY_MODE_DELETE);
if (!dependencies.contains(dep4)) {
fail("Dependency not checked: " + dep4);
}
module = OpenCms.getModuleManager().getModule(dep2.getName());
dependencies = OpenCms.getModuleManager().checkDependencies(module, CmsModuleManager.DEPENDENCY_MODE_DELETE);
if (!dependencies.contains(dep4)) {
fail("Dependency not checked: " + dep4);
}
// delete the imported module
OpenCms.getModuleManager().deleteModule(cms, moduleName, false, new CmsShellReport(cms.getRequestContext().getLocale()));
// delete the dependencies (must work now since dependency is removed)
OpenCms.getModuleManager().deleteModule(cms, dep1.getName(), false, new CmsShellReport(cms.getRequestContext().getLocale()));
OpenCms.getModuleManager().deleteModule(cms, dep2.getName(), false, new CmsShellReport(cms.getRequestContext().getLocale()));
// publish the current project
OpenCms.getPublishManager().publishProject(cms);
OpenCms.getPublishManager().waitWhileRunning();
}
/**
* Tests a module export (and then re-import).<p>
*
* @throws Throwable if something goes wrong
*/
public void testModuleExport() throws Throwable {
CmsObject cms = getCmsObject();
echo("Testing export an re-import of a module");
String moduleName = "org.opencms.test.modules.testExport";
String moduleFile = OpenCms.getSystemInfo().getAbsoluteRfsPathRelativeToWebInf(
"packages/" + moduleName + ".zip");
File file = new File(moduleFile);
if (file.exists()) {
// probably from a old test run that didn't end with a success
file.delete();
}
CmsModule module = new CmsModule(
moduleName,
"A test module for export",
"ModuleGroup",
null,
"This is the description",
new CmsModuleVersion("1.0"),
"Alexander Kandzior",
"alex@opencms.org",
System.currentTimeMillis(),
null,
0L,
null,
null,
null,
null);
// add the module to the module manager
OpenCms.getModuleManager().addModule(cms, module);
// basic check if the module was created correctly
if (!OpenCms.getModuleManager().hasModule(moduleName)) {
fail("Module '" + moduleName + "' was not created!");
}
// generate a module export handler
CmsModuleImportExportHandler moduleExportHandler = new CmsModuleImportExportHandler();
moduleExportHandler.setFileName(moduleFile);
moduleExportHandler.setAdditionalResources(new String[0]);
moduleExportHandler.setModuleName(moduleName.replace('\\', '/'));
moduleExportHandler.setDescription("Module export of " + moduleExportHandler.getModuleName());
// export the module
OpenCms.getImportExportManager().exportData(cms, moduleExportHandler, new CmsShellReport(cms.getRequestContext().getLocale()));
// now delete the module from the manager
OpenCms.getModuleManager().deleteModule(cms, moduleName, false, new CmsShellReport(cms.getRequestContext().getLocale()));
// ensure that the module was deleted
if (OpenCms.getModuleManager().hasModule(moduleName)) {
fail("Module '" + moduleName + "' was not deleted!");
}
// now import the module again
OpenCms.getImportExportManager().importData(cms, moduleFile, null, new CmsShellReport(cms.getRequestContext().getLocale()));
// basic check if the module was imported correctly
if (!OpenCms.getModuleManager().hasModule(moduleName)) {
fail("Module '" + moduleName + "' was not imported!");
}
CmsModule importedModule = OpenCms.getModuleManager().getModule(moduleName);
// now check the other module data
if (!module.isIdentical(importedModule)) {
fail("Impoted module not identical to original module!");
}
if (file.exists()) {
// clean up
file.delete();
} else {
fail("Module export file was not written to expected location!");
}
}
/**
* Tests a module import.<p>
*
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -