📄 testpublishing.java
字号:
file.setContents("test text".getBytes());
cms.writeFile(file);
cms.createSibling(source, sibling, null);
// publish both
OpenCms.getPublishManager().publishResource(
cms,
source,
true,
new CmsShellReport(cms.getRequestContext().getLocale()));
OpenCms.getPublishManager().waitWhileRunning();
CmsProject online = cms.readProject(CmsProject.ONLINE_PROJECT_ID);
CmsProject offline = cms.getRequestContext().currentProject();
// store the online versions
cms.getRequestContext().setCurrentProject(online);
storeResources(cms, source);
storeResources(cms, sibling);
cms.getRequestContext().setCurrentProject(offline);
// delete one sibling
cms.lockResource(sibling);
cms.deleteResource(sibling, CmsResource.DELETE_PRESERVE_SIBLINGS);
cms.unlockResource(sibling);
// check the online versions
cms.getRequestContext().setCurrentProject(online);
assertFilter(cms, source, OpenCmsTestResourceFilter.FILTER_EQUAL);
assertFilter(cms, sibling, OpenCmsTestResourceFilter.FILTER_EQUAL);
cms.getRequestContext().setCurrentProject(offline);
// publish just the deleted sibling
OpenCms.getPublishManager().publishResource(
cms,
sibling,
false,
new CmsShellReport(cms.getRequestContext().getLocale()));
OpenCms.getPublishManager().waitWhileRunning();
cms.getRequestContext().setCurrentProject(online);
assertFalse(cms.existsResource(sibling, CmsResourceFilter.ALL));
assertTrue(cms.existsResource(source, CmsResourceFilter.ALL));
assertEquals(new String("test text".getBytes()), new String(cms.readFile(source).getContents()));
cms.getRequestContext().setCurrentProject(offline);
List list = cms.readDeletedResources("/", false);
CmsHistoryFile histFile = (CmsHistoryFile)list.get(0);
assertEquals(cms.getRequestContext().addSiteRoot(sibling), histFile.getRootPath());
assertEquals(2, histFile.getVersion());
file = cms.readFile(histFile);
assertEquals(new String("test text".getBytes()), new String(file.getContents()));
// now delete the 2nd sibling
cms.lockResource(source);
cms.deleteResource(source, CmsResource.DELETE_PRESERVE_SIBLINGS);
cms.unlockResource(source);
// publish the deleted sibling
OpenCms.getPublishManager().publishResource(cms, source);
OpenCms.getPublishManager().waitWhileRunning();
cms.getRequestContext().setCurrentProject(online);
assertFalse(cms.existsResource(sibling, CmsResourceFilter.ALL));
assertFalse(cms.existsResource(source, CmsResourceFilter.ALL));
cms.getRequestContext().setCurrentProject(offline);
list = cms.readDeletedResources("/", false);
assertEquals(2, list.size());
histFile = (CmsHistoryFile)list.get(0);
assertEquals(cms.getRequestContext().addSiteRoot(source), histFile.getRootPath());
assertEquals(2, histFile.getVersion());
file = cms.readFile(histFile);
assertEquals(new String("test text".getBytes()), new String(file.getContents()));
CmsHistoryFile histFile2 = (CmsHistoryFile)list.get(1);
assertEquals(cms.getRequestContext().addSiteRoot(sibling), histFile2.getRootPath());
assertEquals(2, histFile2.getVersion());
file = cms.readFile(histFile2);
assertEquals(new String("test text".getBytes()), new String(file.getContents()));
}
/**
* Tests the publishing of deleted siblings, 2nd issue.<p>
*
* take 2 siblings (s1 and s2):
* - delete all
* - publish all
* - non of them should be readable
* - both siblings should be eligible for restoration
*
* @throws Throwable if something goes wrong
*/
public void testPublishDeletedSiblings2() throws Throwable {
CmsObject cms = getCmsObject();
String folder = "/testdelete";
String source = "/testdelete/testdeletesib2-1.html";
String sibling = "/testdelete/testdeletesib2-2.html";
echo("testing publishing of deleted siblings, 2nd issue");
cms.createResource(folder, CmsResourceTypeFolder.RESOURCE_TYPE_ID);
// create the siblings
CmsResource src = cms.createResource(source, CmsResourceTypePlain.getStaticTypeId());
CmsFile file = cms.readFile(src);
file.setContents("test text".getBytes());
cms.writeFile(file);
cms.createSibling(source, sibling, null);
// publish all
OpenCms.getPublishManager().publishResource(cms, folder);
OpenCms.getPublishManager().waitWhileRunning();
CmsProject online = cms.readProject(CmsProject.ONLINE_PROJECT_ID);
CmsProject offline = cms.getRequestContext().currentProject();
// store the online versions
cms.getRequestContext().setCurrentProject(online);
storeResources(cms, source);
storeResources(cms, sibling);
cms.getRequestContext().setCurrentProject(offline);
// delete both siblings
cms.lockResource(sibling);
cms.deleteResource(sibling, CmsResource.DELETE_REMOVE_SIBLINGS);
cms.unlockResource(sibling);
// check the online versions
cms.getRequestContext().setCurrentProject(online);
assertFilter(cms, source, OpenCmsTestResourceFilter.FILTER_EQUAL);
assertFilter(cms, sibling, OpenCmsTestResourceFilter.FILTER_EQUAL);
cms.getRequestContext().setCurrentProject(offline);
// publish both deleted siblings
OpenCms.getPublishManager().publishResource(
cms,
sibling,
true,
new CmsShellReport(cms.getRequestContext().getLocale()));
OpenCms.getPublishManager().waitWhileRunning();
cms.getRequestContext().setCurrentProject(online);
assertFalse(cms.existsResource(sibling, CmsResourceFilter.ALL));
assertFalse(cms.existsResource(source, CmsResourceFilter.ALL));
cms.getRequestContext().setCurrentProject(offline);
List list = cms.readDeletedResources(folder, false);
assertEquals(2, list.size());
CmsHistoryFile histFile = (CmsHistoryFile)list.get(0);
assertEquals(cms.getRequestContext().addSiteRoot(source), histFile.getRootPath());
assertEquals(2, histFile.getVersion());
file = cms.readFile(histFile);
assertEquals(new String("test text".getBytes()), new String(file.getContents()));
CmsHistoryFile histFile2 = (CmsHistoryFile)list.get(1);
assertEquals(cms.getRequestContext().addSiteRoot(sibling), histFile2.getRootPath());
assertEquals(2, histFile2.getVersion());
file = cms.readFile(histFile2);
assertEquals(new String("test text".getBytes()), new String(file.getContents()));
}
/**
* Test publishing changed files.<p>
*
* @throws Throwable if something goes wrong
*/
public void testPublishLockedFiles() throws Throwable {
CmsObject cms = getCmsObject();
echo("Testing publish locked files");
// switch user
cms.loginUser("test1", "test1");
cms.getRequestContext().setCurrentProject(cms.readProject("Offline"));
cms.getRequestContext().setSiteRoot("/sites/default/");
String source = "/folder2/subfolder21/image1.gif";
String resource1 = "/folder2/image1_new.gif";
String resource2 = "/folder2/image1_sibling1.gif";
// make changes to the resources
// do not need to make any changes to resource3 and resource4 as they are
// siblings of resource2!
cms.lockResource(source);
cms.lockResource(resource1);
cms.lockResource(resource2);
cms.writePropertyObject(source, new CmsProperty("Title", source + " modified", null));
cms.writePropertyObject(resource1, new CmsProperty("Title", resource1 + " modified", null));
cms.writePropertyObject(resource2, new CmsProperty("Title", resource2 + " modified", null));
// switch user, so the locked resources can not be published until they are explicit unlocked
cms.loginUser("Admin", "admin");
cms.getRequestContext().setCurrentProject(cms.readProject("Offline"));
cms.getRequestContext().setSiteRoot("/sites/default/");
storeResources(cms, source);
storeResources(cms, resource1);
storeResources(cms, resource2);
// publish a modified resource without siblings
OpenCms.getPublishManager().publishProject(cms);
OpenCms.getPublishManager().waitWhileRunning();
// ensure that all changed resources are still changed in the offline project
assertState(cms, source, CmsResource.STATE_CHANGED);
assertState(cms, resource1, CmsResource.STATE_CHANGED);
assertState(cms, resource2, CmsResource.STATE_CHANGED);
// lock the resources, so the next test can run
cms.changeLock(source);
cms.changeLock(resource1);
cms.changeLock(resource2);
// ensure that all changed resources are NOT published
cms.getRequestContext().setCurrentProject(cms.readProject("Online"));
CmsProperty prop0 = cms.readPropertyObject(source, "Title", false);
CmsProperty prop1 = cms.readPropertyObject(resource1, "Title", false);
CmsProperty prop2 = cms.readPropertyObject(resource2, "Title", false);
if (prop0.getValue().equals((source + " modified"))) {
fail("Property published for " + source);
}
if (prop1.getValue().equals((resource1 + " modified"))) {
fail("Property published for " + resource1);
}
if (prop2.getValue().equals((resource2 + " modified"))) {
fail("Property published for " + resource2);
}
}
/**
* Test publishing moved files.<p>
*
* @throws Throwable if something goes wrong
*/
public void testPublishMovedFiles() throws Throwable {
CmsObject cms = getCmsObject();
echo("Testing publish moved files");
String resource1 = "/folder1/subfolder12/subsubfolder121/image1.gif";
String target1 = "/folder1/subfolder12/subsubfolder121/image1_new.gif";
CmsProject onlineProject = cms.readProject("Online");
CmsProject offlineProject = cms.readProject("Offline");
// move the resource
cms.lockResource(resource1);
cms.moveResource(resource1, target1);
cms.unlockResource(target1);
storeResources(cms, target1);
// publish it
CmsPublishList publishList = OpenCms.getPublishManager().getPublishList(cms, cms.readResource(target1), false);
OpenCms.getPublishManager().publishProject(
cms,
new CmsShellReport(cms.getRequestContext().getLocale()),
publishList);
OpenCms.getPublishManager().waitWhileRunning();
// check publish resource state
List pubResources = cms.readPublishedResources(publishList.getPublishHistoryId());
assertEquals(2, pubResources.size());
CmsPublishedResource pubRes = (CmsPublishedResource)pubResources.get(0);
assertEquals(cms.getRequestContext().addSiteRoot(resource1), pubRes.getRootPath());
assertEquals(CmsPublishedResource.STATE_MOVED_SOURCE, pubRes.getMovedState());
pubRes = (CmsPublishedResource)pubResources.get(1);
assertEquals(cms.getRequestContext().addSiteRoot(target1), pubRes.getRootPath());
assertEquals(CmsPublishedResource.STATE_MOVED_DESTINATION, pubRes.getMovedState());
// the online original file must be deleted
cms.getRequestContext().setCurrentProject(onlineProject);
try {
cms.readResource(resource1, CmsResourceFilter.ALL);
fail("Resource " + resource1 + " was not deleted online");
} catch (CmsVfsResourceNotFoundException e) {
// ok
} catch (CmsException e) {
fail("Resource " + resource1 + " error:" + e);
}
try {
cms.readResource(target1);
} catch (CmsVfsResourceNotFoundException e) {
fail("Resource " + target1 + " is not online");
} catch (CmsException e) {
fail("Resource " + target1 + " error:" + e);
}
assertFilter(cms, target1, OpenCmsTestResourceFilter.FILTER_PUBLISHRESOURCE);
cms.getRequestContext().setCurrentProject(offlineProject);
try {
cms.readResource(resource1, CmsResourceFilter.ALL);
fail("Resource " + resource1 + " was not deleted offline");
} catch (CmsVfsResourceNotFoundException e) {
// ok
} catch (CmsException e) {
fail("Resource " + resource1 + " error:" + e);
}
try {
cms.readResource(target1);
} catch (CmsVfsResourceNotFoundException e) {
fail("Resource " + target1 + " is not offline");
} catch (CmsException e) {
fail("Resource " + target1 + " error:" + e);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -