Package org.jboss.test.metadata.ejb

Source Code of org.jboss.test.metadata.ejb.EjbJar21EverythingUnitTestCase

/*
* JBoss, Home of Professional Open Source
* Copyright 2006, JBoss Inc., and individual contributors as indicated
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.test.metadata.ejb;

import javax.ejb.TransactionManagementType;

import junit.framework.Test;

import org.jboss.metadata.ApplicationMetaData;
import org.jboss.metadata.common.ejb.IEnterpriseBeansMetaData;
import org.jboss.metadata.ejb.jboss.JBossMetaData;
import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
import org.jboss.metadata.ejb.spec.CMPFieldMetaData;
import org.jboss.metadata.ejb.spec.CMPFieldsMetaData;
import org.jboss.metadata.ejb.spec.EjbJar21MetaData;
import org.jboss.metadata.ejb.spec.EjbJar2xMetaData;
import org.jboss.metadata.ejb.spec.EjbJarMetaData;
import org.jboss.metadata.ejb.spec.EntityBeanMetaData;
import org.jboss.metadata.ejb.spec.MessageDrivenBeanMetaData;
import org.jboss.metadata.ejb.spec.PersistenceType;
import org.jboss.metadata.ejb.spec.QueriesMetaData;
import org.jboss.metadata.ejb.spec.QueryMetaData;
import org.jboss.metadata.ejb.spec.QueryMethodMetaData;
import org.jboss.metadata.ejb.spec.ResultTypeMapping;
import org.jboss.metadata.ejb.spec.SessionBeanMetaData;
import org.jboss.metadata.ejb.spec.SessionType;
import org.jboss.metadata.javaee.spec.LifecycleCallbacksMetaData;
import org.jboss.metadata.javaee.spec.PersistenceContextReferencesMetaData;
import org.jboss.metadata.javaee.spec.PersistenceUnitReferencesMetaData;
import org.jboss.metadata.javaee.spec.ResourceInjectionMetaData;
import org.jboss.metadata.merge.MergeUtil;
import org.jboss.test.metadata.ejb.AbstractEJBEverythingTest;

/**
* EjbJar2xUnitTestCase.
*
* @author <a href="adrian@jboss.com">Adrian Brock</a>
* @version $Revision: 1.1 $
*/
public class EjbJar21EverythingUnitTestCase extends AbstractEJBEverythingTest
{
   public static Test suite()
   {
      return suite(EjbJar21EverythingUnitTestCase.class);
   }
     
   public EjbJar21EverythingUnitTestCase(String name)
   {
      super(name);
   }
  
   protected EjbJar2xMetaData unmarshal() throws Exception
   {
      return unmarshal(EjbJar21MetaData.class);
   }
  
   public void testEverything() throws Exception
   {
      //enableTrace("org.jboss.xb");
      //enableTrace("org.jboss.xb.builder");
      EjbJar2xMetaData ejbJarMetaData = unmarshal();
      assertEverythingWithAppMetaData(ejbJarMetaData, Mode.SPEC);
   }

   public void assertEverything(EjbJar2xMetaData ejbJarMetaData, Mode mode)
   {
      assertVersion(ejbJarMetaData);
      assertId("ejb-jar", ejbJarMetaData);
      assertEquals("ejb-jar-id", ejbJarMetaData.getId());
      assertEjbClientJar(ejbJarMetaData);
      assertDescriptionGroup("ejb-jar", ejbJarMetaData.getDescriptionGroup());
      assertEnterpriseBeans(ejbJarMetaData, mode);
      assertRelationships(ejbJarMetaData);
      assertAssemblyDescriptor(ejbJarMetaData);
   }

   public void assertEverythingWithAppMetaData(EjbJar2xMetaData ejbJarMetaData, Mode mode)
   {
      JBossMetaData jbossMetaData = new JBossMetaData();
      //jbossMetaData.setOverridenMetaData(ejbJarMetaData);
      jbossMetaData = MergeUtil.merge(jbossMetaData, ejbJarMetaData);
      ApplicationMetaData applicationMetaData = new ApplicationMetaData(jbossMetaData);
      assertVersion(ejbJarMetaData);
      assertVersion(applicationMetaData);
      assertId("ejb-jar", ejbJarMetaData);
      assertEquals("ejb-jar-id", ejbJarMetaData.getId());
      assertEjbClientJar(ejbJarMetaData);
      assertDescriptionGroup("ejb-jar", ejbJarMetaData.getDescriptionGroup());
      assertEnterpriseBeans(ejbJarMetaData, mode);
      assertEnterpriseBeans(applicationMetaData, mode);
      assertRelationships(ejbJarMetaData);
      assertRelationships(applicationMetaData);
      assertAssemblyDescriptor(ejbJarMetaData);
      assertAssemblyDescriptor(applicationMetaData);
   }
  
   private void assertVersion(EjbJar2xMetaData ejbJar2xMetaData)
   {
      assertEquals("2.1", ejbJar2xMetaData.getVersion());
      assertFalse(ejbJar2xMetaData.isEJB1x());
      assertTrue(ejbJar2xMetaData.isEJB2x());
      assertTrue(ejbJar2xMetaData.isEJB21());
      assertFalse(ejbJar2xMetaData.isEJB3x());
   }
  
   private void assertVersion(ApplicationMetaData applicationMetadata)
   {
      assertFalse(applicationMetadata.isEJB1x());
      assertTrue(applicationMetadata.isEJB2x());
      assertTrue(applicationMetadata.isEJB21());
      assertFalse(applicationMetadata.isEJB3x());
   }

   protected SessionBeanMetaData assertFullSession(String ejbName, IEnterpriseBeansMetaData enterpriseBeansMetaData, Mode mode)
   {
      SessionBeanMetaData session = assertSession(ejbName + "EjbName", enterpriseBeansMetaData);
      assertFullSessionBean(ejbName, session, mode);     
      return session;
   }

   public void assertFullSessionBean(String ejbName, SessionBeanMetaData session, Mode mode)
   {
      assertId(ejbName, session);
      assertClass(ejbName, "Home", session.getHome());
      assertClass(ejbName, "Remote", session.getRemote());
      assertClass(ejbName, "LocalHome", session.getLocalHome());
      assertClass(ejbName, "Local", session.getLocal());
      assertClass(ejbName, "ServiceEndpoint", session.getServiceEndpoint());
      assertClass(ejbName, "EjbClass", session.getEjbClass());
      assertEquals(SessionType.Stateless, session.getSessionType());
      assertEquals(TransactionManagementType.CONTAINER, session.getTransactionType());
      assertEnvironment(ejbName, session.getJndiEnvironmentRefsGroup(), true, mode);
      assertContainerTransactions(ejbName, 6, 6, session.getContainerTransactions());
      assertMethodPermissions(ejbName, ejbName + "MethodPermission", 3, 3, session.getMethodPermissions());
      assertExcludeList(ejbName, 5, 5, session.getExcludeList());
      assertSecurityRoleRefs(ejbName, 2, session.getSecurityRoleRefs());
      assertSecurityIdentity(ejbName, "SecurityIdentity", session.getSecurityIdentity(), true, mode);
   }
   public void assertFullSessionBean(String ejbName, JBossSessionBeanMetaData session, Mode mode)
   {
      assertId(ejbName, session);
      assertClass(ejbName, "Home", session.getHome());
      assertClass(ejbName, "Remote", session.getRemote());
      assertClass(ejbName, "LocalHome", session.getLocalHome());
      assertClass(ejbName, "Local", session.getLocal());
      assertClass(ejbName, "ServiceEndpoint", session.getServiceEndpoint());
      assertClass(ejbName, "EjbClass", session.getEjbClass());
      assertEquals(SessionType.Stateless, session.getSessionType());
      assertEquals(TransactionManagementType.CONTAINER, session.getTransactionType());
      assertEnvironment(ejbName, session.getJndiEnvironmentRefsGroup(), true, mode);
      assertContainerTransactions(ejbName, 6, 6, session.getContainerTransactions());
      assertMethodPermissions(ejbName, ejbName + "MethodPermission", 3, 3, session.getMethodPermissions());
      assertExcludeList(ejbName, 5, 5, session.getExcludeList());
      assertSecurityRoleRefs(ejbName, 2, session.getSecurityRoleRefs());
      assertSecurityIdentity(ejbName, "SecurityIdentity", session.getSecurityIdentity(), true, mode);
   }
  
   protected EntityBeanMetaData assertFullEntity(String ejbName, IEnterpriseBeansMetaData enterpriseBeansMetaData, Mode mode)
   {
      EntityBeanMetaData entity = assertEntity(ejbName + "EjbName", enterpriseBeansMetaData);
      assertFullEntity(ejbName, entity, mode);     
      return entity;
   }

   public void assertFullEntity(String ejbName, EntityBeanMetaData entity, Mode mode)
   {
      assertId(ejbName, entity);
      assertClass(ejbName, "Home", entity.getHome());
      assertClass(ejbName, "Remote", entity.getRemote());
      assertClass(ejbName, "LocalHome", entity.getLocalHome());
      assertClass(ejbName, "Local", entity.getLocal());
      assertClass(ejbName, "EjbClass", entity.getEjbClass());
      assertEquals(PersistenceType.Container, entity.getPersistenceType());
      assertEquals(ejbName + "PrimKeyClass", entity.getPrimKeyClass());
      assertTrue(entity.isReentrant());
      assertEquals("2.x", entity.getCmpVersion());
      assertFalse(entity.isCMP1x());
      assertEquals(ejbName + "AbstractSchemaName", entity.getAbstractSchemaName());
      assertCmpFields(ejbName, 2, entity.getCmpFields());
      assertEquals(ejbName + "PrimKeyField", entity.getPrimKeyField());
      assertEnvironment(ejbName, entity.getJndiEnvironmentRefsGroup(), true, mode);
      assertContainerTransactions(ejbName, 6, 6, entity.getContainerTransactions());
      assertMethodPermissions(ejbName, ejbName + "MethodPermission", 3, 3, entity.getMethodPermissions());
      assertExcludeList(ejbName, 5, 5, entity.getExcludeList());
      assertSecurityRoleRefs(ejbName, 2, entity.getSecurityRoleRefs());
      assertSecurityIdentity(ejbName, "SecurityIdentity", entity.getSecurityIdentity(), true, mode);
      assertQueries(ejbName, 3, entity.getQueries());
   }

   private void assertCmpFields(String ejbName, int size, CMPFieldsMetaData cmpFieldsMetaData)
   {
      assertNotNull(cmpFieldsMetaData);
      assertEquals(size, cmpFieldsMetaData.size());
      int count = 1;
      for (CMPFieldMetaData cmpField : cmpFieldsMetaData)
      {
         assertId(ejbName + "CmpField" + count, cmpField);
         assertEquals(ejbName + "CmpField" + count, cmpField.getFieldName());
         ++count;
      }
   }

   private void assertQueries(String ejbName, int size, QueriesMetaData queriesMetaData)
   {
      assertNotNull(queriesMetaData);
      assertEquals(size, queriesMetaData.size());
      int count = 1;
      for (QueryMetaData query : queriesMetaData)
      {
         assertId(ejbName + "Query" + count, query);
         // en-entityMQueryN-desc
         assertEquals("en-"+ejbName+"Query"+count+"-desc", query.getDescriptions().value()[0].value());
         assertQueryMethod(ejbName + "Query" + count, 2, query.getQueryMethod());
         if (count == 1 || count == 3)
            assertEquals(ResultTypeMapping.Local, query.getResultTypeMapping());
         else
            assertEquals(ResultTypeMapping.Remote, query.getResultTypeMapping());
         assertEquals(ejbName + "Query" + count + "EjbQL", query.getEjbQL());
         ++count;
      }
   }

   private void assertQueryMethod(String ejbName, int size, QueryMethodMetaData queryMethodMetaData)
   {
      assertNotNull(queryMethodMetaData);
      assertId(ejbName + "QueryMethod", queryMethodMetaData);
      assertEquals(ejbName + "QueryMethod", queryMethodMetaData.getMethodName());
      if (size > 0)
         assertMethodParams(ejbName + "QueryMethod", size, queryMethodMetaData.getMethodParams());
   }
  
   protected MessageDrivenBeanMetaData assertFullMDB(String ejbName, IEnterpriseBeansMetaData enterpriseBeansMetaData, Mode mode)
   {
      MessageDrivenBeanMetaData mdb = assertMDB(ejbName + "EjbName", enterpriseBeansMetaData);
      assertId(ejbName, mdb);
      assertEquals(ejbName + "MessagingType", mdb.getMessagingType());
      assertEquals(TransactionManagementType.CONTAINER, mdb.getTransactionType());
      assertEquals(ejbName + "MessageDestinationType", mdb.getMessageDestinationType());
      assertEquals(ejbName + "MessageDestinationLink", mdb.getMessageDestinationLink());
      assertActivationConfig(ejbName, mdb.getActivationConfig(), mode);
      assertEnvironment(ejbName, mdb.getJndiEnvironmentRefsGroup(), true, mode);
      assertContainerTransactions(ejbName, 6, 6, mdb.getContainerTransactions());
      assertMethodPermissions(ejbName, ejbName + "MethodPermission", 3, 3, mdb.getMethodPermissions());
      assertExcludeList(ejbName, 5, 5, mdb.getExcludeList());
      assertSecurityIdentity(ejbName, "SecurityIdentity", mdb.getSecurityIdentity(), true, mode);
     
      return mdb;
   }
  
   private void assertEjbClientJar(EjbJarMetaData ejbJarMetaData)
   {
      assertEquals("some/path/client.jar", ejbJarMetaData.getEjbClientJar());
   }

   @Override
   protected void assertPersistenceContextRefs(String prefix, int size, PersistenceContextReferencesMetaData persistenceContextReferencesMetaData, Mode mode)
   {
      assertNull(persistenceContextReferencesMetaData);
   }

   @Override
   protected void assertPersistenceUnitRefs(String prefix, int size, PersistenceUnitReferencesMetaData persistenceUnitReferencesMetaData, Mode mode)
   {
      assertNull(persistenceUnitReferencesMetaData);
   }

   @Override
   protected void assertLifecycleCallbacks(String ejbName, String type, int size, LifecycleCallbacksMetaData lifecycleCallbacksMetaData)
   {
      assertNull(lifecycleCallbacksMetaData);
   }

   @Override
   protected void assertResourceGroup(String prefix, ResourceInjectionMetaData resourceInjectionMetaData, boolean full, boolean first, Mode mode)
   {
      return;
   }

   @Override
   protected void assertJndiName(String prefix, boolean full, String jndiName, Mode mode)
   {
      if (full)
         assertNull(jndiName);
      else
         assertEquals(prefix + "JndiName", jndiName);
   }
}
TOP

Related Classes of org.jboss.test.metadata.ejb.EjbJar21EverythingUnitTestCase

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.