Search in sources :

Example 1 with XWikiServletURLFactory

use of com.xpn.xwiki.web.XWikiServletURLFactory in project xwiki-platform by xwiki.

the class URLFactorySetup method setUp.

/**
 * Sets up a fake base URL and a fake Servlet URL Factory.
 *
 * @param xwiki the stubbed XWiki instance
 * @param context the stubbed XWikiContext instance
 * @throws Exception when a setup error occurs
 */
public static void setUp(XWiki xwiki, XWikiContext context) throws Exception {
    doReturn(XWIKI).when(xwiki).getWebAppPath(context);
    context.setURL(new URL("http://localhost:8080/xwiki/bin/Main/WebHome"));
    doReturn(true).when(xwiki).showViewAction(context);
    context.setURLFactory(new XWikiServletURLFactory(context));
    doReturn("/bin/").when(xwiki).getServletPath(XWIKI, context);
}
Also used : XWikiServletURLFactory(com.xpn.xwiki.web.XWikiServletURLFactory) URL(java.net.URL)

Example 2 with XWikiServletURLFactory

use of com.xpn.xwiki.web.XWikiServletURLFactory in project xwiki-platform by xwiki.

the class SyndEntryDocumentSourceTest method mockUp.

private void mockUp() throws Exception {
    final Map<String, XWikiDocument> docs = new HashMap<String, XWikiDocument>();
    final XWikiContext context = getContext();
    // Set URL/Request
    context.setRequest(new XWikiServletRequestStub());
    context.setURL(new URL("http://localhost:8080/xwiki/bin/view/MilkyWay/Fidis"));
    final XWiki xwiki = new XWiki(new XWikiConfig(), context) {

        @Override
        public String getXWikiPreference(String prefname, String defaultValue, XWikiContext context) {
            return defaultValue;
        }
    };
    context.setURLFactory(new XWikiServletURLFactory(new URL("http://www.xwiki.org/"), "xwiki/", "bin/"));
    final Mock mockXWikiStore = mock(XWikiHibernateStore.class, new Class[] { XWiki.class, XWikiContext.class }, new Object[] { xwiki, context });
    mockXWikiStore.stubs().method("loadXWikiDoc").will(new CustomStub("Implements XWikiStoreInterface.loadXWikiDoc") {

        @Override
        public Object invoke(Invocation invocation) throws Throwable {
            XWikiDocument shallowDoc = (XWikiDocument) invocation.parameterValues.get(0);
            if (docs.containsKey(shallowDoc.getName())) {
                return docs.get(shallowDoc.getName());
            } else {
                return shallowDoc;
            }
        }
    });
    mockXWikiStore.stubs().method("saveXWikiDoc").will(new CustomStub("Implements XWikiStoreInterface.saveXWikiDoc") {

        @Override
        public Object invoke(Invocation invocation) throws Throwable {
            XWikiDocument document = (XWikiDocument) invocation.parameterValues.get(0);
            document.setNew(false);
            document.setStore((XWikiStoreInterface) mockXWikiStore.proxy());
            docs.put(document.getName(), document);
            return null;
        }
    });
    mockXWikiStore.stubs().method("getTranslationList").will(returnValue(Collections.EMPTY_LIST));
    mockXWikiStore.stubs().method("exists").will(returnValue(false));
    final Mock mockXWikiVersioningStore = mock(XWikiHibernateVersioningStore.class, new Class[] { XWiki.class, XWikiContext.class }, new Object[] { xwiki, context });
    mockXWikiVersioningStore.stubs().method("getXWikiDocumentArchive").will(returnValue(null));
    mockXWikiVersioningStore.stubs().method("resetRCSArchive").will(returnValue(null));
    xwiki.setStore((XWikiStoreInterface) mockXWikiStore.proxy());
    xwiki.setVersioningStore((XWikiVersioningStoreInterface) mockXWikiVersioningStore.proxy());
    final Mock mockXWikiRightsService = mock(XWikiRightServiceImpl.class, new Class[] {}, new Object[] {});
    mockXWikiRightsService.stubs().method("hasAccessLevel").will(new CustomStub("Implements XWikiRightService.hasAccessLevel") {

        @Override
        public Object invoke(Invocation invocation) throws Throwable {
            // String right = (String) invocation.parameterValues.get(0);
            String user = (String) invocation.parameterValues.get(1);
            // we give access to all the users with an even name length
            return new Boolean(user.length() % 2 == 0);
        }
    });
    xwiki.setRightService((XWikiRightService) mockXWikiRightsService.proxy());
}
Also used : XWikiServletRequestStub(com.xpn.xwiki.web.XWikiServletRequestStub) XWikiServletURLFactory(com.xpn.xwiki.web.XWikiServletURLFactory) Invocation(org.jmock.core.Invocation) HashMap(java.util.HashMap) XWikiContext(com.xpn.xwiki.XWikiContext) XWiki(com.xpn.xwiki.XWiki) URL(java.net.URL) Mock(org.jmock.Mock) XWikiStoreInterface(com.xpn.xwiki.store.XWikiStoreInterface) XWikiDocument(com.xpn.xwiki.doc.XWikiDocument) CustomStub(org.jmock.core.stub.CustomStub) XWikiConfig(com.xpn.xwiki.XWikiConfig)

Example 3 with XWikiServletURLFactory

use of com.xpn.xwiki.web.XWikiServletURLFactory in project xwiki-platform by xwiki.

the class OldCoreHelper method createXWikiContext.

/**
 * @param wikiId id of the wiki for which to prepare the XWiki Context (e.g. {@code xwiki})
 * @param hibernateConfig the Hibernate config fill containing the database definition (JDBC driver, username and
 *            password, etc)
 * @return a valid XWikiContext using the passed Hibernate configuration and passed database name
 * @throws Exception failed to initialize context.
 */
// TODO: Replace the Hibernate config file with a list of parameters required for the packaging operation
private XWikiContext createXWikiContext() throws Exception {
    Utils.setComponentManager(this.componentManager);
    this.xcontext = new XWikiContext();
    this.xcontext.put(ComponentManager.class.getName(), this.componentManager);
    // Initialize the Container fields (request, response, session).
    try {
        ExecutionContext econtext = new ExecutionContext();
        // Bridge with old XWiki Context, required for old code.
        this.xcontext.declareInExecutionContext(econtext);
        this.ecim.initialize(econtext);
    } catch (ExecutionContextException e) {
        throw new Exception("Failed to initialize Execution Context.", e);
    }
    this.xcontext.setWikiId(wikiId);
    this.xcontext.setMainXWiki(wikiId);
    // Use a dummy Request/Response even in daemon mode so that XWiki's initialization can create a Servlet URL
    // Factory and any code requiring those objects will work.
    this.xcontext.setRequest(new XWikiServletRequestStub());
    this.xcontext.setResponse(new XWikiServletResponseStub());
    // Use a dummy URL so that XWiki's initialization can create a Servlet URL Factory. We could also have
    // registered a custom XWikiURLFactory against XWikiURLFactoryService but it's more work.
    this.xcontext.setURL(new URL("http://localhost/xwiki/bin/DummyAction/DumySpace/DummyPage"));
    // Set a dummy Document in the context to act as the current document since when a document containing
    // objects is imported it'll generate Object diff events and the algorithm to compute an object diff
    // currently requires rendering object properties, which requires a current document in the context.
    this.xcontext.setDoc(new XWikiDocument(new DocumentReference(wikiId, "dummySpace", "dummyPage")));
    XWikiConfig config = new XWikiConfig();
    config.put("xwiki.store.class", "com.xpn.xwiki.store.XWikiHibernateStore");
    // The XWikiConfig object requires path to be in unix format (i.e. with forward slashes)
    String hibernateConfigInUnixFormat = hibernateConfig.getPath().replace('\\', '/');
    config.put("xwiki.store.hibernate.path", hibernateConfigInUnixFormat);
    config.put("xwiki.store.hibernate.updateschema", "1");
    // Enable backlinks so that when documents are imported their backlinks will be saved too
    config.put("xwiki.backlinks", "1");
    XWiki xwiki = new XWiki(config, this.xcontext, null, true);
    this.xcontext.setUserReference(new DocumentReference("xwiki", "XWiki", "superadmin"));
    try {
        this.xcontext.setURLFactory(new XWikiServletURLFactory(new URL("http://localhost:8080"), "xwiki/", "bin/"));
    } catch (MalformedURLException e) {
        // doesn't work with external code.
        throw new XWikiException(XWikiException.MODULE_XWIKI_PLUGINS, XWikiException.ERROR_XWIKI_UNKNOWN, "Failed to set up URL Factory", e);
    }
    // Trigger extensions that need to initialize the database (create classes, etc.)
    xwiki.initializeWiki(this.xcontext.getMainXWiki(), true, this.xcontext);
    return this.xcontext;
}
Also used : XWikiServletRequestStub(com.xpn.xwiki.web.XWikiServletRequestStub) XWikiServletURLFactory(com.xpn.xwiki.web.XWikiServletURLFactory) MalformedURLException(java.net.MalformedURLException) XWikiContext(com.xpn.xwiki.XWikiContext) XWiki(com.xpn.xwiki.XWiki) ExecutionContextException(org.xwiki.context.ExecutionContextException) XWikiException(com.xpn.xwiki.XWikiException) ComponentLookupException(org.xwiki.component.manager.ComponentLookupException) MalformedURLException(java.net.MalformedURLException) MojoExecutionException(org.apache.maven.plugin.MojoExecutionException) ExecutionContextException(org.xwiki.context.ExecutionContextException) URL(java.net.URL) XWikiServletResponseStub(com.xpn.xwiki.web.XWikiServletResponseStub) XWikiDocument(com.xpn.xwiki.doc.XWikiDocument) ExecutionContext(org.xwiki.context.ExecutionContext) EmbeddableComponentManager(org.xwiki.component.embed.EmbeddableComponentManager) ComponentManager(org.xwiki.component.manager.ComponentManager) DocumentReference(org.xwiki.model.reference.DocumentReference) XWikiConfig(com.xpn.xwiki.XWikiConfig) XWikiException(com.xpn.xwiki.XWikiException)

Aggregations

XWikiServletURLFactory (com.xpn.xwiki.web.XWikiServletURLFactory)3 URL (java.net.URL)3 XWiki (com.xpn.xwiki.XWiki)2 XWikiConfig (com.xpn.xwiki.XWikiConfig)2 XWikiContext (com.xpn.xwiki.XWikiContext)2 XWikiDocument (com.xpn.xwiki.doc.XWikiDocument)2 XWikiServletRequestStub (com.xpn.xwiki.web.XWikiServletRequestStub)2 XWikiException (com.xpn.xwiki.XWikiException)1 XWikiStoreInterface (com.xpn.xwiki.store.XWikiStoreInterface)1 XWikiServletResponseStub (com.xpn.xwiki.web.XWikiServletResponseStub)1 MalformedURLException (java.net.MalformedURLException)1 HashMap (java.util.HashMap)1 MojoExecutionException (org.apache.maven.plugin.MojoExecutionException)1 Mock (org.jmock.Mock)1 Invocation (org.jmock.core.Invocation)1 CustomStub (org.jmock.core.stub.CustomStub)1 EmbeddableComponentManager (org.xwiki.component.embed.EmbeddableComponentManager)1 ComponentLookupException (org.xwiki.component.manager.ComponentLookupException)1 ComponentManager (org.xwiki.component.manager.ComponentManager)1 ExecutionContext (org.xwiki.context.ExecutionContext)1