[jboss-cvs] JBossAS SVN: r91661 - projects/webbeans-ri-int/trunk/ejb/src/main/java/org/jboss/webbeans/integration/persistence.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Sat Jul 25 18:28:35 EDT 2009


Author: pete.muir at jboss.org
Date: 2009-07-25 18:28:35 -0400 (Sat, 25 Jul 2009)
New Revision: 91661

Modified:
   projects/webbeans-ri-int/trunk/ejb/src/main/java/org/jboss/webbeans/integration/persistence/JBossJpaServices.java
Log:
Add support for injecting PUs

Modified: projects/webbeans-ri-int/trunk/ejb/src/main/java/org/jboss/webbeans/integration/persistence/JBossJpaServices.java
===================================================================
--- projects/webbeans-ri-int/trunk/ejb/src/main/java/org/jboss/webbeans/integration/persistence/JBossJpaServices.java	2009-07-25 17:01:06 UTC (rev 91660)
+++ projects/webbeans-ri-int/trunk/ejb/src/main/java/org/jboss/webbeans/integration/persistence/JBossJpaServices.java	2009-07-25 22:28:35 UTC (rev 91661)
@@ -9,6 +9,7 @@
 import javax.persistence.EntityManager;
 import javax.persistence.EntityManagerFactory;
 import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceUnit;
 
 import org.jboss.deployers.structure.spi.DeploymentUnit;
 import org.jboss.ejb3.common.deployers.spi.AttachmentNames;
@@ -53,7 +54,7 @@
       }
       try
       {
-         return resolvePersistenceContext((injectionPoint.getAnnotated().getAnnotation(PersistenceContext.class).unitName()));
+         return resolvePersistenceUnit((injectionPoint.getAnnotated().getAnnotation(PersistenceContext.class).unitName())).createEntityManager();
       }
       catch (IllegalStateException e)
       {
@@ -61,12 +62,27 @@
       }
    }
    
-   public EntityManager resolvePersistenceContext(String unitName)
+   public EntityManagerFactory resolvePersistenceUnit(InjectionPoint injectionPoint)
    {
-      return resolvePersistenceUnit(unitName).createEntityManager();
+      if (!injectionPoint.getAnnotated().isAnnotationPresent(PersistenceUnit.class))
+      {
+         throw new IllegalArgumentException("No @PersistenceUnit annotation found on injection point " + injectionPoint);
+      }
+      if (injectionPoint.getMember() instanceof Method && ((Method) injectionPoint.getMember()).getParameterTypes().length != 1)
+      {
+         throw new IllegalArgumentException("Injection point represents a method which doesn't follow JavaBean conventions (must have exactly one parameter) " + injectionPoint);
+      }
+      try
+      {
+         return resolvePersistenceUnit((injectionPoint.getAnnotated().getAnnotation(PersistenceUnit.class).unitName()));
+      }
+      catch (IllegalStateException e)
+      {
+         throw new IllegalStateException("Unable to resolve persistence context for " + injectionPoint);
+      }
    }
    
-   public EntityManagerFactory resolvePersistenceUnit(String unitName)
+   private EntityManagerFactory resolvePersistenceUnit(String unitName)
    {
       if (unitName == null)
       {




More information about the jboss-cvs-commits mailing list