📄 testmoduleoperations.java
字号:
* @throws Throwable if something goes wrong
*/
public void testModuleImport() throws Throwable {
CmsObject cms = getCmsObject();
echo("Testing import of a module");
String moduleName = "org.opencms.test.modules.test1";
String moduleFile = OpenCms.getSystemInfo().getAbsoluteRfsPathRelativeToWebInf(
"packages/" + moduleName + ".zip");
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 module = OpenCms.getModuleManager().getModule(moduleName);
// now check the other module data
assertEquals(module.getNiceName(), "OpenCms configuration test module 1");
assertEquals(module.getDescription(), "Test 1 for the OpenCms module import");
assertEquals(module.getVersion(), new CmsModuleVersion("1.0"));
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.test1/");
assertEquals(module.getParameter("param1"), "value1");
assertEquals(module.getParameter("param2"), "value2");
}
/**
* Tests the import of a module that has a duplicate id.<p>
*
* @throws Exception if the test fails
*/
public void testModuleImportConflictId() throws Exception {
// this test imports a module with the id "12" and name "article"
// id 12 is already configured for "tablegallery"
CmsObject cms = getCmsObject();
echo("Testing import of a module with a conflicting id");
String moduleName = "org.opencms.test.modules.testConflictId";
String moduleFile = OpenCms.getSystemInfo().getAbsoluteRfsPathRelativeToWebInf(
"packages/" + moduleName + ".zip");
try {
OpenCms.getImportExportManager().importData(cms, moduleFile, null, new CmsShellReport(cms.getRequestContext().getLocale()));
} catch (CmsConfigurationException e) {
// this is the expected exception - the module should not have been imported
}
// check if the module was not imported
if (OpenCms.getModuleManager().hasModule(moduleName)) {
fail("Module '" + moduleName + "' was imported, but should not have been because of id conflicts!");
}
// next test: try a module that has an internal id conflict
echo("Testing import of a module with internal conflicting ids");
moduleName = "org.opencms.test.modules.testConflictId2";
moduleFile = OpenCms.getSystemInfo().getAbsoluteRfsPathRelativeToWebInf(
"packages/" + moduleName + ".zip");
try {
OpenCms.getImportExportManager().importData(cms, moduleFile, null, new CmsShellReport(cms.getRequestContext().getLocale()));
} catch (CmsConfigurationException e) {
// this is the expected exception - the module should not have been imported
}
// check if the module was not imported
if (OpenCms.getModuleManager().hasModule(moduleName)) {
fail("Module '" + moduleName + "' was imported, but should not have been because of id conflicts!");
}
}
/**
* Tests a update of a module that contains a new resource type.<p>
*
* This test was added because there was an issue where modules with a resource
* type generated an error "conficting id" during update.<p>
*
* @throws Exception if the test fails
*/
public void testModuleUpdateWithResourceId() throws Exception {
CmsObject cms = getCmsObject();
echo("Testing update of a module that contains a resource type id definition");
String moduleName = "org.opencms.test.modules.testConflictIdUpdate";
String moduleFile = OpenCms.getSystemInfo().getAbsoluteRfsPathRelativeToWebInf(
"packages/" + moduleName + ".zip");
// now import the module first time - this must work
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!");
}
// update the module - this is a "delete" and then "import again" operation
// first delete the module - marked as "true" for update
OpenCms.getModuleManager().deleteModule(cms, moduleName, true, new CmsShellReport(cms.getRequestContext().getLocale()));
// basic check if the module was deletet correctly
if (OpenCms.getModuleManager().hasModule(moduleName)) {
fail("Module '" + moduleName + "' was not deleted!");
}
// now import the module again second time
OpenCms.getImportExportManager().importData(cms, moduleFile, null, new CmsShellReport(cms.getRequestContext().getLocale()));
// basic check if the module was imported correctly again
if (!OpenCms.getModuleManager().hasModule(moduleName)) {
fail("Module '" + moduleName + "' was not imported!");
}
}
/**
* Tests a module import with an unknown resource type class.<p>
*
* @throws Throwable if something goes wrong
*/
public void testModuleImportMissingResTypeClass() throws Throwable {
CmsObject cms = getCmsObject();
echo("Testing a module import with an unknown resource type class");
String moduleName = "org.opencms.test.modules.test4";
String moduleFile = OpenCms.getSystemInfo().getAbsoluteRfsPathRelativeToWebInf(
"packages/" + moduleName + ".zip");
try {
// importing this module will generate an expected error in the log
OpenCmsTestLogAppender.setBreakOnError(false);
OpenCms.getImportExportManager().importData(cms, moduleFile, null, new CmsShellReport(cms.getRequestContext().getLocale()));
} finally {
OpenCmsTestLogAppender.setBreakOnError(true);
}
// basic check if the module was imported correctly
if (!OpenCms.getModuleManager().hasModule(moduleName)) {
fail("Module '" + moduleName + "' was not imported!");
}
CmsModule module = OpenCms.getModuleManager().getModule(moduleName);
// now check the other module data
assertEquals(module.getNiceName(), "OpenCms configuration test module 4");
assertEquals(module.getDescription(), "Test 4 for the OpenCms module import: Missing classes");
assertEquals(module.getVersion(), new CmsModuleVersion("1.0"));
assertEquals(module.getActionClass(), "org.opencms.missing.moduleClass");
assertEquals(module.getAuthorName(), "Alexander Kandzior");
assertEquals(module.getAuthorEmail(), "alex@opencms.org");
assertEquals(module.getExportPoints().size(), 0);
assertEquals(module.getResources().size(), 0);
assertEquals(module.getParameter("param1"), "value1");
assertEquals(module.getParameter("param2"), "value2");
// check for the new resource type
I_CmsResourceType missingType = OpenCms.getResourceManager().getResourceType("missing");
assertNotNull(missingType);
// check configured and actual class name
assertEquals(missingType.getClassName(), "org.opencms.missing.resourceTypeClass");
assertEquals(missingType.getTypeId(), 88);
assertEquals(missingType.getLoaderId(), CmsDumpLoader.RESOURCE_LOADER_ID);
assertEquals(missingType.getClass().getName(), CmsResourceTypeUnknown.class.getName());
}
/**
* Tests a module import of an old (OpenCms 5.0) style module.<p>
*
* @throws Throwable if something goes wrong
*/
public void testOldModuleImport() throws Throwable {
CmsObject cms = getCmsObject();
echo("Testing import of an old OpenCms 5.0 module");
String moduleName = "org.opencms.test.modules.testOld";
String moduleFile = OpenCms.getSystemInfo().getAbsoluteRfsPathRelativeToWebInf(
"packages/" + moduleName + ".zip");
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 module = OpenCms.getModuleManager().getModule(moduleName);
// now check the other module data
assertEquals(module.getNiceName(), "OpenCms v5.0 test module");
assertEquals(
module.getDescription().trim(),
"This is a module in the OpenCms v5.0.x style.\n\t\tThe XML format for modules has changed in OpenCms 6.0.");
assertEquals(module.getVersion(), new CmsModuleVersion("2.05"));
assertTrue(module.getActionClass() == null);
assertEquals(module.getAuthorName(), "Alexander Kandzior");
assertEquals(module.getAuthorEmail(), "alex@opencms.org");
// check if "additionalresources" where converted to module resources
assertTrue(module.getResources().size() == 2);
assertEquals(module.getResources().get(0), "/system/modules/org.opencms.test.modules.testOld/");
assertEquals(module.getResources().get(1), "/alkacon-documentation/documentation-flexcache/");
}
/**
* Adds a module dependency for the tests.<p>
*
* @param cms the current OpenCms context
* @param dep the dependency to check
*
* @throws CmsConfigurationException in case something goes wrong
* @throws CmsSecurityException in case something goes wrong
*/
private void addDependency(CmsObject cms, CmsModuleDependency dep)
throws CmsSecurityException, CmsConfigurationException {
if (OpenCms.getModuleManager().hasModule(dep.getName())) {
// remove other version of dependency if it exists
OpenCms.getModuleManager().deleteModule(cms, dep.getName(), true, new CmsShellReport(cms.getRequestContext().getLocale()));
}
CmsModule module = new CmsModule(
dep.getName(),
"A test module dependency",
"ModuleGroup",
null,
null,
dep.getVersion(),
"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);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -