1 package com.atlassian.activeobjects.internal;
2
3 import com.atlassian.sal.api.transaction.TransactionCallback;
4 import net.java.ao.ActiveObjectsException;
5 import net.java.ao.EntityManager;
6 import net.java.ao.Transaction;
7
8 import java.sql.SQLException;
9
10 import static com.google.common.base.Preconditions.checkNotNull;
11
12
13
14
15
16 final class EntityManagedTransactionManager extends AbstractLoggingTransactionManager {
17 private final EntityManager entityManager;
18
19 EntityManagedTransactionManager(EntityManager entityManager) {
20 this.entityManager = checkNotNull(entityManager);
21 }
22
23 <T> T inTransaction(final TransactionCallback<T> callback) {
24 try {
25 return new Transaction<T>(entityManager) {
26 public T run() {
27 return callback.doInTransaction();
28 }
29 }.execute();
30 } catch (SQLException e) {
31 throw new ActiveObjectsException(e);
32 }
33 }
34 }