Search in sources :

Example 86 with Tx

use of org.structr.core.graph.Tx in project structr by structr.

the class DOMNodeTest method testRemoveChildNode.

@Test
public void testRemoveChildNode() {
    try (final Tx tx = app.tx()) {
        Document document = getDocument();
        assertNotNull(document);
        Text test1 = document.createTextNode("test1");
        Text test2 = document.createTextNode("test2");
        Text test3 = document.createTextNode("test3");
        Text test4 = document.createTextNode("test4");
        Text test5 = document.createTextNode("test5");
        Text test6 = document.createTextNode("test6");
        assertNotNull(test1);
        assertNotNull(test2);
        assertNotNull(test3);
        assertNotNull(test4);
        assertNotNull(test5);
        assertNotNull(test6);
        Element div = document.createElement("div");
        assertNotNull(div);
        // add children
        div.appendChild(test1);
        div.appendChild(test2);
        div.appendChild(test3);
        div.appendChild(test4);
        div.appendChild(test5);
        // note that we do NOT add test6 as a child!
        NodeList children1 = div.getChildNodes();
        assertEquals(test1, children1.item(0));
        assertEquals(test2, children1.item(1));
        assertEquals(test3, children1.item(2));
        assertEquals(test4, children1.item(3));
        assertEquals(test5, children1.item(4));
        // test remove child node method
        div.removeChild(test3);
        NodeList children2 = div.getChildNodes();
        assertEquals(test1, children2.item(0));
        assertEquals(test2, children2.item(1));
        assertEquals(test4, children2.item(2));
        assertEquals(test5, children2.item(3));
        // test remove child node method
        div.removeChild(test1);
        NodeList children3 = div.getChildNodes();
        assertEquals(test2, children3.item(0));
        assertEquals(test4, children3.item(1));
        assertEquals(test5, children3.item(2));
        // and finally, test errors that should be raised
        try {
            div.removeChild(test6);
            fail("Removing a node that is not a child of the given node should raise a DOMException");
        } catch (DOMException dex) {
            assertEquals(DOMException.NOT_FOUND_ERR, dex.code);
        }
        tx.success();
    } catch (FrameworkException fex) {
        fail("unexpected exception");
    }
}
Also used : DOMException(org.w3c.dom.DOMException) Tx(org.structr.core.graph.Tx) FrameworkException(org.structr.common.error.FrameworkException) Element(org.w3c.dom.Element) NodeList(org.w3c.dom.NodeList) Text(org.w3c.dom.Text) Document(org.w3c.dom.Document) DOMTest(org.structr.web.advanced.DOMTest) Test(org.junit.Test)

Example 87 with Tx

use of org.structr.core.graph.Tx in project structr by structr.

the class PageTest method testAdoptNodes.

@Test
public void testAdoptNodes() {
    try {
        try (final Tx tx = app.tx()) {
            Page srcPage = Page.createNewPage(securityContext, "srcPage");
            assertTrue(srcPage != null);
            assertTrue(srcPage instanceof Page);
            Node html = srcPage.createElement("html");
            Node head = srcPage.createElement("head");
            Node body = srcPage.createElement("body");
            Node title = srcPage.createElement("title");
            Node h1 = srcPage.createElement("h1");
            Node div = srcPage.createElement("div");
            Node p = srcPage.createElement("p");
            // add HTML element to page
            srcPage.appendChild(html);
            // add HEAD and BODY elements to HTML
            html.appendChild(head);
            html.appendChild(body);
            // add TITLE element to HEAD
            head.appendChild(title);
            // add H1 element to BODY
            body.appendChild(h1);
            // add DIV element to BODY
            body.appendChild(div);
            div.appendChild(p);
            // add text element to P
            p.appendChild(srcPage.createTextNode("First Paragraph"));
            Page dstPage = Page.createNewPage(securityContext, "dstPage");
            assertNotNull(dstPage);
            // test adopt method
            dstPage.adoptNode(html);
            // has parent been removed for the source element?
            assertNull(html.getParentNode());
            // has owner changed for all elements?
            assertEquals(dstPage, html.getOwnerDocument());
            assertEquals(dstPage, head.getOwnerDocument());
            assertEquals(dstPage, body.getOwnerDocument());
            assertEquals(dstPage, title.getOwnerDocument());
            assertEquals(dstPage, h1.getOwnerDocument());
            assertEquals(dstPage, div.getOwnerDocument());
            assertEquals(dstPage, p.getOwnerDocument());
            // have parents been kept for all other elements?
            assertEquals(html, head.getParentNode());
            assertEquals(html, body.getParentNode());
            assertEquals(head, title.getParentNode());
            assertEquals(body, h1.getParentNode());
            assertEquals(body, div.getParentNode());
            assertEquals(div, p.getParentNode());
            // srcPage should not have a document element any more
            assertNull(srcPage.getDocumentElement());
            // srcPage should have exactly one child element
            assertEquals(1, srcPage.getChildNodes().getLength());
            tx.success();
        } catch (DOMException dex) {
            throw new FrameworkException(422, dex.getMessage());
        }
    } catch (FrameworkException ex) {
        fail("Unexpected exception");
    }
}
Also used : DOMException(org.w3c.dom.DOMException) Tx(org.structr.core.graph.Tx) FrameworkException(org.structr.common.error.FrameworkException) Node(org.w3c.dom.Node) Test(org.junit.Test) StructrUiTest(org.structr.web.StructrUiTest)

Example 88 with Tx

use of org.structr.core.graph.Tx in project structr by structr.

the class PageTest method testImportNodesDeep.

@Test
public void testImportNodesDeep() {
    try (final Tx tx = app.tx()) {
        Page srcPage = Page.createNewPage(securityContext, "srcPage");
        assertTrue(srcPage != null);
        assertTrue(srcPage instanceof Page);
        Node html = srcPage.createElement("html");
        Node head = srcPage.createElement("head");
        Node body = srcPage.createElement("body");
        Node title = srcPage.createElement("title");
        Node h1 = srcPage.createElement("h1");
        Node div = srcPage.createElement("div");
        Node p = srcPage.createElement("p");
        // add HTML element to page
        srcPage.appendChild(html);
        // add HEAD and BODY elements to HTML
        html.appendChild(head);
        html.appendChild(body);
        // add TITLE element to HEAD
        head.appendChild(title);
        // add H1 element to BODY
        body.appendChild(h1);
        // add DIV element to BODY
        body.appendChild(div);
        div.appendChild(p);
        // add text element to P
        p.appendChild(srcPage.createTextNode("First Paragraph"));
        Page dstPage = Page.createNewPage(securityContext, "dstPage");
        assertNotNull(dstPage);
        // test
        assertEquals(srcPage, html.getOwnerDocument());
        makePublic(srcPage, dstPage, html, head, body, title, h1, div, p);
        // test import method
        dstPage.importNode(html, true);
        // has parent been removed for the source element?
        assertNull(html.getParentNode());
        // same owner for all elements?
        assertEquals(srcPage, html.getOwnerDocument());
        assertEquals(srcPage, head.getOwnerDocument());
        assertEquals(srcPage, body.getOwnerDocument());
        assertEquals(srcPage, title.getOwnerDocument());
        assertEquals(srcPage, h1.getOwnerDocument());
        assertEquals(srcPage, div.getOwnerDocument());
        assertEquals(srcPage, p.getOwnerDocument());
        // have parents been kept for all other elements?
        assertEquals(html, head.getParentNode());
        assertEquals(html, body.getParentNode());
        assertEquals(head, title.getParentNode());
        assertEquals(body, h1.getParentNode());
        assertEquals(body, div.getParentNode());
        assertEquals(div, p.getParentNode());
        tx.success();
    } catch (Exception ex) {
        logger.warn("", ex);
        fail("Unexpected exception");
    }
    try (final Tx tx = app.tx()) {
        Document srcDoc = Jsoup.connect(baseUri + "srcPage").get();
        Document dstDoc = Jsoup.connect(baseUri + "dstPage").get();
        // pages should render exactly identical
        assertEquals(srcDoc.outerHtml(), dstDoc.outerHtml());
        tx.success();
    } catch (Exception ex) {
        logger.warn("", ex);
        fail("Unexpected exception");
    }
}
Also used : Tx(org.structr.core.graph.Tx) Node(org.w3c.dom.Node) Document(org.jsoup.nodes.Document) FrameworkException(org.structr.common.error.FrameworkException) DOMException(org.w3c.dom.DOMException) Test(org.junit.Test) StructrUiTest(org.structr.web.StructrUiTest)

Example 89 with Tx

use of org.structr.core.graph.Tx in project structr by structr.

the class PageTest method testGetElementsByTagName.

@Test
public void testGetElementsByTagName() {
    final String pageName = "page-01";
    try {
        try (final Tx tx = app.tx()) {
            Page page = Page.createNewPage(securityContext, pageName);
            assertTrue(page != null);
            assertTrue(page instanceof Page);
            DOMNode html = (DOMNode) page.createElement("html");
            DOMNode head = (DOMNode) page.createElement("head");
            DOMNode body = (DOMNode) page.createElement("body");
            DOMNode title = (DOMNode) page.createElement("title");
            DOMNode h1 = (DOMNode) page.createElement("h1");
            DOMNode div1 = (DOMNode) page.createElement("div");
            DOMNode p1 = (DOMNode) page.createElement("p");
            DOMNode div2 = (DOMNode) page.createElement("div");
            DOMNode p2 = (DOMNode) page.createElement("p");
            DOMNode div3 = (DOMNode) page.createElement("div");
            DOMNode p3 = (DOMNode) page.createElement("p");
            // add HTML element to page
            page.appendChild(html);
            // add HEAD and BODY elements to HTML
            html.appendChild(head);
            html.appendChild(body);
            // add TITLE element to HEAD
            head.appendChild(title);
            // add H1 element to BODY
            body.appendChild(h1);
            // add DIV element 1 to BODY
            body.appendChild(div1);
            div1.appendChild(p1);
            // add DIV element 2 to DIV
            div1.appendChild(div2);
            div2.appendChild(p2);
            // add DIV element 3 to DIV
            div2.appendChild(div3);
            div3.appendChild(p3);
            NodeList divs = page.getElementsByTagName("p");
            assertEquals(p1, divs.item(0));
            assertEquals(p2, divs.item(1));
            assertEquals(p3, divs.item(2));
            tx.success();
        } catch (Exception ex) {
            throw new FrameworkException(422, ex.getMessage());
        }
    } catch (FrameworkException ex) {
        fail("Unexpected exception");
    }
}
Also used : Tx(org.structr.core.graph.Tx) FrameworkException(org.structr.common.error.FrameworkException) NodeList(org.w3c.dom.NodeList) FrameworkException(org.structr.common.error.FrameworkException) DOMException(org.w3c.dom.DOMException) Test(org.junit.Test) StructrUiTest(org.structr.web.StructrUiTest)

Example 90 with Tx

use of org.structr.core.graph.Tx in project structr by structr.

the class StructrLDAPClientModuleTest method createTestRelationship.

protected <T extends Relation> T createTestRelationship(final AbstractNode startNode, final AbstractNode endNode, final Class<T> relType) throws FrameworkException {
    try (final Tx tx = app.tx()) {
        final T rel = (T) app.create(startNode, endNode, relType);
        tx.success();
        return rel;
    }
}
Also used : Tx(org.structr.core.graph.Tx)

Aggregations

Tx (org.structr.core.graph.Tx)892 FrameworkException (org.structr.common.error.FrameworkException)684 Test (org.junit.Test)461 App (org.structr.core.app.App)201 StructrApp (org.structr.core.app.StructrApp)201 StructrUiTest (org.structr.web.StructrUiTest)139 NodeInterface (org.structr.core.graph.NodeInterface)117 StructrTest (org.structr.common.StructrTest)108 IOException (java.io.IOException)105 PropertyMap (org.structr.core.property.PropertyMap)102 LinkedList (java.util.LinkedList)99 TestOne (org.structr.core.entity.TestOne)98 File (org.structr.web.entity.File)83 Page (org.structr.web.entity.dom.Page)71 Principal (org.structr.core.entity.Principal)65 Folder (org.structr.web.entity.Folder)65 PropertyKey (org.structr.core.property.PropertyKey)62 NodeAttribute (org.structr.core.graph.NodeAttribute)57 SchemaNode (org.structr.core.entity.SchemaNode)45 AbstractFile (org.structr.web.entity.AbstractFile)44