You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by me...@apache.org on 2006/12/03 20:41:52 UTC

svn commit: r481866 - /incubator/tuscany/java/sca/services/persistence/common/src/main/java/org/apache/tuscany/service/persistence/common/PersistenceContextProcessor.java

Author: meerajk
Date: Sun Dec  3 11:41:51 2006
New Revision: 481866

URL: http://svn.apache.org/viewvc?view=rev&rev=481866
Log:
Added support for property overriding in @PersistenceContext.

Modified:
    incubator/tuscany/java/sca/services/persistence/common/src/main/java/org/apache/tuscany/service/persistence/common/PersistenceContextProcessor.java

Modified: incubator/tuscany/java/sca/services/persistence/common/src/main/java/org/apache/tuscany/service/persistence/common/PersistenceContextProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/persistence/common/src/main/java/org/apache/tuscany/service/persistence/common/PersistenceContextProcessor.java?view=diff&rev=481866&r1=481865&r2=481866
==============================================================================
--- incubator/tuscany/java/sca/services/persistence/common/src/main/java/org/apache/tuscany/service/persistence/common/PersistenceContextProcessor.java (original)
+++ incubator/tuscany/java/sca/services/persistence/common/src/main/java/org/apache/tuscany/service/persistence/common/PersistenceContextProcessor.java Sun Dec  3 11:41:51 2006
@@ -18,9 +18,13 @@
  */
 package org.apache.tuscany.service.persistence.common;
 
+import java.util.Properties;
+
 import javax.persistence.EntityManager;
 import javax.persistence.EntityManagerFactory;
 import javax.persistence.PersistenceContext;
+import javax.persistence.PersistenceContextType;
+import javax.persistence.PersistenceProperty;
 
 import org.apache.tuscany.spi.ObjectFactory;
 import org.apache.tuscany.spi.annotation.Autowire;
@@ -69,7 +73,7 @@
             emf = builder.newEntityManagerFactory(unitName, context.getClassLoader());
             parent.registerJavaObject(unitName, EntityManagerFactory.class, emf);
         }
-        ObjectFactory factory = new EmObjectFactory(emf);
+        ObjectFactory factory = new EmObjectFactory(emf, annotation);
         property.setDefaultValueFactory(factory);
 
     }
@@ -77,16 +81,28 @@
     private class EmObjectFactory implements ObjectFactory<EntityManager> {
         
         private EntityManagerFactory emf;
+        private PersistenceContext annotation;
 
-        public EmObjectFactory(EntityManagerFactory emf) {
+        public EmObjectFactory(EntityManagerFactory emf, PersistenceContext annotation) {
             this.emf = emf;
+            this.annotation = annotation;
         }
 
         public EntityManager getInstance() {
-            // TODO This needs to be proxied
-            EntityManager em = emf.createEntityManager();
-            em.joinTransaction();
-            return em;
+            
+            PersistenceContextType type = annotation.type();
+            if(type == PersistenceContextType.TRANSACTION) {
+                // TODO This needs to be proxied
+                Properties props = new Properties();
+                for(PersistenceProperty property : annotation.properties()) {
+                    props.put(property.name(), property.value());
+                }
+                EntityManager em = emf.createEntityManager(props);
+                em.joinTransaction();
+                return em;
+            } else {
+                throw new UnsupportedOperationException("Extended persistence contexts not supported");
+            }
         }
         
     }



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org