You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by ga...@apache.org on 2010/09/28 05:52:05 UTC
svn commit: r1002003 -
/geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/ResourceRefBuilder.java
Author: gawor
Date: Tue Sep 28 03:52:05 2010
New Revision: 1002003
URL: http://svn.apache.org/viewvc?rev=1002003&view=rev
Log:
GERONIMO-5078: Support @Resource injection of @ManagedBean classes
Modified:
geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/ResourceRefBuilder.java
Modified: geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/ResourceRefBuilder.java
URL: http://svn.apache.org/viewvc/geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/ResourceRefBuilder.java?rev=1002003&r1=1002002&r2=1002003&view=diff
==============================================================================
--- geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/ResourceRefBuilder.java (original)
+++ geronimo/server/trunk/plugins/connector-1_6/geronimo-connector-builder-1_6/src/main/java/org/apache/geronimo/connector/deployment/ResourceRefBuilder.java Tue Sep 28 03:52:05 2010
@@ -30,6 +30,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
+import javax.annotation.ManagedBean;
import javax.annotation.Resource;
import javax.xml.namespace.QName;
import org.apache.geronimo.common.DeploymentException;
@@ -177,7 +178,7 @@ public class ResourceRefBuilder extends
private Object buildReference(Module module, String name, String type, GerResourceRefType gerResourceRef) throws DeploymentException {
Bundle bundle = module.getEarContext().getDeploymentBundle();
- Class iface;
+ Class<?> iface;
try {
iface = bundle.loadClass(type);
} catch (ClassNotFoundException e) {
@@ -208,6 +209,10 @@ public class ResourceRefBuilder extends
EnvironmentBuilder.mergeEnvironments(module.getEnvironment(), corbaEnvironment);
return new ORBReference(moduleId, corbaName);
}
+ } else if (iface.isAnnotationPresent(ManagedBean.class)) {
+ ManagedBean managed = iface.getAnnotation(ManagedBean.class);
+ String beanName = managed.value().length() == 0 ? iface.getSimpleName() : managed.value();
+ return new JndiReference("java:module/" + beanName);
} else {
//determine jsr-77 type from interface
String j2eeType;
@@ -351,7 +356,8 @@ public class ResourceRefBuilder extends
"[field] " + (field != null ? field.getName() : null) + " ): Entry");
String resourceName = getResourceName(annotation, method, field);
- String resourceType = getResourceType(annotation, method, field);
+ Class resourceTypeClass = getResourceTypeClass(annotation, method, field);
+ String resourceType = resourceTypeClass.getCanonicalName();
if (resourceType.equals("javax.sql.DataSource") ||
resourceType.equals("javax.mail.Session") ||
@@ -359,7 +365,8 @@ public class ResourceRefBuilder extends
resourceType.equals("org.omg.CORBA.ORB") ||
resourceType.equals("org.omg.CORBA_2_3.ORB") ||
resourceType.equals("org.omg.CORBA_2_4.ORB") ||
- resourceType.endsWith("ConnectionFactory")) {
+ resourceType.endsWith("ConnectionFactory") ||
+ isManagedBeanReference(resourceTypeClass, annotation)) {
log.debug("processResource(): <resource-ref> found");
@@ -435,6 +442,17 @@ public class ResourceRefBuilder extends
return false;
}
+
+ private boolean isManagedBeanReference(Class<?> resourceTypeClass, Resource annotation) {
+ // Check if this is @Resource managedBean injection. Handle two cases:
+ // 1) @Resource managedBeanClass; or
+ // 2) @Resource(lookup='...') managedBeanInterfaceClass;
+ if (resourceTypeClass.isAnnotationPresent(ManagedBean.class) ||
+ (resourceTypeClass.isInterface() && annotation.lookup().length() != 0)) {
+ return true;
+ }
+ return false;
+ }
}
-
+
}