org.alfresco.repo.transfer
Class RepoTransferReceiverImpl

java.lang.Object
  extended by org.alfresco.repo.transfer.RepoTransferReceiverImpl
All Implemented Interfaces:
ContentServicePolicies.OnContentUpdatePolicy, NodeServicePolicies.BeforeDeleteNodePolicy, NodeServicePolicies.OnCreateChildAssociationPolicy, NodeServicePolicies.OnMoveNodePolicy, NodeServicePolicies.OnRestoreNodePolicy, AssociationPolicy, ClassPolicy, Policy, TransferReceiver

public class RepoTransferReceiverImpl
extends java.lang.Object
implements TransferReceiver, NodeServicePolicies.OnCreateChildAssociationPolicy, NodeServicePolicies.BeforeDeleteNodePolicy, NodeServicePolicies.OnRestoreNodePolicy, NodeServicePolicies.OnMoveNodePolicy, ContentServicePolicies.OnContentUpdatePolicy

The Repo Transfer Receiver is the "Back-End" for transfer subsystem.

Provides the implementation of the transfer commands on the destination repository.

Provides callback handlers for Aliens and Transferred Aspects.

Calls transfer policies.

Co-ordinates locking and logging as the transfer progresses.


Nested Class Summary
 class RepoTransferReceiverImpl.AsyncCommitCommand
          This embedded class is used to push requests for asynchronous commits onto a different thread
 
Nested classes/interfaces inherited from interface org.alfresco.repo.policy.Policy
Policy.Arg
 
Field Summary
 
Fields inherited from interface org.alfresco.repo.node.NodeServicePolicies.OnCreateChildAssociationPolicy
QNAME
 
Fields inherited from interface org.alfresco.repo.node.NodeServicePolicies.BeforeDeleteNodePolicy
QNAME
 
Fields inherited from interface org.alfresco.repo.node.NodeServicePolicies.OnRestoreNodePolicy
QNAME
 
Fields inherited from interface org.alfresco.repo.node.NodeServicePolicies.OnMoveNodePolicy
QNAME
 
Fields inherited from interface org.alfresco.repo.content.ContentServicePolicies.OnContentUpdatePolicy
QNAME
 
Fields inherited from interface org.alfresco.repo.policy.Policy
NAMESPACE
 
Constructor Summary
RepoTransferReceiverImpl()
           
 
Method Summary
 void beforeDeleteNode(org.alfresco.service.cmr.repository.NodeRef deletedNodeRef)
          When an alien node is deleted the it may be the last alien invader
 void cancel(java.lang.String transferId)
          Abort
 org.alfresco.repo.transfer.RepoTransferReceiverImpl.Lock checkLock(java.lang.String transferId)
           
 void commit(java.lang.String transferId)
          Commit
 void commitAsync(java.lang.String transferId)
          Commit asynchronously
 void end(java.lang.String transferId)
          Asks the receiver to end (and clean up) the specified transfer
 void generateRequsite(java.lang.String transferId, java.io.OutputStream out)
          Generate the requsite
 AlienProcessor getAlienProcessor()
           
 DescriptorService getDescriptorService()
           
 JobLockService getJobLockService()
           
 long getLockRefreshTime()
           
 int getLockRetryCount()
           
 long getLockRetryWait()
           
 long getLockTimeOut()
           
 PolicyComponent getPolicyComponent()
           
 TransferProgressMonitor getProgressMonitor()
           
 RuleService getRuleService()
          Get the rule service
 java.io.File getStagingFolder(java.lang.String transferId)
           
 TransferProgress getStatus(java.lang.String transferId)
           
 org.alfresco.service.cmr.repository.NodeRef getTempFolder(java.lang.String transferId)
           
 java.io.InputStream getTransferReport(java.lang.String transferId)
          get the transfer report for the specified transfer
 TransferVersionChecker getTransferVersionChecker()
           
 TransferVersion getVersion()
          Get the version that we are transfering to.
 void init()
           
 void onContentUpdate(org.alfresco.service.cmr.repository.NodeRef nodeRef, boolean newContent)
           
 CopyBehaviourCallback onCopyAlien(org.alfresco.service.namespace.QName classRef, CopyDetails copyDetails)
          When an alien node is copied, don't copy the alien aspect.
 CopyBehaviourCallback onCopyTransferred(org.alfresco.service.namespace.QName classRef, CopyDetails copyDetails)
          When a transferred node is copied, don't copy the transferred aspect.
 void onCreateChildAssociation(org.alfresco.service.cmr.repository.ChildAssociationRef childAssocRef, boolean isNewNode)
          When a new node is created as a child of a Transferred or Alien node then the new node needs to be marked as an alien.
 void onMoveNode(org.alfresco.service.cmr.repository.ChildAssociationRef oldChildAssocRef, org.alfresco.service.cmr.repository.ChildAssociationRef newChildAssocRef)
          When an alien node is moved it may un-invade its old location and invade a new location.
 void onRestoreNode(org.alfresco.service.cmr.repository.ChildAssociationRef childAssocRef)
          When a transferred node is restored it may be a new invader or it may no longer be an invader.
 void prepare(java.lang.String transferId)
          Prepare
 void saveContent(java.lang.String transferId, java.lang.String contentFileId, java.io.InputStream contentStream)
          Save a content item
 void saveSnapshot(java.lang.String transferId, java.io.InputStream openStream)
          Store the specified snapshot file into the transfer staging area.
 void setActionService(ActionService actionService)
           
 void setAlienProcessor(AlienProcessor alienProcessor)
           
 void setBehaviourFilter(BehaviourFilter behaviourFilter)
           
 void setDescriptorService(DescriptorService descriptorService)
           
 void setFileTransferRootNodeFileFileSystem(java.lang.String rootFileSystem)
          set the root node for the file system receiver
 void setInboundTransferRecordsPath(java.lang.String inboundTransferRecordsPath)
           
 void setJobLockService(JobLockService jobLockService)
           
 void setLockRefreshTime(long lockRefreshTime)
           
 void setLockRetryCount(int lockRetryCount)
           
 void setLockRetryWait(long lockRetryWait)
           
 void setLockTimeOut(long lockTimeOut)
           
 void setManifestProcessorFactory(ManifestProcessorFactory manifestProcessorFactory)
           
 void setNodeService(org.alfresco.service.cmr.repository.NodeService nodeService)
           
 void setPolicyComponent(PolicyComponent policyComponent)
           
 void setProgressMonitor(TransferProgressMonitor progressMonitor)
           
 void setRootStagingDirectory(java.lang.String rootStagingDirectory)
           
 void setRuleService(RuleService ruleService)
          Set the ruleService
 void setSearchService(org.alfresco.service.cmr.search.SearchService searchService)
           
 void setTenantService(org.alfresco.repo.tenant.TenantService tenantService)
           
 void setTransactionService(TransactionService transactionService)
           
 void setTransferLockFolderPath(java.lang.String transferLockFolderPath)
           
 void setTransferTempFolderPath(java.lang.String transferTempFolderPath)
           
 void setTransferVersionChecker(TransferVersionChecker transferVersionChecker)
           
 java.lang.String start(java.lang.String fromRepositoryId, boolean transferToSelf, TransferVersion fromVersion)
          Asks the receiver to setup a new transfer.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

RepoTransferReceiverImpl

public RepoTransferReceiverImpl()
Method Detail

init

public void init()

getStagingFolder

public java.io.File getStagingFolder(java.lang.String transferId)
Specified by:
getStagingFolder in interface TransferReceiver
Returns:

getTempFolder

public org.alfresco.service.cmr.repository.NodeRef getTempFolder(java.lang.String transferId)
Specified by:
getTempFolder in interface TransferReceiver
Returns:

start

public java.lang.String start(java.lang.String fromRepositoryId,
                              boolean transferToSelf,
                              TransferVersion fromVersion)
Description copied from interface: TransferReceiver
Asks the receiver to setup a new transfer.

Specified by:
start in interface TransferReceiver
Parameters:
fromRepositoryId - the repositoryId of the sending system
transferToSelf - are transfers to the same repository allowed?
fromVersion - the version sending
Returns:
The identifier of the new transfer

end

public void end(java.lang.String transferId)
Description copied from interface: TransferReceiver
Asks the receiver to end (and clean up) the specified transfer

Specified by:
end in interface TransferReceiver
Parameters:
transferId - The transfer to end

cancel

public void cancel(java.lang.String transferId)
            throws TransferException
Description copied from interface: TransferReceiver
Abort

Specified by:
cancel in interface TransferReceiver
Throws:
TransferException

prepare

public void prepare(java.lang.String transferId)
             throws TransferException
Description copied from interface: TransferReceiver
Prepare

Specified by:
prepare in interface TransferReceiver
Throws:
TransferException

checkLock

public org.alfresco.repo.transfer.RepoTransferReceiverImpl.Lock checkLock(java.lang.String transferId)
                                                                   throws TransferException
Throws:
TransferException

saveSnapshot

public void saveSnapshot(java.lang.String transferId,
                         java.io.InputStream openStream)
                  throws TransferException
Description copied from interface: TransferReceiver
Store the specified snapshot file into the transfer staging area. The specified transfer must currently be the holder of the transfer lock, otherwise an exception is thrown. This operation does not close the supplied stream, so the caller must do it as appropriate. The caller should assume that the supplied stream has been fully read when this operation returns.

Specified by:
saveSnapshot in interface TransferReceiver
Parameters:
transferId - The identifier of the transfer with which this snapshot is associated
openStream - The open stream that holds the snapshot file.
Throws:
TransferException - If an error occurs while saving the snapshot file.

saveContent

public void saveContent(java.lang.String transferId,
                        java.lang.String contentFileId,
                        java.io.InputStream contentStream)
                 throws TransferException
Description copied from interface: TransferReceiver
Save a content item

Specified by:
saveContent in interface TransferReceiver
Throws:
TransferException

commitAsync

public void commitAsync(java.lang.String transferId)
Description copied from interface: TransferReceiver
Commit asynchronously

Specified by:
commitAsync in interface TransferReceiver

commit

public void commit(java.lang.String transferId)
            throws TransferException
Description copied from interface: TransferReceiver
Commit

Specified by:
commit in interface TransferReceiver
Throws:
TransferException

getStatus

public TransferProgress getStatus(java.lang.String transferId)
                           throws TransferException
Specified by:
getStatus in interface TransferReceiver
Returns:
the trabsfer progress
Throws:
TransferException

setSearchService

public void setSearchService(org.alfresco.service.cmr.search.SearchService searchService)
Parameters:
searchService - the searchService to set

setTransactionService

public void setTransactionService(TransactionService transactionService)
Parameters:
transactionService - the transactionService to set

setTenantService

public void setTenantService(org.alfresco.repo.tenant.TenantService tenantService)

setTransferLockFolderPath

public void setTransferLockFolderPath(java.lang.String transferLockFolderPath)
Parameters:
transferLockFolderPath - the transferLockFolderPath to set

setTransferTempFolderPath

public void setTransferTempFolderPath(java.lang.String transferTempFolderPath)
Parameters:
transferTempFolderPath - the transferTempFolderPath to set

setRootStagingDirectory

public void setRootStagingDirectory(java.lang.String rootStagingDirectory)
Parameters:
rootStagingDirectory - the rootTransferFolder to set

setInboundTransferRecordsPath

public void setInboundTransferRecordsPath(java.lang.String inboundTransferRecordsPath)
Parameters:
inboundTransferRecordsPath - the inboundTransferRecordsPath to set

setNodeService

public void setNodeService(org.alfresco.service.cmr.repository.NodeService nodeService)
Parameters:
nodeService - the nodeService to set

setManifestProcessorFactory

public void setManifestProcessorFactory(ManifestProcessorFactory manifestProcessorFactory)
Parameters:
manifestProcessorFactory - the manifestProcessorFactory to set

setBehaviourFilter

public void setBehaviourFilter(BehaviourFilter behaviourFilter)
Parameters:
behaviourFilter - the behaviourFilter to set

getProgressMonitor

public TransferProgressMonitor getProgressMonitor()
Specified by:
getProgressMonitor in interface TransferReceiver
Returns:
the progressMonitor

setProgressMonitor

public void setProgressMonitor(TransferProgressMonitor progressMonitor)
Parameters:
progressMonitor - the progressMonitor to set

setActionService

public void setActionService(ActionService actionService)

setRuleService

public void setRuleService(RuleService ruleService)
Set the ruleService

Parameters:
ruleService - the ruleService to set

getRuleService

public RuleService getRuleService()
Get the rule service

Returns:
the rule service

generateRequsite

public void generateRequsite(java.lang.String transferId,
                             java.io.OutputStream out)
                      throws TransferException
Generate the requsite

Specified by:
generateRequsite in interface TransferReceiver
out - an open stream to receive the requisite
Throws:
TransferException

getTransferReport

public java.io.InputStream getTransferReport(java.lang.String transferId)
Description copied from interface: TransferReceiver
get the transfer report for the specified transfer

Specified by:
getTransferReport in interface TransferReceiver

setPolicyComponent

public void setPolicyComponent(PolicyComponent policyComponent)

getPolicyComponent

public PolicyComponent getPolicyComponent()

onCreateChildAssociation

public void onCreateChildAssociation(org.alfresco.service.cmr.repository.ChildAssociationRef childAssocRef,
                                     boolean isNewNode)
When a new node is created as a child of a Transferred or Alien node then the new node needs to be marked as an alien.

Then the tree needs to be walked upwards to mark all parent transferred nodes as alien.

Specified by:
onCreateChildAssociation in interface NodeServicePolicies.OnCreateChildAssociationPolicy
Parameters:
childAssocRef - the child association that has been created
isNewNode - true if the node is new or false if the node is being linked in

beforeDeleteNode

public void beforeDeleteNode(org.alfresco.service.cmr.repository.NodeRef deletedNodeRef)
When an alien node is deleted the it may be the last alien invader

Walk the tree checking the invasion status!

Specified by:
beforeDeleteNode in interface NodeServicePolicies.BeforeDeleteNodePolicy
Parameters:
deletedNodeRef - the node reference

onRestoreNode

public void onRestoreNode(org.alfresco.service.cmr.repository.ChildAssociationRef childAssocRef)
When a transferred node is restored it may be a new invader or it may no longer be an invader.

Walk the tree checking the invasion status!

Specified by:
onRestoreNode in interface NodeServicePolicies.OnRestoreNodePolicy
Parameters:
childAssocRef - the newly created child association reference

onMoveNode

public void onMoveNode(org.alfresco.service.cmr.repository.ChildAssociationRef oldChildAssocRef,
                       org.alfresco.service.cmr.repository.ChildAssociationRef newChildAssocRef)
When an alien node is moved it may un-invade its old location and invade a new location. The node may also cease to be alien.

Specified by:
onMoveNode in interface NodeServicePolicies.OnMoveNodePolicy
Parameters:
oldChildAssocRef - the child association reference prior to the move
newChildAssocRef - the child association reference after the move

onCopyTransferred

public CopyBehaviourCallback onCopyTransferred(org.alfresco.service.namespace.QName classRef,
                                               CopyDetails copyDetails)
When a transferred node is copied, don't copy the transferred aspect.


onCopyAlien

public CopyBehaviourCallback onCopyAlien(org.alfresco.service.namespace.QName classRef,
                                         CopyDetails copyDetails)
When an alien node is copied, don't copy the alien aspect.


setDescriptorService

public void setDescriptorService(DescriptorService descriptorService)

getDescriptorService

public DescriptorService getDescriptorService()

setAlienProcessor

public void setAlienProcessor(AlienProcessor alienProcessor)

getAlienProcessor

public AlienProcessor getAlienProcessor()

onContentUpdate

public void onContentUpdate(org.alfresco.service.cmr.repository.NodeRef nodeRef,
                            boolean newContent)
Specified by:
onContentUpdate in interface ContentServicePolicies.OnContentUpdatePolicy
Parameters:
nodeRef - the node reference

setJobLockService

public void setJobLockService(JobLockService jobLockService)

getJobLockService

public JobLockService getJobLockService()

setLockRetryCount

public void setLockRetryCount(int lockRetryCount)

getLockRetryCount

public int getLockRetryCount()

setLockRetryWait

public void setLockRetryWait(long lockRetryWait)

getLockRetryWait

public long getLockRetryWait()

setLockTimeOut

public void setLockTimeOut(long lockTimeOut)

getLockTimeOut

public long getLockTimeOut()

setLockRefreshTime

public void setLockRefreshTime(long lockRefreshTime)

getLockRefreshTime

public long getLockRefreshTime()

setTransferVersionChecker

public void setTransferVersionChecker(TransferVersionChecker transferVersionChecker)

getTransferVersionChecker

public TransferVersionChecker getTransferVersionChecker()

getVersion

public TransferVersion getVersion()
Description copied from interface: TransferReceiver
Get the version that we are transfering to.

Specified by:
getVersion in interface TransferReceiver

setFileTransferRootNodeFileFileSystem

public void setFileTransferRootNodeFileFileSystem(java.lang.String rootFileSystem)
Description copied from interface: TransferReceiver
set the root node for the file system receiver

Specified by:
setFileTransferRootNodeFileFileSystem in interface TransferReceiver


Copyright © 2005 - 2010 Alfresco Software, Inc. All Rights Reserved.