You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by an...@apache.org on 2015/12/04 17:15:36 UTC
[32/39] tomee git commit: EOL
http://git-wip-us.apache.org/repos/asf/tomee/blob/52567075/container/openejb-core/src/test/java/org/apache/openejb/PersistenceUnitLinkResolverTest.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/PersistenceUnitLinkResolverTest.java b/container/openejb-core/src/test/java/org/apache/openejb/PersistenceUnitLinkResolverTest.java
index 57ecf5f..4f6b5a2 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/PersistenceUnitLinkResolverTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/PersistenceUnitLinkResolverTest.java
@@ -1,44 +1,44 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.openejb;
-
-import org.apache.openejb.config.AppModule;
-import org.apache.openejb.config.PersistenceUnitLinkResolver;
-import org.apache.openejb.jee.Application;
-import org.apache.openejb.jee.jpa.unit.PersistenceUnit;
-import org.apache.openejb.loader.Files;
-import org.junit.Test;
-
-import java.io.File;
-import java.net.URI;
-
-import static org.junit.Assert.assertNull;
-
-public class PersistenceUnitLinkResolverTest {
- @Test
- public void resolve() {
- final AppModule appModule = new AppModule(Thread.currentThread().getContextClassLoader(), "target/classes/foo", new Application(), false);
-
- Files.mkdir(new File("target/classes/foo/bar"));
-
- final PersistenceUnitLinkResolver resolver = new PersistenceUnitLinkResolver(appModule);
- resolver.add(URI.create("file:/fake/1"), "foo", new PersistenceUnit());
- resolver.add(URI.create("file:/fake/2"), "foo", new PersistenceUnit());
-
- assertNull(resolver.resolveLink("foo", URI.create("bar"))); // can't resolve but doesn't fail
- }
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openejb;
+
+import org.apache.openejb.config.AppModule;
+import org.apache.openejb.config.PersistenceUnitLinkResolver;
+import org.apache.openejb.jee.Application;
+import org.apache.openejb.jee.jpa.unit.PersistenceUnit;
+import org.apache.openejb.loader.Files;
+import org.junit.Test;
+
+import java.io.File;
+import java.net.URI;
+
+import static org.junit.Assert.assertNull;
+
+public class PersistenceUnitLinkResolverTest {
+ @Test
+ public void resolve() {
+ final AppModule appModule = new AppModule(Thread.currentThread().getContextClassLoader(), "target/classes/foo", new Application(), false);
+
+ Files.mkdir(new File("target/classes/foo/bar"));
+
+ final PersistenceUnitLinkResolver resolver = new PersistenceUnitLinkResolver(appModule);
+ resolver.add(URI.create("file:/fake/1"), "foo", new PersistenceUnit());
+ resolver.add(URI.create("file:/fake/2"), "foo", new PersistenceUnit());
+
+ assertNull(resolver.resolveLink("foo", URI.create("bar"))); // can't resolve but doesn't fail
+ }
+}
http://git-wip-us.apache.org/repos/asf/tomee/blob/52567075/container/openejb-core/src/test/java/org/apache/openejb/activemq/KahaDBSupportTest.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/activemq/KahaDBSupportTest.java b/container/openejb-core/src/test/java/org/apache/openejb/activemq/KahaDBSupportTest.java
index 5bc6b58..5664afb 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/activemq/KahaDBSupportTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/activemq/KahaDBSupportTest.java
@@ -1,44 +1,44 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.openejb.activemq;
-
-import org.apache.activemq.broker.BrokerFactory;
-import org.apache.activemq.broker.BrokerService;
-import org.apache.activemq.store.kahadb.KahaDBPersistenceAdapter;
-import org.apache.openejb.util.NetworkUtil;
-import org.junit.Test;
-
-import java.io.File;
-import java.net.URI;
-
-import static org.hamcrest.CoreMatchers.instanceOf;
-import static org.hamcrest.MatcherAssert.assertThat;
-import static org.junit.Assert.assertEquals;
-
-public class KahaDBSupportTest {
- @Test
- public void create() throws Exception {
- final BrokerService broker = BrokerFactory.createBroker(new URI("openejb:broker:(tcp://localhost:" + NetworkUtil.getNextAvailablePort() + ")?usekahadb=true&kahadb.directory=target/kahatest"));
- try {
- assertThat(broker.getPersistenceAdapter(), instanceOf(KahaDBPersistenceAdapter.class));
- final KahaDBPersistenceAdapter adapter = KahaDBPersistenceAdapter.class.cast(broker.getPersistenceAdapter());
- assertEquals(new File("target/kahatest"), adapter.getDirectory());
- } finally {
- broker.stop();
- }
- }
-}
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openejb.activemq;
+
+import org.apache.activemq.broker.BrokerFactory;
+import org.apache.activemq.broker.BrokerService;
+import org.apache.activemq.store.kahadb.KahaDBPersistenceAdapter;
+import org.apache.openejb.util.NetworkUtil;
+import org.junit.Test;
+
+import java.io.File;
+import java.net.URI;
+
+import static org.hamcrest.CoreMatchers.instanceOf;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertEquals;
+
+public class KahaDBSupportTest {
+ @Test
+ public void create() throws Exception {
+ final BrokerService broker = BrokerFactory.createBroker(new URI("openejb:broker:(tcp://localhost:" + NetworkUtil.getNextAvailablePort() + ")?usekahadb=true&kahadb.directory=target/kahatest"));
+ try {
+ assertThat(broker.getPersistenceAdapter(), instanceOf(KahaDBPersistenceAdapter.class));
+ final KahaDBPersistenceAdapter adapter = KahaDBPersistenceAdapter.class.cast(broker.getPersistenceAdapter());
+ assertEquals(new File("target/kahatest"), adapter.getDirectory());
+ } finally {
+ broker.stop();
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/tomee/blob/52567075/container/openejb-core/src/test/java/org/apache/openejb/assembler/DeployerEjbTest.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/assembler/DeployerEjbTest.java b/container/openejb-core/src/test/java/org/apache/openejb/assembler/DeployerEjbTest.java
index 6078958..65f8493 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/assembler/DeployerEjbTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/assembler/DeployerEjbTest.java
@@ -1,284 +1,284 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.openejb.assembler;
-
-import org.apache.openejb.OpenEJB;
-import org.apache.openejb.OpenEJBException;
-import org.apache.openejb.assembler.classic.AppInfo;
-import org.apache.openejb.jee.WebApp;
-import org.apache.openejb.junit.ApplicationComposer;
-import org.apache.openejb.loader.FileUtils;
-import org.apache.openejb.loader.Files;
-import org.apache.openejb.loader.SystemInstance;
-import org.apache.openejb.testing.AppResource;
-import org.apache.openejb.testing.Classes;
-import org.apache.openejb.testing.Module;
-import org.apache.openejb.util.WebArchives;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import javax.naming.Context;
-import javax.naming.NamingException;
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Properties;
-import java.util.concurrent.atomic.AtomicReference;
-
-@RunWith(ApplicationComposer.class)
-public class DeployerEjbTest {
-
- private static final AtomicReference<String> property = new AtomicReference<String>(null);
- private static final AtomicReference<File> warArchive = new AtomicReference<File>(null);
- private static final String OPENEJB_DEPLOYER_SAVE_DEPLOYMENTS = "openejb.deployer.save-deployments";
-
- @BeforeClass
- public static void beforeClass() throws Exception {
-
- final FileUtils base = SystemInstance.get().getBase();
- final File conf = base.getDirectory("conf", false);
- Files.delete(conf);
-
- final File apps = base.getDirectory("apps", true);
- Files.delete(apps);
-
- base.getDirectory("apps", true);
- base.getDirectory("conf", true);
-
- property.set(System.getProperty(OPENEJB_DEPLOYER_SAVE_DEPLOYMENTS));
- System.setProperty(OPENEJB_DEPLOYER_SAVE_DEPLOYMENTS, Boolean.TRUE.toString());
- warArchive.set(WebArchives.warArchive(TestClass.class));
- }
-
- @AfterClass
- public static void afterClass() {
-
- final String s = property.get();
- if (null != s) {
- System.setProperty(OPENEJB_DEPLOYER_SAVE_DEPLOYMENTS, "true");
- } else {
- System.clearProperty(OPENEJB_DEPLOYER_SAVE_DEPLOYMENTS);
- }
-
- final File file = warArchive.get();
- if (file != null && file.exists()) {
- if (!file.delete()) {
- file.deleteOnExit();
- }
- }
-
-
- final FileUtils base = SystemInstance.get().getBase();
- if (null != base) {
- try {
- Files.delete(base.getDirectory("apps", false));
- } catch (final Exception e) {
- //Ignore
- }
- try {
- Files.delete(base.getDirectory("conf", false));
- } catch (final Exception e) {
- //Ignore
- }
- }
-
- }
-
- @Module
- @Classes(value = {DeployerEjb.class})
- public WebApp war() {
- return new WebApp().contextRoot("/initial");
- }
-
- @AppResource
- private Context context;
-
- @Before
- public void before() throws Exception {
- final File deployments = new File(SystemInstance.get().getBase().getDirectory("conf", false), "deployments.xml");
- if (deployments.exists()) {
- Files.delete(deployments);
- }
- System.setProperty(OPENEJB_DEPLOYER_SAVE_DEPLOYMENTS, Boolean.TRUE.toString());
- }
-
- @After
- public void after() throws Exception {
- System.setProperty(OPENEJB_DEPLOYER_SAVE_DEPLOYMENTS, Boolean.FALSE.toString());
- OpenEJB.destroy();
- }
-
- private Deployer getDeployer() throws NamingException {
- return (Deployer) context.lookup("openejb/DeployerRemote");
- }
-
- @Test
- public void testGetUniqueFile() throws Exception {
-
- final String uniqueFile = getDeployer().getUniqueFile();
- Assert.assertTrue(new File(uniqueFile).exists());
- }
-
- @Test
- public void testGetDeployedApps() throws Exception {
- getAppInfos();
- }
-
- private Collection<AppInfo> getAppInfos() throws Exception {
- final Deployer deployer = getDeployer();
- Collection<AppInfo> deployedApps = deployer.getDeployedApps();
-
- if (null == deployedApps) {
- deployedApps = new ArrayList<AppInfo>();
- }
-
- if (deployedApps.size() < 1) {
- getAppInfo();
- deployedApps.addAll(deployer.getDeployedApps());
- }
-
- Assert.assertTrue("Found no deployed apps", deployedApps.size() > 0);
- return deployedApps;
- }
-
- @Test
- public void testDeployWarSave() throws Exception {
-
- final Collection<AppInfo> deployedApps = getDeployer().getDeployedApps();
- Assert.assertTrue("Found more than one app", deployedApps.size() < 2);
-
- final File deployments = new File(SystemInstance.get().getBase().getDirectory("conf", false), "deployments.xml");
- Assert.assertFalse("Found existing: " + deployments.getAbsolutePath(), deployments.exists());
-
- getAppInfo();
-
- Assert.assertTrue("Failed to find: " + deployments.getAbsolutePath(), deployments.exists());
- }
-
- private AppInfo getAppInfo() throws IOException, NamingException, OpenEJBException {
- return getAppInfo(null);
- }
-
- private AppInfo getAppInfo(final Properties p) throws IOException, NamingException, OpenEJBException {
-
- final Deployer deployer = getDeployer();
-
- final File war = warArchive.get();
- if (!war.exists()) {
- Assert.fail("War file does not exist: " + war.getAbsolutePath());
- }
-
- return (null != p ? deployer.deploy(war.getAbsolutePath(), p) : deployer.deploy(war.getAbsolutePath()));
- }
-
- @Test
- public void testDeployWarNoSave() throws Exception {
- final Collection<AppInfo> deployedApps = getDeployer().getDeployedApps();
- Assert.assertTrue("Found more than one app", deployedApps.size() < 2);
-
- final File deployments = new File(SystemInstance.get().getBase().getDirectory("conf", false), "deployments.xml");
- if (deployments.exists()) {
- Files.delete(deployments);
- }
-
- Assert.assertFalse("Found existing: " + deployments.getAbsolutePath(), deployments.exists());
-
- final Properties p = new Properties();
- p.setProperty(OPENEJB_DEPLOYER_SAVE_DEPLOYMENTS, Boolean.FALSE.toString());
- getAppInfo(p);
-
- Assert.assertFalse("Found existing: " + deployments.getAbsolutePath(), deployments.exists());
- }
-
- @Test
- public void testDeployProperties() throws Exception {
- final Properties p = new Properties();
- final String path = warArchive.get().getAbsolutePath();
-
- p.setProperty(Deployer.FILENAME, path);
- p.setProperty(OPENEJB_DEPLOYER_SAVE_DEPLOYMENTS, Boolean.FALSE.toString());
-
- final Deployer deployer = getDeployer();
- final AppInfo appInfo = deployer.deploy(p);
- Assert.assertTrue("Paths do not match: " + path + " - " + appInfo.path, path.equals(appInfo.path));
- }
-
- @Test
- public void testUndeploy() throws Exception {
- final AppInfo appInfo = getDeployedApp();
-
- Assert.assertNotNull("Failed to deploy app", appInfo);
-
- final Deployer deployer = getDeployer();
- deployer.undeploy(appInfo.path);
-
- final Collection<AppInfo> appInfos = getAppInfos();
- Assert.assertTrue("Failed to undeploy app", appInfos.size() < 2);
- }
-
- private AppInfo getDeployedApp() throws Exception {
- final Collection<AppInfo> appInfos = getAppInfos();
-
- AppInfo appInfo = null;
- final File file = warArchive.get();
-
- if (appInfos.size() < 2) {
- appInfo = getAppInfo();
- } else {
-
- final String name = file.getName().toLowerCase();
-
- for (final AppInfo info : appInfos) {
- if (name.contains(info.appId.toLowerCase())) {
- appInfo = info;
- }
- }
- }
- return appInfo;
- }
-
- @Test
- public void testReload() throws Exception {
-
- final AppInfo appInfo = getDeployedApp();
-
- final Deployer deployer = getDeployer();
- deployer.reload(appInfo.path);
-
- final Collection<AppInfo> deployedApps = deployer.getDeployedApps();
- boolean found = false;
- for (final AppInfo app : deployedApps) {
- if (app.path.equals(appInfo.path)) {
- found = true;
- }
- }
-
- Assert.assertTrue("Failed to find app after redeploy", found);
- }
-
- public static class TestClass {
- public TestClass() {
- }
- }
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.openejb.assembler;
+
+import org.apache.openejb.OpenEJB;
+import org.apache.openejb.OpenEJBException;
+import org.apache.openejb.assembler.classic.AppInfo;
+import org.apache.openejb.jee.WebApp;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.loader.FileUtils;
+import org.apache.openejb.loader.Files;
+import org.apache.openejb.loader.SystemInstance;
+import org.apache.openejb.testing.AppResource;
+import org.apache.openejb.testing.Classes;
+import org.apache.openejb.testing.Module;
+import org.apache.openejb.util.WebArchives;
+import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import javax.naming.Context;
+import javax.naming.NamingException;
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Properties;
+import java.util.concurrent.atomic.AtomicReference;
+
+@RunWith(ApplicationComposer.class)
+public class DeployerEjbTest {
+
+ private static final AtomicReference<String> property = new AtomicReference<String>(null);
+ private static final AtomicReference<File> warArchive = new AtomicReference<File>(null);
+ private static final String OPENEJB_DEPLOYER_SAVE_DEPLOYMENTS = "openejb.deployer.save-deployments";
+
+ @BeforeClass
+ public static void beforeClass() throws Exception {
+
+ final FileUtils base = SystemInstance.get().getBase();
+ final File conf = base.getDirectory("conf", false);
+ Files.delete(conf);
+
+ final File apps = base.getDirectory("apps", true);
+ Files.delete(apps);
+
+ base.getDirectory("apps", true);
+ base.getDirectory("conf", true);
+
+ property.set(System.getProperty(OPENEJB_DEPLOYER_SAVE_DEPLOYMENTS));
+ System.setProperty(OPENEJB_DEPLOYER_SAVE_DEPLOYMENTS, Boolean.TRUE.toString());
+ warArchive.set(WebArchives.warArchive(TestClass.class));
+ }
+
+ @AfterClass
+ public static void afterClass() {
+
+ final String s = property.get();
+ if (null != s) {
+ System.setProperty(OPENEJB_DEPLOYER_SAVE_DEPLOYMENTS, "true");
+ } else {
+ System.clearProperty(OPENEJB_DEPLOYER_SAVE_DEPLOYMENTS);
+ }
+
+ final File file = warArchive.get();
+ if (file != null && file.exists()) {
+ if (!file.delete()) {
+ file.deleteOnExit();
+ }
+ }
+
+
+ final FileUtils base = SystemInstance.get().getBase();
+ if (null != base) {
+ try {
+ Files.delete(base.getDirectory("apps", false));
+ } catch (final Exception e) {
+ //Ignore
+ }
+ try {
+ Files.delete(base.getDirectory("conf", false));
+ } catch (final Exception e) {
+ //Ignore
+ }
+ }
+
+ }
+
+ @Module
+ @Classes(value = {DeployerEjb.class})
+ public WebApp war() {
+ return new WebApp().contextRoot("/initial");
+ }
+
+ @AppResource
+ private Context context;
+
+ @Before
+ public void before() throws Exception {
+ final File deployments = new File(SystemInstance.get().getBase().getDirectory("conf", false), "deployments.xml");
+ if (deployments.exists()) {
+ Files.delete(deployments);
+ }
+ System.setProperty(OPENEJB_DEPLOYER_SAVE_DEPLOYMENTS, Boolean.TRUE.toString());
+ }
+
+ @After
+ public void after() throws Exception {
+ System.setProperty(OPENEJB_DEPLOYER_SAVE_DEPLOYMENTS, Boolean.FALSE.toString());
+ OpenEJB.destroy();
+ }
+
+ private Deployer getDeployer() throws NamingException {
+ return (Deployer) context.lookup("openejb/DeployerRemote");
+ }
+
+ @Test
+ public void testGetUniqueFile() throws Exception {
+
+ final String uniqueFile = getDeployer().getUniqueFile();
+ Assert.assertTrue(new File(uniqueFile).exists());
+ }
+
+ @Test
+ public void testGetDeployedApps() throws Exception {
+ getAppInfos();
+ }
+
+ private Collection<AppInfo> getAppInfos() throws Exception {
+ final Deployer deployer = getDeployer();
+ Collection<AppInfo> deployedApps = deployer.getDeployedApps();
+
+ if (null == deployedApps) {
+ deployedApps = new ArrayList<AppInfo>();
+ }
+
+ if (deployedApps.size() < 1) {
+ getAppInfo();
+ deployedApps.addAll(deployer.getDeployedApps());
+ }
+
+ Assert.assertTrue("Found no deployed apps", deployedApps.size() > 0);
+ return deployedApps;
+ }
+
+ @Test
+ public void testDeployWarSave() throws Exception {
+
+ final Collection<AppInfo> deployedApps = getDeployer().getDeployedApps();
+ Assert.assertTrue("Found more than one app", deployedApps.size() < 2);
+
+ final File deployments = new File(SystemInstance.get().getBase().getDirectory("conf", false), "deployments.xml");
+ Assert.assertFalse("Found existing: " + deployments.getAbsolutePath(), deployments.exists());
+
+ getAppInfo();
+
+ Assert.assertTrue("Failed to find: " + deployments.getAbsolutePath(), deployments.exists());
+ }
+
+ private AppInfo getAppInfo() throws IOException, NamingException, OpenEJBException {
+ return getAppInfo(null);
+ }
+
+ private AppInfo getAppInfo(final Properties p) throws IOException, NamingException, OpenEJBException {
+
+ final Deployer deployer = getDeployer();
+
+ final File war = warArchive.get();
+ if (!war.exists()) {
+ Assert.fail("War file does not exist: " + war.getAbsolutePath());
+ }
+
+ return (null != p ? deployer.deploy(war.getAbsolutePath(), p) : deployer.deploy(war.getAbsolutePath()));
+ }
+
+ @Test
+ public void testDeployWarNoSave() throws Exception {
+ final Collection<AppInfo> deployedApps = getDeployer().getDeployedApps();
+ Assert.assertTrue("Found more than one app", deployedApps.size() < 2);
+
+ final File deployments = new File(SystemInstance.get().getBase().getDirectory("conf", false), "deployments.xml");
+ if (deployments.exists()) {
+ Files.delete(deployments);
+ }
+
+ Assert.assertFalse("Found existing: " + deployments.getAbsolutePath(), deployments.exists());
+
+ final Properties p = new Properties();
+ p.setProperty(OPENEJB_DEPLOYER_SAVE_DEPLOYMENTS, Boolean.FALSE.toString());
+ getAppInfo(p);
+
+ Assert.assertFalse("Found existing: " + deployments.getAbsolutePath(), deployments.exists());
+ }
+
+ @Test
+ public void testDeployProperties() throws Exception {
+ final Properties p = new Properties();
+ final String path = warArchive.get().getAbsolutePath();
+
+ p.setProperty(Deployer.FILENAME, path);
+ p.setProperty(OPENEJB_DEPLOYER_SAVE_DEPLOYMENTS, Boolean.FALSE.toString());
+
+ final Deployer deployer = getDeployer();
+ final AppInfo appInfo = deployer.deploy(p);
+ Assert.assertTrue("Paths do not match: " + path + " - " + appInfo.path, path.equals(appInfo.path));
+ }
+
+ @Test
+ public void testUndeploy() throws Exception {
+ final AppInfo appInfo = getDeployedApp();
+
+ Assert.assertNotNull("Failed to deploy app", appInfo);
+
+ final Deployer deployer = getDeployer();
+ deployer.undeploy(appInfo.path);
+
+ final Collection<AppInfo> appInfos = getAppInfos();
+ Assert.assertTrue("Failed to undeploy app", appInfos.size() < 2);
+ }
+
+ private AppInfo getDeployedApp() throws Exception {
+ final Collection<AppInfo> appInfos = getAppInfos();
+
+ AppInfo appInfo = null;
+ final File file = warArchive.get();
+
+ if (appInfos.size() < 2) {
+ appInfo = getAppInfo();
+ } else {
+
+ final String name = file.getName().toLowerCase();
+
+ for (final AppInfo info : appInfos) {
+ if (name.contains(info.appId.toLowerCase())) {
+ appInfo = info;
+ }
+ }
+ }
+ return appInfo;
+ }
+
+ @Test
+ public void testReload() throws Exception {
+
+ final AppInfo appInfo = getDeployedApp();
+
+ final Deployer deployer = getDeployer();
+ deployer.reload(appInfo.path);
+
+ final Collection<AppInfo> deployedApps = deployer.getDeployedApps();
+ boolean found = false;
+ for (final AppInfo app : deployedApps) {
+ if (app.path.equals(appInfo.path)) {
+ found = true;
+ }
+ }
+
+ Assert.assertTrue("Failed to find app after redeploy", found);
+ }
+
+ public static class TestClass {
+ public TestClass() {
+ }
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/tomee/blob/52567075/container/openejb-core/src/test/java/org/apache/openejb/bval/BeanValidationAppendixInterceptorTest.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/bval/BeanValidationAppendixInterceptorTest.java b/container/openejb-core/src/test/java/org/apache/openejb/bval/BeanValidationAppendixInterceptorTest.java
index daea0d6..b918f0a 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/bval/BeanValidationAppendixInterceptorTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/bval/BeanValidationAppendixInterceptorTest.java
@@ -1,204 +1,204 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.openejb.bval;
-
-import org.apache.openejb.BeanContext;
-import org.apache.openejb.jee.EjbJar;
-import org.apache.openejb.jee.Empty;
-import org.apache.openejb.jee.StatelessBean;
-import org.apache.openejb.junit.ApplicationComposer;
-import org.apache.openejb.testing.Configuration;
-import org.apache.openejb.testing.Module;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import javax.ejb.EJB;
-import javax.ejb.Local;
-import javax.ejb.LocalBean;
-import javax.ejb.Remote;
-import javax.ejb.Stateless;
-import javax.validation.ConstraintViolationException;
-import javax.validation.constraints.Min;
-import javax.validation.constraints.NotNull;
-import java.io.Serializable;
-import java.util.Properties;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-@RunWith(ApplicationComposer.class)
-public class BeanValidationAppendixInterceptorTest {
- @Local
- public static interface Manager {
- String drive(Person person, @Min(18) int age);
-
- Person create(@NotNull String name);
- }
-
- @Remote
- public static interface ManagerRemote {
- String drive(Person person, @Min(16) int age);
-
- Person create(String name);
- }
-
- public static class Person implements Serializable {
- public String name;
-
- public String getName() {
- return name;
- }
-
- public void setName(final String name) {
- this.name = name;
- }
- }
-
- @Stateless
- public static class ManagerBean implements Manager {
- public String drive(final Person person, final int age) {
- return "vroom";
- }
-
- public Person create(final String name) {
- final Person person = new Person();
- person.setName(name);
- return person;
- }
- }
-
- @Stateless
- public static class ManagerBean2 implements Manager, ManagerRemote {
- public String drive(final Person person, final int age) {
- return "vroom";
- }
-
- public Person create(final String name) {
- final Person person = new Person();
- person.setName(name);
- return person;
- }
- }
-
- @Stateless
- @LocalBean
- public static class ManagerLocalBean {
- public void foo(@NotNull final String bar) {
- // no-op
- }
- }
-
- @Test
- public void valid() {
- final Person p = mgr.create("foo");
- mgr.drive(p, 18);
- }
-
- @Test
- public void notValid() {
- Person p = null;
- try {
- p = mgr.create(null);
- fail();
- } catch (final Exception e) {
- assertTrue(e.getCause() instanceof ConstraintViolationException);
- final ConstraintViolationException cvs = (ConstraintViolationException) e.getCause();
- assertEquals(1, cvs.getConstraintViolations().size());
- }
- try {
- mgr.drive(p, 17);
- fail();
- } catch (final Exception e) {
- assertTrue(e.getCause() instanceof ConstraintViolationException);
- final ConstraintViolationException cvs = (ConstraintViolationException) e.getCause();
- assertEquals(1, cvs.getConstraintViolations().size());
- }
- }
-
- @Test
- public void validRemote() {
- final Person p = mgrRemote.create(null);
- mgrRemote.drive(p, 26);
- mgrRemote.drive(p, 17);
- }
-
- @Test
- public void notValidRemote() {
- final Person p = mgrRemote.create("bar");
- try {
- mgrRemote.drive(p, 15);
- fail();
- } catch (final Exception e) {
- assertTrue(e.getCause() instanceof ConstraintViolationException);
- final ConstraintViolationException cvs = (ConstraintViolationException) e.getCause();
- assertEquals(1, cvs.getConstraintViolations().size());
- }
- }
-
- @Test
- public void localBean() {
- mgrLB.foo("ok");
- try {
- mgrLB.foo(null);
- fail();
- } catch (final Exception e) {
- assertTrue(e.getCause() instanceof ConstraintViolationException);
- final ConstraintViolationException cvs = (ConstraintViolationException) e.getCause();
- assertEquals(1, cvs.getConstraintViolations().size());
- }
- }
-
- @EJB
- private Manager mgr;
- @EJB
- private ManagerRemote mgrRemote;
- @EJB
- private ManagerLocalBean mgrLB;
-
- @Configuration
- public Properties config() {
- final Properties p = new Properties();
- p.put(BeanContext.USER_INTERCEPTOR_KEY, BeanValidationAppendixInterceptor.class.getName());
- return p;
- }
-
- @Module
- public EjbJar app() throws Exception {
- final EjbJar ejbJar = new EjbJar("bval-interceptor");
-
- final StatelessBean bean1 = new StatelessBean(ManagerBean.class);
- bean1.addBusinessLocal(Manager.class);
- bean1.setLocalBean(new Empty());
-
- final StatelessBean bean3 = new StatelessBean(ManagerBean2.class);
- bean3.addBusinessRemote(ManagerRemote.class);
- bean3.addBusinessLocal(Manager.class);
- bean3.setLocalBean(new Empty());
-
- final StatelessBean bean2 = new StatelessBean(ManagerLocalBean.class);
- bean2.setLocalBean(new Empty());
-
- ejbJar.addEnterpriseBean(bean1);
- ejbJar.addEnterpriseBean(bean2);
- ejbJar.addEnterpriseBean(bean3);
-
- return ejbJar;
- }
-
-}
-
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openejb.bval;
+
+import org.apache.openejb.BeanContext;
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.Empty;
+import org.apache.openejb.jee.StatelessBean;
+import org.apache.openejb.junit.ApplicationComposer;
+import org.apache.openejb.testing.Configuration;
+import org.apache.openejb.testing.Module;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import javax.ejb.EJB;
+import javax.ejb.Local;
+import javax.ejb.LocalBean;
+import javax.ejb.Remote;
+import javax.ejb.Stateless;
+import javax.validation.ConstraintViolationException;
+import javax.validation.constraints.Min;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Properties;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+@RunWith(ApplicationComposer.class)
+public class BeanValidationAppendixInterceptorTest {
+ @Local
+ public static interface Manager {
+ String drive(Person person, @Min(18) int age);
+
+ Person create(@NotNull String name);
+ }
+
+ @Remote
+ public static interface ManagerRemote {
+ String drive(Person person, @Min(16) int age);
+
+ Person create(String name);
+ }
+
+ public static class Person implements Serializable {
+ public String name;
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(final String name) {
+ this.name = name;
+ }
+ }
+
+ @Stateless
+ public static class ManagerBean implements Manager {
+ public String drive(final Person person, final int age) {
+ return "vroom";
+ }
+
+ public Person create(final String name) {
+ final Person person = new Person();
+ person.setName(name);
+ return person;
+ }
+ }
+
+ @Stateless
+ public static class ManagerBean2 implements Manager, ManagerRemote {
+ public String drive(final Person person, final int age) {
+ return "vroom";
+ }
+
+ public Person create(final String name) {
+ final Person person = new Person();
+ person.setName(name);
+ return person;
+ }
+ }
+
+ @Stateless
+ @LocalBean
+ public static class ManagerLocalBean {
+ public void foo(@NotNull final String bar) {
+ // no-op
+ }
+ }
+
+ @Test
+ public void valid() {
+ final Person p = mgr.create("foo");
+ mgr.drive(p, 18);
+ }
+
+ @Test
+ public void notValid() {
+ Person p = null;
+ try {
+ p = mgr.create(null);
+ fail();
+ } catch (final Exception e) {
+ assertTrue(e.getCause() instanceof ConstraintViolationException);
+ final ConstraintViolationException cvs = (ConstraintViolationException) e.getCause();
+ assertEquals(1, cvs.getConstraintViolations().size());
+ }
+ try {
+ mgr.drive(p, 17);
+ fail();
+ } catch (final Exception e) {
+ assertTrue(e.getCause() instanceof ConstraintViolationException);
+ final ConstraintViolationException cvs = (ConstraintViolationException) e.getCause();
+ assertEquals(1, cvs.getConstraintViolations().size());
+ }
+ }
+
+ @Test
+ public void validRemote() {
+ final Person p = mgrRemote.create(null);
+ mgrRemote.drive(p, 26);
+ mgrRemote.drive(p, 17);
+ }
+
+ @Test
+ public void notValidRemote() {
+ final Person p = mgrRemote.create("bar");
+ try {
+ mgrRemote.drive(p, 15);
+ fail();
+ } catch (final Exception e) {
+ assertTrue(e.getCause() instanceof ConstraintViolationException);
+ final ConstraintViolationException cvs = (ConstraintViolationException) e.getCause();
+ assertEquals(1, cvs.getConstraintViolations().size());
+ }
+ }
+
+ @Test
+ public void localBean() {
+ mgrLB.foo("ok");
+ try {
+ mgrLB.foo(null);
+ fail();
+ } catch (final Exception e) {
+ assertTrue(e.getCause() instanceof ConstraintViolationException);
+ final ConstraintViolationException cvs = (ConstraintViolationException) e.getCause();
+ assertEquals(1, cvs.getConstraintViolations().size());
+ }
+ }
+
+ @EJB
+ private Manager mgr;
+ @EJB
+ private ManagerRemote mgrRemote;
+ @EJB
+ private ManagerLocalBean mgrLB;
+
+ @Configuration
+ public Properties config() {
+ final Properties p = new Properties();
+ p.put(BeanContext.USER_INTERCEPTOR_KEY, BeanValidationAppendixInterceptor.class.getName());
+ return p;
+ }
+
+ @Module
+ public EjbJar app() throws Exception {
+ final EjbJar ejbJar = new EjbJar("bval-interceptor");
+
+ final StatelessBean bean1 = new StatelessBean(ManagerBean.class);
+ bean1.addBusinessLocal(Manager.class);
+ bean1.setLocalBean(new Empty());
+
+ final StatelessBean bean3 = new StatelessBean(ManagerBean2.class);
+ bean3.addBusinessRemote(ManagerRemote.class);
+ bean3.addBusinessLocal(Manager.class);
+ bean3.setLocalBean(new Empty());
+
+ final StatelessBean bean2 = new StatelessBean(ManagerLocalBean.class);
+ bean2.setLocalBean(new Empty());
+
+ ejbJar.addEnterpriseBean(bean1);
+ ejbJar.addEnterpriseBean(bean2);
+ ejbJar.addEnterpriseBean(bean3);
+
+ return ejbJar;
+ }
+
+}
+
http://git-wip-us.apache.org/repos/asf/tomee/blob/52567075/container/openejb-core/src/test/java/org/apache/openejb/config/AnnotationDeployerTest.java
----------------------------------------------------------------------
diff --git a/container/openejb-core/src/test/java/org/apache/openejb/config/AnnotationDeployerTest.java b/container/openejb-core/src/test/java/org/apache/openejb/config/AnnotationDeployerTest.java
index 9626ad9..3b0a075 100644
--- a/container/openejb-core/src/test/java/org/apache/openejb/config/AnnotationDeployerTest.java
+++ b/container/openejb-core/src/test/java/org/apache/openejb/config/AnnotationDeployerTest.java
@@ -1,550 +1,550 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.openejb.config;
-
-import org.apache.openejb.OpenEJB;
-import org.apache.openejb.assembler.classic.AppInfo;
-import org.apache.openejb.assembler.classic.Assembler;
-import org.apache.openejb.assembler.classic.ClientInfo;
-import org.apache.openejb.jee.AssemblyDescriptor;
-import org.apache.openejb.jee.ConfigProperty;
-import org.apache.openejb.jee.Connector;
-import org.apache.openejb.jee.EjbJar;
-import org.apache.openejb.jee.EnterpriseBean;
-import org.apache.openejb.jee.SessionBean;
-import org.apache.openejb.jee.TransactionSupportType;
-import org.apache.openejb.jee.WebApp;
-import org.apache.xbean.finder.Annotated;
-import org.apache.xbean.finder.AnnotationFinder;
-import org.apache.xbean.finder.ClassFinder;
-import org.apache.xbean.finder.archive.ClassesArchive;
-import org.junit.AfterClass;
-import org.junit.Assert;
-import org.junit.Test;
-
-import javax.annotation.Resource;
-import javax.ejb.ApplicationException;
-import javax.ejb.Local;
-import javax.ejb.LocalBean;
-import javax.ejb.Stateless;
-import javax.naming.NamingException;
-import javax.naming.Reference;
-import javax.resource.Referenceable;
-import javax.resource.ResourceException;
-import javax.resource.cci.MessageListener;
-import javax.resource.cci.Record;
-import javax.resource.spi.Activation;
-import javax.resource.spi.ActivationSpec;
-import javax.resource.spi.AdministeredObject;
-import javax.resource.spi.AuthenticationMechanism;
-import javax.resource.spi.AuthenticationMechanism.CredentialInterface;
-import javax.resource.spi.BootstrapContext;
-import javax.resource.spi.ConnectionDefinition;
-import javax.resource.spi.ConnectionManager;
-import javax.resource.spi.ConnectionRequestInfo;
-import javax.resource.spi.InvalidPropertyException;
-import javax.resource.spi.ManagedConnection;
-import javax.resource.spi.ManagedConnectionFactory;
-import javax.resource.spi.ResourceAdapter;
-import javax.resource.spi.ResourceAdapterInternalException;
-import javax.resource.spi.SecurityPermission;
-import javax.resource.spi.TransactionSupport.TransactionSupportLevel;
-import javax.resource.spi.endpoint.MessageEndpointFactory;
-import javax.resource.spi.work.WorkContext;
-import javax.security.auth.Subject;
-import javax.transaction.xa.XAResource;
-import javax.ws.rs.ApplicationPath;
-import javax.ws.rs.Path;
-import javax.ws.rs.core.Application;
-import java.io.PrintWriter;
-import java.io.Serializable;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import static org.hamcrest.CoreMatchers.is;
-import static org.hamcrest.CoreMatchers.notNullValue;
-import static org.hamcrest.CoreMatchers.nullValue;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertThat;
-import static org.junit.Assert.assertTrue;
-
-/**
- * @version $Rev$ $Date$
- */
-public class AnnotationDeployerTest {
-
- @AfterClass
- public static void afterClass() throws Exception {
- OpenEJB.destroy();
- }
-
- @Test
- /**
- * For http://issues.apache.org/jira/browse/OPENEJB-980
- */
- public void applicationExceptionInheritanceTest() throws Exception {
- EjbModule ejbModule = testModule();
- final AnnotationDeployer.DiscoverAnnotatedBeans discvrAnnBeans = new AnnotationDeployer.DiscoverAnnotatedBeans();
- ejbModule = discvrAnnBeans.deploy(ejbModule);
-
- final AssemblyDescriptor assemblyDescriptor = ejbModule.getEjbJar().getAssemblyDescriptor();
- org.apache.openejb.jee.ApplicationException appEx =
- assemblyDescriptor.getApplicationException(BusinessException.class);
- assertThat(appEx, notNullValue());
- assertThat(appEx.getExceptionClass(), is(BusinessException.class.getName()));
- assertThat(appEx.isRollback(), is(true));
-
- //inheritance is now handled at runtime, only explicitly mentioned exceptions are in the assembly descriptor
- appEx = assemblyDescriptor.getApplicationException(ValueRequiredException.class);
- assertThat(appEx, nullValue());
- }
-
- private EjbModule testModule() {
- final EjbJar ejbJar = new EjbJar("test-classes");
- final EjbModule ejbModule = new EjbModule(ejbJar);
- ejbModule.setFinder(new ClassFinder(AnnotationDeployerTest.class,
- BusinessException.class,
- Exception.class,
- GenericInterface.class,
- InterceptedSLSBean.class,
- MyMainClass.class,
- TestLocalBean.class,
- ValueRequiredException.class
- ));
- return ejbModule;
- }
-
-
- @Test
- public void testSortClasses() throws Exception {
- final AnnotationFinder finder = new AnnotationFinder(new ClassesArchive(Emerald.class)).link();
-
- final List<Annotated<Class<?>>> classes = finder.findMetaAnnotatedClasses(Resource.class);
- assertTrue(classes.size() >= 3);
-
- final List<Annotated<Class<?>>> sorted = AnnotationDeployer.sortClasses(classes);
-
- assertTrue(sorted.size() >= 3);
-
- assertEquals(Emerald.class, sorted.get(0).get());
- assertEquals(Green.class, sorted.get(1).get());
- assertEquals(Color.class, sorted.get(2).get());
- }
-
- @Test
- public void testSortMethods() throws Exception {
- final AnnotationFinder finder = new AnnotationFinder(new ClassesArchive(Emerald.class)).link();
-
- final List<Annotated<Method>> classes = finder.findMetaAnnotatedMethods(Resource.class);
- assertTrue(classes.size() >= 3);
-
- final List<Annotated<Method>> sorted = AnnotationDeployer.sortMethods(classes);
-
- assertTrue(sorted.size() >= 3);
-
- assertEquals(Emerald.class, sorted.get(0).get().getDeclaringClass());
- assertEquals(Green.class, sorted.get(1).get().getDeclaringClass());
- assertEquals(Color.class, sorted.get(2).get().getDeclaringClass());
- }
-
- @Test
- /**
- * For https://issues.apache.org/jira/browse/OPENEJB-1063
- */
- public void badMainClassFormatTest() throws Exception {
- final ConfigurationFactory config = new ConfigurationFactory();
- final Assembler assembler = new Assembler();
-
- final AppModule app = new AppModule(this.getClass().getClassLoader(), "test-app");
-
- final ClientModule clientModule = new ClientModule(null, app.getClassLoader(), app.getJarLocation(), null, null);
-
- // change "." --> "/" to check that main class is changed by the AnnotationDeployer
- final String mainClass = MyMainClass.class.getName().replaceAll("\\.", "/");
- clientModule.setMainClass(mainClass);
-
- app.getClientModules().add(clientModule);
-
- final AppInfo appInfo = config.configureApplication(app);
-
- assembler.createApplication(appInfo);
-
- final ClientInfo clientInfo = appInfo.clients.get(0);
- Assert.assertNotNull(clientInfo);
- Assert.assertEquals(MyMainClass.class.getName(), clientInfo.mainClass);
- }
-
- /**
- * For https://issues.apache.org/jira/browse/OPENEJB-1128
- */
- @Test
- public void interceptingGenericBusinessMethodCalls() throws Exception {
- EjbModule ejbModule = testModule();
- final EjbJar ejbJar = ejbModule.getEjbJar();
-
- final AnnotationDeployer.DiscoverAnnotatedBeans discvrAnnBeans = new AnnotationDeployer.DiscoverAnnotatedBeans();
- ejbModule = discvrAnnBeans.deploy(ejbModule);
-
- final EnterpriseBean bean = ejbJar.getEnterpriseBean("InterceptedSLSBean");
- assert bean != null;
- }
-
- /**
- * For https://issues.apache.org/jira/browse/OPENEJB-1188
- *
- * @throws Exception
- */
- @Test
- public void testLocalBean() throws Exception {
- final EjbModule ejbModule = testModule();
- final EjbJar ejbJar = ejbModule.getEjbJar();
-
- AppModule appModule = new AppModule(Thread.currentThread().getContextClassLoader(), "myapp");
- appModule.getEjbModules().add(ejbModule);
-
- final AnnotationDeployer annotationDeployer = new AnnotationDeployer();
- appModule = annotationDeployer.deploy(appModule);
-
- EnterpriseBean bean = ejbJar.getEnterpriseBean("TestLocalBean");
- assert bean != null;
- assert (((SessionBean) bean).getLocalBean() != null);
-
- bean = ejbJar.getEnterpriseBean("InterceptedSLSBean");
- assert bean != null;
- assert (((SessionBean) bean).getLocalBean() == null);
- }
-
- @Test
- public void testResourceAdapter() throws Exception {
- final ConnectorModule connectorModule = testConnectorModule();
- final AnnotationDeployer.DiscoverAnnotatedBeans discvrAnnBeans = new AnnotationDeployer.DiscoverAnnotatedBeans();
- discvrAnnBeans.deploy(connectorModule);
-
- final Connector connector = connectorModule.getConnector();
- Assert.assertEquals("displayName", connector.getDisplayName());
- Assert.assertEquals("description", connector.getDescription());
- Assert.assertEquals("eisType", connector.getEisType());
- Assert.assertEquals("vendorName", connector.getVendorName());
- Assert.assertEquals("version", connector.getResourceAdapterVersion());
- Assert.assertEquals("smallIcon", connector.getIcon().getSmallIcon());
- Assert.assertEquals("largeIcon", connector.getIcon().getLargeIcon());
- Assert.assertEquals("licenseDescription", connector.getLicense().getDescription());
- Assert.assertEquals(true, connector.getLicense().isLicenseRequired());
-
- final List<org.apache.openejb.jee.SecurityPermission> securityPermission = connector.getResourceAdapter().getSecurityPermission();
- Assert.assertEquals("description", securityPermission.get(0).getDescription());
- Assert.assertEquals("permissionSpec", securityPermission.get(0).getSecurityPermissionSpec());
-
- final List<String> requiredWorkContext = connector.getRequiredWorkContext();
- Assert.assertEquals(TestWorkContext.class.getName(), requiredWorkContext.get(0));
-
- final List<org.apache.openejb.jee.AuthenticationMechanism> authenticationMechanism = connector.getResourceAdapter().getOutboundResourceAdapter().getAuthenticationMechanism();
- Assert.assertEquals("authMechanism", authenticationMechanism.get(0).getAuthenticationMechanismType());
- Assert.assertEquals(CredentialInterface.GenericCredential.toString(), authenticationMechanism.get(0).getCredentialInterface());
- Assert.assertEquals("description", authenticationMechanism.get(0).getDescription());
-
- Assert.assertEquals(TransactionSupportType.NO_TRANSACTION, connector.getResourceAdapter().getOutboundResourceAdapter().getTransactionSupport());
- Assert.assertEquals(true, connector.getResourceAdapter().getOutboundResourceAdapter().isReauthenticationSupport());
-
- Assert.assertEquals(Connection.class.getName(), connector.getResourceAdapter().getOutboundResourceAdapter().getConnectionDefinition().get(0).getConnectionInterface());
- Assert.assertEquals(ConnectionImpl.class.getName(), connector.getResourceAdapter().getOutboundResourceAdapter().getConnectionDefinition().get(0).getConnectionImplClass());
- Assert.assertEquals(ConnectionFactory.class.getName(), connector.getResourceAdapter().getOutboundResourceAdapter().getConnectionDefinition().get(0).getConnectionFactoryInterface());
- Assert.assertEquals(ConnectionFactoryImpl.class.getName(), connector.getResourceAdapter().getOutboundResourceAdapter().getConnectionDefinition().get(0).getConnectionFactoryImplClass());
-
- Assert.assertEquals(TestActivation.class.getName(), connector.getResourceAdapter().getInboundResourceAdapter().getMessageAdapter().getMessageListener().get(0).getActivationSpec().getActivationSpecClass());
- Assert.assertEquals(TestMessageListener.class.getName(), connector.getResourceAdapter().getInboundResourceAdapter().getMessageAdapter().getMessageListener().get(0).getMessageListenerType());
-
- Assert.assertEquals(TestAdminObject.class.getName(), connector.getResourceAdapter().getAdminObject().get(0).getAdminObjectClass());
- Assert.assertEquals(TestAdminObjectInterface.class.getName(), connector.getResourceAdapter().getAdminObject().get(0).getAdminObjectInterface());
- }
-
- private ConnectorModule testConnectorModule() {
- final Connector connector = new Connector();
- final ConnectorModule connectorModule = new ConnectorModule(connector);
- connectorModule.setFinder(new ClassFinder(TestConnector.class, TestManagedConnectionFactory.class, TestActivation.class, TestAdminObject.class));
- return connectorModule;
- }
-
- @Test
- public void testConfigProperties() throws Exception {
- final ClassFinder finder = new ClassFinder(TestAdminObject.class);
-
- final List<ConfigProperty> configProperty = new ArrayList<ConfigProperty>();
-
- final Object object = new Object() {
- public List<ConfigProperty> getConfigProperty() {
- return configProperty;
- }
- };
-
- new AnnotationDeployer.DiscoverAnnotatedBeans().process(null, TestAdminObject.class.getName(), object);
- Assert.assertEquals(2, configProperty.size());
- Assert.assertEquals("myNumber", configProperty.get(0).getConfigPropertyName());
- Assert.assertEquals("java.lang.Integer", configProperty.get(0).getConfigPropertyType());
- Assert.assertEquals("myProperty", configProperty.get(1).getConfigPropertyName());
- Assert.assertEquals("java.lang.String", configProperty.get(1).getConfigPropertyType());
- Assert.assertEquals("This is a test", configProperty.get(1).getConfigPropertyValue());
- }
-
- @ApplicationException(rollback = true)
- public abstract class BusinessException extends Exception {
- }
-
- public class ValueRequiredException extends BusinessException {
- }
-
- public static final class MyMainClass {
- public static void main(final String[] args) {
- }
- }
-
- public static interface GenericInterface<T> {
- T genericMethod(T t);
- }
-
- @Stateless
- @Local(GenericInterface.class)
- public static class InterceptedSLSBean implements GenericInterface<String> {
- public String genericMethod(final String s) {
- return s;
- }
- }
-
- @Stateless
- @LocalBean
- public static class TestLocalBean {
- public String echo(final String input) {
- return input;
- }
- }
-
- @Resource
- public static class Color {
- @Resource
- public void color() {
- }
- }
-
- @Resource
- public static class Green extends Color {
- @Resource
- public void green() {
- }
- }
-
- @Resource
- public static class Emerald extends Green {
- @Resource
- public void emerald() {
- }
- }
-
- @javax.resource.spi.Connector(description = "description",
- displayName = "displayName", smallIcon = "smallIcon",
- largeIcon = "largeIcon", vendorName = "vendorName",
- eisType = "eisType",
- version = "version",
- licenseDescription = {"licenseDescription"},
- licenseRequired = true,
- authMechanisms = {@AuthenticationMechanism(authMechanism = "authMechanism",
- credentialInterface = CredentialInterface.GenericCredential, description = {"description"})},
- reauthenticationSupport = true,
- securityPermissions = {@SecurityPermission(permissionSpec = "permissionSpec", description = "description")},
- transactionSupport = TransactionSupportLevel.NoTransaction,
- requiredWorkContexts = {TestWorkContext.class}
- )
- public static class TestConnector implements ResourceAdapter {
-
- public void endpointActivation(final MessageEndpointFactory mef, final ActivationSpec spec) throws ResourceException {
- }
-
- public void endpointDeactivation(final MessageEndpointFactory mef, final ActivationSpec spec) {
- }
-
- public XAResource[] getXAResources(final ActivationSpec[] specs) throws ResourceException {
- return null;
- }
-
- public void start(final BootstrapContext ctx) throws ResourceAdapterInternalException {
- }
-
- public void stop() {
- }
- }
-
- @ConnectionDefinition(connection = Connection.class, connectionFactory = ConnectionFactory.class, connectionImpl = ConnectionImpl.class, connectionFactoryImpl = ConnectionFactoryImpl.class)
- public static class TestManagedConnectionFactory implements ManagedConnectionFactory {
-
- public Object createConnectionFactory() throws ResourceException {
- return null;
- }
-
- public Object createConnectionFactory(final ConnectionManager connectionManager) throws ResourceException {
- return null;
- }
-
- public ManagedConnection createManagedConnection(final Subject subject, final ConnectionRequestInfo connectionRequestInfo) throws ResourceException {
- return null;
- }
-
- public PrintWriter getLogWriter() throws ResourceException {
- return null;
- }
-
- public ManagedConnection matchManagedConnections(final Set managedConnections, final Subject subject, final ConnectionRequestInfo connectionRequestInfo) throws ResourceException {
- return null;
- }
-
- public void setLogWriter(final PrintWriter writer) throws ResourceException {
- }
-
- }
-
- public static class TestWorkContext implements WorkContext {
- public String getDescription() {
- return "Description";
- }
-
- public String getName() {
- return "Name";
- }
- }
-
- public static interface Connection {
- }
-
- public static class ConnectionImpl implements Connection {
- }
-
- public static interface ConnectionFactory extends Serializable, Referenceable {
- }
-
- public static class ConnectionFactoryImpl implements ConnectionFactory {
-
- public void setReference(final Reference reference) {
- }
-
- public Reference getReference() throws NamingException {
- return null;
- }
- }
-
- @Activation(messageListeners = {TestMessageListener.class})
- public static class TestActivation implements ActivationSpec, Serializable {
-
- public ResourceAdapter getResourceAdapter() {
- return null;
- }
-
- public void setResourceAdapter(final ResourceAdapter arg0) throws ResourceException {
- }
-
- public void validate() throws InvalidPropertyException {
- }
- }
-
- public static class TestMessageListener implements MessageListener {
- public Record onMessage(final Record arg0) throws ResourceException {
- return null;
- }
- }
-
- public static interface TestAdminObjectInterface {
- }
-
- public static interface SomeOtherInterface {
- }
-
- @AdministeredObject(adminObjectInterfaces = {TestAdminObjectInterface.class})
- public static class TestAdminObject implements TestAdminObjectInterface, SomeOtherInterface {
- private String myProperty = "This is a test";
-
- @javax.resource.spi.ConfigProperty(ignore = true)
- private int myNumber;
-
- public String getMyProperty() {
- return myProperty;
- }
-
- public void setMyProperty(final String myProperty) {
- this.myProperty = myProperty;
- }
-
- public int getMyNumber() {
- return myNumber;
- }
-
- public void setMyNumber(final int myNumber) {
- this.myNumber = myNumber;
- }
- }
-
- @Test
- public void findRestClasses() throws Exception {
- final WebApp webApp = new WebApp();
- webApp.setContextRoot("/");
- webApp.setId("web");
- webApp.setVersion("2.5");
- WebModule webModule = new WebModule(webApp, webApp.getContextRoot(), Thread.currentThread().getContextClassLoader(), "myapp", webApp.getId());
- webModule.setFinder(new AnnotationFinder(new ClassesArchive(RESTClass.class, RESTMethod.class, RESTApp.class)).link());
-
- final AnnotationDeployer annotationDeployer = new AnnotationDeployer();
- webModule = annotationDeployer.deploy(webModule);
-
- final Set<String> classes = webModule.getRestClasses();
- final Set<String> applications = webModule.getRestApplications();
-
- assertEquals(1, classes.size());
- assertTrue(classes.contains(RESTClass.class.getName()));
- // assertTrue(classes.contains(RESTMethod.class.getName()));
-
- assertEquals(1, applications.size());
- assertEquals(RESTApp.class.getName(), applications.iterator().next());
- }
-
- @Path("/")
- public static class RESTClass {
-
- }
-
- public static class RESTMethod extends RESTClass {
- @Path("/method")
- public void noop() {
- // no-op
- }
- }
-
- @ApplicationPath("/")
- public static class RESTApp extends Application {
- public java.util.Set<java.lang.Class<?>> getClasses() {
- return new HashSet<Class<?>>() {{
- add(RESTClass.class);
- add(RESTMethod.class);
- }};
- }
-
- public java.util.Set<java.lang.Object> getSingletons() {
- return new HashSet<Object>() {{
- add(new RESTMethod());
- add(new RESTMethod());
- }};
- }
- }
-}
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.openejb.config;
+
+import org.apache.openejb.OpenEJB;
+import org.apache.openejb.assembler.classic.AppInfo;
+import org.apache.openejb.assembler.classic.Assembler;
+import org.apache.openejb.assembler.classic.ClientInfo;
+import org.apache.openejb.jee.AssemblyDescriptor;
+import org.apache.openejb.jee.ConfigProperty;
+import org.apache.openejb.jee.Connector;
+import org.apache.openejb.jee.EjbJar;
+import org.apache.openejb.jee.EnterpriseBean;
+import org.apache.openejb.jee.SessionBean;
+import org.apache.openejb.jee.TransactionSupportType;
+import org.apache.openejb.jee.WebApp;
+import org.apache.xbean.finder.Annotated;
+import org.apache.xbean.finder.AnnotationFinder;
+import org.apache.xbean.finder.ClassFinder;
+import org.apache.xbean.finder.archive.ClassesArchive;
+import org.junit.AfterClass;
+import org.junit.Assert;
+import org.junit.Test;
+
+import javax.annotation.Resource;
+import javax.ejb.ApplicationException;
+import javax.ejb.Local;
+import javax.ejb.LocalBean;
+import javax.ejb.Stateless;
+import javax.naming.NamingException;
+import javax.naming.Reference;
+import javax.resource.Referenceable;
+import javax.resource.ResourceException;
+import javax.resource.cci.MessageListener;
+import javax.resource.cci.Record;
+import javax.resource.spi.Activation;
+import javax.resource.spi.ActivationSpec;
+import javax.resource.spi.AdministeredObject;
+import javax.resource.spi.AuthenticationMechanism;
+import javax.resource.spi.AuthenticationMechanism.CredentialInterface;
+import javax.resource.spi.BootstrapContext;
+import javax.resource.spi.ConnectionDefinition;
+import javax.resource.spi.ConnectionManager;
+import javax.resource.spi.ConnectionRequestInfo;
+import javax.resource.spi.InvalidPropertyException;
+import javax.resource.spi.ManagedConnection;
+import javax.resource.spi.ManagedConnectionFactory;
+import javax.resource.spi.ResourceAdapter;
+import javax.resource.spi.ResourceAdapterInternalException;
+import javax.resource.spi.SecurityPermission;
+import javax.resource.spi.TransactionSupport.TransactionSupportLevel;
+import javax.resource.spi.endpoint.MessageEndpointFactory;
+import javax.resource.spi.work.WorkContext;
+import javax.security.auth.Subject;
+import javax.transaction.xa.XAResource;
+import javax.ws.rs.ApplicationPath;
+import javax.ws.rs.Path;
+import javax.ws.rs.core.Application;
+import java.io.PrintWriter;
+import java.io.Serializable;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.hamcrest.CoreMatchers.nullValue;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+
+/**
+ * @version $Rev$ $Date$
+ */
+public class AnnotationDeployerTest {
+
+ @AfterClass
+ public static void afterClass() throws Exception {
+ OpenEJB.destroy();
+ }
+
+ @Test
+ /**
+ * For http://issues.apache.org/jira/browse/OPENEJB-980
+ */
+ public void applicationExceptionInheritanceTest() throws Exception {
+ EjbModule ejbModule = testModule();
+ final AnnotationDeployer.DiscoverAnnotatedBeans discvrAnnBeans = new AnnotationDeployer.DiscoverAnnotatedBeans();
+ ejbModule = discvrAnnBeans.deploy(ejbModule);
+
+ final AssemblyDescriptor assemblyDescriptor = ejbModule.getEjbJar().getAssemblyDescriptor();
+ org.apache.openejb.jee.ApplicationException appEx =
+ assemblyDescriptor.getApplicationException(BusinessException.class);
+ assertThat(appEx, notNullValue());
+ assertThat(appEx.getExceptionClass(), is(BusinessException.class.getName()));
+ assertThat(appEx.isRollback(), is(true));
+
+ //inheritance is now handled at runtime, only explicitly mentioned exceptions are in the assembly descriptor
+ appEx = assemblyDescriptor.getApplicationException(ValueRequiredException.class);
+ assertThat(appEx, nullValue());
+ }
+
+ private EjbModule testModule() {
+ final EjbJar ejbJar = new EjbJar("test-classes");
+ final EjbModule ejbModule = new EjbModule(ejbJar);
+ ejbModule.setFinder(new ClassFinder(AnnotationDeployerTest.class,
+ BusinessException.class,
+ Exception.class,
+ GenericInterface.class,
+ InterceptedSLSBean.class,
+ MyMainClass.class,
+ TestLocalBean.class,
+ ValueRequiredException.class
+ ));
+ return ejbModule;
+ }
+
+
+ @Test
+ public void testSortClasses() throws Exception {
+ final AnnotationFinder finder = new AnnotationFinder(new ClassesArchive(Emerald.class)).link();
+
+ final List<Annotated<Class<?>>> classes = finder.findMetaAnnotatedClasses(Resource.class);
+ assertTrue(classes.size() >= 3);
+
+ final List<Annotated<Class<?>>> sorted = AnnotationDeployer.sortClasses(classes);
+
+ assertTrue(sorted.size() >= 3);
+
+ assertEquals(Emerald.class, sorted.get(0).get());
+ assertEquals(Green.class, sorted.get(1).get());
+ assertEquals(Color.class, sorted.get(2).get());
+ }
+
+ @Test
+ public void testSortMethods() throws Exception {
+ final AnnotationFinder finder = new AnnotationFinder(new ClassesArchive(Emerald.class)).link();
+
+ final List<Annotated<Method>> classes = finder.findMetaAnnotatedMethods(Resource.class);
+ assertTrue(classes.size() >= 3);
+
+ final List<Annotated<Method>> sorted = AnnotationDeployer.sortMethods(classes);
+
+ assertTrue(sorted.size() >= 3);
+
+ assertEquals(Emerald.class, sorted.get(0).get().getDeclaringClass());
+ assertEquals(Green.class, sorted.get(1).get().getDeclaringClass());
+ assertEquals(Color.class, sorted.get(2).get().getDeclaringClass());
+ }
+
+ @Test
+ /**
+ * For https://issues.apache.org/jira/browse/OPENEJB-1063
+ */
+ public void badMainClassFormatTest() throws Exception {
+ final ConfigurationFactory config = new ConfigurationFactory();
+ final Assembler assembler = new Assembler();
+
+ final AppModule app = new AppModule(this.getClass().getClassLoader(), "test-app");
+
+ final ClientModule clientModule = new ClientModule(null, app.getClassLoader(), app.getJarLocation(), null, null);
+
+ // change "." --> "/" to check that main class is changed by the AnnotationDeployer
+ final String mainClass = MyMainClass.class.getName().replaceAll("\\.", "/");
+ clientModule.setMainClass(mainClass);
+
+ app.getClientModules().add(clientModule);
+
+ final AppInfo appInfo = config.configureApplication(app);
+
+ assembler.createApplication(appInfo);
+
+ final ClientInfo clientInfo = appInfo.clients.get(0);
+ Assert.assertNotNull(clientInfo);
+ Assert.assertEquals(MyMainClass.class.getName(), clientInfo.mainClass);
+ }
+
+ /**
+ * For https://issues.apache.org/jira/browse/OPENEJB-1128
+ */
+ @Test
+ public void interceptingGenericBusinessMethodCalls() throws Exception {
+ EjbModule ejbModule = testModule();
+ final EjbJar ejbJar = ejbModule.getEjbJar();
+
+ final AnnotationDeployer.DiscoverAnnotatedBeans discvrAnnBeans = new AnnotationDeployer.DiscoverAnnotatedBeans();
+ ejbModule = discvrAnnBeans.deploy(ejbModule);
+
+ final EnterpriseBean bean = ejbJar.getEnterpriseBean("InterceptedSLSBean");
+ assert bean != null;
+ }
+
+ /**
+ * For https://issues.apache.org/jira/browse/OPENEJB-1188
+ *
+ * @throws Exception
+ */
+ @Test
+ public void testLocalBean() throws Exception {
+ final EjbModule ejbModule = testModule();
+ final EjbJar ejbJar = ejbModule.getEjbJar();
+
+ AppModule appModule = new AppModule(Thread.currentThread().getContextClassLoader(), "myapp");
+ appModule.getEjbModules().add(ejbModule);
+
+ final AnnotationDeployer annotationDeployer = new AnnotationDeployer();
+ appModule = annotationDeployer.deploy(appModule);
+
+ EnterpriseBean bean = ejbJar.getEnterpriseBean("TestLocalBean");
+ assert bean != null;
+ assert (((SessionBean) bean).getLocalBean() != null);
+
+ bean = ejbJar.getEnterpriseBean("InterceptedSLSBean");
+ assert bean != null;
+ assert (((SessionBean) bean).getLocalBean() == null);
+ }
+
+ @Test
+ public void testResourceAdapter() throws Exception {
+ final ConnectorModule connectorModule = testConnectorModule();
+ final AnnotationDeployer.DiscoverAnnotatedBeans discvrAnnBeans = new AnnotationDeployer.DiscoverAnnotatedBeans();
+ discvrAnnBeans.deploy(connectorModule);
+
+ final Connector connector = connectorModule.getConnector();
+ Assert.assertEquals("displayName", connector.getDisplayName());
+ Assert.assertEquals("description", connector.getDescription());
+ Assert.assertEquals("eisType", connector.getEisType());
+ Assert.assertEquals("vendorName", connector.getVendorName());
+ Assert.assertEquals("version", connector.getResourceAdapterVersion());
+ Assert.assertEquals("smallIcon", connector.getIcon().getSmallIcon());
+ Assert.assertEquals("largeIcon", connector.getIcon().getLargeIcon());
+ Assert.assertEquals("licenseDescription", connector.getLicense().getDescription());
+ Assert.assertEquals(true, connector.getLicense().isLicenseRequired());
+
+ final List<org.apache.openejb.jee.SecurityPermission> securityPermission = connector.getResourceAdapter().getSecurityPermission();
+ Assert.assertEquals("description", securityPermission.get(0).getDescription());
+ Assert.assertEquals("permissionSpec", securityPermission.get(0).getSecurityPermissionSpec());
+
+ final List<String> requiredWorkContext = connector.getRequiredWorkContext();
+ Assert.assertEquals(TestWorkContext.class.getName(), requiredWorkContext.get(0));
+
+ final List<org.apache.openejb.jee.AuthenticationMechanism> authenticationMechanism = connector.getResourceAdapter().getOutboundResourceAdapter().getAuthenticationMechanism();
+ Assert.assertEquals("authMechanism", authenticationMechanism.get(0).getAuthenticationMechanismType());
+ Assert.assertEquals(CredentialInterface.GenericCredential.toString(), authenticationMechanism.get(0).getCredentialInterface());
+ Assert.assertEquals("description", authenticationMechanism.get(0).getDescription());
+
+ Assert.assertEquals(TransactionSupportType.NO_TRANSACTION, connector.getResourceAdapter().getOutboundResourceAdapter().getTransactionSupport());
+ Assert.assertEquals(true, connector.getResourceAdapter().getOutboundResourceAdapter().isReauthenticationSupport());
+
+ Assert.assertEquals(Connection.class.getName(), connector.getResourceAdapter().getOutboundResourceAdapter().getConnectionDefinition().get(0).getConnectionInterface());
+ Assert.assertEquals(ConnectionImpl.class.getName(), connector.getResourceAdapter().getOutboundResourceAdapter().getConnectionDefinition().get(0).getConnectionImplClass());
+ Assert.assertEquals(ConnectionFactory.class.getName(), connector.getResourceAdapter().getOutboundResourceAdapter().getConnectionDefinition().get(0).getConnectionFactoryInterface());
+ Assert.assertEquals(ConnectionFactoryImpl.class.getName(), connector.getResourceAdapter().getOutboundResourceAdapter().getConnectionDefinition().get(0).getConnectionFactoryImplClass());
+
+ Assert.assertEquals(TestActivation.class.getName(), connector.getResourceAdapter().getInboundResourceAdapter().getMessageAdapter().getMessageListener().get(0).getActivationSpec().getActivationSpecClass());
+ Assert.assertEquals(TestMessageListener.class.getName(), connector.getResourceAdapter().getInboundResourceAdapter().getMessageAdapter().getMessageListener().get(0).getMessageListenerType());
+
+ Assert.assertEquals(TestAdminObject.class.getName(), connector.getResourceAdapter().getAdminObject().get(0).getAdminObjectClass());
+ Assert.assertEquals(TestAdminObjectInterface.class.getName(), connector.getResourceAdapter().getAdminObject().get(0).getAdminObjectInterface());
+ }
+
+ private ConnectorModule testConnectorModule() {
+ final Connector connector = new Connector();
+ final ConnectorModule connectorModule = new ConnectorModule(connector);
+ connectorModule.setFinder(new ClassFinder(TestConnector.class, TestManagedConnectionFactory.class, TestActivation.class, TestAdminObject.class));
+ return connectorModule;
+ }
+
+ @Test
+ public void testConfigProperties() throws Exception {
+ final ClassFinder finder = new ClassFinder(TestAdminObject.class);
+
+ final List<ConfigProperty> configProperty = new ArrayList<ConfigProperty>();
+
+ final Object object = new Object() {
+ public List<ConfigProperty> getConfigProperty() {
+ return configProperty;
+ }
+ };
+
+ new AnnotationDeployer.DiscoverAnnotatedBeans().process(null, TestAdminObject.class.getName(), object);
+ Assert.assertEquals(2, configProperty.size());
+ Assert.assertEquals("myNumber", configProperty.get(0).getConfigPropertyName());
+ Assert.assertEquals("java.lang.Integer", configProperty.get(0).getConfigPropertyType());
+ Assert.assertEquals("myProperty", configProperty.get(1).getConfigPropertyName());
+ Assert.assertEquals("java.lang.String", configProperty.get(1).getConfigPropertyType());
+ Assert.assertEquals("This is a test", configProperty.get(1).getConfigPropertyValue());
+ }
+
+ @ApplicationException(rollback = true)
+ public abstract class BusinessException extends Exception {
+ }
+
+ public class ValueRequiredException extends BusinessException {
+ }
+
+ public static final class MyMainClass {
+ public static void main(final String[] args) {
+ }
+ }
+
+ public static interface GenericInterface<T> {
+ T genericMethod(T t);
+ }
+
+ @Stateless
+ @Local(GenericInterface.class)
+ public static class InterceptedSLSBean implements GenericInterface<String> {
+ public String genericMethod(final String s) {
+ return s;
+ }
+ }
+
+ @Stateless
+ @LocalBean
+ public static class TestLocalBean {
+ public String echo(final String input) {
+ return input;
+ }
+ }
+
+ @Resource
+ public static class Color {
+ @Resource
+ public void color() {
+ }
+ }
+
+ @Resource
+ public static class Green extends Color {
+ @Resource
+ public void green() {
+ }
+ }
+
+ @Resource
+ public static class Emerald extends Green {
+ @Resource
+ public void emerald() {
+ }
+ }
+
+ @javax.resource.spi.Connector(description = "description",
+ displayName = "displayName", smallIcon = "smallIcon",
+ largeIcon = "largeIcon", vendorName = "vendorName",
+ eisType = "eisType",
+ version = "version",
+ licenseDescription = {"licenseDescription"},
+ licenseRequired = true,
+ authMechanisms = {@AuthenticationMechanism(authMechanism = "authMechanism",
+ credentialInterface = CredentialInterface.GenericCredential, description = {"description"})},
+ reauthenticationSupport = true,
+ securityPermissions = {@SecurityPermission(permissionSpec = "permissionSpec", description = "description")},
+ transactionSupport = TransactionSupportLevel.NoTransaction,
+ requiredWorkContexts = {TestWorkContext.class}
+ )
+ public static class TestConnector implements ResourceAdapter {
+
+ public void endpointActivation(final MessageEndpointFactory mef, final ActivationSpec spec) throws ResourceException {
+ }
+
+ public void endpointDeactivation(final MessageEndpointFactory mef, final ActivationSpec spec) {
+ }
+
+ public XAResource[] getXAResources(final ActivationSpec[] specs) throws ResourceException {
+ return null;
+ }
+
+ public void start(final BootstrapContext ctx) throws ResourceAdapterInternalException {
+ }
+
+ public void stop() {
+ }
+ }
+
+ @ConnectionDefinition(connection = Connection.class, connectionFactory = ConnectionFactory.class, connectionImpl = ConnectionImpl.class, connectionFactoryImpl = ConnectionFactoryImpl.class)
+ public static class TestManagedConnectionFactory implements ManagedConnectionFactory {
+
+ public Object createConnectionFactory() throws ResourceException {
+ return null;
+ }
+
+ public Object createConnectionFactory(final ConnectionManager connectionManager) throws ResourceException {
+ return null;
+ }
+
+ public ManagedConnection createManagedConnection(final Subject subject, final ConnectionRequestInfo connectionRequestInfo) throws ResourceException {
+ return null;
+ }
+
+ public PrintWriter getLogWriter() throws ResourceException {
+ return null;
+ }
+
+ public ManagedConnection matchManagedConnections(final Set managedConnections, final Subject subject, final ConnectionRequestInfo connectionRequestInfo) throws ResourceException {
+ return null;
+ }
+
+ public void setLogWriter(final PrintWriter writer) throws ResourceException {
+ }
+
+ }
+
+ public static class TestWorkContext implements WorkContext {
+ public String getDescription() {
+ return "Description";
+ }
+
+ public String getName() {
+ return "Name";
+ }
+ }
+
+ public static interface Connection {
+ }
+
+ public static class ConnectionImpl implements Connection {
+ }
+
+ public static interface ConnectionFactory extends Serializable, Referenceable {
+ }
+
+ public static class ConnectionFactoryImpl implements ConnectionFactory {
+
+ public void setReference(final Reference reference) {
+ }
+
+ public Reference getReference() throws NamingException {
+ return null;
+ }
+ }
+
+ @Activation(messageListeners = {TestMessageListener.class})
+ public static class TestActivation implements ActivationSpec, Serializable {
+
+ public ResourceAdapter getResourceAdapter() {
+ return null;
+ }
+
+ public void setResourceAdapter(final ResourceAdapter arg0) throws ResourceException {
+ }
+
+ public void validate() throws InvalidPropertyException {
+ }
+ }
+
+ public static class TestMessageListener implements MessageListener {
+ public Record onMessage(final Record arg0) throws ResourceException {
+ return null;
+ }
+ }
+
+ public static interface TestAdminObjectInterface {
+ }
+
+ public static interface SomeOtherInterface {
+ }
+
+ @AdministeredObject(adminObjectInterfaces = {TestAdminObjectInterface.class})
+ public static class TestAdminObject implements TestAdminObjectInterface, SomeOtherInterface {
+ private String myProperty = "This is a test";
+
+ @javax.resource.spi.ConfigProperty(ignore = true)
+ private int myNumber;
+
+ public String getMyProperty() {
+ return myProperty;
+ }
+
+ public void setMyProperty(final String myProperty) {
+ this.myProperty = myProperty;
+ }
+
+ public int getMyNumber() {
+ return myNumber;
+ }
+
+ public void setMyNumber(final int myNumber) {
+ this.myNumber = myNumber;
+ }
+ }
+
+ @Test
+ public void findRestClasses() throws Exception {
+ final WebApp webApp = new WebApp();
+ webApp.setContextRoot("/");
+ webApp.setId("web");
+ webApp.setVersion("2.5");
+ WebModule webModule = new WebModule(webApp, webApp.getContextRoot(), Thread.currentThread().getContextClassLoader(), "myapp", webApp.getId());
+ webModule.setFinder(new AnnotationFinder(new ClassesArchive(RESTClass.class, RESTMethod.class, RESTApp.class)).link());
+
+ final AnnotationDeployer annotationDeployer = new AnnotationDeployer();
+ webModule = annotationDeployer.deploy(webModule);
+
+ final Set<String> classes = webModule.getRestClasses();
+ final Set<String> applications = webModule.getRestApplications();
+
+ assertEquals(1, classes.size());
+ assertTrue(classes.contains(RESTClass.class.getName()));
+ // assertTrue(classes.contains(RESTMethod.class.getName()));
+
+ assertEquals(1, applications.size());
+ assertEquals(RESTApp.class.getName(), applications.iterator().next());
+ }
+
+ @Path("/")
+ public static class RESTClass {
+
+ }
+
+ public static class RESTMethod extends RESTClass {
+ @Path("/method")
+ public void noop() {
+ // no-op
+ }
+ }
+
+ @ApplicationPath("/")
+ public static class RESTApp extends Application {
+ public java.util.Set<java.lang.Class<?>> getClasses() {
+ return new HashSet<Class<?>>() {{
+ add(RESTClass.class);
+ add(RESTMethod.class);
+ }};
+ }
+
+ public java.util.Set<java.lang.Object> getSingletons() {
+ return new HashSet<Object>() {{
+ add(new RESTMethod());
+ add(new RESTMethod());
+ }};
+ }
+ }
+}