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: TestExceptionHandleMandatory.java 1970 2007-10-16 11:49:25Z benoitf $
023: * --------------------------------------------------------------------------
024: */package org.ow2.easybeans.tests.transaction.containermanaged.stateful;
025:
026: import java.sql.SQLException;
027:
028: import javax.ejb.EJBTransactionRolledbackException;
029:
030: import org.ow2.easybeans.tests.common.ejbs.stateful.containermanaged.transaction.SFSBContainerTransacMandatoryApp01;
031: import org.ow2.easybeans.tests.common.ejbs.stateful.containermanaged.transaction.SFSBContainerTransacMandatoryApp02;
032: import org.ow2.easybeans.tests.common.ejbs.stateful.containermanaged.transaction.SFSBContainerTransacMandatoryRollback;
033: import org.ow2.easybeans.tests.common.ejbs.stateful.containermanaged.transaction.SFSBContainerTransactionMandatoryApp;
034: import org.ow2.easybeans.tests.common.ejbs.stateful.containermanaged.transaction.SFSBContainerTransactionMandatoryRuntime;
035: import org.ow2.easybeans.tests.transaction.containermanaged.base.TestExceptionHandleBase;
036: import org.testng.annotations.BeforeMethod;
037: import org.testng.annotations.Test;
038:
039: /**
040: * Verifies if the container-managed transaction in the session bean is
041: * following the JSR 220. The container must handle the different types of
042: * exception in the transaction context. The items covered in this test are:
043: * 14.3.1
044: * @reference JSR 220-FINAL RELEASE
045: * @requirement Application Server must be running; the bean .
046: * SFSBContainerTransactionMandatoryApp,
047: * SFSBContainerTransacMandatoryApp01,
048: * SFSBContainerTransacMandatoryApp02
049: * SFSBContainerTransactionMandatoryRollback and
050: * SFSBContainerTransactionMandatoryRuntime must be deployed .
051: * @setup gets the reference of the beans , cleans the database and close all
052: * transactions.
053: * @author Gisele Pinheiro Souza
054: * @author Eduardo Studzinski Estima de Castro
055: */
056: public class TestExceptionHandleMandatory extends
057: TestExceptionHandleBase {
058:
059: /**
060: * Creates the bean intances, closes the transactions and cleans the
061: * database.
062: * @throws Exception if an error during the bean creation occurs.
063: */
064: @BeforeMethod
065: @Override
066: public void setup() throws Exception {
067: super .setup();
068: }
069:
070: /**
071: * Creates a bean that throws always an application exception that extends
072: * Exception and has the rollback element as false.
073: * @throws Exception if an error during the bean creation occurs.
074: */
075: @Override
076: public void createBeanApp() throws Exception {
077: super .createBeanApp(SFSBContainerTransactionMandatoryApp.class);
078:
079: }
080:
081: /**
082: * Creates a bean that throws always an application exception that extends
083: * RuntimeException and has the rollback element as false.
084: * @throws Exception if an error during the bean creation occurs.
085: */
086: @Override
087: public void createBeanApp01() throws Exception {
088: super .createBeanApp01(SFSBContainerTransacMandatoryApp01.class);
089:
090: }
091:
092: /**
093: * Creates a bean that throws always an application exception that extends
094: * RuntimeException and has the rollback element as true.
095: * @throws Exception if an error during the bean creation occurs.
096: */
097: @Override
098: public void createBeanApp02() throws Exception {
099: super .createBeanApp02(SFSBContainerTransacMandatoryApp02.class);
100: }
101:
102: /**
103: * Creates a bean that throws always an application exception that extends
104: * Exception and has the rollback element as true.
105: * @throws Exception if an error during the bean creation occurs.
106: */
107: @Override
108: public void createBeanRollback() throws Exception {
109: super
110: .createBeanRollback(SFSBContainerTransacMandatoryRollback.class);
111: }
112:
113: /**
114: * Creates a bean that throws always aa runtime exception.
115: * @throws Exception if an error during the bean creation occurs.
116: */
117: @Override
118: public void createBeanRuntime() throws Exception {
119: super
120: .createBeanRuntime(SFSBContainerTransactionMandatoryRuntime.class);
121: }
122:
123: /**
124: * Inserts a table in an database and after throws an application exception
125: * that extends Exception and has the rollback element as false. The test
126: * uses the client transaction, so, the container must not mark the client
127: * transaction for rollback and must re-throw the exception.
128: * @input -
129: * @output the correct method execution.
130: * @see org.ow2.easybeans.tests.transaction.containermanaged.base.TestExceptionHandleBase
131: * @throws Exception if an error during the tests occurs.
132: */
133: @Test
134: @Override
135: public void testUsingClientTransWithAppException() throws Exception {
136: super .testUsingClientTransWithAppException();
137: }
138:
139: /**
140: * Inserts a table in an database and after throws an application exception
141: * that extends Exception and has the rollback element as true. The test
142: * uses the client transaction, so, the container must mark the client
143: * transaction for rollback and must re-throw the exception.
144: * @input - *
145: * @output the exception when the test makes a select in the database to
146: * find the table created.
147: * @see org.ow2.easybeans.tests.transaction.containermanaged.base.TestExceptionHandleBase
148: * @throws Exception if an error during the tests occurs.
149: */
150: @Test(expectedExceptions=SQLException.class)
151: public void testUsingClientTransWithAppRollbackException()
152: throws Exception {
153: super .testUsingClientTransWithAppRollbackException(false);
154: }
155:
156: /**
157: * Inserts a table in an database and after throws an application exception
158: * that extends RuntimeException and has the rollback element as false. The test
159: * uses the client transaction, so, the container must not mark the client
160: * transaction for rollback and must re-throw the exception.
161: * @input -
162: * @output the correct method execution.
163: * @see org.ow2.easybeans.tests.transaction.containermanaged.base.TestExceptionHandleBase
164: * @throws Exception if an error during the tests occurs.
165: */
166: @Test(expectedExceptions=SQLException.class)
167: public void testUsingClientTransWithAppRuntimeRollbackException()
168: throws Exception {
169: super
170: .testUsingClientTransWithAppRuntimeRollbackException(false);
171: }
172:
173: /**
174: * Inserts a table in an database and after throws an application exception
175: * that extends RuntimeException and has the rollback element as false. The test
176: * uses the client transaction, so, the container must not mark the client
177: * transaction for rollback and must re-throw the exception.
178: * @input -
179: * @output the correct method execution.
180: * @see org.ow2.easybeans.tests.transaction.containermanaged.base.TestExceptionHandleBase
181: * @throws Exception if an error during the tests occurs.
182: */
183: @Test
184: @Override
185: public void testUsingClientTransWithAppRuntimeException()
186: throws Exception {
187: super .testUsingClientTransWithAppRuntimeException();
188: }
189:
190: /**
191: * Inserts a table in an database and after throws an application exception
192: * that extends RuntimeException and has the rollback element as false. The test
193: * uses the client transaction, so, the container must not mark the client
194: * transaction for rollback and must re-throw the exception.
195: * @input -
196: * @output the correct method execution.
197: * @see org.ow2.easybeans.tests.transaction.containermanaged.base.TestExceptionHandleBase
198: * @throws Exception if an error during the tests occurs.
199: */
200: @Test(groups={"runtime exception tests"})
201: public void testUsingClientTransWithRuntimeException()
202: throws Exception {
203: super .testUsingClientTransWithRuntimeException(
204: EJBTransactionRolledbackException.class, false);
205: }
206: }
|