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

📄 testlinkvalidation.java

📁 找了很久才找到到源代码
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
        resAll.add(res6);
        resAll.add(res7);
        validation = OpenCms.getPublishManager().validateRelations(
            cms,
            OpenCms.getPublishManager().getPublishList(cms, resAll, false),
            report);
        assertTrue(validation.isEmpty());

        // publish
        cms.unlockProject(cms.getRequestContext().currentProject().getUuid());
        OpenCms.getPublishManager().publishProject(cms, report);
        OpenCms.getPublishManager().waitWhileRunning();

        // check links after deletion
        touchResources(cms, resAll);

        validation = validateAfterDelete(cms, Collections.singletonList(res1), resAll, report);
        assertTrue(validation.isEmpty());

        validation = validateAfterDelete(cms, Collections.singletonList(res2), resAll, report);
        assertEquals(validation.size(), 2);
        assertTrue(validation.keySet().contains(cms.getRequestContext().addSiteRoot(filename1)));
        assertTrue(validation.keySet().contains(cms.getRequestContext().addSiteRoot(filename4)));
        brokenLinks = (List)validation.get(cms.getRequestContext().addSiteRoot(filename1));
        assertEquals(brokenLinks.size(), (mode == MODE_XMLCONTENT_BOTH ? 2 : 1));
        assertTrue(brokenLinks.contains(new CmsRelation(res1, res2, relType1)));
        if (mode == MODE_XMLCONTENT_BOTH) {
            assertTrue(brokenLinks.contains(new CmsRelation(res1, res2, CmsRelationType.XML_WEAK)));
        }

        brokenLinks = (List)validation.get(cms.getRequestContext().addSiteRoot(filename4));
        assertEquals(brokenLinks.size(), (mode == MODE_XMLCONTENT_BOTH ? 2 : 1));
        assertTrue(brokenLinks.contains(new CmsRelation(res4, res2, relType1)));
        if (mode == MODE_XMLCONTENT_BOTH) {
            assertTrue(brokenLinks.contains(new CmsRelation(res4, res2, CmsRelationType.XML_WEAK)));
        }

        validation = validateAfterDelete(cms, Collections.singletonList(res3), resAll, report);
        assertEquals(validation.size(), 1);
        assertTrue(validation.keySet().contains(cms.getRequestContext().addSiteRoot(filename1)));
        brokenLinks = (List)validation.get(cms.getRequestContext().addSiteRoot(filename1));
        assertEquals(brokenLinks.size(), 1);
        assertTrue(brokenLinks.contains(new CmsRelation(res1, res3, relType1)));

        validation = validateAfterDelete(cms, Collections.singletonList(res4), resAll, report);
        assertTrue(validation.isEmpty());

        validation = validateAfterDelete(cms, Collections.singletonList(res5), resAll, report);
        assertEquals(validation.size(), 1);
        assertTrue(validation.keySet().contains(cms.getRequestContext().addSiteRoot(filename6)));
        brokenLinks = (List)validation.get(cms.getRequestContext().addSiteRoot(filename6));
        assertEquals(brokenLinks.size(), (mode == MODE_XMLCONTENT_BOTH ? 2 : 1));
        assertTrue(brokenLinks.contains(new CmsRelation(res6, res5, relType1)));
        if (mode == MODE_XMLCONTENT_BOTH) {
            assertTrue(brokenLinks.contains(new CmsRelation(res6, res5, CmsRelationType.XML_WEAK)));
        }

        validation = validateAfterDelete(cms, Collections.singletonList(res6), resAll, report);
        assertEquals(validation.size(), 1);
        assertTrue(validation.keySet().contains(cms.getRequestContext().addSiteRoot(filename5)));
        brokenLinks = (List)validation.get(cms.getRequestContext().addSiteRoot(filename5));
        assertEquals(brokenLinks.size(), (mode == MODE_XMLCONTENT_BOTH ? 2 : 1));
        assertTrue(brokenLinks.contains(new CmsRelation(res5, res6, relType1)));
        if (mode == MODE_XMLCONTENT_BOTH) {
            assertTrue(brokenLinks.contains(new CmsRelation(res5, res6, CmsRelationType.XML_WEAK)));
        }

        validation = validateAfterDelete(cms, Collections.singletonList(res7), resAll, report);
        assertTrue(validation.isEmpty());
        validation = validateAfterDelete(cms, res56, resAll, report);
        assertTrue(validation.isEmpty());

        // check links after modification

        // Publishing after deleting file5 and changing the link 
        // from file6 on file5 to file7 must generate no errors
        CmsResource file5 = cms.readResource(filename5); // keeping the id for restoration
        delete(cms, filename5, report);
        switch (mode) {
            case 1:
                setXmlContent(cms, filename6, "<a href='" + filename7 + "'>file7</a>", filename7);
                break;
            case 2:
                setXmlContentHtml(cms, filename6, "<a href='" + filename7 + "'>file7</a>");
                break;
            case 3:
                setXmlContentFileRef(cms, filename6, filename7, null);
                break;
            default:
                setContent(cms, filename6, "<a href='" + filename7 + "'>file7</a>");
                break;

        }
        List resources = new ArrayList(resAll);
        resources.remove(res5);
        cms.unlockProject(cms.getRequestContext().currentProject().getUuid());
        validation = OpenCms.getPublishManager().validateRelations(
            cms,
            OpenCms.getPublishManager().getPublishList(cms, resources, false),
            report);
        assertTrue(validation.isEmpty());
        switch (mode) {
            case 1:
                setXmlContent(cms, filename6, content6, filename5);
                break;
            case 2:
                setXmlContentHtml(cms, filename6, content6);
                break;
            case 3:
                setXmlContentFileRef(cms, filename6, filename5, null);
                break;
            default:
                setContent(cms, filename6, content6);
                break;

        }
        restore(cms, file5, report);

        // Publishing after deleting file2 and changing the link from file4 on file2 to file7 
        // and removing the link from file1 on file2 must generate no errors 
        CmsResource file2 = cms.readResource(filename2); // keeping id for restoration
        delete(cms, filename2, report);
        switch (mode) {
            case 1:
                setXmlContent(cms, filename1, "no link!", null);
                setXmlContent(cms, filename4, "<a href='" + filename7 + "'>file7</a>", filename7);
                break;
            case 2:
                setXmlContentHtml(cms, filename1, "no link!");
                setXmlContentHtml(cms, filename4, "<a href='" + filename7 + "'>file7</a>");
                break;
            case 3:
                setXmlContentFileRef(cms, filename1, null, null);
                setXmlContentFileRef(cms, filename4, filename7, null);
                break;
            default:
                setContent(cms, filename1, "no link!");
                setContent(cms, filename4, "<a href='" + filename7 + "'>file7</a>");
                break;

        }
        resources = new ArrayList(resAll);
        resources.remove(res2);
        cms.unlockProject(cms.getRequestContext().currentProject().getUuid());
        validation = OpenCms.getPublishManager().validateRelations(
            cms,
            OpenCms.getPublishManager().getPublishList(cms, resources, false),
            report);
        assertTrue(validation.isEmpty());
        switch (mode) {
            case 1:
                setXmlContent(cms, filename1, content1, filename2);
                setXmlContent(cms, filename4, content4, filename2);
                break;
            case 2:
                setXmlContentHtml(cms, filename1, content1);
                setXmlContentHtml(cms, filename4, content4);
                break;
            case 3:
                setXmlContentFileRef(cms, filename1, filename2, filename3);
                setXmlContentFileRef(cms, filename4, filename2, null);
                break;
            default:
                setContent(cms, filename1, content1);
                setContent(cms, filename4, content4);
                break;

        }
        restore(cms, file2, report);

        // Publishing just file7 after creating a new file8 and creating a link 
        // from file7 to file8 must generate one error
        CmsResource res8 = cms.createResource(filename8, type);
        switch (mode) {
            case 1:
                setXmlContent(cms, filename7, "<a href='" + filename8 + "'>file8</a>", filename8);
                break;
            case 2:
                setXmlContentHtml(cms, filename7, "<a href='" + filename8 + "'>file8</a>");
                break;
            case 3:
                setXmlContentFileRef(cms, filename7, filename8, null);
                break;
            default:
                setContent(cms, filename7, "<a href='" + filename8 + "'>file8</a>");
                break;

        }
        cms.unlockProject(cms.getRequestContext().currentProject().getUuid());
        validation = OpenCms.getPublishManager().validateRelations(
            cms,
            OpenCms.getPublishManager().getPublishList(cms, Collections.singletonList(res7), false),
            report);
        assertEquals(validation.size(), 1);
        assertTrue(validation.keySet().contains(cms.getRequestContext().addSiteRoot(filename7)));
        brokenLinks = (List)validation.get(cms.getRequestContext().addSiteRoot(filename7));
        assertEquals(brokenLinks.size(), (mode == MODE_XMLCONTENT_BOTH ? 2 : 1));
        assertTrue(brokenLinks.contains(new CmsRelation(res7, res8, relType1)));
        if (mode == MODE_XMLCONTENT_BOTH) {
            assertTrue(brokenLinks.contains(new CmsRelation(res7, res8, CmsRelationType.XML_WEAK)));
        }

        // Publishing after creating a new file8 and creating a link 
        // from file7 to file8 must generate no errors
        List res78 = new ArrayList();
        res78.add(res7);
        res78.add(res8);
        validation = OpenCms.getPublishManager().validateRelations(
            cms,
            OpenCms.getPublishManager().getPublishList(cms, res78, false),
            report);
        assertTrue(validation.isEmpty());

        // Linking file8 to file7
        switch (mode) {
            case 1:
                setXmlContent(cms, filename8, "<a href='" + filename7 + "'>file7</a>", filename7);
                break;
            case 2:
                setXmlContentHtml(cms, filename8, "<a href='" + filename7 + "'>file7</a>");
                break;
            case 3:
                setXmlContentFileRef(cms, filename8, filename7, null);
                break;
            default:
                setContent(cms, filename8, "<a href='" + filename7 + "'>file7</a>");
                break;

        }
        // first publish
        OpenCms.getPublishManager().publishResource(cms, filename7);
        OpenCms.getPublishManager().publishResource(cms, filename8);
        OpenCms.getPublishManager().waitWhileRunning();
        // now check the link validation if you want to delete one of them
        cms.lockResource(filename7);
        cms.deleteResource(filename7, CmsResource.DELETE_PRESERVE_SIBLINGS);
        cms.unlockProject(cms.getRequestContext().currentProject().getUuid());

        validation = OpenCms.getPublishManager().validateRelations(
            cms,
            OpenCms.getPublishManager().getPublishList(
                cms,
                Collections.singletonList(cms.readResource(filename7, CmsResourceFilter.ALL)),
                false),
            report);

        assertEquals(validation.size(), 1);
        assertTrue(validation.keySet().contains(cms.getRequestContext().addSiteRoot(filename7)));
        brokenLinks = (List)validation.get(cms.getRequestContext().addSiteRoot(filename7));
        assertEquals(brokenLinks.size(), (mode == MODE_XMLCONTENT_BOTH ? 2 : 1));
        assertTrue(brokenLinks.contains(new CmsRelation(res8, res7, relType1)));
        if (mode == MODE_XMLCONTENT_BOTH) {
            assertTrue(brokenLinks.contains(new CmsRelation(res8, res7, CmsRelationType.XML_WEAK)));
        }

        // then check the link if you want to delete them together
        cms.lockResource(filename8);
        cms.deleteResource(filename8, CmsResource.DELETE_PRESERVE_SIBLINGS);
        cms.unlockProject(cms.getRequestContext().currentProject().getUuid());

        res78 = new ArrayList();
        res78.add(cms.readResource(filename7, CmsResourceFilter.ALL));
        res78.add(cms.readResource(filename8, CmsResourceFilter.ALL));
        validation = OpenCms.getPublishManager().validateRelations(
            cms,
            OpenCms.getPublishManager().getPublishList(cms, res78, false),
            report);

        assertTrue(validation.isEmpty());

    }

    /**
     * Touch all resources in the given list.<p>
     * 
     * @param cms the cms context
     * @param resources the resources to touch
     * @throws CmsException if something goes wrong
     */
    private void touchResources(CmsObject cms, List resources) throws CmsException {

        Iterator it = resources.iterator();
        while (it.hasNext()) {
            CmsResource resource = (CmsResource)it.next();
            String resName = cms.getRequestContext().removeSiteRoot(resource.getRootPath());
            cms.lockResource(resName);
            cms.setDateLastModified(resName, System.currentTimeMillis(), false);
        }
    }

    /**
     * Validates the links after the deletion of all the given resources.<p>
     * 
     * @param cms the cms context
     * @param resources the resources to delete
     * @param allResources the resource context
     * @param report the report
     * 
     * @return the validation map
     * 
     * @throws Exception if something goes wrong
     */
    private Map validateAfterDelete(CmsObject cms, List resources, List allResources, CmsShellReport report)
    throws Exception {

        List otherRes = new ArrayList(allResources);
        Iterator itRes = resources.iterator();
        while (itRes.hasNext()) {
            CmsResource resource = (CmsResource)itRes.next();
            String resName = cms.getRequestContext().getSitePath(resource);
            delete(cms, resName, report);
            otherRes.remove(resource);
        }
        cms.unlockProject(cms.getRequestContext().currentProject().getUuid());
        Map validation = OpenCms.getPublishManager().validateRelations(
            cms,
            OpenCms.getPublishManager().getPublishList(cms, otherRes, false),
            report);
        itRes = resources.iterator();
        while (itRes.hasNext()) {
            CmsResource resource = (CmsResource)itRes.next();
            restore(cms, resource, report);
        }
        touchResources(cms, resources);
        return validation;
    }
}

⌨️ 快捷键说明

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