2 * Copyright 2005-2010 the original author or authors.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
16 package org.wamblee.test.transactions;
18 import javax.transaction.HeuristicMixedException;
19 import javax.transaction.HeuristicRollbackException;
20 import javax.transaction.NotSupportedException;
21 import javax.transaction.RollbackException;
22 import javax.transaction.SystemException;
23 import javax.transaction.UserTransaction;
26 * User transaction implemenetation that automatically creates thread specific transaction if needed.
28 * @author Erik Brakkee
31 public class AutoCreateUserTransaction implements UserTransaction {
33 private SimpleTransactionManager manager;
35 public AutoCreateUserTransaction(SimpleTransactionManager aManager) {
39 private UserTransaction getTransaction() {
40 return manager.getOrCreateThreadSpecificTransaction();
44 public void begin() throws NotSupportedException, SystemException {
45 getTransaction().begin();
49 public void commit() throws RollbackException, HeuristicMixedException,
50 HeuristicRollbackException, SecurityException, IllegalStateException,
52 getTransaction().commit();
56 public int getStatus() throws SystemException {
57 return getTransaction().getStatus();
61 public void rollback() throws IllegalStateException, SecurityException,
63 getTransaction().rollback();
67 public void setRollbackOnly() throws IllegalStateException, SystemException {
68 getTransaction().setRollbackOnly();
72 public void setTransactionTimeout(int aSeconds) throws SystemException {
73 getTransaction().setTransactionTimeout(aSeconds);