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 isasyncUploadMap
which isMap
of file path vs lastModified of upload. The secondtoBeDeleted
isSet
of 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 fromasyncUploadMap
Any modification to this class are immediately persisted to local file system.asyncUploadMap
is persisted to /homeDir
/PENDIND_UPLOAD_FILE
.toBeDeleted
is persisted to /homeDir
/TO_BE_DELETED_UPLOAD_FILE
. The /homeDir
refer to ${rep.home}.
-
-
Constructor Summary
Constructors Constructor Description AsyncUploadCache()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description AsyncUploadCacheResult
add(String fileName)
This methods checks if file can be added toasyncUploadMap
.void
delete(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.long
getLastModified(String fileName)
Returns lastModified fromasyncUploadMap
if found else returns 0.boolean
hasEntry(String fileName, boolean touch)
This methos checks if asynchronous upload is in progress for @param fileName.void
init(String homeDir, String path, int asyncUploadLimit)
AsyncUploadCacheResult
remove(String fileName)
This methods removes file (if found) fromasyncUploadMap
.void
reset()
-
-
-
Method Detail
-
add
public AsyncUploadCacheResult add(String fileName) throws IOException
This methods checks if file can be added toasyncUploadMap
. If yes it adds toasyncUploadMap
andserializeAsyncUploadMap()
theasyncUploadMap
to disk.- Returns:
AsyncUploadCacheResult
if 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 theasyncUploadMap
to disk. This method setsAsyncUploadCacheResult.setRequiresDelete(boolean)
to true, if asynchronous upload found to be intoBeDeleted
set 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 fromasyncUploadMap
if 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 theLocalCache
asyncUploadLimit
- the maximum number of asynchronous uploads- Throws:
IOException
ClassNotFoundException
-
reset
public void reset() throws IOException
- Throws:
IOException
-
-