You are viewing a plain text version of this content. The canonical link for it is here.
Posted to slide-dev@jakarta.apache.org by pn...@apache.org on 2004/10/18 10:42:59 UTC

cvs commit: jakarta-slide/src/webdav/server/org/apache/slide/webdav/method CopyMethod.java MoveMethod.java

pnever      2004/10/18 01:42:59

  Modified:    src/share/org/apache/slide/macro Tag:
                        SLIDE_2_1_RELEASE_BRANCH CopyListener.java
                        MacroImpl.java
               src/webdav/server/org/apache/slide/webdav/method Tag:
                        SLIDE_2_1_RELEASE_BRANCH CopyMethod.java
                        MoveMethod.java
  Log:
  Fixed bug revealed by testcase functional\copy\mix\copyChangedProperties.xml:
  the DAV:owner property of the *copy* isn't set correctly to be the principal issuing the COPY request. Of course, if a resource existed at the destination location and is overwritten by the COPY operation, the owner should not change, as an existing resource is just being updated.
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.6.2.1   +6 -6      jakarta-slide/src/share/org/apache/slide/macro/CopyListener.java
  
  Index: CopyListener.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/macro/CopyListener.java,v
  retrieving revision 1.6
  retrieving revision 1.6.2.1
  diff -u -r1.6 -r1.6.2.1
  --- CopyListener.java	28 Jul 2004 09:35:28 -0000	1.6
  +++ CopyListener.java	18 Oct 2004 08:42:57 -0000	1.6.2.1
  @@ -5,7 +5,7 @@
    *
    * ====================================================================
    *
  - * Copyright 1999-2002 The Apache Software Foundation 
  + * Copyright 1999-2002 The Apache Software Foundation
    *
    * Licensed under the Apache License, Version 2.0 (the "License");
    * you may not use this file except in compliance with the License.
  @@ -63,7 +63,7 @@
        *                             of the Macro helper (contained in the
        *                             MacroDeleteException.
        */
  -    public void afterCopy(String sourceUri, String destinationUri, boolean isRootOfCopy) throws SlideException;
  +    public void afterCopy(String sourceUri, String destinationUri, boolean isRootOfCopy, boolean destinationExists) throws SlideException;
       
   }
   
  
  
  
  1.41.2.2  +24 -24    jakarta-slide/src/share/org/apache/slide/macro/MacroImpl.java
  
  Index: MacroImpl.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/share/org/apache/slide/macro/MacroImpl.java,v
  retrieving revision 1.41.2.1
  retrieving revision 1.41.2.2
  diff -u -r1.41.2.1 -r1.41.2.2
  --- MacroImpl.java	17 Aug 2004 15:33:39 -0000	1.41.2.1
  +++ MacroImpl.java	18 Oct 2004 08:42:57 -0000	1.41.2.2
  @@ -5,7 +5,7 @@
    *
    * ====================================================================
    *
  - * Copyright 1999-2002 The Apache Software Foundation 
  + * Copyright 1999-2002 The Apache Software Foundation
    *
    * Licensed under the Apache License, Version 2.0 (the "License");
    * you may not use this file except in compliance with the License.
  @@ -446,7 +446,7 @@
           try {
               if ( MacroEvent.MOVE.isEnabled() ) EventDispatcher.getInstance().fireVetoableEvent(MacroEvent.MOVE, new MacroEvent(this, token, namespace, sourceUri, destinationUri));
           } catch ( VetoException ve ) {
  -            throw new CopyMacroException(ve.getMessage()); // FIXME: Where is the MoveMacroException?    
  +            throw new CopyMacroException(ve.getMessage()); // FIXME: Where is the MoveMacroException?
           }
       }
       
  @@ -703,20 +703,20 @@
               
               // notify CopyListener
               if (copyListener != null) {
  -                copyListener.afterCopy(sourceUri, destinationUri, isRootOfCopy);
  +                copyListener.afterCopy(sourceUri, destinationUri, isRootOfCopy, destinationExists);
               }
               
               // We copy each of this object's children
               if (parameters.isRecursive()) {
  -	            while(sourceNodeChildren.hasMoreElements()) {
  -	                String childUri = (String) sourceNodeChildren.nextElement();
  -	                String childDestinationUri = destinationUri + childUri
  -	                    .substring(sourceNode.getUri().length());
  -	                copyObject(token, childUri, childDestinationUri,
  -	                           parameters, false, e, copyRedirector, copyListener,
  -	                           deleteRedirector, deleteListener
  -	                          );
  -	            }
  +                while(sourceNodeChildren.hasMoreElements()) {
  +                    String childUri = (String) sourceNodeChildren.nextElement();
  +                    String childDestinationUri = destinationUri + childUri
  +                        .substring(sourceNode.getUri().length());
  +                    copyObject(token, childUri, childDestinationUri,
  +                               parameters, false, e, copyRedirector, copyListener,
  +                               deleteRedirector, deleteListener
  +                              );
  +                }
               }
               
           } catch(SlideException ex) {
  @@ -776,14 +776,14 @@
                       }
                   }
   
  -				// Removing links objects
  -				if (currentObject.hasLinks()) {
  -					Enumeration links = currentObject.enumerateLinks();
  -					while (links.hasMoreElements()) {
  -						String linkUri = (String)links.nextElement();
  -						deleteObject(token, linkUri, e, deleteRedirector, deleteListener);
  -					}
  -				}
  +                // Removing links objects
  +                if (currentObject.hasLinks()) {
  +                    Enumeration links = currentObject.enumerateLinks();
  +                    while (links.hasMoreElements()) {
  +                        String linkUri = (String)links.nextElement();
  +                        deleteObject(token, linkUri, e, deleteRedirector, deleteListener);
  +                    }
  +                }
                   
                   
                   // now let the client redirect
  
  
  
  No                   revision
  No                   revision
  1.67.2.1  +16 -39    jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/CopyMethod.java
  
  Index: CopyMethod.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/CopyMethod.java,v
  retrieving revision 1.67
  retrieving revision 1.67.2.1
  diff -u -r1.67 -r1.67.2.1
  --- CopyMethod.java	2 Aug 2004 16:36:02 -0000	1.67
  +++ CopyMethod.java	18 Oct 2004 08:42:58 -0000	1.67.2.1
  @@ -23,56 +23,28 @@
   
   package org.apache.slide.webdav.method;
   
  -import java.io.IOException;
  -import java.util.ArrayList;
  -import java.util.Date;
  -import java.util.Enumeration;
  -import java.util.HashMap;
  -import java.util.Iterator;
  -import java.util.List;
  -import java.util.Map;
  +import java.util.*;
  +import org.apache.slide.content.*;
  +import org.apache.slide.macro.*;
  +import org.apache.slide.webdav.util.*;
   
  +import java.io.IOException;
   import org.apache.slide.common.NamespaceAccessToken;
   import org.apache.slide.common.ServiceAccessException;
   import org.apache.slide.common.SlideException;
  -import org.apache.slide.content.BranchNotFoundException;
  -import org.apache.slide.content.NodeNotVersionedException;
  -import org.apache.slide.content.NodeProperty;
  -import org.apache.slide.content.NodeRevisionDescriptor;
  -import org.apache.slide.content.NodeRevisionDescriptors;
  -import org.apache.slide.content.NodeRevisionNumber;
  -import org.apache.slide.content.RevisionAlreadyExistException;
  -import org.apache.slide.content.RevisionDescriptorNotFoundException;
  -import org.apache.slide.content.RevisionNotFoundException;
   import org.apache.slide.event.EventDispatcher;
   import org.apache.slide.event.VetoException;
   import org.apache.slide.lock.ObjectLockedException;
  -import org.apache.slide.macro.CopyListener;
  -import org.apache.slide.macro.CopyRouteRedirector;
  -import org.apache.slide.macro.DeleteListener;
  -import org.apache.slide.macro.Macro;
  -import org.apache.slide.macro.MacroException;
  -import org.apache.slide.macro.MacroParameters;
   import org.apache.slide.security.AccessDeniedException;
   import org.apache.slide.structure.LinkedObjectNotFoundException;
   import org.apache.slide.structure.ObjectNode;
   import org.apache.slide.structure.ObjectNotFoundException;
  +import org.apache.slide.structure.SubjectNode;
   import org.apache.slide.util.Configuration;
   import org.apache.slide.util.XMLValue;
   import org.apache.slide.webdav.WebdavException;
   import org.apache.slide.webdav.WebdavServletConfig;
   import org.apache.slide.webdav.event.WebdavEvent;
  -import org.apache.slide.webdav.util.AclConstants;
  -import org.apache.slide.webdav.util.BindConstants;
  -import org.apache.slide.webdav.util.DeltavConstants;
  -import org.apache.slide.webdav.util.LabeledRevisionNotFoundException;
  -import org.apache.slide.webdav.util.PreconditionViolationException;
  -import org.apache.slide.webdav.util.PropertyHelper;
  -import org.apache.slide.webdav.util.UriHandler;
  -import org.apache.slide.webdav.util.VersioningHelper;
  -import org.apache.slide.webdav.util.ViolatedPrecondition;
  -import org.apache.slide.webdav.util.WebdavStatus;
  -import org.apache.slide.webdav.util.WebdavUtils;
   import org.apache.slide.webdav.util.resourcekind.AbstractResourceKind;
   import org.apache.slide.webdav.util.resourcekind.CheckedInVersionControlled;
   import org.apache.slide.webdav.util.resourcekind.ResourceKind;
  @@ -181,7 +153,7 @@
                   // COPY on existing WSs or WRs is *not* restricted !!!
                   try {
                       if ( WebdavEvent.COPY.isEnabled() ) EventDispatcher.getInstance().fireVetoableEvent(WebdavEvent.COPY, new WebdavEvent(this));
  -
  +                    
                       content.retrieve(slideToken, destinationUri);
                       sendError = false;
                   }
  @@ -541,7 +513,7 @@
        *                             of the Macro helper (contained in the
        *                             MacroDeleteException.
        */
  -    public void afterCopy(String sourceUri, String destinationUri, boolean isRootOfCopy) throws SlideException {
  +    public void afterCopy(String sourceUri, String destinationUri, boolean isRootOfCopy, boolean destinationExists) throws SlideException {
           
           if(Configuration.useVersionControl()) {
               
  @@ -570,6 +542,11 @@
               // set some other properties
               destinationNrd.setLastModified( new Date() ); // P_GETLASTMODIFIED
               destinationNrd.setETag( PropertyHelper.computeEtag(destinationUri, destinationNrd) ); // P_GETETAG
  +            if (!destinationExists) {
  +                // copy is creating a new resource
  +                String creator = ((SubjectNode)security.getPrincipal(slideToken)).getPath().lastSegment();
  +                destinationNrd.setOwner(creator);
  +            }
               
               content.store(slideToken, destinationNrds.getUri(), destinationNrd, null);
               
  
  
  
  1.72.2.2  +5 -5      jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/MoveMethod.java
  
  Index: MoveMethod.java
  ===================================================================
  RCS file: /home/cvs/jakarta-slide/src/webdav/server/org/apache/slide/webdav/method/MoveMethod.java,v
  retrieving revision 1.72.2.1
  retrieving revision 1.72.2.2
  diff -u -r1.72.2.1 -r1.72.2.2
  --- MoveMethod.java	25 Sep 2004 20:38:43 -0000	1.72.2.1
  +++ MoveMethod.java	18 Oct 2004 08:42:58 -0000	1.72.2.2
  @@ -5,7 +5,7 @@
    *
    * ====================================================================
    *
  - * Copyright 1999-2002 The Apache Software Foundation 
  + * Copyright 1999-2002 The Apache Software Foundation
    *
    * Licensed under the Apache License, Version 2.0 (the "License");
    * you may not use this file except in compliance with the License.
  @@ -411,7 +411,7 @@
        *                             of the Macro helper (contained in the
        *                             MacroDeleteException.
        */
  -    public void afterCopy(String sourceUri, String destinationUri, boolean isRootOfCopy) throws SlideException {
  +    public void afterCopy(String sourceUri, String destinationUri, boolean isRootOfCopy, boolean destinationExists) throws SlideException {
   
           if( Configuration.useVersionControl() ) {
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: slide-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: slide-dev-help@jakarta.apache.org