/* * Copyright 2002 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. */ 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("javax.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("javax.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("javax.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("javax.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("javax.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("javax.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("javax.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("javax.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("javax.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("javax.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("javax.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("javax.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("javax.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("javax.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("javax.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("javax.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("javax.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("javax.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("javax.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("javax.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("javax.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("javax.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("javax.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("javax.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("javax.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("javax.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("javax.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("javax.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("javax.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("javax.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(); } } } }