[jboss-cvs] JBossAS SVN: r77949 - trunk/tomcat/src/main/org/jboss/web/tomcat/service/injection.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Sep 4 04:49:29 EDT 2008
Author: emuckenhuber
Date: 2008-09-04 04:49:28 -0400 (Thu, 04 Sep 2008)
New Revision: 77949
Modified:
trunk/tomcat/src/main/org/jboss/web/tomcat/service/injection/WebEJBHandler.java
trunk/tomcat/src/main/org/jboss/web/tomcat/service/injection/WebEJBRemoteHandler.java
Log:
[JBAS-5673] update injection handlers
Modified: trunk/tomcat/src/main/org/jboss/web/tomcat/service/injection/WebEJBHandler.java
===================================================================
--- trunk/tomcat/src/main/org/jboss/web/tomcat/service/injection/WebEJBHandler.java 2008-09-04 07:13:44 UTC (rev 77948)
+++ trunk/tomcat/src/main/org/jboss/web/tomcat/service/injection/WebEJBHandler.java 2008-09-04 08:49:28 UTC (rev 77949)
@@ -28,6 +28,8 @@
import org.jboss.deployment.spi.DeploymentEndpointResolver;
import org.jboss.injection.InjectionContainer;
import org.jboss.logging.Logger;
+import org.jboss.metadata.javaee.spec.AnnotatedEJBReferenceMetaData;
+import org.jboss.metadata.javaee.spec.AnnotatedEJBReferencesMetaData;
import org.jboss.metadata.javaee.spec.EJBLocalReferenceMetaData;
import org.jboss.metadata.javaee.spec.Environment;
import org.jboss.metadata.web.jboss.JBossWebMetaData;
@@ -58,7 +60,12 @@
super.loadXml(xml, container);
if (xml != null)
{
- if (xml.getEjbLocalReferences() != null) loadEjbLocalXml(xml.getEjbLocalReferences(), container);
+ // local references
+ if (xml.getEjbLocalReferences() != null)
+ loadEjbLocalXml(xml.getEjbLocalReferences(), container);
+ // annotated references
+ if (xml.getAnnotatedEjbReferences() != null)
+ loadEjbRefXml(xml.getAnnotatedEjbReferences(), container);
}
}
@@ -72,4 +79,15 @@
ejbRefXml(ref, interfaceName, container, errorType);
}
}
+
+ protected void loadEjbRefXml(AnnotatedEJBReferencesMetaData refs, InjectionContainer container)
+ {
+ for (AnnotatedEJBReferenceMetaData ref : refs)
+ {
+ String interfaceName = ref.getBeanInterface().getName();
+ String errorType = "@EJB";
+
+ ejbRefXml(ref, interfaceName, container, errorType);
+ }
+ }
}
Modified: trunk/tomcat/src/main/org/jboss/web/tomcat/service/injection/WebEJBRemoteHandler.java
===================================================================
--- trunk/tomcat/src/main/org/jboss/web/tomcat/service/injection/WebEJBRemoteHandler.java 2008-09-04 07:13:44 UTC (rev 77948)
+++ trunk/tomcat/src/main/org/jboss/web/tomcat/service/injection/WebEJBRemoteHandler.java 2008-09-04 08:49:28 UTC (rev 77949)
@@ -82,24 +82,11 @@
if (xml != null)
{
log.trace("ejbRefs = " + xml.getEjbReferences());
- if (xml.getAnnotatedEjbReferences() != null)
- loadEjbRefXml(xml.getAnnotatedEjbReferences(), container);
if (xml.getEjbReferences() != null)
loadEjbRefXml(xml.getEjbReferences(), container);
}
}
-
- protected void loadEjbRefXml(AnnotatedEJBReferencesMetaData refs, InjectionContainer container)
- {
- for (AnnotatedEJBReferenceMetaData ref : refs)
- {
- String interfaceName = ref.getBeanInterface().getName();
- String errorType = "@EJB";
- ejbRefXml(ref, interfaceName, container, errorType);
- }
- }
-
protected void loadEjbRefXml(Collection<EJBReferenceMetaData> refs, InjectionContainer container)
{
for (EJBReferenceMetaData ref : refs)
@@ -166,6 +153,9 @@
if(mappedName != null && mappedName.length() == 0) mappedName = null;
if (refClass != null && (refClass.equals(Object.class) || refClass.equals(void.class))) refClass = null;
+ if(mappedName == null)
+ mappedName = getMappedName(encName, container);
+
if(mappedName != null)
{
addJNDIDependency(container, mappedName);
@@ -198,41 +188,9 @@
if (mappedName != null && mappedName.trim().equals(""))
mappedName = null;
- // Initialize the lookupName to the encName
- String lookupName = encName;
-
- // EJBTHREE-1289: this code should be enabled, but MappedDeploymentEndpointResolver is broken
-// assert lookupName.startsWith("env/") : "encName used to start with 'env/'";
-// lookupName = lookupName.substring(4);
-
- // mappedName can be null, because an annotation has not been augmented with resolvedJndiName
- if (mappedName == null)
- {
- //
- AnnotatedEJBReferencesMetaData amds = container.getEnvironmentRefGroup().getAnnotatedEjbReferences();
- if(amds != null)
- {
- AnnotatedEJBReferenceMetaData amd = amds.get(lookupName);
- if (amd == null && fieldName != null)
- {
- lookupName = fieldName;
- amd = amds.get(lookupName);
- }
- if (amd != null)
- {
- mappedName = amd.getMappedName();
- if (mappedName == null)
- mappedName = amd.getResolvedJndiName();
- }
- }
- }
+ if(mappedName == null)
+ mappedName = getMappedName(encName, container, fieldName);
- // The MappedDeploymentEndpointResolver should have put resolvedJndiName everywhere.
- // If no mappedName is known by now, we have a bug.
- assert mappedName != null : "mappedName for enc \"" + encName + "\", field \"" + fieldName
- + "\" is null (container.environmentRefGroup.annotatedEjbReferences = "
- + container.getEnvironmentRefGroup().getAnnotatedEjbReferences() + ")";
-
EncInjector injector = null;
if (mappedName == null)
@@ -334,6 +292,57 @@
return jndiName;
}
+ private String getMappedName(String encName, InjectionContainer container)
+ {
+ return getMappedName(encName, container, null);
+ }
+
+ /**
+ * Find a mapped name in the meta data which came from the mapped resolver.
+ *
+ * @param encName
+ * @param container
+ * @param fieldName
+ * @return
+ */
+ private String getMappedName(String encName, InjectionContainer container, String fieldName)
+ {
+ String mappedName = null;
+
+ // Initialize the lookupName to the encName
+ String lookupName = encName;
+
+ // Currently encName has 'env/' prepended (see getEncName)
+ assert lookupName.startsWith("env/") : "encName used to start with 'env/'";
+ lookupName = lookupName.substring(4);
+
+ // EJBTHREE-1289: find a resolved jndi name
+ AnnotatedEJBReferencesMetaData amds = webDD.getJndiEnvironmentRefsGroup().getAnnotatedEjbReferences();
+ if(amds != null)
+ {
+ AnnotatedEJBReferenceMetaData amd = amds.get(lookupName);
+ if (amd == null && fieldName != null)
+ {
+ lookupName = fieldName;
+ amd = amds.get(lookupName);
+ }
+ if (amd != null)
+ {
+ mappedName = amd.getMappedName();
+ if (mappedName == null)
+ mappedName = amd.getResolvedJndiName();
+ }
+ }
+
+ // The MappedDeploymentEndpointResolver should have put resolvedJndiName everywhere.
+ // If no mappedName is known by now, we have a bug.
+// assert mappedName != null : "mappedName for enc \"" + encName + "\", field \"" + fieldName
+// + "\" is null (container.environmentRefGroup.annotatedEjbReferences = "
+// + container.getEnvironmentRefGroup().getAnnotatedEjbReferences() + ")";
+
+ return mappedName;
+ }
+
public void handleClassAnnotations(Class<?> clazz, InjectionContainer container)
{
EJBs ref = container.getAnnotation(EJBs.class, clazz);
@@ -401,31 +410,34 @@
if (!container.getEncInjectors().containsKey(encName))
{
String mappedName = null;
+ if(ref.mappedName().length() > 0)
+ mappedName = ref.mappedName();
+
+ if(mappedName == null)
+ {
+ EndpointInfo info = null;
+ String link = null;
+
+ if(ref.beanName().length() > 0)
+ link = ref.beanName();
+
+ if(link != null)
+ info = resolver.getEndpointInfo(link, EndpointType.EJB, vfsContext);
+ if(info == null)
+ info = resolver.getEndpointInfo(field.getType(), EndpointType.EJB, vfsContext);
+ if(info == null)
+ throw new IllegalStateException("No mapped-name for field: "+field+", "+ref);
+
+ ContainerDependencyMetaData cdmd = endpoints.get(info.getComponentKey());
+ if(cdmd == null)
+ throw new IllegalStateException("Failed to resolve ContainerDependencyMetaData for info: "+info+", "+ref);
+ mappedName = cdmd.getContainerName();
+ }
+
if (isIgnoreDependency(container, ref))
log.debug("IGNORING <ejb-ref> DEPENDENCY: " + encName);
else
{
- String link = null;
- EndpointInfo info = null;
- if(ref.mappedName().length() > 0)
- mappedName = ref.mappedName();
- else if(ref.beanName().length() > 0)
- link = ref.beanName();
- if(mappedName == null)
- {
- if(link != null)
- info = resolver.getEndpointInfo(link, EndpointType.EJB, vfsContext);
- if(info == null)
- info = resolver.getEndpointInfo(field.getType(), EndpointType.EJB, vfsContext);
- if(info == null)
- throw new IllegalStateException("No mapped-name for field: "+field+", "+ref);
-
- ContainerDependencyMetaData cdmd = endpoints.get(info.getComponentKey());
- if(cdmd == null)
- throw new IllegalStateException("Failed to resolve ContainerDependencyMetaData for info: "+info+", "+ref);
- mappedName = cdmd.getContainerName();
- }
-
ejbRefDependency(mappedName, ref.beanName(), container, field.getType(), "@EJB", encName);
}
ejbRefEncInjector(mappedName, encName, field.getName(), field.getType(), ref.beanName(), "@EJB", container);
More information about the jboss-cvs-commits
mailing list