Search in sources :

Example 86 with XWikiAttachment

use of com.xpn.xwiki.doc.XWikiAttachment in project xwiki-platform by xwiki.

the class VoidAttachmentVersioningStoreTest method testStore.

public void testStore() throws XWikiException {
    // is store correctly inited?
    assertEquals(VoidAttachmentVersioningStore.class, this.store.getClass());
    // create doc, attachment & attachment archive
    XWikiDocument doc = new XWikiDocument(new DocumentReference("Wiki", "Main", "Test"));
    XWikiAttachment attachment = new XWikiAttachment(doc, "filename");
    attachment.setContent(new byte[] { 1 });
    attachment.updateContentArchive(getContext());
    // is archive correctly inited and cloneable?
    this.store.saveArchive(attachment.getAttachment_archive(), this.getContext(), true);
    XWikiAttachmentArchive archive = this.store.loadArchive(attachment, this.getContext(), false);
    assertEquals(VoidAttachmentArchive.class, archive.getClass());
    assertEquals(VoidAttachmentArchive.class, archive.clone().getClass());
    assertEquals(archive, this.store.loadArchive(attachment, this.getContext(), true));
    this.store.deleteArchive(attachment, getContext(), true);
}
Also used : XWikiDocument(com.xpn.xwiki.doc.XWikiDocument) XWikiAttachmentArchive(com.xpn.xwiki.doc.XWikiAttachmentArchive) XWikiAttachment(com.xpn.xwiki.doc.XWikiAttachment) DocumentReference(org.xwiki.model.reference.DocumentReference)

Example 87 with XWikiAttachment

use of com.xpn.xwiki.doc.XWikiAttachment in project xwiki-platform by xwiki.

the class PDFURIResolverTest method resolveWhenMapItemExists.

@Test
public void resolveWhenMapItemExists() throws Exception {
    DocumentReference documentReference = new DocumentReference("wiki", "space", "page");
    AttachmentReference attachmentReference = new AttachmentReference("fileName", documentReference);
    com.xpn.xwiki.XWiki xwiki = mock(com.xpn.xwiki.XWiki.class);
    XWikiDocument document = mock(XWikiDocument.class);
    XWikiAttachment attachment = mock(XWikiAttachment.class);
    XWikiContext context = mock(XWikiContext.class);
    // Add an encoded space character to test that the URL is not decoded. The input URL (to be resolved) is
    // expected to be encoded because the URL factory creates encoded URLs.
    String url = "encoded+url";
    when(context.get("pdfExportImageURLMap")).thenReturn(Collections.singletonMap(url, attachmentReference));
    when(context.getWiki()).thenReturn(xwiki);
    when(xwiki.getDocument(attachmentReference.extractReference(EntityType.DOCUMENT), context)).thenReturn(document);
    when(document.getAttachment("fileName")).thenReturn(attachment);
    when(attachment.getContentInputStream(context)).thenReturn(new ByteArrayInputStream("content".getBytes()));
    PDFURIResolver resolver = new PDFURIResolver(context);
    Source source = resolver.resolve(url, "base");
    Assert.assertEquals(StreamSource.class, source.getClass());
    Assert.assertEquals("content", IOUtils.readLines(((StreamSource) source).getInputStream()).get(0));
}
Also used : AttachmentReference(org.xwiki.model.reference.AttachmentReference) XWikiDocument(com.xpn.xwiki.doc.XWikiDocument) ByteArrayInputStream(java.io.ByteArrayInputStream) XWikiContext(com.xpn.xwiki.XWikiContext) XWikiAttachment(com.xpn.xwiki.doc.XWikiAttachment) DocumentReference(org.xwiki.model.reference.DocumentReference) StreamSource(javax.xml.transform.stream.StreamSource) Source(javax.xml.transform.Source) Test(org.junit.Test)

Example 88 with XWikiAttachment

use of com.xpn.xwiki.doc.XWikiAttachment in project xwiki-platform by xwiki.

the class DocumentSolrMetadataExtractorTest method assertAttachmentExtract.

// Attachments
private void assertAttachmentExtract(String expect, String filename) throws Exception {
    XWikiAttachment logo;
    try (InputStream stream = getClass().getResourceAsStream("/files/" + filename)) {
        logo = createMockAttachment(filename, "image/png", new Date(), stream, "Alice", "Shy Alice");
        when(this.document.getAttachmentList()).thenReturn(Arrays.<XWikiAttachment>asList(logo));
    }
    SolrInputDocument solrDocument = this.mocker.getComponentUnderTest().getSolrDocument(this.documentReference);
    assertEquals("Wrong attachment content indexed", expect, solrDocument.getFieldValue("attcontent_en_US"));
}
Also used : SolrInputDocument(org.apache.solr.common.SolrInputDocument) ByteArrayInputStream(java.io.ByteArrayInputStream) InputStream(java.io.InputStream) XWikiAttachment(com.xpn.xwiki.doc.XWikiAttachment) Date(java.util.Date)

Example 89 with XWikiAttachment

use of com.xpn.xwiki.doc.XWikiAttachment in project xwiki-platform by xwiki.

the class SolrReferenceResolverTest method setUp.

@Before
public void setUp() throws Exception {
    this.defaultSolrReferenceResolver = this.mocker.getInstance(SolrReferenceResolver.class);
    Utils.setComponentManager(this.mocker);
    // XWiki
    this.xwiki = mock(XWiki.class);
    // XWikiContext
    this.xcontext = new XWikiContext();
    this.xcontext.setWikiId("xwiki");
    this.xcontext.setWiki(this.xwiki);
    // XWikiContext Provider
    Provider<XWikiContext> xcontextProvider = this.mocker.getInstance(XWikiContext.TYPE_PROVIDER);
    when(xcontextProvider.get()).thenReturn(this.xcontext);
    // XWikiContext trough Execution
    Execution execution = this.mocker.getInstance(Execution.class);
    execution.setContext(new ExecutionContext());
    execution.getContext().setProperty(XWikiContext.EXECUTIONCONTEXT_KEY, this.xcontext);
    // References
    this.objectReference1221 = new BaseObjectReference(this.classReference111, 0, this.documentReference122);
    this.objectReference1222 = new BaseObjectReference(this.classReference111, 1, this.documentReference122);
    this.propertyReference12221 = new ObjectPropertyReference("aStringProperty", objectReference1222);
    this.propertyReference12223 = new ObjectPropertyReference("anIntegerProperty", objectReference1222);
    // XWiki model data
    this.xclass111 = mock(BaseClass.class);
    this.xdocument111 = mock(XWikiDocument.class, "xwikiDocument111");
    this.xdocument112 = mock(XWikiDocument.class, "xwikiDocument112");
    this.xdocument113 = mock(XWikiDocument.class, "xwikiDocument113");
    this.xdocument121 = mock(XWikiDocument.class, "xwikiDocument121");
    this.xattachment1211 = mock(XWikiAttachment.class, "xwikiAttachment1211");
    this.xattachment1212 = mock(XWikiAttachment.class, "xwikiAttachment1212");
    this.xdocument122 = mock(XWikiDocument.class, "xwikiDocument122");
    this.xobject1221 = mock(BaseObject.class, "xwikiObject1221");
    this.xobject1222 = mock(BaseObject.class, "xwikiObject1222");
    this.xproperty12221 = mock(StringProperty.class, "xwikiProperty12221");
    this.xproperty12223 = mock(IntegerProperty.class, "xwikiProperty12223");
    this.queryManager = this.mocker.getInstance(QueryManager.class);
    final Query spacesWiki1Query = mock(DefaultQuery.class, "getSpacesWiki1");
    final Query documentsSpace11Query = mock(DefaultQuery.class, "getSpaceDocsNameSpace11");
    final Query documentsSpace12Query = mock(DefaultQuery.class, "getSpaceDocsNameSpace12");
    final Query documentsSpace13Query = mock(DefaultQuery.class, "getSpaceDocsNameSpace13");
    final Query spacesWiki2Query = mock(DefaultQuery.class, "getSpacesWiki2");
    // Data
    when(xwiki.exists(any(DocumentReference.class), any(XWikiContext.class))).thenReturn(true);
    // Query manager and specific queries mocking.
    when(queryManager.getNamedQuery("getSpaces")).thenReturn(spacesWiki1Query);
    when(spacesWiki1Query.setWiki(wikiReference1.getName())).thenReturn(spacesWiki1Query);
    when(spacesWiki1Query.setWiki(wikiReference2.getName())).thenReturn(spacesWiki2Query);
    when(queryManager.getNamedQuery("getSpaceDocsName")).thenReturn(documentsSpace11Query);
    when(documentsSpace11Query.setWiki(any(String.class))).thenReturn(documentsSpace11Query);
    EntityReferenceSerializer<String> localEntityReferenceSerializer = this.mocker.getInstance(EntityReferenceSerializer.TYPE_STRING, "local");
    when(documentsSpace11Query.bindValue("space", localEntityReferenceSerializer.serialize(spaceReference11))).thenReturn(documentsSpace11Query);
    when(documentsSpace11Query.bindValue("space", localEntityReferenceSerializer.serialize(spaceReference12))).thenReturn(documentsSpace12Query);
    when(documentsSpace11Query.bindValue("space", localEntityReferenceSerializer.serialize(spaceReference13))).thenReturn(documentsSpace13Query);
    // Spaces in wikis.
    when(spacesWiki1Query.execute()).thenReturn(Arrays.<Object>asList(localEntityReferenceSerializer.serialize(spaceReference11), localEntityReferenceSerializer.serialize(spaceReference12), localEntityReferenceSerializer.serialize(spaceReference13)));
    when(spacesWiki2Query.execute()).thenReturn(Collections.emptyList());
    // space 11
    when(documentsSpace11Query.execute()).thenReturn(Arrays.<Object>asList(classReference111.getName(), documentReference112.getName(), documentReference113.getName()));
    // document 111
    when(xwiki.getDocument(eq(documentReference111), any(XWikiContext.class))).thenReturn(xdocument111);
    when(xdocument111.getXClass()).thenReturn(xclass111);
    // document 112
    when(xwiki.getDocument(eq(documentReference112), any(XWikiContext.class))).thenReturn(xdocument112);
    when(xdocument112.getXObjects()).thenReturn(Collections.<DocumentReference, List<BaseObject>>emptyMap());
    when(xdocument112.getTranslationLocales(any(XWikiContext.class))).thenReturn(Collections.<Locale>emptyList());
    // document 113
    when(xwiki.getDocument(eq(documentReference113), any(XWikiContext.class))).thenReturn(xdocument113);
    when(xdocument113.getAttachmentList()).thenReturn(Collections.<XWikiAttachment>emptyList());
    when(xdocument113.getXObjects()).thenReturn(Collections.<DocumentReference, List<BaseObject>>emptyMap());
    when(xdocument113.getTranslationLocales(any(XWikiContext.class))).thenReturn(Arrays.asList(new Locale("ro")));
    // space 12
    when(documentsSpace12Query.execute()).thenReturn(Arrays.<Object>asList(documentReference121.getName(), documentReference122.getName()));
    // document 121
    when(xwiki.getDocument(eq(documentReference121), any(XWikiContext.class))).thenReturn(xdocument121);
    when(xdocument121.getAttachmentList()).thenReturn(Arrays.asList(xattachment1211, xattachment1212));
    when(xattachment1211.getReference()).thenReturn(attachmentReference1211);
    when(xattachment1212.getReference()).thenReturn(attachmentReference1212);
    when(xdocument121.getXObjects()).thenReturn(Collections.<DocumentReference, List<BaseObject>>emptyMap());
    when(xdocument121.getTranslationLocales(any(XWikiContext.class))).thenReturn(Collections.<Locale>emptyList());
    // document 122
    when(xwiki.getDocument(eq(documentReference122), any(XWikiContext.class))).thenReturn(xdocument122);
    when(xdocument122.getAttachmentList()).thenReturn(Collections.<XWikiAttachment>emptyList());
    Map<DocumentReference, List<BaseObject>> xObjects = new HashMap<DocumentReference, List<BaseObject>>();
    // Yes, it seems that we can have null objects for some reason.
    xObjects.put(classReference111, Arrays.asList(null, xobject1221, xobject1222));
    when(xdocument122.getXObjects()).thenReturn(xObjects);
    when(xdocument122.getTranslationLocales(any(XWikiContext.class))).thenReturn(Collections.<Locale>emptyList());
    // object 1221
    when(xdocument122.getXObject(objectReference1221)).thenReturn(xobject1221);
    when(xdocument122.getXObject((EntityReference) objectReference1221)).thenReturn(xobject1221);
    when(xobject1221.getReference()).thenReturn(objectReference1221);
    when(xobject1221.getXClass(any(XWikiContext.class))).thenReturn(xclass111);
    when(xobject1221.getFieldList()).thenReturn(Collections.EMPTY_LIST);
    // object 1222
    when(xdocument122.getXObject(objectReference1222)).thenReturn(xobject1222);
    when(xdocument122.getXObject((EntityReference) objectReference1222)).thenReturn(xobject1222);
    when(xobject1222.getReference()).thenReturn(objectReference1222);
    when(xobject1222.getXClass(any(XWikiContext.class))).thenReturn(xclass111);
    when(xobject1222.getFieldList()).thenReturn(Arrays.asList(xproperty12221, xproperty12223));
    // object 1222 fields
    when(xproperty12221.getReference()).thenReturn(propertyReference12221);
    when(xproperty12221.getName()).thenReturn(propertyReference12221.getName());
    when(xproperty12223.getReference()).thenReturn(propertyReference12223);
    when(xproperty12223.getName()).thenReturn(propertyReference12223.getName());
    // class 111 fields
    when(xclass111.get(propertyReference12221.getName())).thenReturn(null);
    when(xclass111.get(propertyReference12223.getName())).thenReturn(null);
    // space 13
    when(documentsSpace13Query.execute()).thenReturn(Collections.emptyList());
}
Also used : Locale(java.util.Locale) IntegerProperty(com.xpn.xwiki.objects.IntegerProperty) ObjectPropertyReference(org.xwiki.model.reference.ObjectPropertyReference) Query(org.xwiki.query.Query) DefaultQuery(org.xwiki.query.internal.DefaultQuery) HashMap(java.util.HashMap) XWiki(com.xpn.xwiki.XWiki) XWikiContext(com.xpn.xwiki.XWikiContext) StringProperty(com.xpn.xwiki.objects.StringProperty) XWikiAttachment(com.xpn.xwiki.doc.XWikiAttachment) BaseObject(com.xpn.xwiki.objects.BaseObject) XWikiDocument(com.xpn.xwiki.doc.XWikiDocument) Execution(org.xwiki.context.Execution) DefaultExecution(org.xwiki.context.internal.DefaultExecution) ExecutionContext(org.xwiki.context.ExecutionContext) BaseObjectReference(com.xpn.xwiki.objects.BaseObjectReference) BaseClass(com.xpn.xwiki.objects.classes.BaseClass) QueryManager(org.xwiki.query.QueryManager) ComponentList(org.xwiki.test.annotation.ComponentList) ReferenceComponentList(com.xpn.xwiki.test.reference.ReferenceComponentList) List(java.util.List) DocumentReference(org.xwiki.model.reference.DocumentReference) Before(org.junit.Before)

Example 90 with XWikiAttachment

use of com.xpn.xwiki.doc.XWikiAttachment in project xwiki-platform by xwiki.

the class DefaultDocumentRestorerFromAttachedXAR method getTemporaryZipFile.

private File getTemporaryZipFile(DocumentReference docReference, String attachmentName) throws XWikiException, IOException {
    XWikiContext xcontext = xcontextProvider.get();
    XWiki xwiki = xcontext.getWiki();
    // Get the document
    XWikiDocument document = xwiki.getDocument(docReference, xcontext);
    if (document.isNew()) {
        logger.warn("[{}] does not exist", docReference);
        return null;
    }
    // Get the attachment
    XWikiAttachment xar = document.getAttachment(attachmentName);
    if (xar == null) {
        logger.warn("[{}] has no attachment named [{}].", docReference, attachmentName);
        return null;
    }
    // We need to copy the attachment to a temporary file because we want ti use ZipFile
    // instead of ZipArchiveInputStream (see: http://commons.apache.org/proper/commons-compress/zip.html)
    File tempFile = File.createTempFile(attachmentName, ".tmp");
    // We copy the content of the attachment
    FileUtils.copyInputStreamToFile(xar.getContentInputStream(xcontext), tempFile);
    // Return the temp file
    return tempFile;
}
Also used : XWikiDocument(com.xpn.xwiki.doc.XWikiDocument) XWikiContext(com.xpn.xwiki.XWikiContext) XWiki(com.xpn.xwiki.XWiki) XWikiAttachment(com.xpn.xwiki.doc.XWikiAttachment) ZipFile(org.apache.commons.compress.archivers.zip.ZipFile) File(java.io.File)

Aggregations

XWikiAttachment (com.xpn.xwiki.doc.XWikiAttachment)133 XWikiDocument (com.xpn.xwiki.doc.XWikiDocument)71 DocumentReference (org.xwiki.model.reference.DocumentReference)51 Test (org.junit.Test)40 XWikiContext (com.xpn.xwiki.XWikiContext)35 XWikiException (com.xpn.xwiki.XWikiException)25 ByteArrayInputStream (java.io.ByteArrayInputStream)20 Attachment (com.xpn.xwiki.api.Attachment)18 Date (java.util.Date)17 IOException (java.io.IOException)15 ArrayList (java.util.ArrayList)15 Document (com.xpn.xwiki.api.Document)14 XWiki (com.xpn.xwiki.XWiki)13 BaseObject (com.xpn.xwiki.objects.BaseObject)13 AttachmentReference (org.xwiki.model.reference.AttachmentReference)13 InputStream (java.io.InputStream)11 BaseClass (com.xpn.xwiki.objects.classes.BaseClass)10 File (java.io.File)10 URL (java.net.URL)7 List (java.util.List)7