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/15 00:36:16 UTC

svn commit: r487389 - in /incubator/tuscany/java/sca/services/persistence/common/src: main/java/org/apache/tuscany/service/persistence/common/PersistenceUnitProcessor.java test/java/org/apache/tuscany/service/persistence/common/TestService1.java

Author: meerajk
Date: Thu Dec 14 15:36:15 2006
New Revision: 487389

URL: http://svn.apache.org/viewvc?view=rev&rev=487389
Log:
Added JPA annotation injection as a resource.

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

Modified: incubator/tuscany/java/sca/services/persistence/common/src/main/java/org/apache/tuscany/service/persistence/common/PersistenceUnitProcessor.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/persistence/common/src/main/java/org/apache/tuscany/service/persistence/common/PersistenceUnitProcessor.java?view=diff&rev=487389&r1=487388&r2=487389
==============================================================================
--- incubator/tuscany/java/sca/services/persistence/common/src/main/java/org/apache/tuscany/service/persistence/common/PersistenceUnitProcessor.java (original)
+++ incubator/tuscany/java/sca/services/persistence/common/src/main/java/org/apache/tuscany/service/persistence/common/PersistenceUnitProcessor.java Thu Dec 14 15:36:15 2006
@@ -18,68 +18,64 @@
  */
 package org.apache.tuscany.service.persistence.common;
 
+import java.lang.reflect.Field;
+
 import javax.persistence.EntityManagerFactory;
 import javax.persistence.PersistenceUnit;
 
 import org.apache.tuscany.spi.ObjectFactory;
-import org.apache.tuscany.spi.annotation.Autowire;
 import org.apache.tuscany.spi.component.CompositeComponent;
 import org.apache.tuscany.spi.component.SystemAtomicComponent;
 import org.apache.tuscany.spi.deployer.DeploymentContext;
-import org.apache.tuscany.spi.implementation.java.AbstractPropertyProcessor;
-import org.apache.tuscany.spi.implementation.java.ImplementationProcessorService;
+import org.apache.tuscany.spi.implementation.java.ImplementationProcessorExtension;
 import org.apache.tuscany.spi.implementation.java.JavaMappedProperty;
+import org.apache.tuscany.spi.implementation.java.JavaMappedReference;
+import org.apache.tuscany.spi.implementation.java.JavaMappedService;
+import org.apache.tuscany.spi.implementation.java.PojoComponentType;
+import org.apache.tuscany.spi.implementation.java.ProcessingException;
+import org.apache.tuscany.spi.implementation.java.Resource;
 
 /**
  * Annotation processor for injecting <code>PersistenceUnit</code> 
  * annotations on properties.
  *
  */
-public class PersistenceUnitProcessor extends AbstractPropertyProcessor<PersistenceUnit> {
+public class PersistenceUnitProcessor extends ImplementationProcessorExtension {
 
     /** Persistence unit builder */
     private PersistenceUnitBuilder builder = new DefaultPersistenceUnitBuilder();
 
-    /**
-     * Injects the implementation processor service.
-     * @param service Implementation processor service.
-     */
-    public PersistenceUnitProcessor(@Autowire ImplementationProcessorService service) {
-        super(PersistenceUnit.class, service);
-    }
-
-    /**
-     * Defaults to the field name.
-     */
-    @Override
-    protected String getName(PersistenceUnit persistenceUnit) {
-        return null;
-    }
-
-    /**
-     * Initializes the property.
-     */
-    @SuppressWarnings("unchecked")
-    protected <T> void initProperty(JavaMappedProperty<T> property, PersistenceUnit annotation, CompositeComponent parent, DeploymentContext context) {
-
+    public void visitField(CompositeComponent parent,
+                           Field field,
+                           PojoComponentType<JavaMappedService, JavaMappedReference, JavaMappedProperty<?>> type,
+                           DeploymentContext context) throws ProcessingException {
+
+        PersistenceUnit annotation = field.getAnnotation(PersistenceUnit.class);
+        if (annotation == null) {
+            return;
+        }
         String unitName = annotation.unitName();
-        
-        SystemAtomicComponent component = (SystemAtomicComponent) parent.getSystemChild(unitName); 
-        EntityManagerFactory emf; 
-        if (component == null) { 
-        	emf = builder.newEntityManagerFactory(unitName, context.getClassLoader()); 
-        	parent.registerJavaObject(unitName, EntityManagerFactory.class, emf); 
-        } else { 
-        	emf = (EntityManagerFactory) component.getTargetInstance(); 
+
+        SystemAtomicComponent component = (SystemAtomicComponent)parent.getSystemChild(unitName);
+        EntityManagerFactory emf;
+        if (component == null) {
+            emf = builder.newEntityManagerFactory(unitName, context.getClassLoader());
+            parent.registerJavaObject(unitName, EntityManagerFactory.class, emf);
+        } else {
+            emf = (EntityManagerFactory)component.getTargetInstance();
         }
         
         ObjectFactory factory = new EmfObjectFactory(emf);
-        property.setDefaultValueFactory(factory);
-
+        Resource resource = new Resource();
+        resource.setObjectFactory(factory);
+        resource.setMember(field);
+        resource.setType(field.getType());
+        resource.setName(unitName);
+        type.add(resource);
     }
 
     private class EmfObjectFactory implements ObjectFactory<EntityManagerFactory> {
-        
+
         private EntityManagerFactory emf;
 
         public EmfObjectFactory(EntityManagerFactory emf) {
@@ -89,7 +85,7 @@
         public EntityManagerFactory getInstance() {
             return emf;
         }
-        
+
     }
 
 }

Modified: incubator/tuscany/java/sca/services/persistence/common/src/test/java/org/apache/tuscany/service/persistence/common/TestService1.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sca/services/persistence/common/src/test/java/org/apache/tuscany/service/persistence/common/TestService1.java?view=diff&rev=487389&r1=487388&r2=487389
==============================================================================
--- incubator/tuscany/java/sca/services/persistence/common/src/test/java/org/apache/tuscany/service/persistence/common/TestService1.java (original)
+++ incubator/tuscany/java/sca/services/persistence/common/src/test/java/org/apache/tuscany/service/persistence/common/TestService1.java Thu Dec 14 15:36:15 2006
@@ -15,7 +15,7 @@
     protected TransactionManager tx;
     
     @PersistenceUnit(unitName="test")
-    private EntityManagerFactory emf;
+    protected EntityManagerFactory emf;
     
     public void testMethod() throws Exception {
         



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