1 /* 2 * The contents of this file are subject to the terms 3 * of the Common Development and Distribution License 4 * (the "License"). You may not use this file except 5 * in compliance with the License. 6 * 7 * You can obtain a copy of the license at 8 * glassfish/bootstrap/legal/CDDLv1.0.txt or 9 * https://glassfish.dev.java.net/public/CDDLv1.0.html. 10 * See the License for the specific language governing 11 * permissions and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL 14 * HEADER in each file and include the License file at 15 * glassfish/bootstrap/legal/CDDLv1.0.txt. If applicable, 16 * add the following below this CDDL HEADER, with the 17 * fields enclosed by brackets "[]" replaced with your 18 * own identifying information: Portions Copyright [yyyy] 19 * [name of copyright owner] 20 */ 21 // Copyright (c) 1998, 2006, Oracle. All rights reserved. 22 package oracle.toplink.essentials.internal.ejb.cmp3.transaction; 23 24 import javax.persistence.EntityTransaction; 25 import javax.persistence.TransactionRequiredException; 26 import oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerImpl; 27 import oracle.toplink.essentials.exceptions.TransactionException; 28 29 /** 30 * INTERNAL: 31 * JDK 1.5 specific version of EntityTransactionWrapper. Differs from the JDK 1.4 version 32 * in that it implements a different version of the TransactionWrapper interface, 33 * uses a different EntityManager, and returns a different EntityTransaction version. 34 * 35 * @see oracle.toplink.essentials.internal.ejb.cmp3.transaction.EntityTransactionWrapper 36 */ 37 public class EntityTransactionWrapper 38 extends oracle.toplink.essentials.internal.ejb.cmp3.transaction.base.EntityTransactionWrapper 39 implements TransactionWrapper 40 { 41 42 public EntityTransactionWrapper(EntityManagerImpl entityManager) { 43 super(entityManager); 44 } 45 46 /** 47 * Lazy initialize the EntityTransaction. 48 * There can only be one EntityTransaction at a time. 49 */ 50 public EntityTransaction getTransaction(){ 51 if (entityTransaction == null){ 52 entityTransaction = new EntityTransactionImpl(this); 53 } 54 return (EntityTransaction)entityTransaction; 55 } 56 57 /** 58 * Mark the current transaction so that the only possible 59 * outcome of the transaction is for the transaction to be 60 * rolled back. 61 * This is an internal method and if the txn is not active will do nothing 62 */ 63 public void setRollbackOnlyInternal(){ 64 if (this.getTransaction().isActive()){ 65 this.getTransaction().setRollbackOnly(); 66 } 67 } 68 69 protected void throwCheckTransactionFailedException() { 70 throw new TransactionRequiredException(TransactionException.transactionNotActive().getMessage()); 71 } 72 } 73