Index: contrib/jcr-server/server/src/java/org/apache/jackrabbit/server/simple/dav/DavResourceImpl.java
===================================================================
--- contrib/jcr-server/server/src/java/org/apache/jackrabbit/server/simple/dav/DavResourceImpl.java (revision 160087)
+++ contrib/jcr-server/server/src/java/org/apache/jackrabbit/server/simple/dav/DavResourceImpl.java (working copy)
@@ -353,8 +353,9 @@
* @throws RepositoryException
* @throws IOException
*/
- private void importXml(Node parentNode, InputStream in, String contentType)
- throws RepositoryException, IOException {
+ protected void importXml(Node parentNode, InputStream in,
+ String contentType)
+ throws RepositoryException, IOException {
Node content = parentNode.addNode("jcr:content", "nt:unstructured");
content.setProperty("jcr:mimeType", contentType);
content.setProperty("jcr:lastModified", Calendar.getInstance());
@@ -369,8 +370,9 @@
* @param contentType
* @throws RepositoryException
*/
- private void importFile(Node parentNode, InputStream in, String contentType)
- throws RepositoryException {
+ protected void importFile(Node parentNode, InputStream in,
+ String contentType)
+ throws RepositoryException {
Node content = parentNode.addNode("jcr:content", "nt:resource");
content.setProperty("jcr:mimeType", contentType);
content.setProperty("jcr:encoding", "");
Index: contrib/jcr-server/server/src/java/org/apache/jackrabbit/server/simple/WebdavServlet.java
===================================================================
--- contrib/jcr-server/server/src/java/org/apache/jackrabbit/server/simple/WebdavServlet.java (revision 160087)
+++ contrib/jcr-server/server/src/java/org/apache/jackrabbit/server/simple/WebdavServlet.java (working copy)
@@ -27,6 +27,7 @@
import org.apache.log4j.Logger;
import org.apache.jackrabbit.server.AbstractWebdavServlet;
import org.apache.jackrabbit.webdav.*;
+import org.apache.jackrabbit.webdav.lock.LockManager;
/**
* WebdavServlet provides webdav support (level 1 and 2 complient) for repository
@@ -46,7 +47,7 @@
* This is needed because some clients rely on a successful locking
* mechanism in order to perform properly (e.g. mac OSX built-in dav client)
*/
- private SimpleLockManager lockManager;
+ private LockManager lockManager;
/** the resource factory */
private DavResourceFactory resourceFactory;
@@ -77,10 +78,6 @@
resourcePathPrefix = resourcePathPrefix.substring(0, resourcePathPrefix.length()-1);
}
log.info(INIT_PARAM_RESOURCE_PATH_PREFIX + " = '" + resourcePathPrefix + "'");
-
- lockManager = new SimpleLockManager();
- resourceFactory = new ResourceFactoryImpl(lockManager);
- locatorFactory = new LocatorFactoryImpl(resourcePathPrefix);
}
/**
@@ -95,11 +92,12 @@
throws ServletException, IOException {
try {
- WebdavRequest webdavRequest = new WebdavRequestImpl(request, locatorFactory);
+ WebdavRequest webdavRequest =
+ new WebdavRequestImpl(request, getLocatorFactory());
WebdavResponse webdavResponse = new WebdavResponseImpl(response);
// make sure there is a authenticated user
- getDavSessionProvider().acquireSession(webdavRequest);
+ getSessionProvider().acquireSession(webdavRequest);
if (webdavRequest.getDavSession() == null) {
return;
}
@@ -156,7 +154,7 @@
// GET, HEAD, TRACE......
super.service(request, response);
}
- getDavSessionProvider().releaseSession(webdavRequest);
+ getSessionProvider().releaseSession(webdavRequest);
} catch (DavException e) {
// special handling for unauthorized, should be done nicer
@@ -192,7 +190,7 @@
*/
protected DavResource createResource(DavResourceLocator locator, WebdavRequest request, WebdavResponse response)
throws DavException {
- return resourceFactory.createResource(locator, request, response);
+ return getResourceFactory().createResource(locator, request, response);
}
/**
@@ -206,13 +204,82 @@
}
/**
+ * Returns the DavLocatorFactory. If no locator factory has
+ * been set or created a new instance of {@link LocatorFactoryImpl} is
+ * returned.
+ *
+ * @return the locator factory
+ */
+ public DavLocatorFactory getLocatorFactory() {
+ if (locatorFactory == null) {
+ locatorFactory = new LocatorFactoryImpl(resourcePathPrefix);
+ }
+ return locatorFactory;
+ }
+
+ /**
+ * Set the locator factory
+ *
+ * @param locatorFactory
+ */
+ public void setLocatorFactory(DavLocatorFactory locatorFactory) {
+ this.locatorFactory = locatorFactory;
+ }
+
+ /**
+ * Returns the LockManager. If no lock manager has
+ * been set or created a new instance of {@link SimpleLockManager} is
+ * returned.
+ *
+ * @return the lock manager
+ */
+ public LockManager getLockManager() {
+ if (lockManager == null) {
+ lockManager = new SimpleLockManager();
+ }
+ return lockManager;
+ }
+
+ /**
+ * Set the lock manager
+ *
+ * @param lockManager
+ */
+ public void setLockManager(LockManager lockManager) {
+ this.lockManager = lockManager;
+ }
+
+ /**
+ * Returns the DavResourceFactory. If no request factory has
+ * been set or created a new instance of {@link ResourceFactoryImpl} is
+ * returned.
+ *
+ * @return the resource factory
+ */
+ public DavResourceFactory getResourceFactory() {
+ if (resourceFactory == null) {
+ resourceFactory = new ResourceFactoryImpl(lockManager);
+ }
+ return resourceFactory;
+ }
+
+ /**
+ * Set the resource factory
+ *
+ * @param resourceFactory
+ */
+ public void setResourceFactory(DavResourceFactory resourceFactory) {
+ this.resourceFactory = resourceFactory;
+ }
+
+ /**
* Returns the DavSessionProvider. If no session provider has
* been set or created a new instance of {@link DavSessionProviderImpl} is
- * return.
+ * returned.
*
* @return the session provider
*/
- public DavSessionProvider getDavSessionProvider() {
+ public DavSessionProvider getSessionProvider() {
if (sessionProvider == null) {
sessionProvider = new DavSessionProviderImpl();
}
@@ -224,7 +291,7 @@
*
* @param sessionProvider
*/
- public void setDavSessionProvider(DavSessionProvider sessionProvider) {
+ public void setSessionProvider(DavSessionProvider sessionProvider) {
this.sessionProvider = sessionProvider;
}
}