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);
}
}
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);
}
}
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();
}
}
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;
}
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);
}
Aggregations