org.alfresco.repo.transaction
Class TransactionServiceImpl

java.lang.Object
  extended by org.alfresco.repo.transaction.TransactionServiceImpl
All Implemented Interfaces:
TransactionService

public class TransactionServiceImpl
extends java.lang.Object
implements TransactionService

Default implementation of Transaction Service.

Default retry behaviour: see RetryingTransactionHelper.RetryingTransactionHelper()


Constructor Summary
TransactionServiceImpl()
          Construct defaults
 
Method Summary
 boolean getAllowWrite()
          Determine if the repository has been put into read only mode.
 javax.transaction.UserTransaction getNonPropagatingUserTransaction()
          Gets a user transaction that ensures a new transaction is created.
 javax.transaction.UserTransaction getNonPropagatingUserTransaction(boolean readOnly)
          Gets a user transaction that ensures a new transaction is created.
 javax.transaction.UserTransaction getNonPropagatingUserTransaction(boolean readOnly, boolean ignoreSystemReadOnly)
          Gets a user transaction that ensures a new transaction is created.
 RetryingTransactionHelper getRetryingTransactionHelper()
          Creates a new helper instance.
 javax.transaction.UserTransaction getUserTransaction()
          Gets a user transaction that supports transaction propagation.
 javax.transaction.UserTransaction getUserTransaction(boolean readOnly)
          Gets a user transaction that supports transaction propagation.
 javax.transaction.UserTransaction getUserTransaction(boolean readOnly, boolean ignoreSystemReadOnly)
          Gets a user transaction that supports transaction propagation.
 boolean isReadOnly()
          Determine if ALL user transactions will be read-only.
 void setAllowWrite(boolean allowWrite)
          Set the read-only mode for all generated transactions.
 void setAllowWrite(boolean allowWrite, org.alfresco.service.namespace.QName nameOfVeto)
          Set the read-only mode for all generated transactions.
 void setAuthenticationContext(AuthenticationContext authenticationContext)
          Sets the authentication context.
 void setMaxRetries(int maxRetries)
           
 void setMaxRetryWaitMs(int maxRetryWaitMs)
           
 void setMinRetryWaitMs(int minRetryWaitMs)
           
 void setRetryWaitIncrementMs(int retryWaitIncrementMs)
           
 void setSysAdminParams(SysAdminParams sysAdminParams)
           
 void setTransactionManager(org.springframework.transaction.PlatformTransactionManager transactionManager)
          Set the transaction manager to use
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

TransactionServiceImpl

public TransactionServiceImpl()
Construct defaults

Method Detail

setTransactionManager

public void setTransactionManager(org.springframework.transaction.PlatformTransactionManager transactionManager)
Set the transaction manager to use


setAuthenticationContext

public void setAuthenticationContext(AuthenticationContext authenticationContext)
Sets the authentication context.

Parameters:
authenticationContext - the authentication context

setSysAdminParams

public void setSysAdminParams(SysAdminParams sysAdminParams)

getAllowWrite

public boolean getAllowWrite()
Determine if the repository has been put into read only mode. This is independent of the current user.

Specified by:
getAllowWrite in interface TransactionService
Returns:
true if the repository is allowed to perform write operations

setAllowWrite

public void setAllowWrite(boolean allowWrite)
Set the read-only mode for all generated transactions.

Intended for use by spring configuration only. Alfresco code should call the method which specifies a veto name.

Parameters:
allowWrite - false if all transactions must be read-only

setAllowWrite

public void setAllowWrite(boolean allowWrite,
                          org.alfresco.service.namespace.QName nameOfVeto)
Set the read-only mode for all generated transactions.

By default read/write transactions are allowed however vetos may be applied that make the transactions read only.

Prevent writes by calling allowWrite with false and a given veto name.

The veto is removed by calling allowWrite with true for the given veto name when all vetos are removed then read/write transactions are allowed.

Parameters:
allowWrite - false if all transactions must be read-only
nameOfVeto - the name of the veto

isReadOnly

public boolean isReadOnly()
Determine if ALL user transactions will be read-only. The 'System' user is always allowed to write.

Specified by:
isReadOnly in interface TransactionService
Returns:
Returns true if all transactions are read-only AND the current user is not the 'System' user.

setMaxRetries

public void setMaxRetries(int maxRetries)
See Also:
RetryingTransactionHelper.setMaxRetries(int)

setMinRetryWaitMs

public void setMinRetryWaitMs(int minRetryWaitMs)
See Also:
RetryingTransactionHelper.setMinRetryWaitMs(int)

setMaxRetryWaitMs

public void setMaxRetryWaitMs(int maxRetryWaitMs)
See Also:
RetryingTransactionHelper.setMaxRetryWaitMs(int)

setRetryWaitIncrementMs

public void setRetryWaitIncrementMs(int retryWaitIncrementMs)
See Also:
RetryingTransactionHelper.setRetryWaitIncrementMs(int)

getUserTransaction

public javax.transaction.UserTransaction getUserTransaction()
Description copied from interface: TransactionService
Gets a user transaction that supports transaction propagation. This is like the EJB REQUIRED transaction attribute.

Specified by:
getUserTransaction in interface TransactionService
Returns:
the user transaction
See Also:
TransactionDefinition.PROPAGATION_REQUIRED

getUserTransaction

public javax.transaction.UserTransaction getUserTransaction(boolean readOnly)
Description copied from interface: TransactionService
Gets a user transaction that supports transaction propagation. This is like the EJB REQUIRED transaction attribute.

Specified by:
getUserTransaction in interface TransactionService
Parameters:
readOnly - Set true for a READONLY transaction instance, false otherwise. Note that it is not always possible to force a write transaction if the system is in read-only mode.
Returns:
the user transaction
See Also:
TransactionDefinition.PROPAGATION_REQUIRED

getUserTransaction

public javax.transaction.UserTransaction getUserTransaction(boolean readOnly,
                                                            boolean ignoreSystemReadOnly)
Description copied from interface: TransactionService
Gets a user transaction that supports transaction propagation. This is like the EJB REQUIRED transaction attribute.

Specified by:
getUserTransaction in interface TransactionService
Parameters:
readOnly - Set true for a READONLY transaction instance, false otherwise.
ignoreSystemReadOnly - true to force the read-only flag to be respected regardless of the system read-only mode.
Returns:
the user transaction
See Also:
TransactionDefinition.PROPAGATION_REQUIRED

getNonPropagatingUserTransaction

public javax.transaction.UserTransaction getNonPropagatingUserTransaction()
Description copied from interface: TransactionService
Gets a user transaction that ensures a new transaction is created. Any enclosing transaction is not propagated. This is like the EJB REQUIRES_NEW transaction attribute - when the transaction is started, the current transaction will be suspended and a new one started.

Specified by:
getNonPropagatingUserTransaction in interface TransactionService
Returns:
Returns a non-propagating user transaction
See Also:
TransactionDefinition.PROPAGATION_REQUIRES_NEW

getNonPropagatingUserTransaction

public javax.transaction.UserTransaction getNonPropagatingUserTransaction(boolean readOnly)
Description copied from interface: TransactionService
Gets a user transaction that ensures a new transaction is created. Any enclosing transaction is not propagated. This is like the EJB REQUIRES_NEW transaction attribute - when the transaction is started, the current transaction will be suspended and a new one started.

Specified by:
getNonPropagatingUserTransaction in interface TransactionService
Parameters:
readOnly - Set true for a READONLY transaction instance, false otherwise. Note that it is not always possible to force a write transaction if the system is in read-only mode.
Returns:
Returns a non-propagating user transaction
See Also:
TransactionDefinition.PROPAGATION_REQUIRES_NEW

getNonPropagatingUserTransaction

public javax.transaction.UserTransaction getNonPropagatingUserTransaction(boolean readOnly,
                                                                          boolean ignoreSystemReadOnly)
Description copied from interface: TransactionService
Gets a user transaction that ensures a new transaction is created. Any enclosing transaction is not propagated. This is like the EJB REQUIRES_NEW transaction attribute - when the transaction is started, the current transaction will be suspended and a new one started.

Specified by:
getNonPropagatingUserTransaction in interface TransactionService
Parameters:
readOnly - Set true for a READONLY transaction instance, false otherwise.
ignoreSystemReadOnly - true to force the read-only flag to be respected regardless of the system read-only mode.
Returns:
Returns a non-propagating user transaction
See Also:
TransactionDefinition.PROPAGATION_REQUIRES_NEW

getRetryingTransactionHelper

public RetryingTransactionHelper getRetryingTransactionHelper()
Creates a new helper instance. It can be reused or customized by the client code: each instance is new and initialized afresh.

Specified by:
getRetryingTransactionHelper in interface TransactionService
Returns:
Returns a helper object that executes units of work transactionally. The helper can be reused or altered as required.


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