use of com.xpn.xwiki.objects.BaseObject in project xwiki-platform by xwiki.
the class DefaultWikiUserConfigurationHelper method saveConfiguration.
@Override
public void saveConfiguration(WikiUserConfiguration configuration, String wikiId) throws WikiUserManagerException {
XWikiContext context = xcontextProvider.get();
// Get the document
XWikiDocument document = getDocument(wikiId);
// Fill the object
BaseObject object = document.getXObject(WikiUserClassDocumentInitializer.CONFIGURATION_CLASS, true, context);
object.setStringValue(WikiUserClassDocumentInitializer.FIELD_USERSCOPE, configuration.getUserScope().name().toLowerCase());
if (configuration.getMembershipType() != null) {
object.setStringValue(WikiUserClassDocumentInitializer.FIELD_MEMBERSHIPTYPE, configuration.getMembershipType().name().toLowerCase());
}
// Save the document
try {
XWiki xwiki = context.getWiki();
document.setHidden(true);
// The document must have a creator
if (document.getCreatorReference() == null) {
document.setCreatorReference(context.getUserReference());
}
// The document must have an author
if (document.getAuthorReference() == null) {
document.setAuthorReference(context.getUserReference());
}
xwiki.saveDocument(document, "Changed configuration.", context);
} catch (XWikiException e) {
throw new WikiUserManagerException(String.format("Fail to save the confguration document for wiki [%s].", wikiId), e);
}
}
use of com.xpn.xwiki.objects.BaseObject in project xwiki-platform by xwiki.
the class DefaultWikiUserConfigurationHelper method getConfiguration.
@Override
public WikiUserConfiguration getConfiguration(String wikiId) throws WikiUserManagerException {
// Create the configuration object to return
WikiUserConfiguration configuration = new WikiUserConfiguration();
// Get the document
XWikiDocument document = getDocument(wikiId);
// Get the XWiki object
BaseObject object = document.getXObject(WikiUserClassDocumentInitializer.CONFIGURATION_CLASS);
if (object != null) {
// Get the user scope
String scopeValue = object.getStringValue(WikiUserClassDocumentInitializer.FIELD_USERSCOPE);
UserScope userScope;
try {
userScope = UserScope.valueOf(scopeValue.toUpperCase());
} catch (Exception e) {
// Default value
userScope = UserScope.LOCAL_AND_GLOBAL;
}
configuration.setUserScope(userScope);
// Get the membershipType value
String membershipTypeValue = object.getStringValue(WikiUserClassDocumentInitializer.FIELD_MEMBERSHIPTYPE);
MembershipType membershipType;
try {
membershipType = MembershipType.valueOf(membershipTypeValue.toUpperCase());
} catch (Exception e) {
// Default value
membershipType = MembershipType.INVITE;
}
configuration.setMembershipType(membershipType);
}
return configuration;
}
use of com.xpn.xwiki.objects.BaseObject in project xwiki-platform by xwiki.
the class WikiDescriptorListenerTest method onDocumentUpdatedEvent.
@Test
public void onDocumentUpdatedEvent() throws Exception {
XWikiDocument document = mock(XWikiDocument.class);
XWikiDocument originalDocument = mock(XWikiDocument.class);
when(document.getOriginalDocument()).thenReturn(originalDocument);
Event event = new DocumentUpdatedEvent();
List<BaseObject> objects = new ArrayList<>();
BaseObject object = mock(BaseObject.class);
objects.add(object);
when(originalDocument.getXObjects(WikiDescriptorListener.SERVER_CLASS)).thenReturn(objects);
DocumentReference documentReference = new DocumentReference("mainWiki", "XWiki", "XWikiServerSubwikiA");
when(originalDocument.getDocumentReference()).thenReturn(documentReference);
when(wikiDescriptorDocumentHelper.getWikiIdFromDocumentReference(documentReference)).thenReturn("subwikia");
DefaultWikiDescriptor descriptor = new DefaultWikiDescriptor("subwikia", "alias");
when(cache.getFromId("subwikia")).thenReturn(descriptor);
// New objects
List<BaseObject> newObjects = new ArrayList<>();
BaseObject newObject = mock(BaseObject.class);
newObjects.add(newObject);
when(document.getXObjects(WikiDescriptorListener.SERVER_CLASS)).thenReturn(newObjects);
DefaultWikiDescriptor newDescriptor = new DefaultWikiDescriptor("subwikia", "newAlias");
when(builder.buildDescriptorObject(newObjects, document)).thenReturn(newDescriptor);
// Test
mocker.getComponentUnderTest().onEvent(event, document, null);
// Verify
verify(cache).remove(descriptor.getId(), descriptor.getAliases());
verify(cache).add(newDescriptor);
}
use of com.xpn.xwiki.objects.BaseObject in project xwiki-platform by xwiki.
the class WikiDescriptorListenerTest method onDocumentDeletedEvent.
@Test
public void onDocumentDeletedEvent() throws Exception {
XWikiDocument document = mock(XWikiDocument.class);
XWikiDocument originalDocument = mock(XWikiDocument.class);
when(document.getOriginalDocument()).thenReturn(originalDocument);
Event event = new DocumentDeletedEvent();
List<BaseObject> objects = new ArrayList<>();
BaseObject object = mock(BaseObject.class);
objects.add(object);
when(originalDocument.getXObjects(WikiDescriptorListener.SERVER_CLASS)).thenReturn(objects);
DocumentReference documentReference = new DocumentReference("mainWiki", "XWiki", "XWikiServerSubwikiA");
when(originalDocument.getDocumentReference()).thenReturn(documentReference);
when(wikiDescriptorDocumentHelper.getWikiIdFromDocumentReference(documentReference)).thenReturn("subwikia");
DefaultWikiDescriptor descriptor = new DefaultWikiDescriptor("subwikia", "alias");
when(cache.getFromId("subwikia")).thenReturn(descriptor);
// Test
mocker.getComponentUnderTest().onEvent(event, document, null);
// Verify
verify(cache).remove(descriptor.getId(), descriptor.getAliases());
verify(cache, never()).add(any(DefaultWikiDescriptor.class));
}
use of com.xpn.xwiki.objects.BaseObject in project xwiki-platform by xwiki.
the class XarExtensionHandlerTest method testInstallOnWikiWithoutAuthor.
@Test
public void testInstallOnWikiWithoutAuthor() throws Throwable {
XWikiDocument existingDocument = new XWikiDocument(new DocumentReference("wiki", "space", "page"));
BaseObject object = new BaseObject();
object.setXClassReference(new DocumentReference("wiki", "space", "class"));
existingDocument.addXObject(object);
existingDocument.setCreatorReference(new DocumentReference("wiki", "space", "existingcreator"));
this.oldcore.getSpyXWiki().saveDocument(existingDocument, "", true, getXWikiContext());
// install
install(this.localXarExtensiontId1, "wiki", null);
// validate
DocumentReference xarAuthorReference = new DocumentReference("wiki", "XWiki", "author");
DocumentReference xarCreatorReference = new DocumentReference("wiki", "XWiki", "creator");
DocumentReference xarContentAuthorReference = new DocumentReference("wiki", "XWiki", "contentAuthor");
// space.page
XWikiDocument page = this.oldcore.getSpyXWiki().getDocument(existingDocument.getDocumentReference(), getXWikiContext());
Assert.assertFalse("Document wiki:space.page has not been saved in the database", page.isNew());
Assert.assertNull(page.getXObject(object.getXClassReference()));
Assert.assertEquals("Wrong content", "content", page.getContent());
Assert.assertEquals("Wrong creator", new DocumentReference("wiki", "space", "existingcreator"), page.getCreatorReference());
Assert.assertEquals("Wrong author", xarAuthorReference, page.getAuthorReference());
Assert.assertEquals("Wrong content author", xarContentAuthorReference, page.getContentAuthorReference());
Assert.assertEquals("Wrong version", "2.1", page.getVersion());
Assert.assertEquals("Wrong version", Locale.ROOT, page.getLocale());
Assert.assertFalse("Document is hidden", page.isHidden());
BaseClass baseClass = page.getXClass();
Assert.assertNotNull(baseClass.getField("property"));
Assert.assertEquals("property", baseClass.getField("property").getName());
Assert.assertSame(NumberClass.class, baseClass.getField("property").getClass());
// space.pagewithattachment
XWikiDocument pagewithattachment = this.oldcore.getSpyXWiki().getDocument(new DocumentReference("wiki", "space", "pagewithattachment"), getXWikiContext());
Assert.assertFalse(pagewithattachment.isNew());
Assert.assertEquals("Wrong version", "1.1", pagewithattachment.getVersion());
Assert.assertEquals("Wrong creator", xarCreatorReference, pagewithattachment.getCreatorReference());
Assert.assertEquals("Wrong author", xarAuthorReference, pagewithattachment.getAuthorReference());
Assert.assertEquals("Wrong content author", xarContentAuthorReference, pagewithattachment.getContentAuthorReference());
XWikiAttachment attachment = pagewithattachment.getAttachment("attachment.txt");
Assert.assertNotNull(attachment);
Assert.assertEquals("attachment.txt", attachment.getFilename());
Assert.assertEquals(18, attachment.getContentLongSize(getXWikiContext()));
Assert.assertEquals("attachment content", IOUtils.toString(attachment.getContentInputStream(getXWikiContext()), StandardCharsets.UTF_8));
Assert.assertEquals(new DocumentReference("wiki", "XWiki", "attachmentauthor"), attachment.getAuthorReference());
// space1.page1
XWikiDocument page1 = this.oldcore.getSpyXWiki().getDocument(new DocumentReference("wiki", "space1", "page1"), getXWikiContext());
Assert.assertFalse("Document wiki:space1.page1 has not been saved in the database", page1.isNew());
// translated.translated
DocumentReference translatedReference = new DocumentReference("wiki", "translated", "translated");
XWikiDocument defaultTranslated = this.oldcore.getSpyXWiki().getDocument(translatedReference, getXWikiContext());
Assert.assertNotNull("Document wiki:translated.translated has not been saved in the database", defaultTranslated);
Assert.assertFalse("Document wiki:translated.translated has not been saved in the database", defaultTranslated.isNew());
Assert.assertEquals("Wrong content", "default content", defaultTranslated.getContent());
Assert.assertEquals("Wrong creator", xarCreatorReference, defaultTranslated.getCreatorReference());
Assert.assertEquals("Wrong author", xarAuthorReference, defaultTranslated.getAuthorReference());
Assert.assertEquals("Wrong content author", xarContentAuthorReference, defaultTranslated.getContentAuthorReference());
Assert.assertEquals("Wrong version", "1.1", defaultTranslated.getVersion());
// translated.translated.tr
XWikiDocument translated = this.oldcore.getDocuments().get(new DocumentReference(translatedReference, new Locale("tr")));
Assert.assertNotNull("Document wiki:translated.translated in langauge tr has not been saved in the database", translated);
Assert.assertFalse("Document wiki:translated.translated in langauge tr has not been saved in the database", translated.isNew());
Assert.assertEquals("Wrong content", "tr content", translated.getContent());
Assert.assertEquals("Wrong creator", xarCreatorReference, translated.getCreatorReference());
Assert.assertEquals("Wrong author", xarAuthorReference, translated.getAuthorReference());
Assert.assertEquals("Wrong content author", xarContentAuthorReference, translated.getContentAuthorReference());
Assert.assertEquals("Wrong version", "1.1", translated.getVersion());
// translated.translated.fr
XWikiDocument translated2 = this.oldcore.getDocuments().get(new DocumentReference(translatedReference, new Locale("fr")));
Assert.assertNotNull("Document wiki:translated.translated in language fr has not been saved in the database", translated2);
Assert.assertFalse("Document wiki:translated.translated in langauge fr has not been saved in the database", translated2.isNew());
Assert.assertEquals("Wrong content", "fr content", translated2.getContent());
Assert.assertEquals("Wrong creator", xarCreatorReference, translated2.getCreatorReference());
Assert.assertEquals("Wrong author", xarAuthorReference, translated2.getAuthorReference());
Assert.assertEquals("Wrong content author", xarContentAuthorReference, translated2.getContentAuthorReference());
Assert.assertEquals("Wrong version", "1.1", translated2.getVersion());
// space.hiddenpage
XWikiDocument hiddenpage = this.oldcore.getSpyXWiki().getDocument(new DocumentReference("wiki", "space", "hiddenpage"), getXWikiContext());
Assert.assertNotNull("Document wiki:space.hiddenpage has not been saved in the database", hiddenpage);
Assert.assertFalse("Document wiki:space.hiddenpage has not been saved in the database", hiddenpage.isNew());
Assert.assertTrue("Document is not hidden", hiddenpage.isHidden());
}
Aggregations