use of com.xpn.xwiki.web.XWikiServletRequest in project xwiki-platform by xwiki.
the class XWikiRequestCopier method copy.
@Override
public XWikiRequest copy(XWikiRequest originalRequest) throws CloneFailedException {
if (originalRequest == null) {
return null;
}
XWikiServletRequestStub dummyRequest = new XWikiServletRequestStub();
dummyRequest.setHost(originalRequest.getHeader("x-forwarded-host"));
dummyRequest.setScheme(originalRequest.getScheme());
dummyRequest.setContextPath(originalRequest.getContextPath());
dummyRequest.setrequestURL(originalRequest.getRequestURL());
dummyRequest.setServerName(originalRequest.getServerName());
return new XWikiServletRequest(dummyRequest);
}
use of com.xpn.xwiki.web.XWikiServletRequest in project xwiki-platform by xwiki.
the class XWikiContextInitializationFilter method initializeXWikiContext.
/**
* Initializes the XWiki context.
*
* @param request the request being processed
* @param response the response
* @throws ServletException if the initialization fails
*/
protected void initializeXWikiContext(ServletRequest request, ServletResponse response) throws ServletException {
try {
// Not all request types specify an action (e.g. GWT-RPC) so we default to the empty string.
String action = "";
XWikiServletContext xwikiEngine = new XWikiServletContext(this.filterConfig.getServletContext());
XWikiServletRequest xwikiRequest = new XWikiServletRequest((HttpServletRequest) request);
XWikiServletResponse xwikiResponse = new XWikiServletResponse((HttpServletResponse) response);
// Create the XWiki context.
XWikiContext context = Utils.prepareContext(action, xwikiRequest, xwikiResponse, xwikiEngine);
// parameter is specified.
if (this.mode >= 0) {
context.setMode(this.mode);
}
// Initialize the Container component which is the new way of transporting the Context in the new component
// architecture. Further initialization might require the Container component.
initializeContainerComponent(context);
// Initialize the XWiki database. XWiki#getXWiki(XWikiContext) calls XWikiContext.setWiki(XWiki).
XWiki xwiki = XWiki.getXWiki(context);
// Initialize the URL factory.
context.setURLFactory(xwiki.getURLFactoryService().createURLFactory(context.getMode(), context));
// Prepare the localized resources, according to the selected language.
xwiki.prepareResources(context);
// Initialize the current user.
XWikiUser user = context.getWiki().checkAuth(context);
if (user != null) {
DocumentReferenceResolver<String> documentReferenceResolver = Utils.getComponent(DocumentReferenceResolver.TYPE_STRING, "explicit");
SpaceReference defaultUserSpace = new SpaceReference(XWiki.SYSTEM_SPACE, new WikiReference(context.getWikiId()));
DocumentReference userReference = documentReferenceResolver.resolve(user.getUser(), defaultUserSpace);
context.setUserReference(XWikiRightService.GUEST_USER.equals(userReference.getName()) ? null : userReference);
}
} catch (XWikiException e) {
throw new ServletException("Failed to initialize the XWiki context.", e);
}
}
use of com.xpn.xwiki.web.XWikiServletRequest in project xwiki-platform by xwiki.
the class ImagePluginTest method testCacheOfScaledAttachment.
@Test
public void testCacheOfScaledAttachment() throws Exception {
XWikiContext xcontext = this.oldCore.getXWikiContext();
XWikiAttachment attachment = Mockito.mock(XWikiAttachment.class);
Mockito.when(attachment.getMimeType(xcontext)).thenReturn("image/png");
InputStream attachmentInputStream = new ByteArrayInputStream(testPngImageContent);
Mockito.when(attachment.getContentInputStream(xcontext)).thenReturn(attachmentInputStream);
Mockito.when(attachment.clone()).thenReturn(attachment);
XWikiAttachmentContent attachmentContent = Mockito.mock(XWikiAttachmentContent.class);
Mockito.when(attachment.getAttachment_content()).thenReturn(attachmentContent);
Mockito.when(attachmentContent.getContentInputStream()).thenReturn(attachmentInputStream);
OutputStream attachmentOutputStream = Mockito.mock(OutputStream.class);
Mockito.when(attachmentContent.getContentOutputStream()).thenReturn(attachmentOutputStream);
CacheManager cacheManager = this.oldCore.getMocker().getInstance(CacheManager.class);
Cache<Object> imageCache = Mockito.mock(Cache.class);
Mockito.when(cacheManager.createNewLocalCache(ArgumentMatchers.any())).thenReturn(imageCache);
XWikiServletRequest request = Mockito.mock(XWikiServletRequest.class);
Mockito.when(request.getParameter("width")).thenReturn("30");
Mockito.when(request.getParameter("height")).thenReturn("30");
xcontext.setRequest(request);
Image image = Mockito.mock(Image.class);
Mockito.when(image.getWidth(null)).thenReturn(400);
Mockito.when(image.getHeight(null)).thenReturn(300);
Mockito.when(imageProcessor.readImage(attachmentInputStream)).thenReturn(image);
RenderedImage renderedImage = Mockito.mock(RenderedImage.class);
Mockito.when(imageProcessor.scaleImage(image, 30, 30)).thenReturn(renderedImage);
XWikiAttachment scaled = plugin.downloadAttachment(attachment, xcontext);
String cacheKey = "0;null;30;30;false;-1.0";
Mockito.when(imageCache.get(cacheKey)).thenReturn(scaled);
// Load again, this time from cache.
Assert.assertSame(scaled, plugin.downloadAttachment(attachment, xcontext));
Mockito.verify(imageProcessor, Mockito.times(1)).writeImage(renderedImage, "image/png", .5F, attachmentOutputStream);
Mockito.verify(imageCache, Mockito.times(1)).set(cacheKey, attachment);
}
use of com.xpn.xwiki.web.XWikiServletRequest in project xwiki-platform by xwiki.
the class DefaultXWikiStubContextProvider method initialize.
@Override
public void initialize(XWikiContext context) {
XWikiContext newContext = context.clone();
newContext.setCacheDuration(0);
newContext.setUserReference(null);
newContext.setLocale(null);
newContext.setWikiId(context.getMainXWiki());
// Cleanup
newContext.flushClassCache();
// So we force the dummy request with the current host
if (newContext.getRequest() != null) {
XWikiServletRequestStub initialRequest = new XWikiServletRequestStub();
initialRequest.setHost(newContext.getRequest().getHeader("x-forwarded-host"));
initialRequest.setScheme(newContext.getRequest().getScheme());
XWikiServletRequest request = new XWikiServletRequest(initialRequest);
newContext.setRequest(request);
}
// Get rid of the real response
if (newContext.getResponse() != null) {
XWikiServletResponseStub initialResponse = new XWikiServletResponseStub();
// anything to keep ?
XWikiServletResponse response = new XWikiServletResponse(initialResponse);
newContext.setResponse(response);
}
// We decide arbitrarily to use the Servlet URL Factory since it's the "standard" factory.
if (newContext.getURLFactory() != null) {
XWikiURLFactory urlf = newContext.getWiki().getURLFactoryService().createURLFactory(XWikiContext.MODE_SERVLET, context);
newContext.setURLFactory(urlf);
}
this.initialContext = newContext;
this.logger.debug("Stub context initialized.");
}
use of com.xpn.xwiki.web.XWikiServletRequest in project xwiki-platform by xwiki.
the class DefaultXWikiStubContextProvider method createStubContext.
@Override
public XWikiContext createStubContext() {
XWikiContext stubContext;
if (this.initialContext != null) {
stubContext = this.initialContext.clone();
// We make sure to not share the same Request instance with several threads
if (this.initialContext.getRequest() != null) {
XWikiServletRequestStub stubRequest = new XWikiServletRequestStub();
stubRequest.setHost(this.initialContext.getRequest().getHeader("x-forwarded-host"));
stubRequest.setScheme(this.initialContext.getRequest().getScheme());
XWikiServletRequest request = new XWikiServletRequest(stubRequest);
stubContext.setRequest(request);
}
// We make sure to not share the same Response instance with several threads
if (this.initialContext.getResponse() != null) {
XWikiServletResponseStub stubResponse = new XWikiServletResponseStub();
XWikiServletResponse response = new XWikiServletResponse(stubResponse);
stubContext.setResponse(response);
}
// We make sure to not share the same document instance with several threads
stubContext.setDoc(new XWikiDocument(this.defaultDocumentReferenceProvider.get()));
} else {
stubContext = null;
}
return stubContext;
}
Aggregations