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