use of org.xwiki.model.reference.LocalDocumentReference in project xwiki-platform by xwiki.
the class SendMailConfigClassDocumentConfigurationSourceTest method getPropertyWhenSendMailConfigClassXObjectExists.
@Test
public void getPropertyWhenSendMailConfigClassXObjectExists() throws Exception {
ConverterManager converterManager = this.mocker.getInstance(ConverterManager.class);
when(converterManager.convert(String.class, "value")).thenReturn("value");
Cache<Object> cache = mock(Cache.class);
CacheManager cacheManager = this.mocker.getInstance(CacheManager.class);
when(cacheManager.createNewCache(any(CacheConfiguration.class))).thenReturn(cache);
WikiDescriptorManager wikiDescriptorManager = this.mocker.getInstance(WikiDescriptorManager.class);
when(wikiDescriptorManager.getCurrentWikiId()).thenReturn("wiki");
LocalDocumentReference classReference = new LocalDocumentReference("Mail", "SendMailConfigClass");
BaseProperty property = mock(BaseProperty.class);
when(property.toText()).thenReturn("value");
BaseObject object = mock(BaseObject.class);
when(object.getField("key")).thenReturn(property);
XWikiDocument document = mock(XWikiDocument.class);
when(document.getXObject(classReference)).thenReturn(object);
DocumentReference documentReference = new DocumentReference("wiki", "Mail", "MailConfig");
XWiki xwiki = mock(XWiki.class);
when(xwiki.getDocument(eq(documentReference), any(XWikiContext.class))).thenReturn(document);
XWikiContext xcontext = mock(XWikiContext.class);
when(xcontext.getWiki()).thenReturn(xwiki);
Provider<XWikiContext> xcontextProvider = this.mocker.registerMockComponent(XWikiContext.TYPE_PROVIDER);
when(xcontextProvider.get()).thenReturn(xcontext);
assertEquals("value", this.mocker.getComponentUnderTest().getProperty("key", "defaultValue"));
}
use of org.xwiki.model.reference.LocalDocumentReference 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.model.reference.LocalDocumentReference 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.model.reference.LocalDocumentReference in project xwiki-platform by xwiki.
the class ImportAction method importPackageFilterStream.
private void importPackageFilterStream(XWikiAttachment packFile, XWikiRequest request, XWikiContext context) throws IOException, XWikiException, FilterException {
String[] pages = request.getParameterValues("pages");
XARInputProperties xarProperties = new XARInputProperties();
DocumentInstanceOutputProperties instanceProperties = new DocumentInstanceOutputProperties();
instanceProperties.setSaveComment("Imported from XAR");
if (pages != null) {
EntityReferenceSet entities = new EntityReferenceSet();
EntityReferenceResolver<String> resolver = Utils.getComponent(EntityReferenceResolver.TYPE_STRING, "relative");
for (String pageEntry : pages) {
if (StringUtils.isNotEmpty(pageEntry)) {
String locale = getLocale(pageEntry, request);
int iAction = getAction(pageEntry, locale, request);
String documentReference = getDocumentReference(pageEntry);
if (iAction == DocumentInfo.ACTION_OVERWRITE) {
entities.includes(new LocalDocumentReference(resolver.resolve(documentReference, EntityType.DOCUMENT), LocaleUtils.toLocale(locale)));
}
}
}
xarProperties.setEntities(entities);
}
// Set the appropriate strategy to handle versions
if (StringUtils.equals(request.getParameter("historyStrategy"), "reset")) {
instanceProperties.setPreviousDeleted(true);
instanceProperties.setVersionPreserved(false);
xarProperties.setWithHistory(false);
} else if (StringUtils.equals(request.getParameter("historyStrategy"), "replace")) {
instanceProperties.setPreviousDeleted(true);
instanceProperties.setVersionPreserved(true);
xarProperties.setWithHistory(true);
} else {
instanceProperties.setPreviousDeleted(false);
instanceProperties.setVersionPreserved(false);
xarProperties.setWithHistory(false);
}
// Set the backup pack option
if (StringUtils.equals(request.getParameter("importAsBackup"), "true")) {
instanceProperties.setAuthorPreserved(true);
} else {
instanceProperties.setAuthorPreserved(false);
}
BeanInputFilterStreamFactory<XARInputProperties> xarFilterStreamFactory = Utils.getComponent((Type) InputFilterStreamFactory.class, FilterStreamType.XWIKI_XAR_CURRENT.serialize());
BeanInputFilterStream<XARInputProperties> xarFilterStream = xarFilterStreamFactory.createInputFilterStream(xarProperties);
BeanOutputFilterStreamFactory<InstanceOutputProperties> instanceFilterStreamFactory = Utils.getComponent((Type) OutputFilterStreamFactory.class, FilterStreamType.XWIKI_INSTANCE.serialize());
BeanOutputFilterStream<InstanceOutputProperties> instanceFilterStream = instanceFilterStreamFactory.createOutputFilterStream(instanceProperties);
// Notify all the listeners about import
ObservationManager observation = Utils.getComponent(ObservationManager.class);
InputStream source = packFile.getContentInputStream(context);
xarProperties.setSource(new DefaultInputStreamInputSource(source));
// Setup log
xarProperties.setVerbose(true);
instanceProperties.setVerbose(true);
instanceProperties.setStoppedWhenSaveFail(false);
LoggerManager loggerManager = Utils.getComponent(LoggerManager.class);
LogQueue logger = new LogQueue();
if (loggerManager != null) {
// Isolate log
loggerManager.pushLogListener(new LoggerListener(UUID.randomUUID().toString(), logger));
}
observation.notify(new XARImportingEvent(), null, context);
try {
xarFilterStream.read(instanceFilterStream.getFilter());
xarFilterStream.close();
instanceFilterStream.close();
} finally {
if (loggerManager != null) {
// Stop isolating log
loggerManager.popLogListener();
}
// Print the import log
if (LOGGER.isDebugEnabled()) {
logger.log(LOGGER);
} else {
// TODO: remove when the UI show the log properly
for (LogEvent logEvent : logger.getLogsFrom(LogLevel.ERROR)) {
logEvent.log(LOGGER);
}
}
// Close the input source
source.close();
observation.notify(new XARImportedEvent(), null, context);
}
// Generate import report
// Emulate old packager report (for retro compatibility)
Package oldImporter = new Package();
if (logger.containLogsFrom(LogLevel.ERROR)) {
context.put("install_status", DocumentInfo.INSTALL_ERROR);
} else {
context.put("install_status", DocumentInfo.INSTALL_OK);
}
EntityReferenceSerializer<String> serializer = Utils.getComponent(EntityReferenceSerializer.TYPE_STRING, "local");
for (LogEvent log : logger) {
Marker marker = log.getMarker();
if (marker != null) {
if (marker.contains(WikiDocumentFilter.LOG_DOCUMENT_CREATED.getName()) || marker.contains(WikiDocumentFilter.LOG_DOCUMENT_UPDATED.getName())) {
oldImporter.getInstalled(context).add(serializer.serialize((EntityReference) log.getArgumentArray()[0]));
} else if (marker.contains(WikiDocumentFilter.LOG_DOCUMENT_SKIPPED.getName())) {
oldImporter.getSkipped(context).add(serializer.serialize((EntityReference) log.getArgumentArray()[0]));
} else if (marker.contains(WikiDocumentFilter.LOG_DOCUMENT_ERROR.getName())) {
Object entity = log.getArgumentArray()[0];
if (entity != null) {
oldImporter.getErrors(context).add(entity instanceof EntityReference ? serializer.serialize((EntityReference) log.getArgumentArray()[0]) : entity.toString());
}
}
}
}
}
use of org.xwiki.model.reference.LocalDocumentReference in project xwiki-platform by xwiki.
the class RepositoryTestUtils method gotoExtensionObjectsEditPage.
/**
* @since 9.5RC1
*/
public ObjectEditPage gotoExtensionObjectsEditPage(String extensionName) {
LocalDocumentReference extensionPageReference = getExtensionPageReference(extensionName);
testUtils.gotoPage(extensionPageReference, "edit", Collections.singletonMap("editor", "object"));
return new ObjectEditPage();
}
Aggregations