use of org.xwiki.resource.temporary.TemporaryResourceReference in project xwiki-platform by xwiki.
the class DefaultOfficeResourceViewerTest method testViewPresentation.
@Test
public void testViewPresentation() throws Exception {
AttachmentResourceReference attachResourceRef = new AttachmentResourceReference("xwiki:Some.Page@presentation.odp");
DocumentReference documentReference = new DocumentReference("wiki", "Some", "Page");
AttachmentReference attachmentReference = new AttachmentReference("presentation.odp", documentReference);
AttachmentReferenceResolver<String> attachmentReferenceResolver = mocker.getInstance(AttachmentReferenceResolver.TYPE_STRING, "current");
when(attachmentReferenceResolver.resolve(attachResourceRef.getReference())).thenReturn(attachmentReference);
when(documentAccessBridge.getAttachmentReferences(attachmentReference.getDocumentReference())).thenReturn(Arrays.asList(attachmentReference));
when(documentAccessBridge.getAttachmentVersion(attachmentReference)).thenReturn("3.2");
ByteArrayInputStream attachmentContent = new ByteArrayInputStream(new byte[256]);
when(documentAccessBridge.getAttachmentContent(attachmentReference)).thenReturn(attachmentContent);
ResourceReference imageReference = new ResourceReference("slide0.png", ResourceType.URL);
ExpandedMacroBlock galleryMacro = new ExpandedMacroBlock("gallery", Collections.singletonMap("width", "300px"), null, false);
galleryMacro.addChild(new ImageBlock(imageReference, true));
XDOM xdom = new XDOM(Collections.<Block>singletonList(galleryMacro));
Map<String, byte[]> artifacts = Collections.singletonMap("slide0.png", new byte[8]);
XDOMOfficeDocument xdomOfficeDocument = new XDOMOfficeDocument(xdom, artifacts, mocker);
PresentationBuilder presentationBuilder = mocker.getInstance(PresentationBuilder.class);
when(presentationBuilder.build(attachmentContent, attachmentReference.getName(), documentReference)).thenReturn(xdomOfficeDocument);
Map<String, ?> viewParameters = Collections.singletonMap("ownerDocument", documentReference);
TemporaryResourceReference temporaryResourceReference = new TemporaryResourceReference("officeviewer", Arrays.asList(String.valueOf(viewParameters.hashCode()), "slide0.png"), documentReference);
Type type = new DefaultParameterizedType(null, ResourceReferenceSerializer.class, TemporaryResourceReference.class, ExtendedURL.class);
ResourceReferenceSerializer<TemporaryResourceReference, ExtendedURL> urlTemporaryResourceReferenceSerializer = mocker.getInstance(type, "standard/tmp");
ExtendedURL extendedURL = new ExtendedURL(Arrays.asList("url", "to", "slide0.png"));
when(urlTemporaryResourceReferenceSerializer.serialize(temporaryResourceReference)).thenReturn(extendedURL);
XDOM output = this.mocker.getComponentUnderTest().createView(attachResourceRef, viewParameters);
ImageBlock imageBlock = (ImageBlock) output.getBlocks(new ClassBlockMatcher(ImageBlock.class), Block.Axes.DESCENDANT).get(0);
assertEquals("/url/to/slide0.png", imageBlock.getReference().getReference());
galleryMacro = (ExpandedMacroBlock) output.getBlocks(new ClassBlockMatcher(ExpandedMacroBlock.class), Block.Axes.DESCENDANT).get(0);
assertFalse(galleryMacro.getParent() instanceof XDOM);
assertEquals(Syntax.XWIKI_2_1, ((MetaDataBlock) galleryMacro.getParent()).getMetaData().getMetaData(MetaData.SYNTAX));
TemporaryResourceStore store = mocker.getInstance(TemporaryResourceStore.class);
verify(store).createTemporaryFile(eq(temporaryResourceReference), any(InputStream.class));
}
use of org.xwiki.resource.temporary.TemporaryResourceReference in project xwiki-platform by xwiki.
the class BatikSVGRasterizer method rasterizeToTemporaryResource.
@Override
public TemporaryResourceReference rasterizeToTemporaryResource(String content, int width, int height, DocumentReference targetContext) throws IOException {
String fileName = getTemporaryFileName(content, width, height);
TemporaryResourceReference reference = new TemporaryResourceReference(TEMP_DIR_NAME, fileName, targetContext);
File out = this.temporaryResourceStore.getTemporaryFile(reference);
if (rasterizeToFile(content, out, width, height)) {
return reference;
}
return null;
}
use of org.xwiki.resource.temporary.TemporaryResourceReference in project xwiki-platform by xwiki.
the class BatikSVGRasterizerTest method rasterizeToTemporaryResourceReturnsNullWhenBaseTempDirCannotBeCreated.
@Test
public void rasterizeToTemporaryResourceReturnsNullWhenBaseTempDirCannotBeCreated() throws Exception {
this.baseDirectory.getRoot().mkdirs();
writeTestFile(new File(this.baseDirectory.getRoot(), "temp"));
TemporaryResourceReference tref = this.mocker.getComponentUnderTest().rasterizeToTemporaryResource(VALID_SVG, 100, 200);
Assert.assertNull(tref);
}
use of org.xwiki.resource.temporary.TemporaryResourceReference in project xwiki-platform by xwiki.
the class BatikSVGRasterizerTest method rasterizeToTemporaryResourceUsesContextDocument.
@Test
public void rasterizeToTemporaryResourceUsesContextDocument() throws Exception {
TemporaryResourceReference tref = this.mocker.getComponentUnderTest().rasterizeToTemporaryResource(VALID_SVG, 100, 200);
Assert.assertEquals("svg", tref.getModuleId());
Assert.assertTrue(tref.getParameters().isEmpty());
Assert.assertEquals(this.dref, tref.getOwningEntityReference());
Assert.assertEquals(RASTER_FILE_NAME, tref.getResourceName());
}
use of org.xwiki.resource.temporary.TemporaryResourceReference in project xwiki-platform by xwiki.
the class BatikSVGRasterizerTest method rasterizeToTemporaryResourceReusesFile.
@Test
public void rasterizeToTemporaryResourceReusesFile() throws Exception {
writeTestFile(this.rasterFile);
TemporaryResourceReference tref = this.mocker.getComponentUnderTest().rasterizeToTemporaryResource(VALID_SVG, 100, 200);
Assert.assertEquals("svg", tref.getModuleId());
Assert.assertTrue(tref.getParameters().isEmpty());
Assert.assertEquals(this.dref, tref.getOwningEntityReference());
Assert.assertEquals(Math.abs(VALID_SVG.hashCode()) + ".png", tref.getResourceName());
Assert.assertTrue(isTestFile(this.rasterFile));
}
Aggregations