001: /**
002: * EasyBeans
003: * Copyright (C) 2006 Bull S.A.S.
004: * Contact: easybeans@ow2.org
005: *
006: * This library is free software; you can redistribute it and/or
007: * modify it under the terms of the GNU Lesser General Public
008: * License as published by the Free Software Foundation; either
009: * version 2.1 of the License, or any later version.
010: *
011: * This library is distributed in the hope that it will be useful,
012: * but WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * Lesser General Public License for more details.
015: *
016: * You should have received a copy of the GNU Lesser General Public
017: * License along with this library; if not, write to the Free Software
018: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
019: * USA
020: *
021: * --------------------------------------------------------------------------
022: * $Id: TestInheritance.java 1970 2007-10-16 11:49:25Z benoitf $
023: * --------------------------------------------------------------------------
024: */package org.ow2.easybeans.tests.transaction.containermanaged.stateless;
025:
026: import javax.transaction.UserTransaction;
027:
028: import org.ow2.easybeans.tests.common.ejbs.stateless.containermanaged.inheritance.ItfCMTInheritance;
029: import org.ow2.easybeans.tests.common.ejbs.stateless.containermanaged.inheritance.SLSBCMTInheritance;
030: import org.ow2.easybeans.tests.common.helper.EJBHelper;
031: import org.ow2.easybeans.tests.common.helper.TransactionHelper;
032: import org.testng.annotations.BeforeMethod;
033: import org.testng.annotations.Test;
034:
035: /**
036: * Verifies if the inheritance in container-managed transaction is
037: * following the JSR 220.The item covered in this test are: 13.37.1.
038: * @reference JSR 220-FINAL RELEASE
039: * @requirement Application Server must be running; the bean
040: * SLSBCMTInheritance
041: * must be deployed.
042: * @setup gets the reference of the bean
043: * @author Gisele Pinheiro Souza
044: * @author Eduardo Studzinski Estima de Castro
045: */
046: public class TestInheritance {
047:
048: /**
049: * Bean used during the tests.
050: */
051: private ItfCMTInheritance slsbCMTInheritance;
052:
053: /**
054: * Creates the stateless bean used during the tests.
055: * @throws Exception if an error occurs during the lookup.
056: */
057: @BeforeMethod
058: public void setup() throws Exception {
059: slsbCMTInheritance = EJBHelper.getBeanRemoteInstance(
060: SLSBCMTInheritance.class, ItfCMTInheritance.class);
061: }
062:
063: /**
064: * Verifies if the transaction attribute define for the class is the same
065: * for all class methods. The class transaction attribute is never and the
066: * method is called in a transaction context, so the method must throw an
067: * exception.
068: * @input -
069: * @output an EJBException.
070: * @throws Exception if an error occurs.
071: */
072: @Test(expectedExceptions=javax.ejb.EJBException.class)
073: public void testClassDefinition() throws Exception {
074: UserTransaction utx = TransactionHelper
075: .getInternalUserTransaction();
076: try {
077: utx.begin();
078: slsbCMTInheritance.dummyMethod1();
079: } finally {
080: utx.rollback();
081: }
082: }
083:
084: /**
085: * Verifies if the transaction attribute defined in a method overrides the
086: * class transaction attribute. The method transaction attribute is
087: * mandatory and the method is called without a transaction context, so the
088: * method must throw an exception.
089: * @input -
090: * @output an EJBException.
091: * @throws Exception if an error occurs.
092: */
093: @Test(expectedExceptions=javax.ejb.EJBException.class)
094: public void testMethodDefinition() throws Exception {
095: slsbCMTInheritance.dummyMethod2();
096:
097: }
098:
099: /**
100: * Verifies if the transaction attribute defined in the class method overrides the
101: * transaction attribute defined in the superclass. The method transaction
102: * attribute is mandatory and the method is called without a transaction
103: * context, so the method must throw an exception.
104: * @input -
105: * @output an EJBException.
106: * @throws Exception if an error occurs.
107: */
108: @Test(expectedExceptions=javax.ejb.EJBException.class)
109: public void testOverrideSuperclassDefinition1() throws Exception {
110: slsbCMTInheritance.dummyMethod3();
111:
112: }
113:
114: /**
115: * Verifies if the transaction attribute defined in the class method overrides the
116: * transaction attribute defined in the superclass. The method transaction
117: * attribute is required, so the method must not throw an exception.
118: * @input -
119: * @output a correct method execution.
120: * @throws Exception if an error occurs.
121: */
122: @Test
123: public void testOverrideSuperclassDefinition2() throws Exception {
124: UserTransaction utx = TransactionHelper
125: .getInternalUserTransaction();
126: try {
127: utx.begin();
128: slsbCMTInheritance.dummyMethod4();
129: } finally {
130: utx.rollback();
131: }
132: }
133: }
|