package com.ciant.techgallery.transaction.idempotency; import com.ciant.techgallery.transaction.Transactional; public class IdempotencyHandlerFactory { /** * @param transactional annotation written in a transactional method. * @return Creates an IdempotencyHandler based on Transactional annotation. */ public static IdempotencyHandler createHandlerAnnotationBased(Transactional transactional) { if (transactional.autoIdempotency()) { return new AutoIdempotencyHandler(); } else if (transactional.keyIdempotency()) { return new KeyIdempotencyHandler(); } return new EmptyIdempotencyHandler(); } }