Advertisement
Guest User

Untitled

a guest
Apr 20th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.97 KB | None | 0 0
  1. import org.springframework.scheduling.annotation.Async;
  2. import org.springframework.scheduling.annotation.AsyncResult;
  3. import org.springframework.stereotype.Component;
  4. import org.springframework.transaction.annotation.Propagation;
  5. import org.springframework.transaction.annotation.Transactional;
  6.  
  7. import java.util.concurrent.Future;
  8. import java.util.function.*;
  9.  
  10. @Component
  11. public class TransactionalMethodSupport {
  12.  
  13. @Transactional
  14. public void execute(Runnable runnable) {
  15. runnable.run();
  16. }
  17.  
  18. @Transactional
  19. public <T> T execute(Supplier<T> supplier) {
  20. return supplier.get();
  21. }
  22.  
  23. @Transactional
  24. public <T> void execute(Consumer<T> consumer, T var1) {
  25. consumer.accept(var1);
  26. }
  27.  
  28. @Transactional
  29. public <T, R> void execute(BiConsumer<T, R> consumer, T var1, R var2) {
  30. consumer.accept(var1, var2);
  31. }
  32.  
  33. @Transactional
  34. public <T, R> R execute(Function<T, R> function, T var1) {
  35. return function.apply(var1);
  36. }
  37.  
  38. @Transactional
  39. public <T, U, R> R execute(BiFunction<T, U, R> function, T var1, U var2) {
  40. return function.apply(var1, var2);
  41. }
  42.  
  43. @Transactional(propagation = Propagation.REQUIRES_NEW)
  44. public void executeNew(Runnable runnable) {
  45. runnable.run();
  46. }
  47.  
  48. @Transactional(propagation = Propagation.REQUIRES_NEW)
  49. public <T> T executeNew(Supplier<T> supplier) {
  50. return supplier.get();
  51. }
  52.  
  53. @Transactional(propagation = Propagation.REQUIRES_NEW)
  54. public <T> void executeNew(Consumer<T> consumer, T var1) {
  55. consumer.accept(var1);
  56. }
  57.  
  58. @Transactional(propagation = Propagation.REQUIRES_NEW)
  59. public <T, R> void executeNew(BiConsumer<T, R> consumer, T var1, R var2) {
  60. consumer.accept(var1, var2);
  61. }
  62.  
  63. @Transactional(propagation = Propagation.REQUIRES_NEW)
  64. public <T, R> R executeNew(Function<T, R> function, T var1) {
  65. return function.apply(var1);
  66. }
  67.  
  68. @Transactional(propagation = Propagation.REQUIRES_NEW)
  69. public <T, U, R> R executeNew(BiFunction<T, U, R> function, T var1, U var2) {
  70. return function.apply(var1, var2);
  71. }
  72.  
  73. @Async
  74. @Transactional
  75. public void executeAsync(Runnable runnable) {
  76. runnable.run();
  77. }
  78.  
  79. @Async
  80. @Transactional
  81. public <T> Future<T> executeAsync(Supplier<T> supplier) {
  82. return new AsyncResult<>(supplier.get());
  83. }
  84.  
  85. @Async
  86. @Transactional
  87. public <T> void executeAsync(Consumer<T> consumer, T var1) {
  88. consumer.accept(var1);
  89. }
  90.  
  91. @Async
  92. @Transactional
  93. public <T, R> void executeAsync(BiConsumer<T, R> consumer, T var1, R var2) {
  94. consumer.accept(var1, var2);
  95. }
  96.  
  97. @Async
  98. @Transactional
  99. public <T, R> Future<R> executeAsync(Function<T, R> function, T var1) {
  100. return new AsyncResult<>(function.apply(var1));
  101. }
  102.  
  103. @Async
  104. @Transactional
  105. public <T, U, R> Future<R> executeAsync(BiFunction<T, U, R> function, T var1, U var2) {
  106. return new AsyncResult<>(function.apply(var1, var2));
  107. }
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement