1 package com.atlassian.activeobjects.external;
2
3 import net.java.ao.Transaction;
4 import org.springframework.beans.BeansException;
5 import org.springframework.beans.factory.config.BeanPostProcessor;
6
7 import static com.atlassian.activeobjects.tx.TransactionalProxy.isAnnotated;
8 import static com.atlassian.activeobjects.tx.TransactionalProxy.transactional;
9 import static com.google.common.base.Preconditions.checkNotNull;
10
11
12
13
14
15
16
17
18
19
20
21
22
23 public final class TransactionalAnnotationProcessor implements BeanPostProcessor {
24 private final ActiveObjects ao;
25
26 public TransactionalAnnotationProcessor(ActiveObjects ao) {
27
28
29 Transaction.class.getAnnotations();
30
31
32 this.ao = checkNotNull(ao);
33 }
34
35 public Object postProcessBeforeInitialization(Object o, String s) throws BeansException {
36 return o;
37 }
38
39 public Object postProcessAfterInitialization(Object o, String s) throws BeansException {
40 return isAnnotated(o.getClass()) ? transactional(ao, o) : o;
41 }
42 }