⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 testpublishing.java

📁 找了很久才找到到源代码
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
        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 + -