blob: 7d66304a60aed634af6af928ddaf449b3b7926a0 [file] [log] [blame]
/*
* Copyright (c) 2002, 2020 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.s1asdev.jmsdd;
import com.sun.ejte.ccl.reporter.SimpleReporterAdapter;
import com.sun.enterprise.deployment.*;
import com.sun.enterprise.deployment.io.AppClientDeploymentDescriptorFile;
import com.sun.enterprise.deployment.io.ApplicationDeploymentDescriptorFile;
import junit.framework.Assert;
import junit.framework.TestCase;
import org.glassfish.deployment.common.JavaEEResourceType;
import org.glassfish.ejb.deployment.io.EjbDeploymentDescriptorFile;
import org.glassfish.web.deployment.io.WebDeploymentDescriptorFile;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class DDTest extends TestCase {
private static SimpleReporterAdapter stat = new SimpleReporterAdapter("appserv-tests");
private File descriptorDir = null;
protected void setUp() throws Exception {
super.setUp();
TestUtil.setupHK2();
descriptorDir = new File(System.getProperty("workDir"), "descriptor");
}
protected void tearDown() throws Exception {
super.tearDown();
}
public void testApplicationDD() throws Exception {
String tcName = "jms-destination-definition-Application-DD-test";
InputStream ddIS = null;
try {
String ddFileName = "ut-application.xml";
File ddFile = new File(descriptorDir, ddFileName);
Assert.assertTrue("The application.xml not found: " + ddFile, ddFile.exists());
ddIS = new FileInputStream(ddFile);
ApplicationDeploymentDescriptorFile ddReader = new ApplicationDeploymentDescriptorFile();
Application application = (Application)ddReader.read(ddIS);
Set<ResourceDescriptor> actualJMSDDDs = application.getResourceDescriptors(JavaEEResourceType.JMSDD);
Map<String, JMSDestinationDefinitionDescriptor> expectedJMSDDDs =
new HashMap<String, JMSDestinationDefinitionDescriptor>();
JMSDestinationDefinitionDescriptor desc;
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("global-scope jms destination defined in UT Application DD");
desc.setName("java:global/env/UT_Application_DD_JMSDestination");
desc.setClassName("jakarta.jms.Queue");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalQueue");
expectedJMSDDDs.put(desc.getName(), desc);
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("application-scope jms destination defined in UT Application DD");
desc.setName("java:app/env/UT_Application_DD_JMSDestination");
desc.setClassName("jakarta.jms.Topic");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalTopic");
expectedJMSDDDs.put(desc.getName(), desc);
TestUtil.compareJMSDDD(expectedJMSDDDs, actualJMSDDDs);
stat.addStatus(tcName, stat.PASS);
} catch(Exception e) {
stat.addStatus(tcName, stat.FAIL);
throw e;
} finally {
if (ddIS != null) {
ddIS.close();
}
}
}
public void testAppclientDD() throws Exception {
String tcName = "jms-destination-definition-Appclient-DD-test";
InputStream ddIS = null;
try {
String ddFileName = "ut-application-client.xml";
File ddFile = new File(descriptorDir, ddFileName);
Assert.assertTrue("The ut-application-client.xml not found: " + ddFile, ddFile.exists());
ddIS = new FileInputStream(ddFile);
AppClientDeploymentDescriptorFile ddReader = new AppClientDeploymentDescriptorFile();
ApplicationClientDescriptor appclientDesc = (ApplicationClientDescriptor)ddReader.read(ddIS);
JMSDestinationDefinitionDescriptor desc;
Map<String, JMSDestinationDefinitionDescriptor> expectedJMSDDDs = new HashMap<String, JMSDestinationDefinitionDescriptor>();
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("global-scope jms destination defined in UT Appclient DD");
desc.setName("java:global/env/UT_Appclient_DD_JMSDestination");
desc.setClassName("jakarta.jms.Queue");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalQueue");
expectedJMSDDDs.put(desc.getName(), desc);
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("application-scope jms destination defined in UT Appclient DD");
desc.setName("java:app/env/UT_Appclient_DD_JMSDestination");
desc.setClassName("jakarta.jms.Topic");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalTopic");
expectedJMSDDDs.put(desc.getName(), desc);
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("module-scope jms destination defined in UT Appclient DD");
desc.setName("java:module/env/UT_Appclient_DD_JMSDestination");
desc.setClassName("jakarta.jms.Topic");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalTopic");
expectedJMSDDDs.put(desc.getName(), desc);
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("component-scope jms destination defined in UT Appclient DD");
desc.setName("java:comp/env/UT_Appclient_DD_JMSDestination");
desc.setClassName("jakarta.jms.Queue");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalQueue");
expectedJMSDDDs.put(desc.getName(), desc);
TestUtil.compareJMSDDD(expectedJMSDDDs, appclientDesc.getResourceDescriptors(JavaEEResourceType.JMSDD));
stat.addStatus(tcName, stat.PASS);
} catch(Exception e) {
stat.addStatus(tcName, stat.FAIL);
throw e;
} finally {
if (ddIS != null) {
ddIS.close();
}
}
}
public void testSessionEJBDD() throws Exception {
String tcName = "jms-destination-definition-Session-EJB-DD-test";
InputStream ddIS = null;
try {
String ddFileName = "ut-session-ejb-jar.xml";
File ddFile = new File(descriptorDir, ddFileName);
Assert.assertTrue("The ut-session-ejb-jar.xml not found: " + ddFile, ddFile.exists());
ddIS = new FileInputStream(ddFile);
EjbDeploymentDescriptorFile ddReader = new EjbDeploymentDescriptorFile();
EjbBundleDescriptor ejbBundle = (EjbBundleDescriptor)ddReader.read(ddIS);
for (EjbDescriptor ejbDescriptor : ejbBundle.getEjbs()) {
ejbDescriptor.getResourceDescriptors(JavaEEResourceType.JMSDD);
if (ejbDescriptor.getName().equals("HelloStatefulEJB")) {
testStatefulSessionEJBDD(ejbDescriptor);
} else if (ejbDescriptor.getName().equals("HelloEJB")) {
testStatelessSessionEJBDD(ejbDescriptor);
} else {
fail("Unknown EJB descriptor: " + ejbDescriptor.getName());
}
}
stat.addStatus(tcName, stat.PASS);
} catch(Exception e) {
stat.addStatus(tcName, stat.FAIL);
throw e;
} finally {
if (ddIS != null) {
ddIS.close();
}
}
}
private void testStatefulSessionEJBDD(EjbDescriptor ejb) {
JMSDestinationDefinitionDescriptor desc;
Map<String, JMSDestinationDefinitionDescriptor> expectedJMSDDDs = new HashMap<String, JMSDestinationDefinitionDescriptor>();
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("global-scope jms destination defined in UT Session EJB DD");
desc.setName("java:global/env/UT_HelloStatefulEJB_DD_JMSDestination");
desc.setClassName("jakarta.jms.Queue");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalQueue");
expectedJMSDDDs.put(desc.getName(), desc);
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("application-scope jms destination defined in UT Session EJB DD");
desc.setName("java:app/env/UT_HelloStatefulEJB_DD_JMSDestination");
desc.setClassName("jakarta.jms.Topic");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalTopic");
expectedJMSDDDs.put(desc.getName(), desc);
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("module-scope jms destination defined in UT Session EJB DD");
desc.setName("java:module/env/UT_HelloStatefulEJB_DD_JMSDestination");
desc.setClassName("jakarta.jms.Topic");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalTopic");
expectedJMSDDDs.put(desc.getName(), desc);
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("component-scope jms destination defined in UT Session EJB DD");
desc.setName("java:comp/env/UT_HelloStatefulEJB_DD_JMSDestination");
desc.setClassName("jakarta.jms.Queue");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalQueue");
expectedJMSDDDs.put(desc.getName(), desc);
TestUtil.compareJMSDDD(expectedJMSDDDs, ejb.getResourceDescriptors(JavaEEResourceType.JMSDD));
}
private void testStatelessSessionEJBDD(EjbDescriptor ejb) {
JMSDestinationDefinitionDescriptor desc;
Map<String, JMSDestinationDefinitionDescriptor> expectedJMSDDDs = new HashMap<String, JMSDestinationDefinitionDescriptor>();
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("global-scope jms destination defined in UT Session EJB DD");
desc.setName("java:global/env/UT_HelloEJB_DD_JMSDestination");
desc.setClassName("jakarta.jms.Queue");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalQueue");
expectedJMSDDDs.put(desc.getName(), desc);
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("application-scope jms destination defined in UT Session EJB DD");
desc.setName("java:app/env/UT_HelloEJB_DD_JMSDestination");
desc.setClassName("jakarta.jms.Topic");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalTopic");
expectedJMSDDDs.put(desc.getName(), desc);
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("module-scope jms destination defined in UT Session EJB DD");
desc.setName("java:module/env/UT_HelloEJB_DD_JMSDestination");
desc.setClassName("jakarta.jms.Topic");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalTopic");
expectedJMSDDDs.put(desc.getName(), desc);
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("component-scope jms destination defined in UT Session EJB DD");
desc.setName("java:comp/env/UT_HelloEJB_DD_JMSDestination");
desc.setClassName("jakarta.jms.Queue");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalQueue");
expectedJMSDDDs.put(desc.getName(), desc);
TestUtil.compareJMSDDD(expectedJMSDDDs, ejb.getResourceDescriptors(JavaEEResourceType.JMSDD));
}
public void testEntityEJBDD() throws Exception {
String tcName = "jms-destination-definition-Entity-EJB-DD-test";
InputStream ddIS = null;
try {
String ddFileName = "ut-entity-ejb-jar.xml";
File ddFile = new File(descriptorDir, ddFileName);
Assert.assertTrue("The ut-entity-ejb-jar.xml not found: " + ddFile, ddFile.exists());
ddIS = new FileInputStream(ddFile);
EjbDeploymentDescriptorFile ddReader = new EjbDeploymentDescriptorFile();
EjbBundleDescriptor ejbBundle = (EjbBundleDescriptor)ddReader.read(ddIS);
assertEquals("Only contains one entity bean", 1, ejbBundle.getEjbs().size());
for (EjbDescriptor ejbDescriptor : ejbBundle.getEjbs()) {
JMSDestinationDefinitionDescriptor desc;
Map<String, JMSDestinationDefinitionDescriptor> expectedJMSDDDs = new HashMap<String, JMSDestinationDefinitionDescriptor>();
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("global-scope jms destination defined in UT Entity EJB DD");
desc.setName("java:global/env/UT_Entity_DD_JMSDestination");
desc.setClassName("jakarta.jms.Queue");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalQueue");
expectedJMSDDDs.put(desc.getName(), desc);
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("application-scope jms destination defined in UT Entity EJB DD");
desc.setName("java:app/env/UT_Entity_DD_JMSDestination");
desc.setClassName("jakarta.jms.Topic");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalTopic");
expectedJMSDDDs.put(desc.getName(), desc);
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("module-scope jms destination defined in UT Entity EJB DD");
desc.setName("java:module/env/UT_Entity_DD_JMSDestination");
desc.setClassName("jakarta.jms.Topic");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalTopic");
expectedJMSDDDs.put(desc.getName(), desc);
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("component-scope jms destination defined in UT Entity EJB DD");
desc.setName("java:comp/env/UT_Entity_DD_JMSDestination");
desc.setClassName("jakarta.jms.Queue");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalQueue");
expectedJMSDDDs.put(desc.getName(), desc);
TestUtil.compareJMSDDD(expectedJMSDDDs, ejbDescriptor.getResourceDescriptors(JavaEEResourceType.JMSDD));
}
stat.addStatus(tcName, stat.PASS);
} catch(Exception e) {
stat.addStatus(tcName, stat.FAIL);
throw e;
} finally {
if (ddIS != null) {
ddIS.close();
}
}
}
public void testMDBEJBDD() throws Exception {
String tcName = "jms-destination-definition-MDB-EJB-DD-test";
InputStream ddIS = null;
try {
String ddFileName = "ut-mdb-ejb-jar.xml";
File ddFile = new File(descriptorDir, ddFileName);
Assert.assertTrue("The ut-mdb-ejb-jar.xml not found: " + ddFile, ddFile.exists());
ddIS = new FileInputStream(ddFile);
EjbDeploymentDescriptorFile ddReader = new EjbDeploymentDescriptorFile();
EjbBundleDescriptor ejbBundle = (EjbBundleDescriptor)ddReader.read(ddIS);
assertEquals("Only contains one MDB", 1, ejbBundle.getEjbs().size());
for (EjbDescriptor ejbDescriptor : ejbBundle.getEjbs()) {
JMSDestinationDefinitionDescriptor desc;
Map<String, JMSDestinationDefinitionDescriptor> expectedJMSDDDs = new HashMap<String, JMSDestinationDefinitionDescriptor>();
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("global-scope jms destination defined in UT MDB EJB DD");
desc.setName("java:global/env/UT_MDB_DD_JMSDestination");
desc.setClassName("jakarta.jms.Queue");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalQueue");
expectedJMSDDDs.put(desc.getName(), desc);
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("application-scope jms destination defined in UT MDB EJB DD");
desc.setName("java:app/env/UT_MDB_DD_JMSDestination");
desc.setClassName("jakarta.jms.Topic");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalTopic");
expectedJMSDDDs.put(desc.getName(), desc);
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("module-scope jms destination defined in UT MDB EJB DD");
desc.setName("java:module/env/UT_MDB_DD_JMSDestination");
desc.setClassName("jakarta.jms.Topic");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalTopic");
expectedJMSDDDs.put(desc.getName(), desc);
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("component-scope jms destination defined in UT MDB EJB DD");
desc.setName("java:comp/env/UT_MDB_DD_JMSDestination");
desc.setClassName("jakarta.jms.Queue");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalQueue");
expectedJMSDDDs.put(desc.getName(), desc);
TestUtil.compareJMSDDD(expectedJMSDDDs, ejbDescriptor.getResourceDescriptors(JavaEEResourceType.JMSDD));
}
stat.addStatus(tcName, stat.PASS);
} catch(Exception e) {
stat.addStatus(tcName, stat.FAIL);
throw e;
} finally {
if (ddIS != null) {
ddIS.close();
}
}
}
public void testInterceptorEJBDD() throws Exception {
String tcName = "jms-destination-definition-Interceptor-EJB-DD-test";
InputStream ddIS = null;
try {
String ddFileName = "ut-interceptor-ejb-jar.xml";
File ddFile = new File(descriptorDir, ddFileName);
Assert.assertTrue("The ut-interceptor-ejb-jar.xml not found: " + ddFile, ddFile.exists());
ddIS = new FileInputStream(ddFile);
EjbDeploymentDescriptorFile ddReader = new EjbDeploymentDescriptorFile();
EjbBundleDescriptor ejbBundle = (EjbBundleDescriptor)ddReader.read(ddIS);
assertEquals("Only contains one interceptor", 1, ejbBundle.getInterceptors().size());
for (EjbInterceptor interceptor : ejbBundle.getInterceptors()) {
JMSDestinationDefinitionDescriptor desc;
Map<String, JMSDestinationDefinitionDescriptor> expectedJMSDDDs = new HashMap<String, JMSDestinationDefinitionDescriptor>();
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("global-scope jms destination defined in UT Interceptor EJB DD");
desc.setName("java:global/env/UT_Interceptor_DD_JMSDestination");
desc.setClassName("jakarta.jms.Queue");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalQueue");
expectedJMSDDDs.put(desc.getName(), desc);
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("application-scope jms destination defined in UT Interceptor EJB DD");
desc.setName("java:app/env/UT_Interceptor_DD_JMSDestination");
desc.setClassName("jakarta.jms.Topic");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalTopic");
expectedJMSDDDs.put(desc.getName(), desc);
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("module-scope jms destination defined in UT Interceptor EJB DD");
desc.setName("java:module/env/UT_Interceptor_DD_JMSDestination");
desc.setClassName("jakarta.jms.Topic");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalTopic");
expectedJMSDDDs.put(desc.getName(), desc);
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("component-scope jms destination defined in UT Interceptor EJB DD");
desc.setName("java:comp/env/UT_Interceptor_DD_JMSDestination");
desc.setClassName("jakarta.jms.Queue");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalQueue");
expectedJMSDDDs.put(desc.getName(), desc);
TestUtil.compareJMSDDD(expectedJMSDDDs, interceptor.getResourceDescriptors(JavaEEResourceType.JMSDD));
}
stat.addStatus(tcName, stat.PASS);
} catch(Exception e) {
stat.addStatus(tcName, stat.FAIL);
throw e;
} finally {
if (ddIS != null) {
ddIS.close();
}
}
}
public void testWebDD() throws Exception {
String tcName = "jms-destination-definition-Web-DD-test";
InputStream ddIS = null;
try {
String ddFileName = "ut-web.xml";
File ddFile = new File(descriptorDir, ddFileName);
Assert.assertTrue("The ut-web.xml not found: " + ddFile, ddFile.exists());
ddIS = new FileInputStream(ddFile);
WebDeploymentDescriptorFile ddReader = new WebDeploymentDescriptorFile();
WebBundleDescriptor webBundle = ddReader.read(ddIS);
JMSDestinationDefinitionDescriptor desc;
Map<String, JMSDestinationDefinitionDescriptor> expectedJMSDDDs = new HashMap<String, JMSDestinationDefinitionDescriptor>();
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("global-scope jms destination defined in UT Web DD");
desc.setName("java:global/env/UT_Web_DD_JMSDestination");
desc.setClassName("jakarta.jms.Queue");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalQueue");
expectedJMSDDDs.put(desc.getName(), desc);
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("application-scope jms destination defined in UT Web DD");
desc.setName("java:app/env/UT_Web_DD_JMSDestination");
desc.setClassName("jakarta.jms.Topic");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalTopic");
expectedJMSDDDs.put(desc.getName(), desc);
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("module-scope jms destination defined in UT Web DD");
desc.setName("java:module/env/UT_Web_DD_JMSDestination");
desc.setClassName("jakarta.jms.Topic");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalTopic");
expectedJMSDDDs.put(desc.getName(), desc);
desc = new JMSDestinationDefinitionDescriptor();
desc.setDescription("component-scope jms destination defined in UT Web DD");
desc.setName("java:comp/env/UT_Web_DD_JMSDestination");
desc.setClassName("jakarta.jms.Queue");
desc.setResourceAdapter("jmsra");
desc.setDestinationName("myPhysicalQueue");
expectedJMSDDDs.put(desc.getName(), desc);
TestUtil.compareJMSDDD(expectedJMSDDDs, webBundle.getResourceDescriptors(JavaEEResourceType.JMSDD));
stat.addStatus(tcName, stat.PASS);
} catch(Exception e) {
stat.addStatus(tcName, stat.FAIL);
throw e;
} finally {
if (ddIS != null) {
ddIS.close();
}
}
}
}