Index: contrib/jcr-server/webapp/src/java/org/apache/jackrabbit/j2ee/SimpleWebdavServlet.java =================================================================== --- contrib/jcr-server/webapp/src/java/org/apache/jackrabbit/j2ee/SimpleWebdavServlet.java (revision 189646) +++ contrib/jcr-server/webapp/src/java/org/apache/jackrabbit/j2ee/SimpleWebdavServlet.java (working copy) @@ -145,11 +145,6 @@ } log.info(INIT_PARAM_RESOURCE_PATH_PREFIX + " = '" + resourcePathPrefix + "'"); - // init repository - repository = RepositoryAccessServlet.getRepository(); - if (repository == null) { - throw new ServletException("Repository could not be retrieved. Check config of 'RepositoryAccessServlet'."); - } try { String chain = getInitParameter(INIT_PARAM_CHAIN_CATALOG); URL chainUrl = getServletContext().getResource(chain); @@ -285,6 +280,13 @@ } /** + * Sets the DavLocatorFactory. + */ + public void setLocatorFactory(DavLocatorFactory factory) { + locatorFactory = factory; + } + + /** * Returns the LockManager. If no lock manager has * been set or created a new instance of {@link SimpleLockManager} is * returned. @@ -299,6 +301,13 @@ } /** + * Sets the LockManager. + */ + public void setLockManager(LockManager manager) { + lockManager = manager; + } + + /** * Returns the DavResourceFactory. If no request factory has * been set or created a new instance of {@link ResourceFactoryImpl} is * returned. @@ -313,6 +322,13 @@ } /** + * Sets the DavResourceFactory. + */ + public void setResourceFactory(DavResourceFactory factory) { + resourceFactory = factory; + } + + /** * Returns the header value retrieved from the {@link #INIT_PARAM_AUTHENTICATE_HEADER} * init parameter. If the parameter is missing, the value defaults to * {@link #DEFAULT_AUTHENTICATE_HEADER}. @@ -325,7 +341,10 @@ } /** - * Returns the DavSessionProvider. + * Returns the SessionProvider. If no session + * provider has been set or created a new instance of + * {@link SessionProviderImpl} that extracts credentials from the + * request's Authorization header is returned. * * @return the session provider */ @@ -342,16 +361,54 @@ } /** - * Returns the DavSessionProvider. + * Sets the SessionProvider. + */ + public void setRepositorySessionProvider(SessionProvider provider) { + sessionProvider = provider; + } + + /** + * Returns the DavSessionProvider. If no session + * provider has been set or created a new instance of + * DavSessionProviderImpl is returned. * * @return the session provider */ public synchronized DavSessionProvider getSessionProvider() { if (davSessionProvider == null) { davSessionProvider = - new DavSessionProviderImpl(repository, getRepositorySessionProvider()); + new DavSessionProviderImpl(getRepository(), + getRepositorySessionProvider()); } return davSessionProvider; } + /** + * Sets the DavSessionProvider. + */ + public void setSessionProvider(DavSessionProvider provider) { + davSessionProvider = provider; + } + + /** + * Returns the Repository. If no repository has been + * set or created the repository initialized by + * RepositoryAccessServlet is returned. + */ + public Repository getRepository() { + if (repository == null) { + repository = RepositoryAccessServlet.getRepository(); + if (repository == null) { + throw new IllegalStateException("Repository could not be retrieved. Check config of 'RepositoryAccessServlet'."); + } + } + return repository; + } + + /** + * Sets the Repository. + */ + public void setRepository(Repository repository) { + this.repository = repository; + } }