luetzkendorf 2005/02/25 08:57:55
Modified: src/webdav/server/org/apache/slide/webdav/util
VersioningHelper.java
Log:
Intorduction of some more detailed Events triggered by the WebDAV layer.
E.g. now you will be informed if a single resource is copied, moved or deleted
while MOVE, COPY or DELETE.
Revision Changes Path
1.118 +48 -14
jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/VersioningHelper.java
Index: VersioningHelper.java
===================================================================
RCS file:
/home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/util/VersioningHelper.java,v
retrieving revision 1.117
retrieving revision 1.118
diff -u -r1.117 -r1.118
--- VersioningHelper.java 19 Jan 2005 15:21:52 -0000 1.117
+++ VersioningHelper.java 25 Feb 2005 16:57:55 -0000 1.118
@@ -45,6 +45,7 @@
import org.apache.slide.content.NodeRevisionNumber;
import org.apache.slide.content.RevisionDescriptorNotFoundException;
import org.apache.slide.content.NodeProperty.NamespaceCache;
+import org.apache.slide.event.EventDispatcher;
import org.apache.slide.event.VetoException;
import org.apache.slide.lock.Lock;
import org.apache.slide.lock.LockTokenNotFoundException;
@@ -68,6 +69,8 @@
import org.apache.slide.util.XMLValue;
import org.apache.slide.webdav.WebdavException;
import org.apache.slide.webdav.WebdavServletConfig;
+import org.apache.slide.webdav.event.DetailedWebdavEvent;
+import org.apache.slide.webdav.method.AbstractWebdavMethod;
import org.apache.slide.webdav.method.MethodNotAllowedException;
import org.apache.slide.webdav.util.resourcekind.AbstractResourceKind;
import org.apache.slide.webdav.util.resourcekind.CheckedInVersionControlled;
@@ -100,16 +103,23 @@
/**
* Factory method.
*/
- public static VersioningHelper
- getVersioningHelper( SlideToken sToken, NamespaceAccessToken
nsaToken,
- HttpServletRequest req, HttpServletResponse
resp, WebdavServletConfig sConf ) {
-
- return new VersioningHelper( sToken, nsaToken, req, resp, sConf );
+ public static VersioningHelper getVersioningHelper(SlideToken sToken,
+ NamespaceAccessToken nsaToken, HttpServletRequest req,
+ HttpServletResponse resp, WebdavServletConfig sConf) {
+
+ return new VersioningHelper(sToken, nsaToken, req, resp, sConf,
null);
+ }
+ public static VersioningHelper getVersioningHelper(SlideToken sToken,
+ NamespaceAccessToken nsaToken, HttpServletRequest req,
+ HttpServletResponse resp, WebdavServletConfig sConf,
+ AbstractWebdavMethod method) {
+
+ return new VersioningHelper(sToken, nsaToken, req, resp, sConf,
method);
}
/**
- ** The SAXBuilder used to create JDOM Documents.
- **/
+ * * The SAXBuilder used to create JDOM Documents.
+ */
protected static SAXBuilder saxBuilder = null;
private Content content = null;
@@ -120,8 +130,8 @@
private HttpServletResponse resp = null;
private WebdavServletConfig sConf = null;
private PropertyHelper pHelp = null;
- //private String serverURL = null;
private String slideContextPath = null;
+ private AbstractWebdavMethod method = null;
/**
* The URI of the <code>modifyRevisionMetadataAction</code>.
@@ -137,9 +147,9 @@
/**
* Protected contructor
*/
- protected VersioningHelper( SlideToken sToken, NamespaceAccessToken
nsaToken,
+ protected VersioningHelper(SlideToken sToken, NamespaceAccessToken
nsaToken,
HttpServletRequest req, HttpServletResponse
resp,
- WebdavServletConfig sConf ) {
+ WebdavServletConfig sConf,
AbstractWebdavMethod method) {
super( sToken, nsaToken );
this.req = req;
this.resp = resp;
@@ -150,6 +160,7 @@
this.lock = nsaToken.getLockHelper();
this.pHelp = PropertyHelper.getPropertyHelper( sToken, nsaToken,
sConf );
this.slideContextPath = req.getContextPath();
+ this.method = method;
if (!sConf.isDefaultServlet()) {
this.slideContextPath += req.getServletPath();
}
@@ -247,6 +258,12 @@
return;
}
+ if (DetailedWebdavEvent.VERSION_CONTROL_BEFORE.isEnabled()) {
+ EventDispatcher.getInstance().fireVetoableEvent(
+ DetailedWebdavEvent.VERSION_CONTROL_BEFORE,
+ new DetailedWebdavEvent(this.method, resourcePath));
+ }
+
// Create new history URI
UriHandler vhrUh = UriHandler.createNextHistoryUri( sToken,
nsaToken, rUh );
String vhrUri = String.valueOf(vhrUh);
@@ -315,8 +332,7 @@
// Set specific properties
vrNrd.setName(rUh.getName()); // P_DISPLAYNAME
- rNrd.setProperty(
- new NodeProperty(PN_CHECKED_IN, pHelp.createHrefValue(vrUri)) );
+ rNrd.setProperty(PN_CHECKED_IN, pHelp.createHrefValue(vrUri));
vhrNrd.setCreationDate( new Date() ); // P_CREATIONDATE
setCreationUser(vhrNrd);
vhrNrd.setLastModified( new Date() ); // P_GETLASTMODIFIED
@@ -324,8 +340,8 @@
vhrNrd.setETag( PropertyHelper.computeEtag(vhrUri, vhrNrd) ); //
P_GETETAG
// vhrNrd.setName( vhrUh.getHistoryName() ); // P_DISPLAYNAME
vhrNrd.setName( rNrd.getName() ); // P_DISPLAYNAME
- vhrNrd.setProperty(
- new NodeProperty(PN_VERSION_SET, pHelp.createHrefValue(vrUri)) );
+ vhrNrd.setProperty(PN_VERSION_SET, pHelp.createHrefValue(vrUri));
+
vrNrd.setCreationDate( new Date() ); // P_CREATIONDATE
setCreationUser(vrNrd);
vrNrd.setLastModified( new Date() ); // P_GETLASTMODIFIED
@@ -337,6 +353,12 @@
content.store( sToken, resourcePath, rNrd, null );
//revisionContent=null
content.store( sToken, vhrUri, vhrNrd, null ); //revisionContent=null
content.store( sToken, vhrUri, vrNrd, null ); //revisionContent=null
+
+ if (DetailedWebdavEvent.VERSION_CONTROL_AFTER.isEnabled()) {
+ EventDispatcher.getInstance().fireVetoableEvent(
+ DetailedWebdavEvent.VERSION_CONTROL_AFTER,
+ new DetailedWebdavEvent(this.method, resourcePath));
+ }
}
/**
@@ -389,6 +411,12 @@
resourcePath);
}
+ if (DetailedWebdavEvent.VERSION_CONTROL_BEFORE.isEnabled()) {
+ EventDispatcher.getInstance().fireVetoableEvent(
+ DetailedWebdavEvent.VERSION_CONTROL_BEFORE,
+ new DetailedWebdavEvent(this.method, resourcePath,
existingVersionPath));
+ }
+
// create the VCR
String vcrUri = String.valueOf(rUh);
String evUri = String.valueOf(evUh);
@@ -424,6 +452,12 @@
content.retrieve( sToken, evNrds, evNrd );
content.create( sToken, vcrUri, vcrNrd, evContent );
+ if (DetailedWebdavEvent.VERSION_CONTROL_AFTER.isEnabled()) {
+ EventDispatcher.getInstance().fireVetoableEvent(
+ DetailedWebdavEvent.VERSION_CONTROL_AFTER,
+ new DetailedWebdavEvent(this.method, resourcePath,
existingVersionPath));
+ }
+
// Set status created
resp.setStatus( WebdavStatus.SC_CREATED );
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]