[jboss-cvs] JBossAS SVN: r88217 - in branches/Branch_5_x: component-matrix and 5 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue May 5 10:34:12 EDT 2009
Author: richard.opalka at jboss.com
Date: 2009-05-05 10:34:12 -0400 (Tue, 05 May 2009)
New Revision: 88217
Added:
branches/Branch_5_x/webservices/src/main/org/jboss/wsf/container/jboss50/deployment/metadata/EJBBeanReferenceResolver.java
Modified:
branches/Branch_5_x/build/build-distr.xml
branches/Branch_5_x/component-matrix/pom.xml
branches/Branch_5_x/varia/.classpath
branches/Branch_5_x/webservices/build.xml
branches/Branch_5_x/webservices/pom.xml
branches/Branch_5_x/webservices/src/main/org/jboss/wsf/container/jboss50/deployment/metadata/InjectionMetaDataDeploymentAspect.java
branches/Branch_5_x/webservices/src/main/org/jboss/wsf/container/jboss50/invocation/InvocationHandlerJSE.java
branches/Branch_5_x/webservices/src/resources/jbossws-jboss50.deployer/META-INF/jbossws-deployer-jboss-beans.xml
Log:
[JBWS-2634] finalizing @EJB injection in WS components + upgrading to new JBossWS RC artifacts
Modified: branches/Branch_5_x/build/build-distr.xml
===================================================================
--- branches/Branch_5_x/build/build-distr.xml 2009-05-05 14:06:23 UTC (rev 88216)
+++ branches/Branch_5_x/build/build-distr.xml 2009-05-05 14:34:12 UTC (rev 88217)
@@ -1757,7 +1757,7 @@
<fileset dir="${ibm.wsdl4j.lib}">
<include name="wsdl4j.jar"/>
</fileset>
- <fileset dir="${xml.security.lib}">
+ <fileset dir="${org.apache.lib}">
<include name="xmlsec.jar"/>
</fileset>
</copy>
@@ -2039,7 +2039,7 @@
<fileset dir="${apache.logging.lib}">
<include name="commons-logging.jar"/>
</fileset>
- <fileset dir="${xml.security.lib}">
+ <fileset dir="${org.apache.lib}">
<include name="xmlsec.jar"/>
</fileset>
<fileset dir="${ibm.wsdl4j.lib}">
Modified: branches/Branch_5_x/component-matrix/pom.xml
===================================================================
--- branches/Branch_5_x/component-matrix/pom.xml 2009-05-05 14:06:23 UTC (rev 88216)
+++ branches/Branch_5_x/component-matrix/pom.xml 2009-05-05 14:34:12 UTC (rev 88217)
@@ -33,10 +33,10 @@
<version.javax.faces>1.2_12</version.javax.faces>
<version.jboss.jaxr>1.2.1.GA</version.jboss.jaxr>
<version.jboss.jbossts>4.6.1.GA</version.jboss.jbossts>
- <version.jboss.jbossws-common>1.0.11.CR2</version.jboss.jbossws-common>
- <version.jboss.jbossws-framework>3.1.2.CR2</version.jboss.jbossws-framework>
- <version.jboss.jbossws-spi>1.1.2.CR2</version.jboss.jbossws-spi>
- <version.jboss.jbossws>3.1.2.CR1</version.jboss.jbossws>
+ <version.jboss.jbossws-common>1.0.11.CR3</version.jboss.jbossws-common>
+ <version.jboss.jbossws-framework>3.1.2.CR3</version.jboss.jbossws-framework>
+ <version.jboss.jbossws-spi>1.1.2.CR3</version.jboss.jbossws-spi>
+ <version.jboss.jbossws>3.1.2.CR2</version.jboss.jbossws>
<version.jboss.jms-integration-tests>1.0.1.GA</version.jboss.jms-integration-tests>
<version.jboss.messaging>1.4.3.GA</version.jboss.messaging>
<version.jboss.web>2.1.3.GA</version.jboss.web>
Modified: branches/Branch_5_x/varia/.classpath
===================================================================
--- branches/Branch_5_x/varia/.classpath 2009-05-05 14:06:23 UTC (rev 88216)
+++ branches/Branch_5_x/varia/.classpath 2009-05-05 14:34:12 UTC (rev 88217)
@@ -16,7 +16,7 @@
<classpathentry kind="lib" path="/thirdparty/apache-scout/lib/scout.jar"/>
<classpathentry kind="lib" path="/thirdparty/apache-xalan/lib/xalan.jar"/>
<classpathentry kind="lib" path="/thirdparty/opensaml/lib/opensaml.jar"/>
- <classpathentry kind="lib" path="/thirdparty/xml-security/lib/xmlsec.jar"/>
+ <classpathentry kind="lib" path="/thirdparty/org/apache/lib/xmlsec.jar"/>
<classpathentry kind="lib" path="/thirdparty/juddi/lib/juddi.jar"/>
<classpathentry kind="lib" path="/thirdparty/beanshell/lib/bsh.jar"/>
<classpathentry kind="lib" path="/thirdparty/jboss/jboss-deployers/lib/jboss-deployers-client.jar" sourcepath="/thirdparty/jboss/jboss-deployers/lib/jboss-deployers-client-sources.jar"/>
Modified: branches/Branch_5_x/webservices/build.xml
===================================================================
--- branches/Branch_5_x/webservices/build.xml 2009-05-05 14:06:23 UTC (rev 88216)
+++ branches/Branch_5_x/webservices/build.xml 2009-05-05 14:34:12 UTC (rev 88217)
@@ -72,6 +72,7 @@
<path refid="jboss.common.logging.spi.classpath"/>
<path refid="jboss.jboss.cl.classpath"/>
<path refid="jboss.jboss.ejb3.core.classpath" />
+ <path refid="jboss.jboss.ejb3.common.classpath" />
<path refid="jboss.jboss.ejb3.ext.api.classpath" />
<path refid="jboss.jboss.ejb3.interceptors.classpath" />
<path refid="jboss.jboss.javaee.classpath"/>
Modified: branches/Branch_5_x/webservices/pom.xml
===================================================================
--- branches/Branch_5_x/webservices/pom.xml 2009-05-05 14:06:23 UTC (rev 88216)
+++ branches/Branch_5_x/webservices/pom.xml 2009-05-05 14:34:12 UTC (rev 88217)
@@ -71,7 +71,12 @@
<dependency>
<groupId>org.jboss.ejb3</groupId>
<artifactId>jboss-ejb3-as-int</artifactId>
- </dependency>
+ </dependency>
+ <dependency>
+ <groupId>org.jboss.ejb3</groupId>
+ <artifactId>jboss-ejb3-common</artifactId>
+ <version>${version.org.jboss.ejb3.common.client}</version>
+ </dependency>
<!-- transitive dependencies -->
<dependency>
<groupId>org.jboss.deployers</groupId>
Added: branches/Branch_5_x/webservices/src/main/org/jboss/wsf/container/jboss50/deployment/metadata/EJBBeanReferenceResolver.java
===================================================================
--- branches/Branch_5_x/webservices/src/main/org/jboss/wsf/container/jboss50/deployment/metadata/EJBBeanReferenceResolver.java (rev 0)
+++ branches/Branch_5_x/webservices/src/main/org/jboss/wsf/container/jboss50/deployment/metadata/EJBBeanReferenceResolver.java 2009-05-05 14:34:12 UTC (rev 88217)
@@ -0,0 +1,114 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file 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.wsf.container.jboss50.deployment.metadata;
+
+import java.lang.reflect.Field;
+import java.lang.reflect.Method;
+
+import javax.ejb.EJB;
+
+import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.ejb3.common.resolvers.spi.EjbReference;
+import org.jboss.ejb3.common.resolvers.spi.EjbReferenceResolver;
+import org.jboss.wsf.common.injection.resolvers.AbstractReferenceResolver;
+
+/**
+ * EJB reference resolver.
+ *
+ * @author <a href="mailto:richard.opalka at jboss.org">Richard Opalka</a>
+ */
+final class EJBBeanReferenceResolver extends AbstractReferenceResolver<EJB>
+{
+
+ /**
+ * Deployment unit used for resolving process.
+ */
+ private final DeploymentUnit unit;
+ /**
+ * Delegate used to resolve JNDI names.
+ */
+ private final EjbReferenceResolver delegate;
+
+ /**
+ * Constructor.
+ */
+ EJBBeanReferenceResolver(final DeploymentUnit unit, final EjbReferenceResolver delegate)
+ {
+ super(EJB.class);
+
+ if (unit == null)
+ {
+ throw new IllegalArgumentException("Deployment unit cannot be null");
+ }
+ if (delegate == null)
+ {
+ throw new IllegalArgumentException("Ejb reference resolver cannot be null");
+ }
+
+ this.unit = unit;
+ this.delegate = delegate;
+ }
+
+ /* (non-Javadoc)
+ * @see org.jboss.wsf.common.injection.resolvers.AbstractReferenceResolver#resolveField(java.lang.reflect.Field)
+ */
+ @Override
+ protected String resolveField(final Field field)
+ {
+ final EJB ejbAnnotation = field.getAnnotation(EJB.class);
+ final Class<?> type = field.getType();
+ final EjbReference reference = getEjbReference(ejbAnnotation, type);
+
+ return this.delegate.resolveEjb(unit, reference);
+ }
+
+ /* (non-Javadoc)
+ * @see org.jboss.wsf.common.injection.resolvers.AbstractReferenceResolver#resolveMethod(java.lang.reflect.Method)
+ */
+ @Override
+ protected String resolveMethod(final Method method)
+ {
+ final EJB ejbAnnotation = method.getAnnotation(EJB.class);
+ final Class<?> type = method.getParameterTypes()[0];
+ final EjbReference reference = getEjbReference(ejbAnnotation, type);
+
+ return this.delegate.resolveEjb(unit, reference);
+ }
+
+ /**
+ * Constructs EjbReference.
+ *
+ * @param ejbAnnotation ejb annotation
+ * @param type fall back type
+ * @return ejb reference instance
+ */
+ private EjbReference getEjbReference(EJB ejbAnnotation, Class<?> type)
+ {
+ String beanInterface = ejbAnnotation.beanInterface().getName();
+ if (java.lang.Object.class.getName().equals(beanInterface))
+ {
+ beanInterface = type.getName();
+ }
+ return new EjbReference(ejbAnnotation.beanName(), beanInterface, ejbAnnotation.mappedName());
+ }
+
+}
Modified: branches/Branch_5_x/webservices/src/main/org/jboss/wsf/container/jboss50/deployment/metadata/InjectionMetaDataDeploymentAspect.java
===================================================================
--- branches/Branch_5_x/webservices/src/main/org/jboss/wsf/container/jboss50/deployment/metadata/InjectionMetaDataDeploymentAspect.java 2009-05-05 14:06:23 UTC (rev 88216)
+++ branches/Branch_5_x/webservices/src/main/org/jboss/wsf/container/jboss50/deployment/metadata/InjectionMetaDataDeploymentAspect.java 2009-05-05 14:34:12 UTC (rev 88217)
@@ -21,24 +21,31 @@
*/
package org.jboss.wsf.container.jboss50.deployment.metadata;
+import java.lang.annotation.Annotation;
import java.util.Collections;
+import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
+import java.util.Map;
import java.util.Set;
+import javax.annotation.Resource;
+import javax.ejb.EJB;
import javax.jws.WebService;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.xml.ws.WebServiceProvider;
import org.jboss.deployers.structure.spi.DeploymentUnit;
+import org.jboss.ejb3.common.resolvers.spi.EjbReferenceResolver;
import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeansMetaData;
import org.jboss.metadata.ejb.jboss.JBossMetaData;
import org.jboss.metadata.javaee.spec.EnvironmentEntriesMetaData;
import org.jboss.metadata.javaee.spec.EnvironmentEntryMetaData;
import org.jboss.metadata.javaee.spec.ResourceInjectionTargetMetaData;
import org.jboss.metadata.web.jboss.JBossWebMetaData;
+import org.jboss.wsf.common.injection.resolvers.ResourceReferenceResolver;
import org.jboss.wsf.spi.deployment.Deployment;
import org.jboss.wsf.spi.deployment.DeploymentAspect;
import org.jboss.wsf.spi.deployment.Endpoint;
@@ -47,46 +54,50 @@
import org.jboss.wsf.spi.deployment.integration.WebServiceDeployment;
import org.jboss.wsf.spi.metadata.injection.InjectionMetaData;
import org.jboss.wsf.spi.metadata.injection.InjectionsMetaData;
+import org.jboss.wsf.spi.metadata.injection.ReferenceResolver;
/**
* Deployment aspect that builds injection meta data.
*
- * @author ropalka at redhat.com
+ * @author <a href="mailto:richard.opalka at jboss.org">Richard Opalka</a>
*/
public final class InjectionMetaDataDeploymentAspect extends DeploymentAspect
{
+ private static final ReferenceResolver RESOURCE_REFERENCE_RESOLVER = new ResourceReferenceResolver();
private static final String EJB3_JNDI_PREFIX = "java:env/";
+ private EjbReferenceResolver ejbReferenceResolver;
@Override
public void create(Deployment dep)
{
super.create(dep);
+ DeploymentUnit unit = dep.getAttachment(DeploymentUnit.class);
+ if (unit == null)
+ throw new IllegalStateException("DeploymentUnit not found");
+
+ JBossWebMetaData webMD = dep.getAttachment(JBossWebMetaData.class);
+ if (webMD == null)
+ throw new IllegalStateException("JBossWebMetaData not found");
+
List<InjectionMetaData> injectionMD = new LinkedList<InjectionMetaData>();
+ Map<Class<? extends Annotation>, ReferenceResolver> resolvers = createResolvers(unit);
DeploymentType deploymentType = dep.getType();
try
{
if (deploymentType == DeploymentType.JAXWS_JSE)
{
- JBossWebMetaData webMD = dep.getAttachment(JBossWebMetaData.class);
- if (webMD == null)
- throw new IllegalStateException("JBossWebMetaData not found");
-
injectionMD.addAll(buildInjectionMetaData(webMD.getEnvironmentEntries()));
for (Endpoint endpoint : dep.getService().getEndpoints())
{
- InjectionsMetaData injectionsMD = new InjectionsMetaData(injectionMD, null);
+ InjectionsMetaData injectionsMD = new InjectionsMetaData(injectionMD, resolvers, null);
endpoint.addAttachment(InjectionsMetaData.class, injectionsMD);
}
}
else if (deploymentType == DeploymentType.JAXWS_EJB3)
{
- DeploymentUnit unit = dep.getAttachment(DeploymentUnit.class);
- if (unit == null)
- throw new IllegalStateException("DeploymentUnit not found");
-
JBossMetaData jbossMD = unit.getAttachment(JBossMetaData.class);
JBossEnterpriseBeansMetaData jebMDs = jbossMD.getEnterpriseBeans();
@@ -103,7 +114,7 @@
EnvironmentEntriesMetaData ejbEnvEntries = jebMDs.get(ejbName).getEnvironmentEntries();
injectionMD.addAll(buildInjectionMetaData(ejbEnvEntries));
Endpoint endpoint = dep.getService().getEndpointByName(ejbName);
- InjectionsMetaData injectionsMD = new InjectionsMetaData(injectionMD, ctx);
+ InjectionsMetaData injectionsMD = new InjectionsMetaData(injectionMD, resolvers, ctx);
endpoint.addAttachment(InjectionsMetaData.class, injectionsMD);
}
}
@@ -123,6 +134,26 @@
super.destroy(dep);
}
+ /**
+ * Builds reference resolvers container.
+ *
+ * @param unit deployment unit
+ * @return reference resolvers
+ */
+ private Map<Class<? extends Annotation>, ReferenceResolver> createResolvers(DeploymentUnit unit)
+ {
+ final Map<Class<? extends Annotation>, ReferenceResolver> resolvers = new HashMap<Class<? extends Annotation>, ReferenceResolver>();
+ resolvers.put(Resource.class, RESOURCE_REFERENCE_RESOLVER);
+ resolvers.put(EJB.class, new EJBBeanReferenceResolver(unit, getEjbReferenceResolver()));
+ return resolvers;
+ }
+
+ /**
+ * Builds JBossWS specific injection metadata from JBoss metadata.
+ *
+ * @param envEntries environment entries
+ * @return JBossWS specific injection metadata
+ */
private List<InjectionMetaData> buildInjectionMetaData(EnvironmentEntriesMetaData envEntries)
{
if ((envEntries == null) || (envEntries.size() == 0))
@@ -162,6 +193,12 @@
return retVal;
}
+ /**
+ * Returns true if EJB represents webservice endpoint, false otherwise.
+ *
+ * @param container to analyze
+ * @return true if webservice endpoint, false otherwise
+ */
private boolean isWebServiceBean(WebServiceDeclaration container)
{
boolean isWebService = container.getAnnotation(WebService.class) != null;
@@ -170,4 +207,29 @@
return isWebService || isWebServiceProvider;
}
+ /**
+ * Sets ejb reference resolver. This method is invoked by MC.
+ *
+ * @param resolver ejb reference resolver
+ */
+ public void setEjbReferenceResolver(final EjbReferenceResolver resolver)
+ {
+ this.ejbReferenceResolver = resolver;
+ }
+
+ /**
+ * Gets ejb reference resolver.
+ *
+ * @return ejb reference resolver
+ */
+ public EjbReferenceResolver getEjbReferenceResolver()
+ {
+ if (this.ejbReferenceResolver == null)
+ {
+ throw new IllegalStateException("No EjbReferenceResolver set by MC");
+ }
+
+ return this.ejbReferenceResolver;
+ }
+
}
Modified: branches/Branch_5_x/webservices/src/main/org/jboss/wsf/container/jboss50/invocation/InvocationHandlerJSE.java
===================================================================
--- branches/Branch_5_x/webservices/src/main/org/jboss/wsf/container/jboss50/invocation/InvocationHandlerJSE.java 2009-05-05 14:06:23 UTC (rev 88216)
+++ branches/Branch_5_x/webservices/src/main/org/jboss/wsf/container/jboss50/invocation/InvocationHandlerJSE.java 2009-05-05 14:34:12 UTC (rev 88217)
@@ -26,8 +26,8 @@
import javax.xml.ws.WebServiceContext;
import org.jboss.wsf.common.JavaUtils;
-import org.jboss.wsf.common.javax.JavaxAnnotationHelper;
-import org.jboss.wsf.common.javax.PreDestroyHolder;
+import org.jboss.wsf.common.injection.InjectionHelper;
+import org.jboss.wsf.common.injection.PreDestroyHolder;
import org.jboss.wsf.spi.SPIProvider;
import org.jboss.wsf.spi.SPIProviderResolver;
import org.jboss.wsf.spi.deployment.Endpoint;
@@ -82,8 +82,8 @@
throw new IllegalStateException("Cannot get target bean instance", ex);
}
- JavaxAnnotationHelper.injectResources(targetBean, ep.getAttachment(InjectionsMetaData.class));
- JavaxAnnotationHelper.callPostConstructMethod(targetBean);
+ InjectionHelper.injectResources(targetBean, ep.getAttachment(InjectionsMetaData.class));
+ InjectionHelper.callPostConstructMethod(targetBean);
ep.addAttachment(PreDestroyHolder.class, new PreDestroyHolder(targetBean));
}
Modified: branches/Branch_5_x/webservices/src/resources/jbossws-jboss50.deployer/META-INF/jbossws-deployer-jboss-beans.xml
===================================================================
--- branches/Branch_5_x/webservices/src/resources/jbossws-jboss50.deployer/META-INF/jbossws-deployer-jboss-beans.xml 2009-05-05 14:06:23 UTC (rev 88216)
+++ branches/Branch_5_x/webservices/src/resources/jbossws-jboss50.deployer/META-INF/jbossws-deployer-jboss-beans.xml 2009-05-05 14:34:12 UTC (rev 88217)
@@ -200,6 +200,7 @@
<bean name="WSInjectionMetaDataDeploymentAspect" class="org.jboss.wsf.container.jboss50.deployment.metadata.InjectionMetaDataDeploymentAspect">
<property name="requires">WebMetaData</property>
<property name="provides">InjectionMetaData</property>
+ <property name="ejbReferenceResolver"><inject bean="org.jboss.ejb3.EjbReferenceResolver"/></property>
</bean>
<bean name="WSContextRootDeploymentAspect" class="org.jboss.wsf.framework.deployment.BackwardCompatibleContextRootDeploymentAspect">
More information about the jboss-cvs-commits
mailing list