Class DefaultEmailAddressFetchStrategy

java.lang.Object
de.hybris.platform.acceleratorservices.email.strategy.impl.DefaultEmailAddressFetchStrategy
All Implemented Interfaces:
EmailAddressFetchStrategy

public class DefaultEmailAddressFetchStrategy extends Object implements EmailAddressFetchStrategy
Default strategy for fetching EmailAddressModel for given address. The implementation executes in a transaction which uses fetch-create if needed-fetch approach which is important in multi threaded environment.
See Also:
  • Constructor Details

    • DefaultEmailAddressFetchStrategy

      public DefaultEmailAddressFetchStrategy()
  • Method Details

    • fetch

      public EmailAddressModel fetch(String emailAddress, String displayName)
      Specified by:
      fetch in interface EmailAddressFetchStrategy
      Parameters:
      emailAddress - email for which the email address object should be fetched
      displayName - display name for which the email address object should be fetched
      Returns:
      email address instance
    • loadEmailAddressFromDatabase

      protected EmailAddressModel loadEmailAddressFromDatabase(String emailAddress, String displayName)
    • handleEmailAddressCreation

      protected EmailAddressModel handleEmailAddressCreation(String emailAddress, String displayName, Transaction tx, boolean txRollbackOnlyBefore)
    • isIgnorableConstraintViolationException

      protected boolean isIgnorableConstraintViolationException(Exception exception)
    • isInsertConditionException

      protected boolean isInsertConditionException(Exception exception)
    • disableNestedTransactions

      protected void disableNestedTransactions(SessionContext loclCtx)
    • getEmailAddressDao

      protected EmailAddressDao getEmailAddressDao()
    • setEmailAddressDao

      public void setEmailAddressDao(EmailAddressDao emailAddressDao)
    • getModelService

      protected ModelService getModelService()
    • setModelService

      public void setModelService(ModelService modelService)
    • handleMissingEmailAfterInsertConflict

      protected EmailAddressModel handleMissingEmailAfterInsertConflict(ModelSavingException e, String emailAddress, String displayName)
      Tries to fetch the given email address 10 times with 100 ms interval. It tries to recover from an exception thrown scenario where multi threads tried to insert the same row to the database.
      Parameters:
      e -
      emailAddress -
      displayName -
      Returns:
      addr the EmailAddressModel
    • logDebugInfo

      protected void logDebugInfo(ModelSavingException e, String message)