@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);
 }
Example #2
0
  /**
   * 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);
  }
Example #3
0
  /**
   * 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);
  }