-* Note: It is safest to instantiate a fresh UpdateHrefInfoStatus +* Note: It is safest to instantiate a fresh HrefValidationProgress * object for every invocation of updateHrefInfo(). */ -public class UpdateHrefInfoStatus +public class HrefValidationProgress { AtomicInteger webapp_update_count_; AtomicInteger dir_update_count_; @@ -54,7 +54,7 @@ public class UpdateHrefInfoStatus AtomicInteger url_update_count_; AtomicBoolean is_done_; - public UpdateHrefInfoStatus() + public HrefValidationProgress() { webapp_update_count_ = new AtomicInteger(); dir_update_count_ = new AtomicInteger(); diff --git a/source/java/org/alfresco/linkvalidation/LinkValidationService.java b/source/java/org/alfresco/linkvalidation/LinkValidationService.java index 645460d36d..a428ff8b7c 100644 --- a/source/java/org/alfresco/linkvalidation/LinkValidationService.java +++ b/source/java/org/alfresco/linkvalidation/LinkValidationService.java @@ -66,12 +66,12 @@ public interface LinkValidationService * 'status' may be polled in a separate thread to * observe its progress. */ - public void updateHrefInfo( String storeNameOrWebappPath, - boolean incremental, - int connectTimeout, - int readTimeout, - int nthreads, - UpdateHrefInfoStatus status + public void updateHrefInfo( String storeNameOrWebappPath, + boolean incremental, + int connectTimeout, + int readTimeout, + int nthreads, + HrefValidationProgress progress ) throws AVMNotFoundException; @@ -208,9 +208,11 @@ public interface LinkValidationService * Don't use yet - does nothing at the moment. */ public BrokenHrefConcordanceDifference getBrokenHrefConcordanceDifference( - int srcVersion, String srcPath, - int dstVersion, String dstPath, - NameMatcher excluder) + int srcVersion, + String srcPath, + int dstVersion, + String dstPath, + HrefValidationProgress progress) throws AVMNotFoundException; } diff --git a/source/java/org/alfresco/repo/avm/AVMRemoteLocal.java b/source/java/org/alfresco/repo/avm/AVMRemoteLocal.java index 535e4437c0..ebe4f7af9b 100644 --- a/source/java/org/alfresco/repo/avm/AVMRemoteLocal.java +++ b/source/java/org/alfresco/repo/avm/AVMRemoteLocal.java @@ -317,6 +317,14 @@ public class AVMRemoteLocal implements AVMRemote return fService.lookup(version, path); } + /* (non-Javadoc) + * @see org.alfresco.repo.avm.AVMRemote#lookup(int, java.lang.String, boolean) + */ + public AVMNodeDescriptor lookup(int version, String path, boolean includeDeleted) + { + return fService.lookup(version, path, includeDeleted); + } + /* (non-Javadoc) * @see org.alfresco.repo.avm.AVMRemote#lookup(org.alfresco.service.cmr.avm.AVMNodeDescriptor, java.lang.String) */ @@ -325,6 +333,14 @@ public class AVMRemoteLocal implements AVMRemote return fService.lookup(dir, name); } + /* (non-Javadoc) + * @see org.alfresco.repo.avm.AVMRemote#lookup(org.alfresco.service.cmr.avm.AVMNodeDescriptor, java.lang.String, boolean includeDeleted) + */ + public AVMNodeDescriptor lookup(AVMNodeDescriptor dir, String name, boolean includeDeleted) + { + return fService.lookup(dir, name, includeDeleted); + } + /* (non-Javadoc) * @see org.alfresco.repo.avm.AVMRemote#makePrimary(java.lang.String) */ diff --git a/source/java/org/alfresco/repo/avm/AVMRemoteTransportService.java b/source/java/org/alfresco/repo/avm/AVMRemoteTransportService.java index 9068038c82..8e0a8cf7ae 100644 --- a/source/java/org/alfresco/repo/avm/AVMRemoteTransportService.java +++ b/source/java/org/alfresco/repo/avm/AVMRemoteTransportService.java @@ -704,6 +704,23 @@ public class AVMRemoteTransportService implements AVMRemoteTransport, Runnable fAuthService.validate(ticket); return fAVMService.lookup(version, path); } + + /** + * Lookup a node identified by version ID and path; optionally, + * if the node is deleted, its descriptor can still + * be retrieved. + * + * @param version The version ID to look under. + * @param path The simple absolute path to the parent directory. + * @param includeDeleted Whether to allow a deleted node to be retrieved + * @return An AVMNodeDescriptor, or null if the version does not exist. + */ + public AVMNodeDescriptor lookup(String ticket, int version, String path, boolean includeDeleted) + { + fAuthService.validate(ticket); + return fAVMService.lookup(version, path, includeDeleted); + } + /** * Get a descriptor for the specified node. @@ -716,6 +733,25 @@ public class AVMRemoteTransportService implements AVMRemoteTransport, Runnable fAuthService.validate(ticket); return fAVMService.lookup(dir, name); } + + /** + * Lookup a node identified by the directory that contains it, and its name; + * optionally, the lookup can retrive the descriptor of a node even if + * it has been deleted from its containing directory. + * + * @param dir The descriptor for the directory node. + * @param name The name to lookup. + * @param includeDeleted Whether to allow a deleted node to be retrieved via the lookup + * @return The descriptor for the child, null if the child doesn't exist. + * @throws AVMNotFoundException + * @throws AVMWrongTypeException + */ + public AVMNodeDescriptor lookup(String ticket, AVMNodeDescriptor dir, String name, boolean includeDeleted) + { + fAuthService.validate(ticket); + return fAVMService.lookup(dir, name, includeDeleted); + } + /** * Get the indirection path for a node. diff --git a/source/java/org/alfresco/repo/remote/AVMRemoteImpl.java b/source/java/org/alfresco/repo/remote/AVMRemoteImpl.java index c2d21b600a..fed4fdd5de 100644 --- a/source/java/org/alfresco/repo/remote/AVMRemoteImpl.java +++ b/source/java/org/alfresco/repo/remote/AVMRemoteImpl.java @@ -331,6 +331,15 @@ public class AVMRemoteImpl implements AVMRemote return fTransport.lookup(fTicketHolder.getTicket(), version, path); } + /* (non-Javadoc) + * @see org.alfresco.repo.avm.AVMRemote#lookup(int, java.lang.String, boolean) + */ + public AVMNodeDescriptor lookup(int version, String path, boolean includeDeleted) + { + return fTransport.lookup(fTicketHolder.getTicket(), version, path, includeDeleted); + } + + /* (non-Javadoc) * @see org.alfresco.repo.avm.AVMRemote#lookup(org.alfresco.service.cmr.avm.AVMNodeDescriptor, java.lang.String) */ @@ -339,6 +348,15 @@ public class AVMRemoteImpl implements AVMRemote return fTransport.lookup(fTicketHolder.getTicket(), dir, name); } + /* (non-Javadoc) + * @see org.alfresco.repo.avm.AVMRemote#lookup(org.alfresco.service.cmr.avm.AVMNodeDescriptor, java.lang.String, boolean includeDeleted) + */ + public AVMNodeDescriptor lookup(AVMNodeDescriptor dir, String name, boolean includeDeleted) + { + return fTransport.lookup(fTicketHolder.getTicket(), dir, name, includeDeleted); + } + + /* (non-Javadoc) * @see org.alfresco.repo.avm.AVMRemote#makePrimary(java.lang.String) */ diff --git a/source/java/org/alfresco/service/cmr/avm/AVMNodeDescriptor.java b/source/java/org/alfresco/service/cmr/avm/AVMNodeDescriptor.java index c21b79b752..d230a449a3 100644 --- a/source/java/org/alfresco/service/cmr/avm/AVMNodeDescriptor.java +++ b/source/java/org/alfresco/service/cmr/avm/AVMNodeDescriptor.java @@ -253,6 +253,11 @@ public class AVMNodeDescriptor implements Serializable /** * Determines whether this node corresponds to * either a plain or layered file. + *
+ * NOTE: A deleted file node is not considered a file + * (i.e.: isFile() returns false when isDeleted() returns true). + * Therefore, use isDeletedFile() to determine if a deleted node + * was a file, not isFile(). * * @return true if AVMNodeDescriptor is a plain or layered file, * otherwise false. @@ -289,7 +294,12 @@ public class AVMNodeDescriptor implements Serializable /** * Determines whether this node corresponds to - * either a plain or layered directory. + * either a plain or layered directory. + *
+ * NOTE: A deleted directory node is not considered a directory + * (i.e.: isDirectory() returns false when isDeleted() returns true). + * Therefore, use isDeletedDirectory() to determine if a deleted node + * was a directory, not isDirectory(). * * @return true if AVMNodeDescriptor is a plain or layered directory, * otherwise false. diff --git a/source/java/org/alfresco/service/cmr/remote/AVMRemote.java b/source/java/org/alfresco/service/cmr/remote/AVMRemote.java index 9b65a4e839..1e6db6584d 100644 --- a/source/java/org/alfresco/service/cmr/remote/AVMRemote.java +++ b/source/java/org/alfresco/service/cmr/remote/AVMRemote.java @@ -244,6 +244,18 @@ public interface AVMRemote * @return An AVMNodeDescriptor. */ public AVMNodeDescriptor lookup(int version, String path); + + /** + * Lookup a node identified by version ID and path; optionally, + * if the node is deleted, its descriptor can still + * be retrieved. + * + * @param version The version ID to look under. + * @param path The simple absolute path to the parent directory. + * @param includeDeleted Whether to allow a deleted node to be retrieved + * @return An AVMNodeDescriptor, or null if the version does not exist. + */ + public AVMNodeDescriptor lookup(int version, String path, boolean includeDeleted); /** * Get a descriptor for the specified node. @@ -252,6 +264,20 @@ public interface AVMRemote * @return An AVMNodeDescriptor. */ public AVMNodeDescriptor lookup(AVMNodeDescriptor dir, String name); + + /** + * Lookup a node identified by the directory that contains it, and its name; + * optionally, the lookup can retrive the descriptor of a node even if + * it has been deleted from its containing directory. + * + * @param dir The descriptor for the directory node. + * @param name The name to lookup. + * @param includeDeleted Whether to allow a deleted node to be retrieved via the lookup + * @return The descriptor for the child, null if the child doesn't exist. + * @throws AVMNotFoundException + * @throws AVMWrongTypeException + */ + public AVMNodeDescriptor lookup(AVMNodeDescriptor dir, String name, boolean includeDeleted); /** * Get the indirection path for a node. diff --git a/source/java/org/alfresco/service/cmr/remote/AVMRemoteTransport.java b/source/java/org/alfresco/service/cmr/remote/AVMRemoteTransport.java index f020fc0dcd..ba7bc0315a 100644 --- a/source/java/org/alfresco/service/cmr/remote/AVMRemoteTransport.java +++ b/source/java/org/alfresco/service/cmr/remote/AVMRemoteTransport.java @@ -256,6 +256,19 @@ public interface AVMRemoteTransport * @return An AVMNodeDescriptor. */ public AVMNodeDescriptor lookup(String ticket, int version, String path); + + /** + * Lookup a node identified by version ID and path; optionally, + * if the node is deleted, its descriptor can still + * be retrieved. + * + * @param version The version ID to look under. + * @param path The simple absolute path to the parent directory. + * @param includeDeleted Whether to allow a deleted node to be retrieved + * @return An AVMNodeDescriptor, or null if the version does not exist. + */ + public AVMNodeDescriptor lookup(String ticket, int version, String path, boolean includeDeleted); + /** * Get a descriptor for the specified node. @@ -264,6 +277,21 @@ public interface AVMRemoteTransport * @return An AVMNodeDescriptor. */ public AVMNodeDescriptor lookup(String ticket, AVMNodeDescriptor dir, String name); + + /** + * Lookup a node identified by the directory that contains it, and its name; + * optionally, the lookup can retrive the descriptor of a node even if + * it has been deleted from its containing directory. + * + * @param dir The descriptor for the directory node. + * @param name The name to lookup. + * @param includeDeleted Whether to allow a deleted node to be retrieved via the lookup + * @return The descriptor for the child, null if the child doesn't exist. + * @throws AVMNotFoundException + * @throws AVMWrongTypeException + */ + public AVMNodeDescriptor lookup(String ticket, AVMNodeDescriptor dir, String name, boolean includeDeleted); + /** * Get the indirection path for a node.