diff --git a/install/jakartaee/other/vehicle.properties b/install/jakartaee/other/vehicle.properties index fa412eeedc..b78e7f75ec 100644 --- a/install/jakartaee/other/vehicle.properties +++ b/install/jakartaee/other/vehicle.properties @@ -334,7 +334,10 @@ com/sun/ts/tests/ejb30/bb/async/stateless/metadata/JsfClient.java = ejblitejsf com/sun/ts/tests/ejb30/bb/async/stateless/metadata/Client.java = ejbliteservlet ejbliteservlet2 ejblitejsp com/sun/ts/tests/ejb30/bb/session/stateful/timeout = ejblitejsp -com/sun/ts/tests/ejb30/bb/session/stateful/concurrency = ejbliteservlet ejbliteservlet2 ejblitejsf ejblitejsp +com/sun/ts/tests/ejb30/bb/session/stateful/concurrency/accesstimeout/Client.java = ejbliteservlet ejbliteservlet2 ejblitejsp +com/sun/ts/tests/ejb30/bb/session/stateful/concurrency/accesstimeout/JsfClient.java = ejblitejsf +com/sun/ts/tests/ejb30/bb/session/stateful/concurrency/metadata/Client.java = ejbliteservlet ejbliteservlet2 ejblitejsp +com/sun/ts/tests/ejb30/bb/session/stateful/concurrency/metadata/JsfClient.java = ejblitejsf com/sun/ts/tests/ejb32/lite = ejbliteservlet ejbliteservlet2 ejblitejsf ejblitejsp ejbembed com/sun/ts/tests/ejb32/lite/timer/basic/concurrency/Client.java = ejbliteservlet ejbliteservlet2 ejblitejsp ejbembed diff --git a/src/com/sun/ts/tests/ejb30/bb/session/stateful/concurrency/accesstimeout/annotated/JsfClient.java b/src/com/sun/ts/tests/ejb30/bb/session/stateful/concurrency/accesstimeout/annotated/JsfClient.java new file mode 100644 index 0000000000..187e005621 --- /dev/null +++ b/src/com/sun/ts/tests/ejb30/bb/session/stateful/concurrency/accesstimeout/annotated/JsfClient.java @@ -0,0 +1,169 @@ +/* + * Copyright (c) 2022 Oracle and/or its affiliates. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v. 2.0, which is available at + * http://www.eclipse.org/legal/epl-2.0. + * + * This Source Code may also be made available under the following Secondary + * Licenses when the conditions for such availability set forth in the + * Eclipse Public License v. 2.0 are satisfied: GNU General Public License, + * version 2 with the GNU Classpath Exception, which is available at + * https://www.gnu.org/software/classpath/license.html. + * + * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 + */ + +package com.sun.ts.tests.ejb30.bb.session.stateful.concurrency.accesstimeout.annotated; + +import static com.sun.ts.tests.ejb30.lite.stateful.concurrency.common.StatefulConcurrencyIF.CONCURRENT_INVOCATION_TIMES; + +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.ExecutionException; +import java.util.concurrent.Future; + +import com.sun.ts.tests.ejb30.lite.stateful.concurrency.accesstimeout.common.AccessTimeoutIF; +import com.sun.ts.tests.ejb30.lite.stateful.concurrency.accesstimeout.common.JsfClientBase; + +import jakarta.ejb.ConcurrentAccessException; +import jakarta.ejb.ConcurrentAccessTimeoutException; +import jakarta.ejb.EJB; +import jakarta.ejb.EJBs; + +@EJBs({ + @EJB(name = AccessTimeoutIF.beanClassMethodLevelOverrideAccessTimeoutBeanRemote, beanName = "BeanClassMethodLevelOverrideAccessTimeoutBean", beanInterface = AccessTimeoutRemoteIF.class), + @EJB(name = AccessTimeoutIF.beanClassMethodLevelAccessTimeoutBeanRemote, beanName = "BeanClassMethodLevelAccessTimeoutBean", beanInterface = AccessTimeoutRemoteIF.class), + @EJB(name = AccessTimeoutIF.beanClassLevelAccessTimeoutBeanRemote, beanName = "BeanClassLevelAccessTimeoutBean", beanInterface = AccessTimeoutRemoteIF.class), + @EJB(name = AccessTimeoutIF.annotatedSuperClassAccessTimeoutBeanRemote, beanName = "AnnotatedSuperClassAccessTimeoutBean", beanInterface = AccessTimeoutRemoteIF.class) + +}) +@jakarta.inject.Named("client") +@jakarta.enterprise.context.RequestScoped +public class JsfClient extends JsfClientBase { + protected List concurrentPing(AccessTimeoutIF b, String m) + throws InterruptedException { + List> futureList = new ArrayList>(); + List exceptionList = new ArrayList(); + for (int i = 0; i < CONCURRENT_INVOCATION_TIMES; i++) { + Future f = null; + + if (m.equals("beanClassLevel")) { + f = b.beanClassLevel(); + } else if (m.equals("beanClassLevel2")) { + f = b.beanClassLevel2(); + } else if (m.equals("beanSuperClassLevel")) { + f = b.beanSuperClassLevel(); + } else if (m.equals("beanSuperClassMethodLevel")) { + f = b.beanSuperClassMethodLevel(); + } else if (m.equals("beanSuperClassMethodLevelOverride")) { + f = b.beanSuperClassMethodLevelOverride(); + } else if (m.equals("beanClassMethodLevel")) { + f = b.beanClassMethodLevel(); + } else if (m.equals("beanClassMethodLevelOverride")) { + f = b.beanClassMethodLevelOverride(); + } else { + throw new RuntimeException("Bad method name: " + m); + } + + futureList.add(f); + } + for (Future f : futureList) { + ConcurrentAccessException e = null; + try { + f.get(); + } catch (ExecutionException ee) { + e = (ConcurrentAccessTimeoutException) ee.getCause(); + } + exceptionList.add(e); + } + return exceptionList; + } + + /* + * @testName: beanClassLevel + * + * @test_Strategy: + */ + @Override + public void beanClassLevel() throws InterruptedException { + List exceptionList = concurrentPing( + getBeanClassLevelAccessTimeoutBeanRemote(), getTestName()); + checkConcurrentAccessTimeoutResult(exceptionList, 1, 1); + } + + /* + * @testName: beanClassLevel2 + * + * @test_Strategy: + */ + @Override + public void beanClassLevel2() throws InterruptedException { + List exceptionList = concurrentPing( + getBeanClassLevelAccessTimeoutBeanRemote(), getTestName()); + checkConcurrentAccessTimeoutResult(exceptionList, 1, 1); + } + + /* + * @testName: beanSuperClassLevel + * + * @test_Strategy: + */ + @Override + public void beanSuperClassLevel() throws InterruptedException { + List exceptionList = concurrentPing( + getAnnotatedSuperClassAccessTimeoutBeanRemote(), getTestName()); + checkConcurrentAccessTimeoutResult(exceptionList, 1, 1); + } + + /* + * @testName: beanSuperClassMethodLevel + * + * @test_Strategy: + */ + @Override + public void beanSuperClassMethodLevel() throws InterruptedException { + List exceptionList = concurrentPing( + getAnnotatedSuperClassAccessTimeoutBeanRemote(), getTestName()); + checkConcurrentAccessTimeoutResult(exceptionList, 1, 1); + } + + /* + * @testName: beanSuperClassMethodLevelOverride + * + * @test_Strategy: + */ + @Override + public void beanSuperClassMethodLevelOverride() throws InterruptedException { + List exceptionList = concurrentPing( + getAnnotatedSuperClassAccessTimeoutBeanRemote(), getTestName()); + checkConcurrentAccessTimeoutResult(exceptionList, + CONCURRENT_INVOCATION_TIMES, 0); + } + + /* + * @testName: beanClassMethodLevel + * + * @test_Strategy: + */ + @Override + public void beanClassMethodLevel() throws InterruptedException { + List exceptionList = concurrentPing( + getBeanClassMethodLevelAccessTimeoutBeanRemote(), getTestName()); + checkConcurrentAccessTimeoutResult(exceptionList, 1, 1); + } + + /* + * @testName: beanClassMethodLevelOverride + * + * @test_Strategy: + */ + @Override + public void beanClassMethodLevelOverride() throws InterruptedException { + List exceptionList = concurrentPing( + getBeanClassMethodLevelOverrideAccessTimeoutBeanRemote(), + getTestName()); + checkConcurrentAccessTimeoutResult(exceptionList, + CONCURRENT_INVOCATION_TIMES, 0); + } +} diff --git a/src/com/sun/ts/tests/ejb30/bb/session/stateful/concurrency/accesstimeout/annotated/build.xml b/src/com/sun/ts/tests/ejb30/bb/session/stateful/concurrency/accesstimeout/annotated/build.xml index 874de02aa6..c2f5826e30 100644 --- a/src/com/sun/ts/tests/ejb30/bb/session/stateful/concurrency/accesstimeout/annotated/build.xml +++ b/src/com/sun/ts/tests/ejb30/bb/session/stateful/concurrency/accesstimeout/annotated/build.xml @@ -1,7 +1,7 @@