Package org.apache.jackrabbit.core.data
Class AsyncUploadCache
- java.lang.Object
-
- org.apache.jackrabbit.core.data.AsyncUploadCache
-
public class AsyncUploadCache extends Object
This class holds all in progress uploads. This class contains two data structures, one isasyncUploadMapwhich isMapof file path vs lastModified of upload. The secondtoBeDeletedisSetof upload which is marked for delete, while it is already in progress. Before starting an asynchronous upload, it requires to invokeadd(String)to add entry toasyncUploadMap. After asynchronous upload completes, it requires to invokeremove(String)to remove entry fromasyncUploadMapAny modification to this class are immediately persisted to local file system.asyncUploadMapis persisted to /homeDir/PENDIND_UPLOAD_FILE.toBeDeletedis persisted to /homeDir/TO_BE_DELETED_UPLOAD_FILE. The /homeDirrefer to ${rep.home}.
-
-
Constructor Summary
Constructors Constructor Description AsyncUploadCache()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description AsyncUploadCacheResultadd(String fileName)This methods checks if file can be added toasyncUploadMap.voiddelete(String fileName)This methods deletes asynchronous upload for @param fileName if there exists asynchronous upload for @param fileName.Set<String>deleteOlderThan(long min)Delete in progress asynchronous uploads which are older than @param min.Set<String>getAll()This methods returns the in progress asynchronous uploads which are not marked for delete.longgetLastModified(String fileName)Returns lastModified fromasyncUploadMapif found else returns 0.booleanhasEntry(String fileName, boolean touch)This methos checks if asynchronous upload is in progress for @param fileName.voidinit(String homeDir, String path, int asyncUploadLimit)AsyncUploadCacheResultremove(String fileName)This methods removes file (if found) fromasyncUploadMap.voidreset()
-
-
-
Method Detail
-
add
public AsyncUploadCacheResult add(String fileName) throws IOException
This methods checks if file can be added toasyncUploadMap. If yes it adds toasyncUploadMapandserializeAsyncUploadMap()theasyncUploadMapto disk.- Returns:
AsyncUploadCacheResultif successfully added to asynchronous uploads it setsAsyncUploadCacheResult.setAsyncUpload(boolean)to true else sets to false.- Throws:
IOException
-
remove
public AsyncUploadCacheResult remove(String fileName) throws IOException
This methods removes file (if found) fromasyncUploadMap. If file is found, it immediately serializes theasyncUploadMapto disk. This method setsAsyncUploadCacheResult.setRequiresDelete(boolean)to true, if asynchronous upload found to be intoBeDeletedset i.e. marked for delete.- Throws:
IOException
-
getAll
public Set<String> getAll()
This methods returns the in progress asynchronous uploads which are not marked for delete.
-
hasEntry
public boolean hasEntry(String fileName, boolean touch) throws IOException
This methos checks if asynchronous upload is in progress for @param fileName. If @param touch is true, the lastModified is updated to current time.- Throws:
IOException
-
getLastModified
public long getLastModified(String fileName)
Returns lastModified fromasyncUploadMapif found else returns 0.
-
delete
public void delete(String fileName) throws IOException
This methods deletes asynchronous upload for @param fileName if there exists asynchronous upload for @param fileName.- Throws:
IOException
-
deleteOlderThan
public Set<String> deleteOlderThan(long min) throws IOException
Delete in progress asynchronous uploads which are older than @param min. This method leverage lastModified stored inasyncUploadMap- Throws:
IOException
-
init
public void init(String homeDir, String path, int asyncUploadLimit) throws IOException, ClassNotFoundException
- Parameters:
homeDir- home directory of repository.path- path of theLocalCacheasyncUploadLimit- the maximum number of asynchronous uploads- Throws:
IOExceptionClassNotFoundException
-
reset
public void reset() throws IOException- Throws:
IOException
-
-