Alan Davis 29f7f5d073 Merged BRANCHES/DEV/V3.4-BUG-FIX to HEAD
28236: ALF-8810: Removed trailing space from discussion.discussion_for Italian translation
   28241: Incremented version revision for 3.4.4
   28284: ALF-835 - WCM/AVM: copy (empty) folder into itself
   28285: ALF-6863: More than one cifs device breaks the web UI (explorer)
   28290: ALF-8840: user-*.atomentry.ftl
   28291: ALF-6863: Continuation of fix by Arseny
   28336: ALF-8768: Fixed typo in comment on wcm-bootstrap-context.xml
   28363: Merged DEV to V3.4-BUG-FIX
      28262: ALF-8847: WCM: OrphanReaper contention throws error after 39 retries.
             Checkin Comment:
                Use JobLockService to make sure that only one OrphanReaper job is working.
                Generate list of nodes that must be processed in OrphanReaper.doBatch() transaction. 
   28386: ALF-9100: Merged PATCHES/V3.4.1 to V3.4-BUG-FIX
      28249: ALF-8946: Avoid one full table scan per batch in full reindex
         - Now each batch scans a single time sample, dynamically adjusted based on the number of transactions
		   in the previous sample, always aiming for 1000 transactions per sample.
   28394: Fixed ALF-9090: NPE during inter-cluster subsystem messaging
    - Bean ID is a List<String> and might not be recognized on receiving machine
    - Log warning when bean ID is not available (unsymmetrical configuration, perhaps?)
   28396: Merged DEV to V3.4-BUG-FIX
      28384: ALF-6150: Initial state lost when non-versionable document is saved for the first time
             Creation of new version of document before writing its content was added to
             - AbstractAlfrescoMethodHandler->putDocument (this method is used by Office 2003, 2007)
             - VtiIfHeaderAction->doPut (this method is used by Office 2007 and 2010 on Windows 7)
               Creation of new version was added twice to AbstractAlfrescoMethodHandler to avoid affecting
               initial version when transaction is committed. 
   28432: Merged DEV to V3.4-BUG-FIX
      28431: ALF-8530: Pressing the info icon creates an unrecorded file in the ContentStore
             Use ContentService.getTempWriter() in BaseContentNode$TemplateContentData.getContentAsText() method. 
   28435: Merged DEV/TEMPORARY to V3.4-BUG-FIX
      28428: ALF-9015: cm:modifier not updated when document is updated via CIFS
         In ContentDiskDriver.closeFile() added ContentModel.PROP_MODIFIER property update.
   28436: ALF-8550: Number of http requests (currentThreadsBusy) increases when session times out during creation of webform
   - Corrected use of read and write locks
   28465: Fix for ALF-8023 Share preview doesn't work if...
     fixed as outlined by Dmitry.
   28478: Merged BRANCHES/DEV/ALAN/AUDIT to BRANCHES/DEV/V3.4-BUG-FIX:
      28062-28477 (28062,28063,28080,28081,28302,28303,28334,28340,28464,28469,28477) ALF-8438 Need higher level audit of user actions

git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@28481 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
2011-06-20 12:42:10 +00:00

253 lines
11 KiB
Java

/*
* Copyright (C) 2009-2011 Alfresco Software Limited.
*
* This file is part of Alfresco
*
* Alfresco is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Alfresco is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
*/
package org.alfresco.service.cmr.transfer;
import java.util.Collection;
import java.util.Set;
import org.alfresco.service.PublicService;
import org.alfresco.service.cmr.repository.NodeRef;
import org.alfresco.service.Auditable;
import org.alfresco.service.NotAuditable;
/**
* The transfer service is responsible for transferring nodes between one instance of Alfresco and another remote instance.
* as well as the transfer method, this interface also provides methods for managing transfer targets.
*
* @see TransferService2
*
* @author Mark Rogers
*/
@Deprecated
public interface TransferService
{
/**
* Transfer nodes, sync. This synchronous version of the transfer method waits for the transfer to complete
* before returning to the caller. Callbacks are called in the current thread context, so will be associated with the current
* transaction and user.
*
* @param targetName the name of the target to transfer to
* The following properties must be set, nodes
* @param definition, the definition of the transfer. Specifies which nodes to transfer.
* @throws TransferException
* @return the node reference of the transfer report
*/
@Auditable(parameters={"targetName"})
public NodeRef transfer(String targetName, TransferDefinition definition) throws TransferException;
/**
* Transfer nodes sync, with callback. This synchronous version of the transfer method waits for the transfer to complete
* before returning to the caller. Callbacks are called in the current thread context, so will be associated with the current
* transaction and user.
*
* @param targetName the name of the target to transfer to
* @param definition - the definition of the transfer. Specifies which nodes to transfer.
* The following properties must be set, nodes
* @param callback - a set of callback handlers that will be called as transfer proceeds. May be null.
* @throws TransferException
* @return the node reference of the transfer report
*/
@Auditable(parameters={"targetName"})
public NodeRef transfer(String targetName, TransferDefinition definition, Collection<TransferCallback> callback) throws TransferException;
/**
* Transfer nodes sync, with callback. This synchronous version of the transfer method waits for the transfer to complete
* before returning to the caller. Callbacks are called in the current thread context, so will be associated with the current
* transaction and user.
*
* @param targetName the name of the target to transfer to
* @param definition - the definition of the transfer. Specifies which nodes to transfer.
* The following properties must be set, nodes
* @param callbacks - a list of callback handlers that will be called as transfer proceeds. May be null.
* @throws TransferException
* @return the node reference of the transfer report
*/
@Auditable(parameters={"targetName"})
public NodeRef transfer(String targetName, TransferDefinition definition, TransferCallback... callbacks) throws TransferException;
/**
* Transfer nodes async with callback. The asynchronous version of the transfer method starts a transfer and returns as
* soon as possible.
*
* The transfer callbacks will be called by a different thread to that used to call the transferAsync method so transaction
* context will be different to the calling context. The asychronous transfer does not have access to uncommitted
* data in the calling transaction.
*
* @param targetName the name of the target to transfer to
* @param definition - the definition of the transfer. Specifies which nodes to transfer.
* The following properties must be set, nodes
* @param callback - a collection of callback handlers that will be called as transfer proceeds. May be null.
*
* @throws TransferException
*/
@Auditable(parameters={"targetName"})
public void transferAsync(String targetName, TransferDefinition definition, Collection<TransferCallback> callback) throws TransferException;
/**
* Transfer nodes async with callback. The asynchronous version of the transfer method starts a transfer and returns as
* soon as possible.
*
* The transfer callbacks will be called by a different thread to that used to call the transferAsync method so transaction
* context will be different to the calling context. The asychronous transfer does not have access to uncommitted
* data in the calling transaction.
*
* @param targetName the name of the target to transfer to
* @param definition - the definition of the transfer. Specifies which nodes to transfer.
* The following properties must be set, nodes
* @param callbacks - a collection of callback handlers that will be called as transfer proceeds. May be null.
*
* @throws TransferException
*/
@Auditable(parameters={"targetName"})
public void transferAsync(String targetName, TransferDefinition definition, TransferCallback... callbacks) throws TransferException;
/**
* Verify a target is available and that the configured credentials are valid.
* @throws TransferException
*/
@NotAuditable
public void verify(TransferTarget target) throws TransferException;
/**
* Create and save a new transfer target. Creates and saves a new transfer target with a single, but long, method call.
*
* @param name, the name of this transfer target, which must be unique
* @param title, the display name of this transfer target
* @param description,
* @param endpointProtocol, either http or https
* @param endpointHost,
* @param endpointPort,
* @param endpointPath,
* @param username,
* @param password,
* @return the newly created transfer target.
*/
@Auditable
public TransferTarget createAndSaveTransferTarget(String name, String title, String description, String endpointProtocol,
String endpointHost, int endpointPort, String endpointPath, String username, char[] password) throws TransferException;
/**
* Creates an in memory transfer target. Before it is used it must be populated with the following values and
* saved with the saveTransferTarget method. The name of the transfer target must be unique.
* <ul>
* <li>title</li>
* <li>description</li>
* <li>endpointProtocol</li>
* <li>endpointHost</li>
* <li>endpointPort</li>
* <li>endpointPath</li>
* <li>username</li>
* <li>password</li>
* </ul>
* @return an in memory transfer target
*/
@Auditable(parameters={"name"})
public TransferTarget createTransferTarget(String name);
/**
* Get all the transfer targets
*/
@NotAuditable
public Set<TransferTarget>getTransferTargets() throws TransferException;
/**
* Get All the transfer targets for a particular transfer target group.
* @param groupName, the name of the transfer group
*/
@NotAuditable
public Set<TransferTarget>getTransferTargets(String groupName) throws TransferException;
/**
* Get a transfer target by its name
* @throws TransferException - target does not exist
*/
@NotAuditable
public TransferTarget getTransferTarget(String name) throws TransferException;
/**
* Test to see if the target with the specified name exists
* @param name
* @return true if the specified target exists, and false otherwise
*/
@NotAuditable
public boolean targetExists(String name);
/**
* Delete a transfer target. After calling this method the transfer target will no longer exist.
* @throws TransferException - target does not exist
* @param name, the name of this transfer target,
*/
@Auditable(parameters={"name"})
public void deleteTransferTarget(String name) throws TransferException;
/**
* Save TransferTarget, will create a transfer target if it does not already exist or update an existing transfer target.
*
* The following properties may be updated:
* endpointHost,
* endpointPort,
* endpointProtocol,
* endpointPath,
* username,
* password,
* title,
* description
*
* The following properties may not be updated:
* name, must be specified.
* nodeRef, if specified will be ignored.
*
* @param update
*/
@Auditable
public TransferTarget saveTransferTarget(TransferTarget update) throws TransferException;
/**
* Enables/Disables the named transfer target
* @param name the name of the transfer target
* @param enable (or false=disable)
*/
@Auditable(parameters={"name", "enable"})
public void enableTransferTarget(String name, boolean enable) throws TransferException;
/**
* Asynchronously cancel an in-progress transfer
*
* This method tells an in-process transfer to give up, rollback and stop as soon as possible.
*
* Depending upon the state of the in-progress transfer, the transfer may still complete,
* despite calling this method, however in most cases the transfer will not complete.
*
* Calling this method for a transfer that does not exist, possibly because it has already finished, has no
* effect and will not throw an exception.
*
* The transfer identifier can be obtained from the TransferEventBegin event that is passed to registered callbacks when
* transfer starts.
*
* @param transferId the unique identifier of the transfer to cancel.
*
* @see TransferEventBegin;
*/
@Auditable(parameters={"transferId"})
public void cancelAsync(String transferId);
}