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]