@Test public void testMerging() { GenericBeanMetaData ebMetaData1 = new GenericBeanMetaData(EjbType.ENTITY); ebMetaData1.setName("Entity Bean 1"); GenericBeanMetaData ebMetaData2 = new GenericBeanMetaData(EjbType.ENTITY); ebMetaData2.setName("Entity Bean 2"); ebMetaData1.merge(ebMetaData1, ebMetaData2); }
/** * Test that {@link GenericBeanMetaData#merge(AbstractEnterpriseBeanMetaData, * AbstractEnterpriseBeanMetaData)} works as expected for timer metadata */ @Test public void testSessionBeanTimerMerge() { TimerMetaData nonPersistentTimer = new TimerMetaData(); nonPersistentTimer.setPersistent(false); TimerMetaData persistentTimer = new TimerMetaData(); persistentTimer.setPersistent(true); GenericBeanMetaData original = new GenericBeanMetaData(EjbType.SESSION); original.setEjbName("DummyBean"); original.addTimer(nonPersistentTimer); GenericBeanMetaData overriden = new GenericBeanMetaData(EjbType.SESSION); overriden.setEjbName("DummyBean"); overriden.addTimer(persistentTimer); GenericBeanMetaData mergedBean = new GenericBeanMetaData(EjbType.SESSION); mergedBean.merge(overriden, original); List<TimerMetaData> mergedTimers = mergedBean.getTimers(); Assert.assertNotNull("Merged timers is null", mergedTimers); Assert.assertEquals("Unexpected number of timers in merged metadata", 2, mergedTimers.size()); boolean foundPersistentTimer = false; boolean foundNonPersistentTimer = false; for (TimerMetaData timer : mergedTimers) { if (timer.isPersistent()) { foundPersistentTimer = true; } else { foundNonPersistentTimer = true; } } Assert.assertTrue("Persistent timer not found in merged metadata", foundPersistentTimer); Assert.assertTrue("Non-Persistent timer not found in merged metadata", foundNonPersistentTimer); }
/** * Test that {@link GenericBeanMetaData#merge(AbstractEnterpriseBeanMetaData, * AbstractEnterpriseBeanMetaData)} works as expected for timer metadata */ @Test public void testSessionBeanTimerMerge2() { TimerMetaData persistentTimer = new TimerMetaData(); persistentTimer.setPersistent(true); GenericBeanMetaData original = new GenericBeanMetaData(EjbType.SESSION); original.setEjbName("DummyBean"); GenericBeanMetaData overriden = new GenericBeanMetaData(EjbType.SESSION); overriden.setEjbName("DummyBean"); overriden.addTimer(persistentTimer); GenericBeanMetaData mergedBean = new GenericBeanMetaData(EjbType.SESSION); mergedBean.merge(overriden, original); List<TimerMetaData> mergedTimers = mergedBean.getTimers(); Assert.assertNotNull("Merged timers is null", mergedTimers); Assert.assertEquals("Unexpected number of timers in merged metadata", 1, mergedTimers.size()); Assert.assertTrue( "Timer in merged metadata is not persistent", mergedTimers.get(0).isPersistent()); }
private void processSessionBeanMetaData( final DeploymentUnit deploymentUnit, final SessionBeanMetaData sessionBean) throws DeploymentUnitProcessingException { final EjbJarDescription ejbJarDescription = getEjbJarDescription(deploymentUnit); final CompositeIndex compositeIndex = deploymentUnit.getAttachment( org.jboss.as.server.deployment.Attachments.COMPOSITE_ANNOTATION_INDEX); final String beanName = sessionBean.getName(); SessionType sessionType = sessionBean.getSessionType(); if (sessionType == null && sessionBean instanceof GenericBeanMetaData) { final GenericBeanMetaData bean = (GenericBeanMetaData) sessionBean; if (bean.getEjbType() == EjbType.SESSION) { sessionType = determineSessionType(sessionBean.getEjbClass(), compositeIndex); if (sessionType == null) { throw EjbMessages.MESSAGES.sessionTypeNotSpecified(beanName); } } else { // it is not a session bean, so we ignore it return; } } else if (sessionType == null) { sessionType = determineSessionType(sessionBean.getEjbClass(), compositeIndex); if (sessionType == null) { throw EjbMessages.MESSAGES.sessionTypeNotSpecified(beanName); } } final String beanClassName = sessionBean.getEjbClass(); final SessionBeanComponentDescription sessionBeanDescription; switch (sessionType) { case Stateless: sessionBeanDescription = new StatelessComponentDescription( beanName, beanClassName, ejbJarDescription, deploymentUnit.getServiceName(), sessionBean); break; case Stateful: sessionBeanDescription = new StatefulComponentDescription( beanName, beanClassName, ejbJarDescription, deploymentUnit.getServiceName(), sessionBean); // TODO: Handle passivation capable for stateful beans in EJB3.2 break; case Singleton: sessionBeanDescription = new SingletonComponentDescription( beanName, beanClassName, ejbJarDescription, deploymentUnit.getServiceName(), sessionBean); break; default: throw EjbMessages.MESSAGES.unknownSessionBeanType(sessionType.name()); } addComponent(deploymentUnit, sessionBeanDescription); }