[jboss-cvs] JBossAS SVN: r72382 - in trunk/ejb3/src: main/org/jboss/ejb3/deployers and 1 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Apr 17 16:01:39 EDT 2008
Author: scott.stark at jboss.org
Date: 2008-04-17 16:01:39 -0400 (Thu, 17 Apr 2008)
New Revision: 72382
Added:
trunk/ejb3/src/main/org/jboss/ejb3/deployers/MergedJBossClientMetaDataDeployer.java
Modified:
trunk/ejb3/src/main/org/jboss/ejb3/clientmodule/EJBRemoteHandler.java
trunk/ejb3/src/resources/META-INF/ejb3-deployers-beans.xml
Log:
JBAS-5458, merged client deployer
Modified: trunk/ejb3/src/main/org/jboss/ejb3/clientmodule/EJBRemoteHandler.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/clientmodule/EJBRemoteHandler.java 2008-04-17 19:29:57 UTC (rev 72381)
+++ trunk/ejb3/src/main/org/jboss/ejb3/clientmodule/EJBRemoteHandler.java 2008-04-17 20:01:39 UTC (rev 72382)
@@ -41,6 +41,8 @@
import org.jboss.injection.Injector;
import org.jboss.logging.Logger;
import org.jboss.metadata.javaee.spec.AbstractEJBReferenceMetaData;
+import org.jboss.metadata.javaee.spec.AnnotatedEJBReferenceMetaData;
+import org.jboss.metadata.javaee.spec.AnnotatedEJBReferencesMetaData;
import org.jboss.metadata.javaee.spec.EJBReferenceMetaData;
import org.jboss.metadata.javaee.spec.RemoteEnvironment;
@@ -116,7 +118,7 @@
}
else
{
- ejbRefEncInjector(mappedName, encName, refClass, link, errorType, container);
+ ejbRefEncInjector(mappedName, encName, null, refClass, link, errorType, container);
if (ref.getIgnoreDependency() != null)
{
log.debug("IGNORING <ejb-ref> DEPENDENCY: " + encName);
@@ -157,10 +159,26 @@
}
}
- protected void ejbRefEncInjector(String mappedName, String encName, Class refClass, String link, String errorType, InjectionContainer container)
+ protected void ejbRefEncInjector(String mappedName, String encName, String fieldName, Class refClass, String link, String errorType, InjectionContainer container)
{
- if (refClass != null && (refClass.equals(Object.class) || refClass.equals(void.class))) refClass = null;
- if (mappedName != null && mappedName.trim().equals("")) mappedName = null;
+ if (refClass != null && (refClass.equals(Object.class) || refClass.equals(void.class)))
+ refClass = null;
+ if (mappedName != null && mappedName.trim().equals(""))
+ mappedName = null;
+ if (mappedName == null)
+ {
+ //
+ AnnotatedEJBReferencesMetaData amds = container.getEnvironmentRefGroup().getAnnotatedEjbReferences();
+ AnnotatedEJBReferenceMetaData amd = amds.get(encName);
+ if(amd == null)
+ amd = amds.get(fieldName);
+ if(amd != null)
+ {
+ mappedName = amd.getMappedName();
+ if(mappedName == null)
+ mappedName = amd.getResolvedJndiName();
+ }
+ }
EncInjector injector = null;
@@ -284,7 +302,7 @@
encName = "env/" + encName;
if (container.getEncInjectors().containsKey(encName)) return;
- ejbRefEncInjector(ejb.mappedName(), encName, ejb.beanInterface(), ejb.beanName(), "@EJB", container);
+ ejbRefEncInjector(ejb.mappedName(), encName, null, ejb.beanInterface(), ejb.beanName(), "@EJB", container);
// handle dependencies
@@ -304,7 +322,7 @@
String encName = getEncName(ref, method);
if (!container.getEncInjectors().containsKey(encName))
{
- ejbRefEncInjector(ref.mappedName(), encName, method.getParameterTypes()[0], ref.beanName(), "@EJB", container);
+ ejbRefEncInjector(ref.mappedName(), encName, method.getName().substring(0), method.getParameterTypes()[0], ref.beanName(), "@EJB", container);
if (container.getAnnotation(IgnoreDependency.class, method) == null)
{
@@ -334,7 +352,7 @@
else
ejbRefDependency(ref.mappedName(), ref.beanName(), container, field.getType(), "@EJB", encName);
}
- ejbRefEncInjector(ref.mappedName(), encName, field.getType(), ref.beanName(), "@EJB", container);
+ ejbRefEncInjector(ref.mappedName(), encName, field.getName(), field.getType(), ref.beanName(), "@EJB", container);
}
super.handleFieldAnnotations(field, container, injectors);
}
Added: trunk/ejb3/src/main/org/jboss/ejb3/deployers/MergedJBossClientMetaDataDeployer.java
===================================================================
--- trunk/ejb3/src/main/org/jboss/ejb3/deployers/MergedJBossClientMetaDataDeployer.java (rev 0)
+++ trunk/ejb3/src/main/org/jboss/ejb3/deployers/MergedJBossClientMetaDataDeployer.java 2008-04-17 20:01:39 UTC (rev 72382)
@@ -0,0 +1,94 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2008, Red Hat Middleware LLC, and individual contributors
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.deployers;
+
+import org.jboss.deployers.spi.DeploymentException;
+import org.jboss.deployers.spi.deployer.DeploymentStages;
+import org.jboss.deployers.spi.deployer.helpers.AbstractDeployer;
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.deployment.AnnotationMetaDataDeployer;
+import org.jboss.metadata.client.jboss.JBossClientMetaData;
+import org.jboss.metadata.client.spec.AnnotationMergedView;
+import org.jboss.metadata.client.spec.ApplicationClient5MetaData;
+import org.jboss.metadata.client.spec.ApplicationClientMetaData;
+
+
+/**
+ * A deployer that merges annotation metadata, xml metadata, and jboss metadata
+ * into a merged JBossClientMetaData.
+ *
+ * @author Scott.Stark at jboss.org
+ * @version $Revision:$
+ */
+public class MergedJBossClientMetaDataDeployer extends AbstractDeployer
+{
+ public static final String CLIENT_MERGED_ATTACHMENT_NAME = "merged."+JBossClientMetaData.class.getName();
+
+ /**
+ * Create a new JBossEjbParsingDeployer.
+ */
+ public MergedJBossClientMetaDataDeployer()
+ {
+ setStage(DeploymentStages.POST_CLASSLOADER);
+ // application.xml metadata
+ addInput(ApplicationClientMetaData.class);
+ // jboss-client.xml metadata
+ addInput(JBossClientMetaData.class);
+ // annotated metadata view
+ addInput(AnnotationMetaDataDeployer.CLIENT_ANNOTATED_ATTACHMENT_NAME);
+ // Output is the merge JBossMetaData view
+ setOutput(JBossClientMetaData.class);
+ // Specify a separate merged name to distiguish this output from JBossClientMetaData
+ addOutput(CLIENT_MERGED_ATTACHMENT_NAME);
+ }
+
+ public void deploy(DeploymentUnit unit) throws DeploymentException
+ {
+ ApplicationClientMetaData specMetaData = unit.getAttachment(ApplicationClientMetaData.class);
+ JBossClientMetaData metaData = unit.getAttachment(JBossClientMetaData.class);
+ // Check for an annotated view
+ String key = AnnotationMetaDataDeployer.CLIENT_ANNOTATED_ATTACHMENT_NAME;
+ ApplicationClient5MetaData annotatedMetaData = unit.getAttachment(key, ApplicationClient5MetaData.class);
+ if(specMetaData == null && metaData == null && annotatedMetaData == null)
+ return;
+
+ if(annotatedMetaData != null)
+ {
+ if(specMetaData != null)
+ {
+ ApplicationClient5MetaData specMerged = new ApplicationClient5MetaData();
+ AnnotationMergedView.merge(specMerged, specMetaData, annotatedMetaData);
+ specMetaData = specMerged;
+ }
+ else
+ specMetaData = annotatedMetaData;
+ }
+
+ // Create a merged view
+ JBossClientMetaData mergedMetaData = new JBossClientMetaData();
+ mergedMetaData.merge(metaData, specMetaData, false);
+
+ // Output the merged JBossMetaData
+ unit.getTransientManagedObjects().addAttachment(JBossClientMetaData.class, mergedMetaData);
+ unit.addAttachment(CLIENT_MERGED_ATTACHMENT_NAME, mergedMetaData, JBossClientMetaData.class);
+ }
+}
Modified: trunk/ejb3/src/resources/META-INF/ejb3-deployers-beans.xml
===================================================================
--- trunk/ejb3/src/resources/META-INF/ejb3-deployers-beans.xml 2008-04-17 19:29:57 UTC (rev 72381)
+++ trunk/ejb3/src/resources/META-INF/ejb3-deployers-beans.xml 2008-04-17 20:01:39 UTC (rev 72382)
@@ -129,21 +129,18 @@
</bean>
<bean name="JBossClientParsingDeployer" class="org.jboss.ejb3.deployers.JBossClientParsingDeployer">
- <property name="type">car</property>
<depends>AppClientParsingDeployer</depends>
- </bean>
-
- <bean name="AppClientScanningDeployer" class="org.jboss.ejb3.deployers.AppClientScanningDeployer">
- <depends>JBossClientParsingDeployer</depends>
- </bean>
-
+ </bean>
+ <bean name="MergedJBossClientMetaDataDeployer" class="org.jboss.ejb3.deployers.MergedJBossClientMetaDataDeployer">
+ <depends>AppClientParsingDeployer</depends>
+ </bean>
+
<bean name="Ejb3ClientDeployer" class="org.jboss.ejb3.deployers.Ejb3ClientDeployer">
<property name="type">car</property>
<property name="kernel"><inject bean="jboss.kernel:service=Kernel"/></property>
<property name="mbeanServer"><inject bean="JMXKernel" property="mbeanServer"/></property>
<!-- TODO: check depends -->
<depends>AspectLibrary</depends>
- <depends>AppClientScanningDeployer</depends>
</bean>
<!-- EJB3 Cache Factory Registry -->
@@ -255,7 +252,6 @@
<!-- Persistence Unit deployers -->
<bean name="PersistenceUnitParsingDeployer" class="org.jboss.ejb3.deployers.PersistenceUnitParsingDeployer">
- <property name="type">car</property>
</bean>
</deployment>
More information about the jboss-cvs-commits
mailing list