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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]