public class NuxeoDriveManagerImpl extends DefaultComponent implements NuxeoDriveManager
Modifier and Type | Field and Description |
---|---|
static String |
CHANGE_FINDER_EP |
protected FileSystemChangeFinder |
changeFinder |
protected static ChangeFinderRegistry |
changeFinderRegistry |
protected static long |
COLLECTION_CONTENT_PAGE_SIZE |
protected Cache |
collectionSyncRootMemberCache
Cache holding the collection sync root member ids for a given user (first map key) and repository (second map
key).
|
static String |
DOCUMENT_CHANGE_LIMIT_PROPERTY |
static String |
DRIVE_COLLECTION_SYNC_ROOT__MEMBER_CACHE |
static String |
DRIVE_SUBSCRIPTIONS_PROPERTY |
static String |
DRIVE_SYNC_ROOT_CACHE |
static String |
NUXEO_DRIVE_FACET |
protected Cache |
syncRootCache
Cache holding the synchronization roots for a given user (first map key) and repository (second map key).
|
static TimeZone |
UTC |
lastModified
LOCALLY_EDITED_COLLECTION_NAME
Constructor and Description |
---|
NuxeoDriveManagerImpl() |
Modifier and Type | Method and Description |
---|---|
void |
activate(ComponentContext context)
Activates the component.
|
void |
addToLocallyEditedCollection(CoreSession session,
DocumentModel doc)
Adds the given
DocumentModel to the NuxeoDriveManager.LOCALLY_EDITED_COLLECTION_NAME collection. |
protected void |
checkCanUpdateSynchronizationRoot(DocumentModel newRootContainer,
CoreSession session) |
protected void |
clearCache() |
protected Map<String,Set<String>> |
computeCollectionSyncRootMemberIds(Principal principal) |
protected Map<String,SynchronizationRoots> |
computeSynchronizationRoots(String query,
Principal principal) |
protected String |
computeSyncRootsQuery(String username) |
void |
deactivate(ComponentContext context)
Deactivates the component.
|
protected void |
fireEvent(DocumentModel sourceDocument,
CoreSession session,
String eventName,
String impactedUserName) |
int |
getApplicationStartedOrder()
The component notification order for
Component.applicationStarted(org.nuxeo.runtime.model.ComponentContext) . |
FileSystemChangeFinder |
getChangeFinder()
Gets the
FileSystemChangeFinder member. |
FileSystemChangeSummary |
getChangeSummary(Principal principal,
Map<String,Set<IdRef>> lastSyncRootRefs,
long lastSuccessfulSync)
Uses the
AuditChangeFinder to get the summary of document changes for the given user and last successful
synchronization date. |
protected FileSystemChangeSummary |
getChangeSummary(Principal principal,
Map<String,Set<IdRef>> lastActiveRootRefs,
Map<String,SynchronizationRoots> roots,
Map<String,Set<String>> collectionSyncRootMemberIds,
long lowerBound,
boolean integerBounds) |
FileSystemChangeSummary |
getChangeSummaryIntegerBounds(Principal principal,
Map<String,Set<IdRef>> lastSyncRootRefs,
long lowerBound)
Uses the
AuditChangeFinder to get the summary of document changes for the given user and lower bound. |
protected Cache |
getCollectionSyncRootMemberCache() |
Map<String,Set<String>> |
getCollectionSyncRootMemberIds(Principal principal)
Fetch all the collection sync root member ids for a given user.
|
Set<IdRef> |
getSynchronizationRootReferences(CoreSession session)
Fetch the list of synchronization root refs for a given user and a given session repository.
|
Map<String,SynchronizationRoots> |
getSynchronizationRoots(Principal principal)
Fetch all the synchronization root references and paths for a given user.
|
protected Cache |
getSyncRootCache() |
void |
handleFolderDeletion(IdRef deleted)
Method to be called by a CoreEvent listener monitoring documents deletions to cleanup references to recently
deleted documents and invalidate the caches.
|
void |
invalidateCollectionSyncRootMemberCache()
Invalidate the collection sync root member cache for all users so as to query the repository next time
NuxeoDriveManager.getCollectionSyncRootMemberIds(Principal) is called. |
void |
invalidateCollectionSyncRootMemberCache(String userName)
Invalidate the collection sync root member cache for a given user so as to query the repository next time
NuxeoDriveManager.getCollectionSyncRootMemberIds(Principal) is called. |
void |
invalidateSynchronizationRootsCache(String userName)
Invalidate the synchronization roots cache for a given user so as to query the repository next time
NuxeoDriveManager.getSynchronizationRoots(Principal) is called. |
boolean |
isSynchronizationRoot(Principal principal,
DocumentModel doc)
Checks if the given
DocumentModel is a synchronization root for the given user. |
protected Map<String,SynchronizationRoots> |
queryAndFetchSynchronizationRoots(CoreSession session,
String query) |
void |
registerContribution(Object contribution,
String extensionPoint,
ComponentInstance contributor) |
void |
registerSynchronizationRoot(Principal principal,
DocumentModel newRootContainer,
CoreSession session) |
void |
setChangeFinder(FileSystemChangeFinder changeFinder)
Deprecated.
|
void |
start(ComponentContext context)
Sorts the contributed factories according to their order.
|
void |
stop(ComponentContext context)
Stop the component.
|
void |
unregisterContribution(Object contribution,
String extensionPoint,
ComponentInstance contributor) |
void |
unregisterSynchronizationRoot(Principal principal,
DocumentModel rootContainer,
CoreSession session) |
getAdapter, getLastModified, registerExtension, setLastModified, setModifiedNow, unregisterExtension
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
applicationStarted
public static final String CHANGE_FINDER_EP
public static final String NUXEO_DRIVE_FACET
public static final String DRIVE_SUBSCRIPTIONS_PROPERTY
public static final String DOCUMENT_CHANGE_LIMIT_PROPERTY
public static final String DRIVE_SYNC_ROOT_CACHE
public static final String DRIVE_COLLECTION_SYNC_ROOT__MEMBER_CACHE
protected static final long COLLECTION_CONTENT_PAGE_SIZE
protected Cache syncRootCache
protected Cache collectionSyncRootMemberCache
protected static ChangeFinderRegistry changeFinderRegistry
protected FileSystemChangeFinder changeFinder
public NuxeoDriveManagerImpl()
protected Cache getSyncRootCache()
protected Cache getCollectionSyncRootMemberCache()
protected void clearCache()
public void invalidateSynchronizationRootsCache(String userName)
NuxeoDriveManager
NuxeoDriveManager.getSynchronizationRoots(Principal)
is called.invalidateSynchronizationRootsCache
in interface NuxeoDriveManager
userName
- the principal name of the user to invalidate the cache for.public void invalidateCollectionSyncRootMemberCache(String userName)
NuxeoDriveManager
NuxeoDriveManager.getCollectionSyncRootMemberIds(Principal)
is called.invalidateCollectionSyncRootMemberCache
in interface NuxeoDriveManager
userName
- the principal name of the user to invalidate the cache for.public void invalidateCollectionSyncRootMemberCache()
NuxeoDriveManager
NuxeoDriveManager.getCollectionSyncRootMemberIds(Principal)
is called.invalidateCollectionSyncRootMemberCache
in interface NuxeoDriveManager
public void registerSynchronizationRoot(Principal principal, DocumentModel newRootContainer, CoreSession session)
registerSynchronizationRoot
in interface NuxeoDriveManager
principal
- the Nuxeo Drive usernewRootContainer
- the folderish document to be used as synchronization root: must be bound to an active
sessionpublic void unregisterSynchronizationRoot(Principal principal, DocumentModel rootContainer, CoreSession session)
unregisterSynchronizationRoot
in interface NuxeoDriveManager
principal
- the Nuxeo Drive userrootContainer
- the folderish document that should no longer be used as a synchronization rootpublic Set<IdRef> getSynchronizationRootReferences(CoreSession session)
NuxeoDriveManager
getSynchronizationRootReferences
in interface NuxeoDriveManager
session
- active CoreSession instance to the repository hosting the roots.#getSynchronizationRootPaths(String, CoreSession)
public void handleFolderDeletion(IdRef deleted)
NuxeoDriveManager
handleFolderDeletion
in interface NuxeoDriveManager
protected void fireEvent(DocumentModel sourceDocument, CoreSession session, String eventName, String impactedUserName)
public FileSystemChangeSummary getChangeSummary(Principal principal, Map<String,Set<IdRef>> lastSyncRootRefs, long lastSuccessfulSync)
AuditChangeFinder
to get the summary of document changes for the given user and last successful
synchronization date.
The DOCUMENT_CHANGE_LIMIT_PROPERTY
Framework property is used as a limit of document changes to fetch
from the audit logs. Default value is 1000. If lastSuccessfulSync
is missing (i.e. set to a negative
value), the filesystem change summary is empty but the returned sync date is set to the actual server timestamp
so that the client can reuse it as a starting timestamp for a future incremental diff request.
getChangeSummary
in interface NuxeoDriveManager
lastSyncRootRefs
- the map keyed by repository names of document refs for the synchronization roots that
were active during last synchronizationlastSuccessfulSync
- the last successful synchronization date of the user's device. This time is expected to
be in milliseconds since 1970-01-01 UTC as measured on the Nuxeo server clock, typically set to the
value returned by FileSystemChangeSummary.getSyncDate()
of the previous call to
NuxeoDriveManager.getChangeSummary(Principal, Map, long)
or 0 for catching every event since
the repository initialization.public FileSystemChangeSummary getChangeSummaryIntegerBounds(Principal principal, Map<String,Set<IdRef>> lastSyncRootRefs, long lowerBound)
AuditChangeFinder
to get the summary of document changes for the given user and lower bound.
The DOCUMENT_CHANGE_LIMIT_PROPERTY
Framework property is used as a limit of document changes to fetch
from the audit logs. Default value is 1000. If lowerBound
is missing (i.e. set to a negative value), the
filesystem change summary is empty but the returned upper bound is set to the greater event log id so that the
client can reuse it as a starting id for a future incremental diff request.
getChangeSummaryIntegerBounds
in interface NuxeoDriveManager
lastSyncRootRefs
- the map keyed by repository names of document refs for the synchronization roots that
were active during last synchronizationlowerBound
- the lower bound sent by the user's device. Typically set to the value returned by
FileSystemChangeSummary.getUpperBound()
of the previous call to
NuxeoDriveManager.getChangeSummaryIntegerBounds(Principal, Map, long)
or 0 for catching every
event since the repository initialization.protected FileSystemChangeSummary getChangeSummary(Principal principal, Map<String,Set<IdRef>> lastActiveRootRefs, Map<String,SynchronizationRoots> roots, Map<String,Set<String>> collectionSyncRootMemberIds, long lowerBound, boolean integerBounds)
public Map<String,SynchronizationRoots> getSynchronizationRoots(Principal principal)
NuxeoDriveManager
getSynchronizationRoots
in interface NuxeoDriveManager
principal
- the user to fetch the roots forpublic Map<String,Set<String>> getCollectionSyncRootMemberIds(Principal principal)
NuxeoDriveManager
getCollectionSyncRootMemberIds
in interface NuxeoDriveManager
principal
- the user to fetch the ids forpublic boolean isSynchronizationRoot(Principal principal, DocumentModel doc)
NuxeoDriveManager
DocumentModel
is a synchronization root for the given user.isSynchronizationRoot
in interface NuxeoDriveManager
protected Map<String,SynchronizationRoots> computeSynchronizationRoots(String query, Principal principal)
protected Map<String,SynchronizationRoots> queryAndFetchSynchronizationRoots(CoreSession session, String query)
protected Map<String,Set<String>> computeCollectionSyncRootMemberIds(Principal principal)
protected void checkCanUpdateSynchronizationRoot(DocumentModel newRootContainer, CoreSession session)
public FileSystemChangeFinder getChangeFinder()
NuxeoDriveManager
FileSystemChangeFinder
member.getChangeFinder
in interface NuxeoDriveManager
@Deprecated public void setChangeFinder(FileSystemChangeFinder changeFinder)
NuxeoDriveManager
FileSystemChangeFinder
member.setChangeFinder
in interface NuxeoDriveManager
protected String computeSyncRootsQuery(String username)
public void addToLocallyEditedCollection(CoreSession session, DocumentModel doc)
NuxeoDriveManager
DocumentModel
to the NuxeoDriveManager.LOCALLY_EDITED_COLLECTION_NAME
collection.addToLocallyEditedCollection
in interface NuxeoDriveManager
public void registerContribution(Object contribution, String extensionPoint, ComponentInstance contributor)
registerContribution
in class DefaultComponent
public void unregisterContribution(Object contribution, String extensionPoint, ComponentInstance contributor)
unregisterContribution
in class DefaultComponent
public void activate(ComponentContext context)
Component
This method is called by the runtime when a component is activated.
activate
in interface Component
activate
in class DefaultComponent
context
- the runtime contextpublic void deactivate(ComponentContext context)
Component
This method is called by the runtime when a component is deactivated.
deactivate
in interface Component
deactivate
in class DefaultComponent
context
- the runtime contextpublic int getApplicationStartedOrder()
Component
Component.applicationStarted(org.nuxeo.runtime.model.ComponentContext)
.
Components are notified in increasing order. Order 1000 is the default order for components that don't care. Order 100 is the repository initialization.
getApplicationStartedOrder
in interface Component
public void start(ComponentContext context)
start
in interface Component
start
in class DefaultComponent
public void stop(ComponentContext context)
Component
stop
in interface Component
stop
in class DefaultComponent
Copyright © 2018 Nuxeo. All rights reserved.