pnever      2005/03/02 00:33:02

  Modified:    src/share/org/apache/slide/macro Tag:
                        SLIDE_2_1_RELEASE_BRANCH MacroImpl.java
  Log:
  Ooops ... my last change didn't take into account that copyObject is
  also called by MOVE. Fixed now.
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.41.2.9  +52 -15    
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.8
  retrieving revision 1.41.2.9
  diff -u -r1.41.2.8 -r1.41.2.9
  --- MacroImpl.java    1 Mar 2005 20:53:08 -0000       1.41.2.8
  +++ MacroImpl.java    2 Mar 2005 08:33:01 -0000       1.41.2.9
  @@ -169,6 +169,38 @@
                        DeleteTargetRedirector deleteRedirector, DeleteListener 
deleteListener)
           throws CopyMacroException, DeleteMacroException {
           
  +        copy(token, sourceUri, destinationUri, parameters, copyRedirector, 
copyListener, deleteRedirector, deleteListener, false); // forMove=false
  +    }
  +    
  +    /**
  +     * Copy macro.
  +     *
  +     * @param token Credentials token
  +     * @param sourceUri Uri of the source
  +     * @param destinationUri Uri of the destination
  +     * @param parameters Macro parameters
  +     * @param copyRedirector  the CopyRoutRedirector may be used to redirect
  +     *                        the source and/or destination URI of the
  +     *                         <code>copy</code> operation.
  +     *                        (May be <code>null</code>.)
  +     * @param copyListener    the CopyListener that will be notified
  +     *                        before and after copying a resource.
  +     *                        (May be <code>null</code>)
  +     * @param deleteRedirector  the DeleteTargetRedirector may be used to 
redirect
  +     *                          the <code>delete</code> operation to a 
different
  +     *                          target. (May be <code>null</code>.)
  +     * @param deleteListener  the DeleteListener that will be notified
  +     *                        before and after deleting a destination
  +     *                        that will be overwritten by the copy.
  +     *                        (May be <code>null</code>)
  +     * @exception CopyMacroException Generic Slide exception
  +     */
  +    public void copy(SlideToken token, String sourceUri,
  +                     String destinationUri, MacroParameters parameters,
  +                     CopyRouteRedirector copyRedirector, CopyListener 
copyListener,
  +                     DeleteTargetRedirector deleteRedirector, DeleteListener 
deleteListener, boolean forMove)
  +        throws CopyMacroException, DeleteMacroException {
  +        
           Domain.debug("Copy " + sourceUri + " to " + destinationUri);
           
           // Now performing the actual copy
  @@ -185,7 +217,7 @@
           parameters.setParameter( ALREADY_COPIED, alreadyCopied );
           
           copyObject(token, sourceUri, destinationUri, parameters, true, e,
  -                   copyRedirector, copyListener, deleteRedirector, 
deleteListener);
  +                   copyRedirector, copyListener, deleteRedirector, 
deleteListener, forMove);
           
           // If there were errors, we throw the nested exception
           if (!e.isEmpty()) {
  @@ -426,7 +458,7 @@
           }
           else {
               copy(token, sourceUri, destinationUri, parameters,
  -                 copyRedirector, copyListener, deleteRedirector, 
deleteListener);
  +                 copyRedirector, copyListener, deleteRedirector, 
deleteListener, true); // forMove=true
               delete(token, sourceUri, parameters, deleteRedirector, 
deleteListener);
           }
           
  @@ -544,14 +576,19 @@
       private void copyObject(SlideToken token, String sourceUri,
                               String destinationUri, MacroParameters 
parameters, boolean isRootOfCopy,
                               CopyMacroException e, CopyRouteRedirector 
copyRedirector, CopyListener copyListener,
  -                            DeleteTargetRedirector deleteRedirector, 
DeleteListener deleteListener
  +                            DeleteTargetRedirector deleteRedirector, 
DeleteListener deleteListener,
  +                            boolean forMove
                              ) {
           
           Domain.debug("Copy object : from " + sourceUri + " to "
                            + destinationUri);
           
  -        SlideToken readonlyToken = new SlideTokenWrapper(token);
  -        readonlyToken.setForceStoreEnlistment(false);
  +        SlideToken tokenForSource = token;
  +        if (!forMove) {
  +            // let the token for accessing the source be READONLY
  +            tokenForSource = new SlideTokenWrapper(token);
  +            tokenForSource.setForceStoreEnlistment(false);
  +        }
           
           try {
               // check for lock-null
  @@ -562,7 +599,7 @@
               
               // Remember children of orginal source
               ObjectNode sourceNode =
  -                structureHelper.retrieve(readonlyToken, sourceUri, false);
  +                structureHelper.retrieve(tokenForSource, sourceUri, false);
               Enumeration sourceNodeChildren = sourceNode.enumerateChildren();
               ObjectNode destinationNode = null;
               
  @@ -572,7 +609,7 @@
                   copyRoute = copyRedirector.getRedirectedCopyRoute(copyRoute);
                   sourceUri = copyRoute.getSourceUri();
                   destinationUri = copyRoute.getDestinationUri();
  -                sourceNode = structureHelper.retrieve(readonlyToken, 
sourceUri, false);
  +                sourceNode = structureHelper.retrieve(tokenForSource, 
sourceUri, false);
                   // note that childrenList is *not* re-assigned. This might 
be a bug ...
               }
               
  @@ -666,15 +703,15 @@
               
               // Now copying revision descriptors and content
               NodeRevisionDescriptors sourceNrds =
  -                contentHelper.retrieve(readonlyToken, sourceNode.getUri());
  +                contentHelper.retrieve(tokenForSource, sourceNode.getUri());
               if (sourceNrds.hasRevisions()) {
                   NodeRevisionDescriptor sourceNrd =
  -                    contentHelper.retrieve(readonlyToken, sourceNrds);
  +                    contentHelper.retrieve(tokenForSource, sourceNrds);
                   NodeRevisionContent sourceNrc = null;
                   //if (sourceNrd.getContentLength() > 0) {
                   if 
(!sourceNrd.propertyValueContains(WebdavConstants.P_RESOURCETYPE, 
WebdavConstants.E_COLLECTION)) {
                       sourceNrc =
  -                        contentHelper.retrieve(readonlyToken, sourceNrds, 
sourceNrd);
  +                        contentHelper.retrieve(tokenForSource, sourceNrds, 
sourceNrd);
                   }
                   
                   if (parameters.isDeleteCreate() || !destinationExists) {
  @@ -705,7 +742,7 @@
                           .substring(sourceNode.getUri().length());
                       copyObject(token, childUri, childDestinationUri,
                                  parameters, false, e, copyRedirector, 
copyListener,
  -                               deleteRedirector, deleteListener
  +                               deleteRedirector, deleteListener, forMove
                                 );
                   }
               }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to