Search in sources :

Example 1 with Page

use of org.xwiki.rest.model.jaxb.Page in project xwiki-platform by xwiki.

the class DocumentCacheTest method testDocumentModifiedCacheSync.

@Test
public void testDocumentModifiedCacheSync() throws Exception {
    Page page = new Page();
    page.setSpace(TEST_SPACE);
    page.setName("CacheSync");
    LocalDocumentReference documentReference = new LocalDocumentReference(page.getSpace(), page.getName());
    // 1) Edit a page on XWiki 0
    getUtil().switchExecutor(0);
    page.setContent("content");
    getUtil().rest().save(page);
    Assert.assertEquals("content", getUtil().rest().<Page>get(documentReference).getContent());
    // 2) Modify content of the page on XWiki 1
    getUtil().switchExecutor(1);
    page.setContent("modified content");
    getUtil().rest().save(page);
    Assert.assertEquals("modified content", getUtil().rest().<Page>get(documentReference).getContent());
    // ASSERT) The content in XWiki 0 should be the one set than in XWiki 1
    // Since it can take time for the Cluster to propagate the change, we need to wait and set up a timeout.
    getUtil().switchExecutor(0);
    long t1 = System.currentTimeMillis();
    long t2;
    String result;
    while (!(result = getUtil().rest().<Page>get(documentReference).getContent()).equalsIgnoreCase("modified content")) {
        t2 = System.currentTimeMillis();
        if (t2 - t1 > 10000L) {
            Assert.fail("Content should have been [modified content] but was [" + result + "]");
        }
        Thread.sleep(100);
    }
}
Also used : LocalDocumentReference(org.xwiki.model.reference.LocalDocumentReference) Page(org.xwiki.rest.model.jaxb.Page) Test(org.junit.Test) AbstractClusterHttpTest(org.xwiki.test.cluster.framework.AbstractClusterHttpTest)

Example 2 with Page

use of org.xwiki.rest.model.jaxb.Page in project xwiki-platform by xwiki.

the class DocumentCacheTest method testDocumentDeletedCacheSync.

@Test
public void testDocumentDeletedCacheSync() throws Exception {
    Page page = new Page();
    page.setSpace(TEST_SPACE);
    page.setName("CacheSync");
    LocalDocumentReference documentReference = new LocalDocumentReference(page.getSpace(), page.getName());
    // 1) Make sure page exist on XWiki 0
    getUtil().switchExecutor(0);
    page.setContent("content");
    getUtil().rest().save(page);
    Assert.assertEquals("content", getUtil().rest().<Page>get(documentReference).getContent());
    // 2) Delete page on XWiki 1
    getUtil().switchExecutor(1);
    // Need superadmin to delete document
    getUtil().loginAsSuperAdmin();
    getUtil().rest().delete(documentReference);
    Assert.assertFalse(getUtil().rest().exists(documentReference));
    // ASSERT) The document should be deleted on XWiki 0
    // Since it can take time for the Cluster to propagate the change, we need to wait and set up a timeout.
    getUtil().switchExecutor(0);
    long t1 = System.currentTimeMillis();
    long t2;
    while (getUtil().rest().exists(documentReference)) {
        t2 = System.currentTimeMillis();
        if (t2 - t1 > 10000L) {
            Assert.fail("Document shoud not exist anymore");
        }
        Thread.sleep(100);
    }
}
Also used : LocalDocumentReference(org.xwiki.model.reference.LocalDocumentReference) Page(org.xwiki.rest.model.jaxb.Page) Test(org.junit.Test) AbstractClusterHttpTest(org.xwiki.test.cluster.framework.AbstractClusterHttpTest)

Example 3 with Page

use of org.xwiki.rest.model.jaxb.Page in project xwiki-platform by xwiki.

the class PanelsTest method testModifyPanel.

@Test
public void testModifyPanel() throws Exception {
    String panelContent = "Hey I'm here !";
    String modifiedPanelContent = "Hey I'm still here !";
    String id = "testpanel";
    // Create panel on node 0
    getUtil().switchExecutor(0);
    Page panelPage = getUtil().rest().page(PANEL_REFERENCE);
    panelPage.setObjects(new Objects());
    org.xwiki.rest.model.jaxb.Object panelObject = object(PanelClassDocumentInitializer.CLASS_REFERENCE_STRING);
    panelObject.getProperties().add(property("content", "(%id='" + id + "'%)" + panelContent));
    panelPage.getObjects().getObjectSummaries().add(panelObject);
    getUtil().rest().save(panelPage);
    // Add the panel to wiki right panels
    getUtil().setWikiPreference("rightPanels", "Test.SharedPanel");
    getUtil().gotoPage(HOME_REFERENCE);
    assertEquals(panelContent, getUtil().getDriver().findElement(By.id(id)).getText());
    // Display panel on node 1
    getUtil().switchExecutor(1);
    getUtil().gotoPage(HOME_REFERENCE);
    assertEquals(panelContent, getUtil().getDriver().findElement(By.id(id)).getText());
    // Modify panel on node 1
    panelObject = getUtil().rest().object(PANEL_REFERENCE, PanelClassDocumentInitializer.CLASS_REFERENCE_STRING);
    panelObject.getProperties().add(property("content", "(%id='" + id + "'%)" + modifiedPanelContent));
    getUtil().rest().update(panelObject);
    // Reload the page after modifying the panel
    getUtil().getDriver().navigate().refresh();
    assertEquals(modifiedPanelContent, getUtil().getDriver().findElement(By.id(id)).getText());
    // Verify panel rendering on node 0
    // Since it can take time for the Cluster to propagate the change, we need to wait and set up a timeout.
    getUtil().switchExecutor(0);
    getUtil().gotoPage(HOME_REFERENCE);
    long t1 = System.currentTimeMillis();
    long t2;
    String result;
    assertEquals(modifiedPanelContent, getUtil().getDriver().findElement(By.id(id)).getText());
    while (!(result = getUtil().getDriver().findElement(By.id(id)).getText()).equalsIgnoreCase(modifiedPanelContent)) {
        t2 = System.currentTimeMillis();
        if (t2 - t1 > 10000L) {
            Assert.fail("Content should have been [" + modifiedPanelContent + "] but was [" + result + "]");
        }
        Thread.sleep(100);
        getUtil().getDriver().navigate().refresh();
    }
}
Also used : Objects(org.xwiki.rest.model.jaxb.Objects) Page(org.xwiki.rest.model.jaxb.Page) Test(org.junit.Test) AbstractClusterHttpTest(org.xwiki.test.cluster.framework.AbstractClusterHttpTest)

Example 4 with Page

use of org.xwiki.rest.model.jaxb.Page in project xwiki-platform by xwiki.

the class ModelFactory method toRestPage.

public Page toRestPage(URI baseUri, URI self, Document doc, boolean useVersion, Boolean withPrettyNames, Boolean withObjects, Boolean withXClass, Boolean withAttachments) throws XWikiException {
    Page page = this.objectFactory.createPage();
    toRestPageSummary(page, baseUri, doc, useVersion, withPrettyNames);
    XWikiContext xwikiContext = this.xcontextProvider.get();
    page.setMajorVersion(doc.getRCSVersion().at(0));
    page.setMinorVersion(doc.getRCSVersion().at(1));
    page.setHidden(doc.isHidden());
    page.setLanguage(doc.getLocale().toString());
    page.setCreator(doc.getCreator());
    if (withPrettyNames) {
        page.setCreatorName(xwikiContext.getWiki().getUserName(doc.getCreator(), null, false, xwikiContext));
    }
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(doc.getCreationDate());
    page.setCreated(calendar);
    page.setModifier(doc.getContentAuthor());
    if (withPrettyNames) {
        page.setModifierName(xwikiContext.getWiki().getUserName(doc.getContentAuthor(), null, false, xwikiContext));
    }
    calendar = Calendar.getInstance();
    calendar.setTime(doc.getContentUpdateDate());
    page.setModified(calendar);
    page.setComment(doc.getComment());
    page.setContent(doc.getContent());
    if (self != null) {
        Link pageLink = this.objectFactory.createLink();
        pageLink.setHref(self.toString());
        pageLink.setRel(Relations.SELF);
        page.getLinks().add(pageLink);
    }
    com.xpn.xwiki.api.Class xwikiClass = doc.getxWikiClass();
    if (xwikiClass != null) {
        String classUri = Utils.createURI(baseUri, ClassResource.class, doc.getWiki(), xwikiClass.getName()).toString();
        Link classLink = this.objectFactory.createLink();
        classLink.setHref(classUri);
        classLink.setRel(Relations.CLASS);
        page.getLinks().add(classLink);
    }
    XWikiContext xcontext = xcontextProvider.get();
    // Add attachments
    if (withAttachments) {
        page.setAttachments(objectFactory.createAttachments());
        for (com.xpn.xwiki.api.Attachment attachment : doc.getAttachmentList()) {
            URL url = xcontext.getURLFactory().createAttachmentURL(attachment.getFilename(), doc.getSpace(), doc.getName(), "download", null, doc.getWiki(), xcontext);
            String attachmentXWikiAbsoluteUrl = url.toString();
            String attachmentXWikiRelativeUrl = xcontext.getURLFactory().getURL(url, xcontext);
            page.getAttachments().getAttachments().add(toRestAttachment(baseUri, attachment, attachmentXWikiRelativeUrl, attachmentXWikiAbsoluteUrl, withPrettyNames, false));
        }
    }
    // Add objects
    if (withObjects) {
        page.setObjects(objectFactory.createObjects());
        XWikiDocument xwikiDocument = xcontext.getWiki().getDocument(doc.getDocumentReference(), xcontext);
        for (List<BaseObject> objects : xwikiDocument.getXObjects().values()) {
            for (BaseObject object : objects) {
                // Deleting an object leads to a null entry in the list of objects.
                if (object != null) {
                    page.getObjects().getObjectSummaries().add(toRestObject(baseUri, doc, object, false, withPrettyNames));
                }
            }
        }
    }
    // Add xclass
    if (withXClass) {
        page.setClazz(toRestClass(baseUri, doc.getxWikiClass()));
    }
    return page;
}
Also used : ClassResource(org.xwiki.rest.resources.classes.ClassResource) Calendar(java.util.Calendar) XWikiContext(com.xpn.xwiki.XWikiContext) Page(org.xwiki.rest.model.jaxb.Page) URL(java.net.URL) BaseObject(com.xpn.xwiki.objects.BaseObject) XWikiDocument(com.xpn.xwiki.doc.XWikiDocument) Link(org.xwiki.rest.model.jaxb.Link)

Example 5 with Page

use of org.xwiki.rest.model.jaxb.Page in project xwiki-platform by xwiki.

the class RepositoryTestUtils method addExtension.

public void addExtension(RemoteExtension extension) throws Exception {
    // Delete any pre existing extension
    this.testUtils.rest().delete(getExtensionPageReference(extension));
    // Create Page
    Page extensionPage = this.testUtils.rest().page(getExtensionPageReference(extension));
    extensionPage.setObjects(new Objects());
    // Add extension object
    extensionPage.getObjects().getObjectSummaries().add(extensionObject(extension));
    // Add the ExtensionVersion object
    extensionPage.getObjects().getObjectSummaries().add(extensionVersionObject(extension));
    // Add the ExtensionDependency objects
    extensionPage.getObjects().getObjectSummaries().addAll(extensionDependencyObjects(extension));
    // Save the extension page
    this.testUtils.rest().save(extensionPage, TestUtils.STATUS_CREATED);
    // Attach the extension file
    attachFile(extension);
}
Also used : Objects(org.xwiki.rest.model.jaxb.Objects) Page(org.xwiki.rest.model.jaxb.Page) ObjectEditPage(org.xwiki.test.ui.po.editor.ObjectEditPage)

Aggregations

Page (org.xwiki.rest.model.jaxb.Page)40 Test (org.junit.Test)29 AbstractHttpTest (org.xwiki.test.rest.framework.AbstractHttpTest)21 GetMethod (org.apache.commons.httpclient.methods.GetMethod)18 PutMethod (org.apache.commons.httpclient.methods.PutMethod)15 Link (org.xwiki.rest.model.jaxb.Link)15 Object (org.xwiki.rest.model.jaxb.Object)8 Objects (org.xwiki.rest.model.jaxb.Objects)8 LocalDocumentReference (org.xwiki.model.reference.LocalDocumentReference)6 Property (org.xwiki.rest.model.jaxb.Property)6 PostMethod (org.apache.commons.httpclient.methods.PostMethod)5 DocumentReference (org.xwiki.model.reference.DocumentReference)4 ObjectSummary (org.xwiki.rest.model.jaxb.ObjectSummary)4 Before (org.junit.Before)3 History (org.xwiki.rest.model.jaxb.History)3 HistorySummary (org.xwiki.rest.model.jaxb.HistorySummary)3 ObjectFactory (org.xwiki.rest.model.jaxb.ObjectFactory)3 PageResource (org.xwiki.rest.resources.pages.PageResource)3 AbstractClusterHttpTest (org.xwiki.test.cluster.framework.AbstractClusterHttpTest)3 NameValuePair (org.apache.commons.httpclient.NameValuePair)2