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]

Reply via email to