Class TransactionServiceImpl

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

public class TransactionServiceImpl extends Object implements TransactionService
Default implementation of Transaction Service.

Default retry behaviour: see RetryingTransactionHelper()

Author:
David Caruana
  • Constructor Details

    • TransactionServiceImpl

      public TransactionServiceImpl()
      Construct defaults
  • Method Details

    • setTransactionManager

      public void setTransactionManager(org.springframework.transaction.PlatformTransactionManager transactionManager)
      Set the transaction manager to use
    • 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, 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:
    • setMinRetryWaitMs

      public void setMinRetryWaitMs(int minRetryWaitMs)
      See Also:
    • setMaxRetryWaitMs

      public void setMaxRetryWaitMs(int maxRetryWaitMs)
      See Also:
    • setRetryWaitIncrementMs

      public void setRetryWaitIncrementMs(int retryWaitIncrementMs)
      See Also:
    • getUserTransaction

      public jakarta.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 jakarta.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 jakarta.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 jakarta.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 jakarta.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 jakarta.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.