You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by db...@apache.org on 2007/01/20 04:39:31 UTC
svn commit: r498059 - in
/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb:
alt/config/AnnotationDeployer.java
assembler/classic/EnterpriseBeanBuilder.java
Author: dblevins
Date: Fri Jan 19 19:39:30 2007
New Revision: 498059
URL: http://svn.apache.org/viewvc?view=rev&rev=498059
Log:
Patch from Manu George, OPENEJB-103 and OPENEJB-104 for usage of @Resource for resource-ref and resource-env-ref
Thanks Manu!
Modified:
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/AnnotationDeployer.java
incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/AnnotationDeployer.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/AnnotationDeployer.java?view=diff&rev=498059&r1=498058&r2=498059
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/AnnotationDeployer.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/alt/config/AnnotationDeployer.java Fri Jan 19 19:39:30 2007
@@ -38,6 +38,10 @@
import org.apache.openejb.jee.PersistenceUnitRef;
import org.apache.openejb.jee.Property;
import org.apache.openejb.jee.RemoteBean;
+import org.apache.openejb.jee.ResAuth;
+import org.apache.openejb.jee.ResSharingScope;
+import org.apache.openejb.jee.ResourceEnvRef;
+import org.apache.openejb.jee.ResourceRef;
import org.apache.openejb.jee.SessionBean;
import org.apache.openejb.jee.StatefulBean;
import org.apache.openejb.jee.StatelessBean;
@@ -72,6 +76,8 @@
import javax.persistence.PersistenceProperty;
import javax.persistence.PersistenceUnit;
import javax.persistence.PersistenceUnits;
+import javax.resource.spi.ManagedConnectionFactory;
+
import java.io.File;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
@@ -659,7 +665,90 @@
break;
}
}
-
+
+
+ if(reference == null) {
+ String type = null;
+ if(resource.type() != java.lang.Object.class) {
+ type = resource.type().getName();
+ } else {
+ type = member.getType().getName();
+ }
+ /* TODO message-destination-refs have not been considered . Currently the types that are
+ * not in the types in knownConnectionFactoryTypes array are considered resource-env-refs
+ * This approach needs to be changed as it is just a hack to get the functionality working.
+ */
+
+
+ String[] knownConnectionFactoryTypes = {"javax.sql.DataSource","javax.jms.ConnectionFactory","javax.jms.QueueConnectionFactory","javax.jms.TopicConnectionFactory","javax.mail.Session","java.net.URL"};
+ String[] knownEnvironmentEntries = {"java.lang.String", "java.lang.Character", "java.lang.Integer", "java.lang.Boolean", "java.lang.Double",
+ "java.lang.Byte", "java.lang.Short", "java.lang.Long", "java.lang.Float","int","char","boolean","double","byte","short","long","float"};
+
+ if(contains(knownConnectionFactoryTypes,type)) {
+ ResourceRef resourceRef = null;
+ List<ResourceRef> resourceRefs = consumer.getResourceRef();
+ for (ResourceRef resRef : resourceRefs) {
+ if( resRef.getName().equals(refName)) {
+ resourceRef = resRef;
+ break;
+ }
+ }
+
+ if (resourceRef == null) {
+ resourceRef = new ResourceRef();
+ resourceRef.setName(refName);
+ resourceRefs.add(resourceRef);
+ }
+
+ if (resourceRef.getResAuth() == null) {
+ if (resource.authenticationType() == Resource.AuthenticationType.APPLICATION){
+ resourceRef.setResAuth(ResAuth.APPLICATION);
+ } else {
+ resourceRef.setResAuth(ResAuth.CONTAINER);
+ }
+ }
+
+ if (resourceRef.getResType() == null || ("").equals(resourceRef.getResType())) {
+ if (resource.type() != java.lang.Object.class) {
+ resourceRef.setResType(resource.type().getName());
+ } else {
+ resourceRef.setResType(member.getType().getName());
+ }
+ }
+
+ if (resourceRef.getResSharingScope() == null){
+ if(resource.shareable() == false) {
+ resourceRef.setResSharingScope(ResSharingScope.UNSHAREABLE);
+ } else {
+ resourceRef.setResSharingScope(ResSharingScope.SHAREABLE);
+ }
+ }
+ reference = resourceRef;
+ } else if (!contains(knownEnvironmentEntries,type)){
+
+ List<ResourceEnvRef> resourceEnvRefs = consumer.getResourceEnvRef();
+ ResourceEnvRef resourceEnvRef = null;
+ for (ResourceEnvRef resEnvRef : resourceEnvRefs) {
+ if(resEnvRef.getName().equals(refName)) {
+ resourceEnvRef = resEnvRef;
+ break;
+ }
+ }
+ if (resourceEnvRef == null) {
+ resourceEnvRef = new ResourceEnvRef();
+ resourceEnvRef.setName(refName);
+ resourceEnvRefs.add(resourceEnvRef);
+ }
+ if (resourceEnvRef.getResourceEnvRefType() == null || ("").equals(resourceEnvRef.getResourceEnvRefType())) {
+ if (resource.type() != java.lang.Object.class) {
+ resourceEnvRef.setResourceEnvRefType(resource.type().getName());
+ } else {
+ resourceEnvRef.setResourceEnvRefType(member.getType().getName());
+ }
+ }
+ reference = resourceEnvRef;
+ }
+ }
if (reference == null) {
return;
}
@@ -853,6 +942,16 @@
return new ArrayList(classes);
}
+ private boolean contains(Object[] types,Object type){
+ int size = types.length;
+ for (int i = 0; i < size; i++) {
+ if (type.equals(types[i])) {
+ return true;
+ }
+ }
+ return false;
+ }
+
private void addContainerTransaction(TransactionAttribute attribute, String ejbName, Method method, AssemblyDescriptor assemblyDescriptor) {
ContainerTransaction ctx = new ContainerTransaction(cast(attribute.value()), ejbName, method.getName(), asStrings(method.getParameterTypes()));
assemblyDescriptor.getContainerTransaction().add(ctx);
Modified: incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java
URL: http://svn.apache.org/viewvc/incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java?view=diff&rev=498059&r1=498058&r2=498059
==============================================================================
--- incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java (original)
+++ incubator/openejb/trunk/openejb3/container/openejb-core/src/main/java/org/apache/openejb/assembler/classic/EnterpriseBeanBuilder.java Fri Jan 19 19:39:30 2007
@@ -159,7 +159,15 @@
deployment.getInjections().add(injection);
}
}
-
+
+ for (ResourceEnvReferenceInfo info : bean.jndiEnc.resourceEnvRefs) {
+ for (InjectionInfo target : info.targets) {
+ Class targetClass = loadClass(target.className, "classNotFound.injectionTarget");
+ Injection injection = new Injection(info.resourceEnvRefName, target.propertyName, targetClass);
+ deployment.getInjections().add(injection);
+ }
+ }
+
deployment.setPostConstruct(getCallback(ejbClass, bean.postConstruct));
deployment.setPreDestroy(getCallback(ejbClass, bean.preDestroy));
deployment.setEjbTimeout(getTimeout(ejbClass, bean.timeoutMethod));