FileDocCategorySizeDatePackage
UIDGeneratorBean.javaAPI DocJBoss 4.2.11318Fri Jul 13 20:56:00 BST 2007xpetstore.util.uidgen.ejb

UIDGeneratorBean.java

package xpetstore.util.uidgen.ejb;

import javax.ejb.EJBException;
import javax.ejb.TransactionAttribute;
import javax.ejb.TransactionAttributeType;

import javax.ejb.Local;
import javax.ejb.Stateless;

import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

/**
 *
 * @ ejb.bean
 *      name="UIDGenerator"
 *      type="Stateless"
 *      view-type="local"
 * @ ejb.transaction
 *      type="Required"
 * @ ejb.ejb-ref
 *      ejb-name="Counter"
 *      view-type="local"
 *      ref-name="ejb/CounterLocal"
 */

@Stateless(name = "UIDGenerator")
@Local(UIDGenerator.class)
@TransactionAttribute(TransactionAttributeType.REQUIRED)
public class UIDGeneratorBean
{
   @PersistenceContext
   private EntityManager manager;

   /**
    * @ ejb.interface-method
    */
   public int getUniqueId(String idPrefix)
   {
      return getCounter(idPrefix).nextValue();
   }

   private Counter getCounter(String name)
   {
      Counter counter = null;
      try
      {
         counter = manager.find(Counter.class, name);
         if (counter == null)
         {
            counter = new Counter(name);
            manager.persist(counter);
         }
      } catch (Exception e)
      {
         e.printStackTrace();
         throw new EJBException(e);
      }

      return counter;
   }
}