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

📄 testlinkparseableresourcetypes.java

📁 找了很久才找到到源代码
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
     */
    public void testReplaceLinkParseableResource() throws Throwable {

        CmsObject cms = getCmsObject();
        echo("Testing 'replaceResource' method, replace link parseable with non link parseable resource");

        String sourceName = "/folder1/subfolder11/subsubfolder111/jsp.jsp";
        CmsResource source = cms.readResource(sourceName);
        String targetName = "/folder1/image2.gif";
        CmsResource target = cms.readResource(targetName);

        List relations = cms.getRelationsForResource(targetName, CmsRelationFilter.TARGETS);
        assertTrue(relations.isEmpty());
        int sources = cms.getRelationsForResource(targetName, CmsRelationFilter.SOURCES).size();

        String replacedName = "/index_created.html";
        cms.lockResource(replacedName);
        cms.replaceResource(replacedName, source.getTypeId(), cms.readFile(source).getContents(), null);
        CmsResource replaced = cms.readResource(replacedName);

        relations = cms.getRelationsForResource(replacedName, CmsRelationFilter.TARGETS);
        assertTrue(relations.isEmpty());
        assertRelationOperation(cms, replaced, target, sources - 1, 0);

        // check the online project
        CmsProject project = cms.getRequestContext().currentProject();
        cms.getRequestContext().setCurrentProject(cms.readProject(CmsProject.ONLINE_PROJECT_ID));

        relations = cms.getRelationsForResource(targetName, CmsRelationFilter.TARGETS);
        assertTrue(relations.isEmpty());
        sources = cms.getRelationsForResource(targetName, CmsRelationFilter.SOURCES).size();
        assertRelationOperation(cms, replaced, target, sources, 1);

        cms.getRequestContext().setCurrentProject(project);

        cms.unlockResource(replacedName);
        OpenCms.getPublishManager().publishResource(cms, replacedName);
        OpenCms.getPublishManager().waitWhileRunning();

        cms.getRequestContext().setCurrentProject(cms.readProject(CmsProject.ONLINE_PROJECT_ID));

        relations = cms.getRelationsForResource(replacedName, CmsRelationFilter.TARGETS);
        assertTrue(relations.isEmpty());
        assertRelationOperation(cms, replaced, target, sources - 1, 0);
    }

    /**
     * Test replaceResource method.<p>
     * 
     * @throws Throwable if something goes wrong
     */
    public void testReplaceNonLinkParseableResource() throws Throwable {

        CmsObject cms = getCmsObject();
        echo("Testing 'replaceResource' method, replace non link parseable with link parseable resource");

        String sourceName = "/index.html";
        CmsResource source = cms.readResource(sourceName);
        String targetName = "/folder1/image2.gif";
        CmsResource target = cms.readResource(targetName);

        List relations = cms.getRelationsForResource(targetName, CmsRelationFilter.TARGETS);
        assertTrue(relations.isEmpty());
        int sources = cms.getRelationsForResource(targetName, CmsRelationFilter.SOURCES).size();

        String replacedName = "/index_created.html";
        cms.lockResource(replacedName);
        cms.replaceResource(replacedName, source.getTypeId(), cms.readFile(source).getContents(), null);
        CmsResource replaced = cms.readResource(replacedName);

        assertRelationOperation(cms, replaced, target, sources + 1, 1);

        // check the online project
        CmsProject project = cms.getRequestContext().currentProject();
        cms.getRequestContext().setCurrentProject(cms.readProject(CmsProject.ONLINE_PROJECT_ID));

        relations = cms.getRelationsForResource(targetName, CmsRelationFilter.TARGETS);
        assertTrue(relations.isEmpty());
        sources = cms.getRelationsForResource(targetName, CmsRelationFilter.SOURCES).size();
        assertRelationOperation(cms, replaced, target, sources, 0);

        cms.getRequestContext().setCurrentProject(project);

        cms.unlockResource(replacedName);
        OpenCms.getPublishManager().publishResource(cms, replacedName);
        OpenCms.getPublishManager().waitWhileRunning();

        cms.getRequestContext().setCurrentProject(cms.readProject(CmsProject.ONLINE_PROJECT_ID));

        assertRelationOperation(cms, replaced, target, sources + 1, 1);
    }

    /**
     * Test undoChanges method.<p>
     * 
     * @throws Throwable if something goes wrong
     */
    public void testUndoChanges() throws Throwable {

        CmsObject cms = getCmsObject();
        echo("Testing 'undoChanges' method");

        String sourceName = "/index.html";
        CmsResource source = cms.readResource(sourceName);
        String targetName = "/folder1/index.html";
        CmsResource target = cms.readResource(targetName);

        List relations = cms.getRelationsForResource(targetName, CmsRelationFilter.TARGETS);
        assertEquals(1, relations.size());
        assertTrue(cms.getRelationsForResource(targetName, CmsRelationFilter.SOURCES).isEmpty());

        // add new relation
        cms.lockResource(sourceName);
        cms.addRelationToResource(sourceName, targetName, CmsRelationType.CATEGORY.getName());

        relations = cms.getRelationsForResource(sourceName, CmsRelationFilter.TARGETS);
        assertEquals(2, relations.size());
        assertRelation(new CmsRelation(source, target, CmsRelationType.CATEGORY), (CmsRelation)relations.get(1));
        relations = cms.getRelationsForResource(targetName, CmsRelationFilter.SOURCES);
        assertEquals(1, relations.size());
        assertRelation(new CmsRelation(source, target, CmsRelationType.CATEGORY), (CmsRelation)relations.get(0));

        // publish
        OpenCms.getPublishManager().publishResource(cms, sourceName);
        OpenCms.getPublishManager().waitWhileRunning();

        // delete relation
        cms.lockResource(sourceName);
        cms.deleteRelationsFromResource(
            sourceName,
            CmsRelationFilter.TARGETS.filterResource(target).filterNotDefinedInContent());

        relations = cms.getRelationsForResource(sourceName, CmsRelationFilter.TARGETS);
        assertEquals(1, relations.size());
        assertTrue(cms.getRelationsForResource(targetName, CmsRelationFilter.SOURCES).isEmpty());

        // undo changes
        cms.undoChanges(sourceName, CmsResource.UNDO_CONTENT);

        relations = cms.getRelationsForResource(sourceName, CmsRelationFilter.TARGETS);
        assertEquals(2, relations.size());
        assertRelation(new CmsRelation(source, target, CmsRelationType.CATEGORY), (CmsRelation)relations.get(1));
        relations = cms.getRelationsForResource(targetName, CmsRelationFilter.SOURCES);
        assertEquals(1, relations.size());
        assertRelation(new CmsRelation(source, target, CmsRelationType.CATEGORY), (CmsRelation)relations.get(0));
    }

    /**
     * Test writeFile method.<p>
     * 
     * @throws Throwable if something goes wrong
     */
    public void testWriteFile() throws Throwable {

        CmsObject cms = getCmsObject();
        echo("Testing 'writeFile' method");

        String sourceName = "/index.html";
        CmsResource source = cms.readResource(sourceName);
        String targetName = "/folder1/image2.gif";
        CmsResource target = cms.readResource(targetName);

        int sources = cms.getRelationsForResource(targetName, CmsRelationFilter.SOURCES).size();
        assertRelationOperation(cms, source, target, sources, 1);

        // duplicate the english body into a new german body element
        CmsFile file = cms.readFile(source);
        CmsXmlPage page = CmsXmlPageFactory.unmarshal(cms, file);
        page.addLocale(cms, Locale.GERMAN);
        page.addValue("body", Locale.GERMAN);
        page.setStringValue(cms, "body", Locale.GERMAN, page.getStringValue(cms, "body", Locale.ENGLISH));
        file.setContents(page.marshal());

        cms.lockResource(sourceName);
        cms.writeFile(file);

        // the same <link> node is reused
        assertRelationOperation(cms, source, target, sources, 1);

        // check the online project
        CmsProject project = cms.getRequestContext().currentProject();
        cms.getRequestContext().setCurrentProject(cms.readProject(CmsProject.ONLINE_PROJECT_ID));

        List relations = cms.getRelationsForResource(targetName, CmsRelationFilter.TARGETS);
        assertTrue(relations.isEmpty());
        sources = cms.getRelationsForResource(targetName, CmsRelationFilter.SOURCES).size();
        assertRelationOperation(cms, source, target, sources, 1);

        cms.getRequestContext().setCurrentProject(project);

        cms.unlockResource(sourceName);
        OpenCms.getPublishManager().publishResource(cms, sourceName);
        OpenCms.getPublishManager().waitWhileRunning();

        cms.getRequestContext().setCurrentProject(cms.readProject(CmsProject.ONLINE_PROJECT_ID));

        assertRelationOperation(cms, source, target, sources, 1);
        cms.getRequestContext().setCurrentProject(project);

        String newLinkName = "/index_created.html";

        // now add an additional link
        file = cms.readFile(source);
        page = CmsXmlPageFactory.unmarshal(cms, file);
        page.addLocale(cms, Locale.FRENCH);
        page.addValue("body", Locale.FRENCH);
        page.setStringValue(cms, "body", Locale.FRENCH, "<a href='" + newLinkName + "'>French</a>");
        file.setContents(page.marshal());

        relations = cms.getRelationsForResource(newLinkName, CmsRelationFilter.TARGETS);
        assertEquals(relations.size(), 1);
        relations = cms.getRelationsForResource(newLinkName, CmsRelationFilter.SOURCES);
        assertTrue(relations.isEmpty());

        cms.lockResource(sourceName);
        cms.writeFile(file);

        assertRelationOperation(cms, source, target, sources, 2);
        relations = cms.getRelationsForResource(newLinkName, CmsRelationFilter.TARGETS);
        assertEquals(relations.size(), 1);
        relations = cms.getRelationsForResource(newLinkName, CmsRelationFilter.SOURCES);
        assertEquals(relations.size(), 2); // since the source file has a sibling!

        // check the online project
        project = cms.getRequestContext().currentProject();
        cms.getRequestContext().setCurrentProject(cms.readProject(CmsProject.ONLINE_PROJECT_ID));

        relations = cms.getRelationsForResource(targetName, CmsRelationFilter.TARGETS);
        assertTrue(relations.isEmpty());
        sources = cms.getRelationsForResource(targetName, CmsRelationFilter.SOURCES).size();
        assertRelationOperation(cms, source, target, sources, 1);
        relations = cms.getRelationsForResource(newLinkName, CmsRelationFilter.TARGETS);
        assertEquals(relations.size(), 1);
        relations = cms.getRelationsForResource(newLinkName, CmsRelationFilter.SOURCES);
        assertTrue(relations.isEmpty());

        cms.getRequestContext().setCurrentProject(project);

        cms.unlockResource(sourceName);
        OpenCms.getPublishManager().publishResource(cms, sourceName);
        OpenCms.getPublishManager().waitWhileRunning();

        cms.getRequestContext().setCurrentProject(cms.readProject(CmsProject.ONLINE_PROJECT_ID));

        assertRelationOperation(cms, source, target, sources, 2);
        relations = cms.getRelationsForResource(newLinkName, CmsRelationFilter.TARGETS);
        assertEquals(relations.size(), 1);
        relations = cms.getRelationsForResource(newLinkName, CmsRelationFilter.SOURCES);
        assertEquals(relations.size(), 1);

        cms.getRequestContext().setCurrentProject(project);

        // now go back
        file = cms.readFile(source);
        page = CmsXmlPageFactory.unmarshal(cms, file);
        page.removeLocale(Locale.GERMAN);
        page.removeLocale(Locale.FRENCH);
        file.setContents(page.marshal());

        relations = cms.getRelationsForResource(newLinkName, CmsRelationFilter.TARGETS);
        assertEquals(relations.size(), 1);
        relations = cms.getRelationsForResource(newLinkName, CmsRelationFilter.SOURCES);
        assertEquals(relations.size(), 2); // since the source file has a sibling!

        cms.lockResource(sourceName);
        cms.writeFile(file);

        assertRelationOperation(cms, source, target, sources, 1);
        relations = cms.getRelationsForResource(newLinkName, CmsRelationFilter.TARGETS);
        assertEquals(relations.size(), 1);
        relations = cms.getRelationsForResource(newLinkName, CmsRelationFilter.SOURCES);
        assertTrue(relations.isEmpty());

        // check the online project
        project = cms.getRequestContext().currentProject();
        cms.getRequestContext().setCurrentProject(cms.readProject(CmsProject.ONLINE_PROJECT_ID));

        relations = cms.getRelationsForResource(targetName, CmsRelationFilter.TARGETS);
        assertTrue(relations.isEmpty());
        sources = cms.getRelationsForResource(targetName, CmsRelationFilter.SOURCES).size();
        assertRelationOperation(cms, source, target, sources, 2);
        relations = cms.getRelationsForResource(newLinkName, CmsRelationFilter.TARGETS);
        assertEquals(relations.size(), 1);
        relations = cms.getRelationsForResource(newLinkName, CmsRelationFilter.SOURCES);
        assertEquals(relations.size(), 1);

        cms.getRequestContext().setCurrentProject(project);

        cms.unlockResource(sourceName);
        OpenCms.getPublishManager().publishResource(cms, sourceName);
        OpenCms.getPublishManager().waitWhileRunning();

        cms.getRequestContext().setCurrentProject(cms.readProject(CmsProject.ONLINE_PROJECT_ID));

        assertRelationOperation(cms, source, target, sources, 1);
        relations = cms.getRelationsForResource(newLinkName, CmsRelationFilter.TARGETS);
        assertEquals(relations.size(), 1);
        relations = cms.getRelationsForResource(newLinkName, CmsRelationFilter.SOURCES);
        assertTrue(relations.isEmpty());
    }

    private void assertRelationOperation(
        CmsObject cms,
        CmsResource source,
        CmsResource target,
        int sources,
        int sourceRelations) throws CmsException {

        List relations = cms.getRelationsForResource(
            cms.getRequestContext().removeSiteRoot(source.getRootPath()),
            CmsRelationFilter.TARGETS);
        assertEquals(relations.size(), sourceRelations);
        if (relations.size() == 1) {
            CmsRelation expected = new CmsRelation(source, target, CmsRelationType.EMBEDDED_IMAGE);
            assertRelation(expected, (CmsRelation)relations.get(0));
        }
        relations = cms.getRelationsForResource(
            cms.getRequestContext().removeSiteRoot(source.getRootPath()),
            CmsRelationFilter.SOURCES);
        assertTrue(relations.isEmpty());

        relations = cms.getRelationsForResource(
            cms.getRequestContext().removeSiteRoot(target.getRootPath()),
            CmsRelationFilter.TARGETS);
        assertTrue(relations.isEmpty());
        relations = cms.getRelationsForResource(
            cms.getRequestContext().removeSiteRoot(target.getRootPath()),
            CmsRelationFilter.SOURCES);
        assertEquals(relations.size(), sources);
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -