use of org.xwiki.container.Response in project xwiki-platform by xwiki.
the class BatikSVGRasterizerTest method rasterizeToResponseDoesNothingIfNotHttpResponse.
@Test
public void rasterizeToResponseDoesNothingIfNotHttpResponse() throws Exception {
Response r = Mockito.mock(Response.class);
when(this.container.getResponse()).thenReturn(r);
this.mocker.getComponentUnderTest().rasterizeToResponse(VALID_SVG, 100, 200);
Mockito.verifyZeroInteractions(r);
}
use of org.xwiki.container.Response in project xwiki-platform by xwiki.
the class VfsResourceReferenceHandlerTest method setUp.
private void setUp(String scheme, String wikiName, String spaceName, String pageName, String attachmentName, List<String> path) throws Exception {
Provider<ComponentManager> componentManagerProvider = this.mocker.registerMockComponent(new DefaultParameterizedType(null, Provider.class, ComponentManager.class), "context");
when(componentManagerProvider.get()).thenReturn(this.mocker);
String attachmentReferenceAsString = String.format("%s:%s:%s.%s@%s", scheme, wikiName, spaceName, pageName, attachmentName);
this.reference = new VfsResourceReference(URI.create(attachmentReferenceAsString), path);
ResourceReferenceSerializer<VfsResourceReference, URI> trueVfsResourceReferenceSerializer = this.mocker.getInstance(new DefaultParameterizedType(null, ResourceReferenceSerializer.class, VfsResourceReference.class, URI.class), "truevfs");
String truevfsURIFragment = String.format("%s://%s:%s.%s/%s/%s", scheme, wikiName, spaceName, pageName, attachmentName, StringUtils.join(path, '/'));
when(trueVfsResourceReferenceSerializer.serialize(this.reference)).thenReturn(URI.create(truevfsURIFragment));
Provider<XWikiContext> xwikiContextProvider = mocker.registerMockComponent(XWikiContext.TYPE_PROVIDER);
XWikiContext xcontext = mock(XWikiContext.class);
when(xwikiContextProvider.get()).thenReturn(xcontext);
XWiki xwiki = mock(XWiki.class);
when(xcontext.getWiki()).thenReturn(xwiki);
DocumentReferenceResolver<String> documentReferenceResolver = mocker.registerMockComponent(DocumentReferenceResolver.TYPE_STRING);
this.documentReference = new DocumentReference(wikiName, Arrays.asList(spaceName), pageName);
String documentReferenceAsString = String.format("%s:%s.%s", wikiName, spaceName, pageName);
when(documentReferenceResolver.resolve(documentReferenceAsString)).thenReturn(this.documentReference);
XWikiDocument document = mock(XWikiDocument.class);
when(xwiki.getDocument(this.documentReference, xcontext)).thenReturn(document);
XWikiAttachment attachment = mock(XWikiAttachment.class);
when(document.getAttachment(attachmentName)).thenReturn(attachment);
when(attachment.getDate()).thenReturn(new Date());
when(attachment.getContentSize(xcontext)).thenReturn(1000);
when(attachment.getContentInputStream(xcontext)).thenReturn(createZipInputStream(StringUtils.join(path, '/'), "success!"));
Container container = this.mocker.getInstance(Container.class);
Response response = mock(Response.class);
when(container.getResponse()).thenReturn(response);
this.baos = new ByteArrayOutputStream();
when(response.getOutputStream()).thenReturn(this.baos);
// Register our custom Attach Driver in TrueVFS
TConfig config = TConfig.current();
// Note: Make sure we add our own Archive Detector to the existing Detector so that all archive formats
// supported by TrueVFS are handled properly.
config.setArchiveDetector(new TArchiveDetector(config.getArchiveDetector(), "attach", new AttachDriver(this.mocker)));
}
use of org.xwiki.container.Response in project xwiki-platform by xwiki.
the class AbstractContentResourceReferenceHandler method serveResource.
protected void serveResource(String resourceName, InputStream resourceStream) throws ResourceReferenceHandlerException {
// Make sure the resource stream supports mark & reset which is needed in order be able to detect the
// content type without affecting the stream (Tika may need to read a few bytes from the start of the
// stream, in which case it will mark & reset the stream).
//
// Note that even though the stream returned by TrueVFS returns true for markSupported() in practice it
// doesn't! Thus we need to wrap the stream to make it support mark and reset.
InputStream markResetSupportingStream = new BufferedInputStream(resourceStream);
try {
Response response = this.container.getResponse();
response.setContentType(TikaUtils.detect(markResetSupportingStream, resourceName));
IOUtils.copy(markResetSupportingStream, response.getOutputStream());
} catch (Exception e) {
throw new ResourceReferenceHandlerException(String.format("Failed to read resource [%s]", resourceName), e);
} finally {
IOUtils.closeQuietly(markResetSupportingStream);
}
}
use of org.xwiki.container.Response in project xwiki-platform by xwiki.
the class DefaultContainer method getResponse.
@Override
public Response getResponse() {
Response result = null;
Stack<Response> responses = this.response.get();
if (responses != null) {
result = responses.peek();
}
return result;
}
use of org.xwiki.container.Response in project xwiki-platform by xwiki.
the class AbstractTemplateJobResourceReferenceHandler method tryTemplate.
protected boolean tryTemplate(String defaultContentType, String templateName) throws ResourceReferenceHandlerException {
Template template = this.templates.getTemplate("job/" + templateName);
if (template == null) {
return false;
}
Response response = this.container.getResponse();
try {
// Set default content type (can be overwritten by the template itself)
if (defaultContentType != null) {
response.setContentType(defaultContentType);
}
Writer writer = new StringWriter();
this.templates.render(template, writer);
sendContent(writer.toString());
} catch (Exception e) {
throw new ResourceReferenceHandlerException("Failed to execute template [" + templateName + "]", e);
}
return true;
}
Aggregations