[jboss-cvs] JBossAS SVN: r97075 - in projects/metadata/ejb/trunk: .settings and 15 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Fri Nov 27 04:56:59 EST 2009
Author: wolfc
Date: 2009-11-27 04:56:58 -0500 (Fri, 27 Nov 2009)
New Revision: 97075
Added:
projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractAsyncProcessor.java
projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AsyncClassProcessor.java
projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AsyncMethodProcessor.java
projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionBean31MetaData.java
projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/AsyncMethodMetaData.java
projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/AsyncMethodsMetaData.java
projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/EjbJar31MetaData.java
projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/SessionBean31MetaData.java
projects/metadata/ejb/trunk/src/main/resources/schema/ejb-jar_3_1.xsd
projects/metadata/ejb/trunk/src/test/java/org/jboss/metadata/ejb/
projects/metadata/ejb/trunk/src/test/java/org/jboss/metadata/ejb/test/
projects/metadata/ejb/trunk/src/test/java/org/jboss/metadata/ejb/test/async/
projects/metadata/ejb/trunk/src/test/java/org/jboss/metadata/ejb/test/async/AsyncMethodBean.java
projects/metadata/ejb/trunk/src/test/java/org/jboss/metadata/ejb/test/async/unit/
projects/metadata/ejb/trunk/src/test/java/org/jboss/metadata/ejb/test/async/unit/AsyncMethodTestCase.java
projects/metadata/ejb/trunk/src/test/resources/org/jboss/metadata/ejb/
projects/metadata/ejb/trunk/src/test/resources/org/jboss/metadata/ejb/test/
projects/metadata/ejb/trunk/src/test/resources/org/jboss/metadata/ejb/test/async/
projects/metadata/ejb/trunk/src/test/resources/org/jboss/metadata/ejb/test/async/ejb-jar.xml
Modified:
projects/metadata/ejb/trunk/.classpath
projects/metadata/ejb/trunk/.settings/org.eclipse.jdt.core.prefs
projects/metadata/ejb/trunk/pom.xml
projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractSessionBeanProcessor.java
projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractSessionBeanProcessor.java
projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBoss50Creator.java
projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeanMetaData.java
projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeansMetaData.java
projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionGenericWrapper.java
projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/EnterpriseBeanMetaData.java
projects/metadata/ejb/trunk/src/test/java/org/jboss/test/metadata/ejb/JBoss50UnitTestCase.java
Log:
JBMETA-226: process async methods
Modified: projects/metadata/ejb/trunk/.classpath
===================================================================
--- projects/metadata/ejb/trunk/.classpath 2009-11-27 07:49:24 UTC (rev 97074)
+++ projects/metadata/ejb/trunk/.classpath 2009-11-27 09:56:58 UTC (rev 97075)
@@ -4,7 +4,7 @@
<classpathentry excluding="**" kind="src" output="eclipse-target/classes" path="src/main/resources"/>
<classpathentry kind="src" output="eclipse-target/tests-classes" path="src/test/java"/>
<classpathentry excluding="**" kind="src" output="eclipse-target/tests-classes" path="src/test/resources"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
<classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/>
<classpathentry kind="output" path="eclipse-target/classes"/>
</classpath>
Modified: projects/metadata/ejb/trunk/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- projects/metadata/ejb/trunk/.settings/org.eclipse.jdt.core.prefs 2009-11-27 07:49:24 UTC (rev 97074)
+++ projects/metadata/ejb/trunk/.settings/org.eclipse.jdt.core.prefs 2009-11-27 09:56:58 UTC (rev 97075)
@@ -1,5 +1,5 @@
#Wed Jun 17 11:18:26 CEST 2009
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.source=1.5
-org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.compliance=1.6
Modified: projects/metadata/ejb/trunk/pom.xml
===================================================================
--- projects/metadata/ejb/trunk/pom.xml 2009-11-27 07:49:24 UTC (rev 97074)
+++ projects/metadata/ejb/trunk/pom.xml 2009-11-27 09:56:58 UTC (rev 97075)
@@ -22,6 +22,14 @@
<testOutputDirectory>${profile.testOutputDirectory}</testOutputDirectory>
<plugins>
<plugin>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.6</source>
+ <target>1.6</target>
+ </configuration>
+ </plugin>
+
+ <plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.4.3</version>
@@ -91,7 +99,14 @@
<!-- Compile Dependencies -->
<dependencies>
+ <!-- FIXME: use org.jboss.javaee:jboss-ejb-api -->
<dependency>
+ <groupId>org.jboss.ejb3</groupId>
+ <artifactId>jboss-ejb3-api</artifactId>
+ <version>3.1.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
<groupId>org.jboss.metadata</groupId>
<artifactId>jboss-metadata-common</artifactId>
<version>2.0.0.Alpha</version>
Modified: projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractSessionBeanProcessor.java
===================================================================
--- projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractSessionBeanProcessor.java 2009-11-27 07:49:24 UTC (rev 97074)
+++ projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractSessionBeanProcessor.java 2009-11-27 09:56:58 UTC (rev 97075)
@@ -30,6 +30,7 @@
import org.jboss.metadata.annotation.creator.Processor;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.spec.EjbJar3xMetaData;
+import org.jboss.metadata.ejb.spec.SessionBean31MetaData;
import org.jboss.metadata.ejb.spec.SessionBeanMetaData;
import org.jboss.metadata.javaee.spec.DescriptionGroupMetaData;
import org.jboss.metadata.javaee.spec.DescriptionImpl;
@@ -64,7 +65,7 @@
protected SessionBeanMetaData create(Class<?> beanClass, String name, String mappedName, String description)
{
- SessionBeanMetaData bean = new SessionBeanMetaData();
+ SessionBeanMetaData bean = new SessionBean31MetaData();
bean.setEjbClass(beanClass.getName());
String ejbName;
if(name == null || name.length() == 0)
Added: projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractAsyncProcessor.java
===================================================================
--- projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractAsyncProcessor.java (rev 0)
+++ projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractAsyncProcessor.java 2009-11-27 09:56:58 UTC (rev 97075)
@@ -0,0 +1,58 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, 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.metadata.annotation.creator.ejb.jboss;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.AnnotatedElement;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+
+import javax.ejb.Asynchronous;
+
+import org.jboss.metadata.annotation.creator.AbstractFinderUser;
+import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.ejb.jboss.JBossSessionBean31MetaData;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public abstract class AbstractAsyncProcessor<T extends AnnotatedElement> extends AbstractFinderUser
+ implements Processor<JBossSessionBean31MetaData, T>
+{
+ @SuppressWarnings("unchecked")
+ private static final Collection<Class<? extends Annotation>> annotationTypes = new HashSet<Class<? extends Annotation>>(Arrays.asList(Asynchronous.class));
+
+ protected AbstractAsyncProcessor(AnnotationFinder<AnnotatedElement> finder)
+ {
+ super(finder);
+ }
+
+ @Override
+ public Collection<Class<? extends Annotation>> getAnnotationTypes()
+ {
+ return annotationTypes;
+ }
+
+}
Modified: projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractSessionBeanProcessor.java
===================================================================
--- projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractSessionBeanProcessor.java 2009-11-27 07:49:24 UTC (rev 97074)
+++ projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractSessionBeanProcessor.java 2009-11-27 09:56:58 UTC (rev 97075)
@@ -30,6 +30,7 @@
import org.jboss.metadata.annotation.creator.Processor;
import org.jboss.metadata.annotation.finder.AnnotationFinder;
import org.jboss.metadata.ejb.jboss.JBossMetaData;
+import org.jboss.metadata.ejb.jboss.JBossSessionBean31MetaData;
import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
import org.jboss.metadata.javaee.spec.DescriptionGroupMetaData;
import org.jboss.metadata.javaee.spec.DescriptionImpl;
@@ -60,10 +61,12 @@
addTypeProcessor(new RemoteBindingProcessor(finder));
addTypeProcessor(new RemoteBindingsProcessor(finder));
addTypeProcessor(new RemoteHomeBindingProcessor(finder));
+ addTypeProcessor(new AsyncClassProcessor(finder));
addMethodProcessor(new InitProcessor(finder));
addMethodProcessor(new TimeoutProcessor(finder));
addMethodProcessor(new AroundInvokeProcessor(finder));
+ addMethodProcessor(new AsyncMethodProcessor(finder));
addTypeProcessor(new JBossCacheConfigProcessor(finder));
addTypeProcessor(new JBossClusteredProcessor(finder));
@@ -73,7 +76,7 @@
protected JBossSessionBeanMetaData create(Class<?> beanClass, String name, String mappedName, String description)
{
- JBossSessionBeanMetaData bean = new JBossSessionBeanMetaData();
+ JBossSessionBeanMetaData bean = new JBossSessionBean31MetaData();
bean.setEjbClass(beanClass.getName());
String ejbName;
if(name == null || name.length() == 0)
Added: projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AsyncClassProcessor.java
===================================================================
--- projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AsyncClassProcessor.java (rev 0)
+++ projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AsyncClassProcessor.java 2009-11-27 09:56:58 UTC (rev 97075)
@@ -0,0 +1,53 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, 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.metadata.annotation.creator.ejb.jboss;
+
+import java.lang.reflect.AnnotatedElement;
+
+import javax.ejb.Asynchronous;
+
+import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.ejb.jboss.JBossSessionBean31MetaData;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public class AsyncClassProcessor extends AbstractAsyncProcessor<Class<?>>
+ implements Processor<JBossSessionBean31MetaData, Class<?>> // FIXME: because AbstractProcessor.getProcessorMetaDataType doesn't take inheritence into account
+{
+ protected AsyncClassProcessor(AnnotationFinder<AnnotatedElement> finder)
+ {
+ super(finder);
+ }
+
+ @Override
+ public void process(JBossSessionBean31MetaData metaData, Class<?> type)
+ {
+ Asynchronous annotation = finder.getAnnotation(type, Asynchronous.class);
+ if(annotation != null)
+ {
+ throw new RuntimeException("NYI");
+ }
+ }
+}
Added: projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AsyncMethodProcessor.java
===================================================================
--- projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AsyncMethodProcessor.java (rev 0)
+++ projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AsyncMethodProcessor.java 2009-11-27 09:56:58 UTC (rev 97075)
@@ -0,0 +1,70 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, 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.metadata.annotation.creator.ejb.jboss;
+
+import java.lang.reflect.AnnotatedElement;
+import java.lang.reflect.Method;
+
+import javax.ejb.Asynchronous;
+
+import org.jboss.metadata.annotation.creator.EjbProcessorUtils;
+import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.ejb.jboss.JBossSessionBean31MetaData;
+import org.jboss.metadata.ejb.spec.AsyncMethodMetaData;
+import org.jboss.metadata.ejb.spec.AsyncMethodsMetaData;
+import org.jboss.metadata.ejb.spec.MethodParametersMetaData;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public class AsyncMethodProcessor extends AbstractAsyncProcessor<Method>
+ implements Processor<JBossSessionBean31MetaData, Method> // FIXME: because AbstractProcessor.getProcessorMetaDataType doesn't take inheritence into account
+{
+ protected AsyncMethodProcessor(AnnotationFinder<AnnotatedElement> finder)
+ {
+ super(finder);
+ }
+
+ @Override
+ public void process(JBossSessionBean31MetaData metaData, Method method)
+ {
+ Asynchronous asynchronous = finder.getAnnotation(method, Asynchronous.class);
+ if(asynchronous == null)
+ return;
+
+ AsyncMethodsMetaData asyncMethods = metaData.getAsyncMethods();
+ if(asyncMethods == null)
+ {
+ asyncMethods = new AsyncMethodsMetaData();
+ metaData.setAsyncMethods(asyncMethods);
+ }
+
+ MethodParametersMetaData methodParameters = EjbProcessorUtils.getMethodParameters(method);
+ AsyncMethodMetaData asyncMethod = new AsyncMethodMetaData();
+ asyncMethod.setMethodName(method.getName());
+ asyncMethod.setMethodParams(methodParameters);
+
+ asyncMethods.add(asyncMethod);
+ }
+}
Modified: projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBoss50Creator.java
===================================================================
--- projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBoss50Creator.java 2009-11-27 07:49:24 UTC (rev 97074)
+++ projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/JBoss50Creator.java 2009-11-27 09:56:58 UTC (rev 97075)
@@ -34,15 +34,12 @@
import org.jboss.metadata.ejb.jboss.JBoss50MetaData;
import org.jboss.metadata.ejb.jboss.JBossMessageDrivenBeanMetaData;
import org.jboss.metadata.ejb.jboss.JBossMetaData;
+import org.jboss.metadata.ejb.jboss.JBossSessionBean31MetaData;
import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
import org.jboss.metadata.ejb.spec.EjbJarMetaData;
import org.jboss.metadata.ejb.spec.EnterpriseBeanMetaData;
import org.jboss.metadata.ejb.spec.SessionBeanMetaData;
import org.jboss.metadata.ejb.spec.SessionType;
-import org.jboss.metadata.process.chain.ProcessorChain;
-import org.jboss.metadata.process.chain.ejb.jboss.JBossMetaDataProcessorChain;
-import org.jboss.metadata.process.processor.ejb.jboss.JBossMetaDataValidatorChainProcessor;
-import org.jboss.metadata.process.processor.ejb.jboss.SetDefaultLocalBusinessInterfaceProcessor;
/**
* A JBoss50Creator.
@@ -145,7 +142,7 @@
if (bean.isSession())
{
SessionBeanMetaData sb = (SessionBeanMetaData) bean;
- JBossSessionBeanMetaData sessionBean = new JBossSessionBeanMetaData();
+ JBossSessionBeanMetaData sessionBean = new JBossSessionBean31MetaData();
sessionBean.setEjbName(sb.getEjbName());
sessionBean.setEjbClass(sb.getEjbClass());
Modified: projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeanMetaData.java
===================================================================
--- projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeanMetaData.java 2009-11-27 07:49:24 UTC (rev 97074)
+++ projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeanMetaData.java 2009-11-27 09:56:58 UTC (rev 97075)
@@ -87,8 +87,6 @@
import org.jboss.metadata.javaee.support.NamedMetaData;
import org.jboss.metadata.javaee.support.NamedMetaDataWithDescriptionGroup;
import org.jboss.metadata.javaee.support.NonNullLinkedHashSet;
-import org.jboss.xb.annotations.JBossXmlConstants;
-import org.jboss.xb.annotations.JBossXmlModelGroup;
/**
* enterprise-bean/{session,entity,message-driven} metadata
@@ -208,7 +206,7 @@
if(bean instanceof MessageDrivenBeanMetaData)
jbean = new JBossMessageDrivenBeanMetaData();
if(bean instanceof SessionBeanMetaData)
- jbean = new JBossSessionBeanMetaData();
+ jbean = new JBossSessionBean31MetaData();
return jbean;
}
Modified: projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeansMetaData.java
===================================================================
--- projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeansMetaData.java 2009-11-27 07:49:24 UTC (rev 97074)
+++ projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossEnterpriseBeansMetaData.java 2009-11-27 09:56:58 UTC (rev 97075)
@@ -60,7 +60,7 @@
throw new IllegalArgumentException("Null data");
JBossEnterpriseBeanMetaData result = null;
if (data instanceof SessionBeanMetaData)
- result = new JBossSessionBeanMetaData();
+ result = new JBossSessionBean31MetaData();
else if (data instanceof EntityBeanMetaData)
result = new JBossEntityBeanMetaData();
else if (data instanceof MessageDrivenBeanMetaData)
@@ -144,7 +144,7 @@
JBossGenericBeanMetaData gejb = (JBossGenericBeanMetaData) jejb;
if(ejb.isSession())
{
- mergedEJB = new JBossSessionBeanMetaData();
+ mergedEJB = new JBossSessionBean31MetaData();
jejb = new JBossSessionGenericWrapper(gejb);
}
else if(ejb.isMessageDriven())
Added: projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionBean31MetaData.java
===================================================================
--- projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionBean31MetaData.java (rev 0)
+++ projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionBean31MetaData.java 2009-11-27 09:56:58 UTC (rev 97075)
@@ -0,0 +1,84 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, 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.metadata.ejb.jboss;
+
+import org.jboss.metadata.common.ejb.ITimeoutTarget;
+import org.jboss.metadata.ejb.spec.AsyncMethodsMetaData;
+import org.jboss.metadata.ejb.spec.EnterpriseBeanMetaData;
+import org.jboss.metadata.ejb.spec.SessionBean31MetaData;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public class JBossSessionBean31MetaData extends JBossSessionBeanMetaData
+ implements ITimeoutTarget // FIXME: AbstractProcessor.processClass doesn't take super interfaces into account
+{
+ private static final long serialVersionUID = 1L;
+
+ private AsyncMethodsMetaData asyncMethods;
+
+ public AsyncMethodsMetaData getAsyncMethods()
+ {
+ return asyncMethods;
+ }
+
+ public void setAsyncMethods(AsyncMethodsMetaData asyncMethods)
+ {
+ if(asyncMethods == null)
+ throw new IllegalArgumentException("asyncMethods is null");
+
+ this.asyncMethods = asyncMethods;
+ }
+
+ private void merge(AsyncMethodsMetaData override, AsyncMethodsMetaData original)
+ {
+ this.asyncMethods = new AsyncMethodsMetaData();
+ if(override != null)
+ asyncMethods.addAll(override);
+ if(original != null)
+ asyncMethods.addAll(original);
+ }
+
+ @Override
+ public void merge(JBossEnterpriseBeanMetaData override, JBossEnterpriseBeanMetaData original)
+ {
+ super.merge(override, original);
+
+ JBossSessionBean31MetaData joverride = override instanceof JBossGenericBeanMetaData ? null : (JBossSessionBean31MetaData) override;
+ JBossSessionBean31MetaData soriginal = original instanceof JBossGenericBeanMetaData ? null : (JBossSessionBean31MetaData) original;
+
+ merge(joverride != null ? joverride.asyncMethods : null, soriginal != null ? soriginal.asyncMethods : null);
+ }
+
+ @Override
+ public void merge(JBossEnterpriseBeanMetaData override, EnterpriseBeanMetaData original, String overridenFile,
+ String overrideFile, boolean mustOverride)
+ {
+ super.merge(override, original, overridenFile, overrideFile, mustOverride);
+
+ JBossSessionBean31MetaData joverride = (JBossSessionBean31MetaData) override;
+ SessionBean31MetaData soriginal = (SessionBean31MetaData) original;
+
+ merge(joverride != null ? joverride.asyncMethods : null, soriginal != null ? soriginal.getAsyncMethods() : null);
+ }
+}
Modified: projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionGenericWrapper.java
===================================================================
--- projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionGenericWrapper.java 2009-11-27 07:49:24 UTC (rev 97074)
+++ projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/jboss/JBossSessionGenericWrapper.java 2009-11-27 09:56:58 UTC (rev 97075)
@@ -29,6 +29,7 @@
import javax.ejb.TransactionManagementType;
import org.jboss.metadata.ejb.jboss.jndipolicy.spi.DefaultJndiBindingPolicy;
+import org.jboss.metadata.ejb.spec.AsyncMethodsMetaData;
import org.jboss.metadata.ejb.spec.ContainerTransactionsMetaData;
import org.jboss.metadata.ejb.spec.ExcludeListMetaData;
import org.jboss.metadata.ejb.spec.MethodInterfaceType;
@@ -70,7 +71,7 @@
* @author Scott.Stark at jboss.org
* @version $Revision: 75470 $
*/
-class JBossSessionGenericWrapper extends JBossSessionBeanMetaData
+class JBossSessionGenericWrapper extends JBossSessionBean31MetaData
{
private static final long serialVersionUID = 1;
private JBossGenericBeanMetaData delegate;
@@ -142,6 +143,11 @@
return delegate.getAopDomainName();
}
@Override
+ public AsyncMethodsMetaData getAsyncMethods()
+ {
+ throw new RuntimeException("NYI");
+ }
+ @Override
public String getConfigurationName()
{
return delegate.getConfigurationName();
Added: projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/AsyncMethodMetaData.java
===================================================================
--- projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/AsyncMethodMetaData.java (rev 0)
+++ projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/AsyncMethodMetaData.java 2009-11-27 09:56:58 UTC (rev 97075)
@@ -0,0 +1,59 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, 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.metadata.ejb.spec;
+
+import java.io.Serializable;
+
+import javax.xml.bind.annotation.XmlType;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+ at XmlType(name="async-methodType", propOrder={"methodName", "methodParams"})
+public class AsyncMethodMetaData implements Serializable
+{
+ private static final long serialVersionUID = 1L;
+
+ private String methodName;
+ private MethodParametersMetaData methodParams;
+
+ public String getMethodName()
+ {
+ return methodName;
+ }
+
+ public void setMethodName(String methodName)
+ {
+ this.methodName = methodName;
+ }
+
+ public MethodParametersMetaData getMethodParams()
+ {
+ return methodParams;
+ }
+
+ public void setMethodParams(MethodParametersMetaData methodParams)
+ {
+ this.methodParams = methodParams;
+ }
+}
Added: projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/AsyncMethodsMetaData.java
===================================================================
--- projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/AsyncMethodsMetaData.java (rev 0)
+++ projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/AsyncMethodsMetaData.java 2009-11-27 09:56:58 UTC (rev 97075)
@@ -0,0 +1,40 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, 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.metadata.ejb.spec;
+
+import java.util.ArrayList;
+
+import org.jboss.metadata.merge.MergeUtil;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public class AsyncMethodsMetaData extends ArrayList<AsyncMethodMetaData>
+{
+ private static final long serialVersionUID = 1L;
+
+ public void merge(AsyncMethodsMetaData override, AsyncMethodsMetaData original)
+ {
+ MergeUtil.merge(this, override, original);
+ }
+}
Added: projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/EjbJar31MetaData.java
===================================================================
--- projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/EjbJar31MetaData.java (rev 0)
+++ projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/EjbJar31MetaData.java 2009-11-27 09:56:58 UTC (rev 97075)
@@ -0,0 +1,49 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, 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.metadata.ejb.spec;
+
+import javax.xml.bind.annotation.XmlNs;
+import javax.xml.bind.annotation.XmlNsForm;
+import javax.xml.bind.annotation.XmlRootElement;
+import javax.xml.bind.annotation.XmlType;
+
+import org.jboss.metadata.javaee.spec.JavaEEMetaDataConstants;
+import org.jboss.xb.annotations.JBossXmlSchema;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+ at XmlRootElement(name="ejb-jar", namespace=JavaEEMetaDataConstants.JAVAEE_NS)
+ at JBossXmlSchema(
+ xmlns={@XmlNs(namespaceURI = JavaEEMetaDataConstants.JAVAEE_NS, prefix = "jee")},
+ ignoreUnresolvedFieldOrClass=false,
+ namespace=JavaEEMetaDataConstants.JAVAEE_NS,
+ elementFormDefault=XmlNsForm.QUALIFIED,
+ normalizeSpace=true)
+ at XmlType(name="ejb-jarType",
+ namespace=JavaEEMetaDataConstants.JAVAEE_NS,
+ propOrder={"descriptionGroup", "enterpriseBeans", "interceptors", "relationships", "assemblyDescriptor", "ejbClientJar"})
+public class EjbJar31MetaData extends EjbJar3xMetaData
+{
+ private static final long serialVersionUID = 1L;
+}
Modified: projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/EnterpriseBeanMetaData.java
===================================================================
--- projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/EnterpriseBeanMetaData.java 2009-11-27 07:49:24 UTC (rev 97074)
+++ projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/EnterpriseBeanMetaData.java 2009-11-27 09:56:58 UTC (rev 97075)
@@ -67,7 +67,7 @@
@JBossXmlModelGroup(
kind=JBossXmlConstants.MODEL_GROUP_CHOICE,
particles={
- @JBossXmlModelGroup.Particle(element=@XmlElement(name="session"), type=SessionBeanMetaData.class),
+ @JBossXmlModelGroup.Particle(element=@XmlElement(name="session"), type=SessionBean31MetaData.class),
@JBossXmlModelGroup.Particle(element=@XmlElement(name="entity"), type=EntityBeanMetaData.class),
@JBossXmlModelGroup.Particle(element=@XmlElement(name="message-driven"), type=MessageDrivenBeanMetaData.class)})
public abstract class EnterpriseBeanMetaData extends NamedMetaDataWithDescriptionGroup
@@ -113,7 +113,7 @@
if(bean instanceof MessageDrivenBeanMetaData)
nbean = new MessageDrivenBeanMetaData();
if(bean instanceof SessionBeanMetaData)
- nbean = new SessionBeanMetaData();
+ nbean = new SessionBean31MetaData();
return nbean;
}
Added: projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/SessionBean31MetaData.java
===================================================================
--- projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/SessionBean31MetaData.java (rev 0)
+++ projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/ejb/spec/SessionBean31MetaData.java 2009-11-27 09:56:58 UTC (rev 97075)
@@ -0,0 +1,74 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, 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.metadata.ejb.spec;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlType;
+
+import org.jboss.metadata.common.ejb.ITimeoutTarget;
+import org.jboss.xb.annotations.JBossXmlConstants;
+import org.jboss.xb.annotations.JBossXmlType;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+ at XmlType(name="session-beanType", propOrder={"descriptionGroup", "ejbName", "mappedName", "home", "remote", "localHome", "local",
+ "businessLocals", "businessRemotes", "serviceEndpoint", "ejbClass", "sessionType", "timeoutMethod", "initMethods", "removeMethods",
+ "asyncMethods",
+ "transactionType", "aroundInvokes", "environmentRefsGroup", "postActivates", "prePassivates", "securityRoleRefs", "securityIdentity"})
+ at JBossXmlType(modelGroup=JBossXmlConstants.MODEL_GROUP_UNORDERED_SEQUENCE)
+public class SessionBean31MetaData extends SessionBeanMetaData
+ implements ITimeoutTarget // FIXME: AbstractProcessor.processClass doesn't take super interfaces into account
+{
+ private static final long serialVersionUID = 1L;
+
+ private AsyncMethodsMetaData asyncMethods;
+
+ public AsyncMethodsMetaData getAsyncMethods()
+ {
+ return asyncMethods;
+ }
+
+ @XmlElement(name="async-method", required=false)
+ public void setAsyncMethods(AsyncMethodsMetaData asyncMethods)
+ {
+ if(asyncMethods == null)
+ throw new IllegalArgumentException("asyncMethods is null");
+
+ this.asyncMethods = asyncMethods;
+ }
+
+ @Override
+ public void merge(EnterpriseBeanMetaData eoverride, EnterpriseBeanMetaData eoriginal)
+ {
+ super.merge(eoverride, eoriginal);
+ SessionBean31MetaData override = (SessionBean31MetaData) eoverride;
+ SessionBean31MetaData original = (SessionBean31MetaData) eoriginal;
+ if(asyncMethods == null)
+ asyncMethods = new AsyncMethodsMetaData();
+ if(override != null && override.asyncMethods != null)
+ asyncMethods.addAll(override.asyncMethods);
+ if(original != null && original.asyncMethods != null)
+ asyncMethods.addAll(original.asyncMethods);
+ }
+}
Added: projects/metadata/ejb/trunk/src/main/resources/schema/ejb-jar_3_1.xsd
===================================================================
--- projects/metadata/ejb/trunk/src/main/resources/schema/ejb-jar_3_1.xsd (rev 0)
+++ projects/metadata/ejb/trunk/src/main/resources/schema/ejb-jar_3_1.xsd 2009-11-27 09:56:58 UTC (rev 97075)
@@ -0,0 +1,3260 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xsd:schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://java.sun.com/xml/ns/javaee"
+ xmlns:javaee="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+ elementFormDefault="qualified"
+ attributeFormDefault="unqualified"
+ version="3.1">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ $Id$
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:annotation>
+ <xsd:documentation>
+
+ DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
+
+ Copyright 2003-2009 Sun Microsystems, Inc. All rights reserved.
+
+ The contents of this file are subject to the terms of either the
+ GNU General Public License Version 2 only ("GPL") or the Common
+ Development and Distribution License("CDDL") (collectively, the
+ "License"). You may not use this file except in compliance with
+ the License. You can obtain a copy of the License at
+ https://glassfish.dev.java.net/public/CDDL+GPL.html or
+ glassfish/bootstrap/legal/LICENSE.txt. See the License for the
+ specific language governing permissions and limitations under the
+ License.
+
+ When distributing the software, include this License Header
+ Notice in each file and include the License file at
+ glassfish/bootstrap/legal/LICENSE.txt. Sun designates this
+ particular file as subject to the "Classpath" exception as
+ provided by Sun in the GPL Version 2 section of the License file
+ that accompanied this code. If applicable, add the following
+ below the License Header, with the fields enclosed by brackets []
+ replaced by your own identifying information:
+ "Portions Copyrighted [year] [name of copyright owner]"
+
+ Contributor(s):
+
+ If you wish your version of this file to be governed by only the
+ CDDL or only the GPL Version 2, indicate your decision by adding
+ "[Contributor] elects to include this software in this
+ distribution under the [CDDL or GPL Version 2] license." If you
+ don't indicate a single choice of license, a recipient has the
+ option to distribute your version of this file under either the
+ CDDL, the GPL Version 2 or to extend the choice of license to its
+ licensees as provided above. However, if you add GPL Version 2
+ code and therefore, elected the GPL Version 2 license, then the
+ option applies only if the new code is made subject to such
+ option by the copyright holder.
+
+
+ Portions Copyrighted 2009 Red Hat
+
+ Red Hat elects to include this software in this
+ distribution under the GPL Version 2 license.
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:annotation>
+ <xsd:documentation>
+<![CDATA[[
+ This is the XML Schema for the EJB 3.1 deployment descriptor.
+
+ All EJB deployment descriptors must indicate
+ the schema by using the Java EE namespace:
+
+ http://java.sun.com/xml/ns/javaee
+
+ and by indicating the version of the schema by
+ using the version element as shown below:
+
+ <ejb-jar xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+ http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"
+ version="3.1">
+ ...
+ </ejb-jar>
+
+ The instance documents may indicate the published version of
+ the schema using the xsi:schemaLocation attribute for the
+ Java EE namespace with the following location:
+
+ http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd
+
+]]>
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The following conventions apply to all Java EE
+ deployment descriptor elements unless indicated otherwise.
+
+ - In elements that specify a pathname to a file within the
+ same JAR file, relative filenames (i.e., those not
+ starting with "/") are considered relative to the root of
+ the JAR file's namespace. Absolute filenames (i.e., those
+ starting with "/") also specify names in the root of the
+ JAR file's namespace. In general, relative names are
+ preferred. The exception is .war files where absolute
+ names are preferred for consistency with the Servlet API.
+
+ </xsd:documentation>
+ </xsd:annotation>
+
+ <xsd:include schemaLocation="javaee_6.xsd"/>
+
+
+<!-- **************************************************** -->
+
+ <xsd:element name="ejb-jar"
+ type="javaee:ejb-jarType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ This is the root of the ejb-jar deployment descriptor.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:key name="ejb-name-key">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The ejb-name element contains the name of an enterprise
+ bean. The name must be unique within the ejb-jar or
+ .war file.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="javaee:enterprise-beans/*"/>
+ <xsd:field xpath="javaee:ejb-name"/>
+ </xsd:key>
+ <xsd:keyref name="ejb-name-references"
+ refer="javaee:ejb-name-key">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The keyref indicates the references from
+ relationship-role-source must be to a specific ejb-name
+ defined within the scope of enterprise-beans element.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath=".//javaee:ejb-relationship-role/javaee:relationship-role-source"/>
+ <xsd:field xpath="javaee:ejb-name"/>
+ </xsd:keyref>
+ <xsd:key name="role-name-key">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ A role-name-key is specified to allow the references
+ from the security-role-refs.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="javaee:assembly-descriptor/javaee:security-role"/>
+ <xsd:field xpath="javaee:role-name"/>
+ </xsd:key>
+ <xsd:keyref name="role-name-references"
+ refer="javaee:role-name-key">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The keyref indicates the references from
+ security-role-ref to a specified role-name.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="javaee:enterprise-beans/*/javaee:security-role-ref"/>
+ <xsd:field xpath="javaee:role-link"/>
+ </xsd:keyref>
+ </xsd:element>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="access-timeoutType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The access-timeoutType represents the maximum amount of
+ time (in a given time unit) that the container should wait for
+ a concurrency lock before throwing a timeout exception to the
+ client.
+
+ A timeout value of 0 means concurrent access is not permitted.
+
+ A timeout value of -1 means wait indefinitely to acquire a lock.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="timeout"
+ type="javaee:xsdIntegerType"/>
+ <xsd:element name="unit"
+ type="javaee:time-unit-typeType"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="async-methodType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The async-methodType element specifies that a session
+ bean method has asynchronous invocation semantics.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="method-name"
+ type="javaee:string"/>
+ <xsd:element name="method-params"
+ type="javaee:method-paramsType"
+ minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="activation-configType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The activation-configType defines information about the
+ expected configuration properties of the message-driven bean
+ in its operational environment. This may include information
+ about message acknowledgement, message selector, expected
+ destination type, etc.
+
+ The configuration information is expressed in terms of
+ name/value configuration properties.
+
+ The properties that are recognized for a particular
+ message-driven bean are determined by the messaging type.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description"
+ type="javaee:descriptionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="activation-config-property"
+ type="javaee:activation-config-propertyType"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="activation-config-propertyType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The activation-config-propertyType contains a name/value
+ configuration property pair for a message-driven bean.
+
+ The properties that are recognized for a particular
+ message-driven bean are determined by the messaging type.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="activation-config-property-name"
+ type="javaee:xsdStringType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The activation-config-property-name element contains
+ the name for an activation configuration property of
+ a message-driven bean.
+
+ For JMS message-driven beans, the following property
+ names are recognized: acknowledgeMode,
+ messageSelector, destinationType, subscriptionDurability
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="activation-config-property-value"
+ type="javaee:xsdStringType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The activation-config-property-value element
+ contains the value for an activation configuration
+ property of a message-driven bean.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="around-invokeType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The around-invoke type specifies a method on a
+ class to be called during the around invoke portion of an
+ ejb invocation. Note that each class may have only one
+ around invoke method and that the method may not be
+ overloaded.
+
+ If the class element is missing then
+ the class defining the callback is assumed to be the
+ interceptor class or component class in scope at the
+ location in the descriptor in which the around invoke
+ definition appears.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="class"
+ type="javaee:fully-qualified-classType"
+ minOccurs="0"/>
+ <xsd:element name="method-name"
+ type="javaee:java-identifierType"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="around-timeoutType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The around-timeout type specifies a method on a
+ class to be called during the around-timeout portion of
+ a timer timeout callback. Note that each class may have
+ only one around-timeout method and that the method may not
+ be overloaded.
+
+ If the class element is missing then
+ the class defining the callback is assumed to be the
+ interceptor class or component class in scope at the
+ location in the descriptor in which the around-timeout
+ definition appears.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="class"
+ type="javaee:fully-qualified-classType"
+ minOccurs="0"/>
+ <xsd:element name="method-name"
+ type="javaee:java-identifierType"/>
+ </xsd:sequence>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="assembly-descriptorType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The assembly-descriptorType defines
+ application-assembly information.
+
+ The application-assembly information consists of the
+ following parts: the definition of security roles, the
+ definition of method permissions, the definition of
+ transaction attributes for enterprise beans with
+ container-managed transaction demarcation, the definition
+ of interceptor bindings, a list of
+ methods to be excluded from being invoked, and a list of
+ exception types that should be treated as application exceptions.
+
+ All the parts are optional in the sense that they are
+ omitted if the lists represented by them are empty.
+
+ Providing an assembly-descriptor in the deployment
+ descriptor is optional for the ejb-jar or .war file producer.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="security-role"
+ type="javaee:security-roleType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="method-permission"
+ type="javaee:method-permissionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="container-transaction"
+ type="javaee:container-transactionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="interceptor-binding"
+ type="javaee:interceptor-bindingType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="message-destination"
+ type="javaee:message-destinationType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="exclude-list"
+ type="javaee:exclude-listType"
+ minOccurs="0"/>
+ <xsd:element name="application-exception"
+ type="javaee:application-exceptionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="cmp-fieldType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The cmp-fieldType describes a container-managed field. The
+ cmp-fieldType contains an optional description of the field,
+ and the name of the field.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description"
+ type="javaee:descriptionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="field-name"
+ type="javaee:java-identifierType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The field-name element specifies the name of a
+ container managed field.
+
+ The name of the cmp-field of an entity bean with
+ cmp-version 2.x must begin with a lowercase
+ letter. This field is accessed by methods whose
+ names consists of the name of the field specified by
+ field-name in which the first letter is uppercased,
+ prefixed by "get" or "set".
+
+ The name of the cmp-field of an entity bean with
+ cmp-version 1.x must denote a public field of the
+ enterprise bean class or one of its superclasses.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="cmp-versionType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The cmp-versionType specifies the version of an entity bean
+ with container-managed persistence. It is used by
+ cmp-version elements.
+
+ The value must be one of the two following:
+
+ 1.x
+ 2.x
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:restriction base="javaee:string">
+ <xsd:enumeration value="1.x"/>
+ <xsd:enumeration value="2.x"/>
+ </xsd:restriction>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="cmr-fieldType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The cmr-fieldType describes the bean provider's view of
+ a relationship. It consists of an optional description, and
+ the name and the class type of a field in the source of a
+ role of a relationship. The cmr-field-name element
+ corresponds to the name used for the get and set accessor
+ methods for the relationship. The cmr-field-type element is
+ used only for collection-valued cmr-fields. It specifies the
+ type of the collection that is used.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description"
+ type="javaee:descriptionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="cmr-field-name"
+ type="javaee:string">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The cmr-field-name element specifies the name of a
+ logical relationship field in the entity bean
+ class. The name of the cmr-field must begin with a
+ lowercase letter. This field is accessed by methods
+ whose names consist of the name of the field
+ specified by cmr-field-name in which the first
+ letter is uppercased, prefixed by "get" or "set".
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="cmr-field-type"
+ type="javaee:cmr-field-typeType"
+ minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="cmr-field-typeType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The cmr-field-type element specifies the class of a
+ collection-valued logical relationship field in the entity
+ bean class. The value of an element using cmr-field-typeType
+ must be either: java.util.Collection or java.util.Set.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:restriction base="javaee:string">
+ <xsd:enumeration value="java.util.Collection"/>
+ <xsd:enumeration value="java.util.Set"/>
+ </xsd:restriction>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="concurrency-management-typeType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The concurrency-management-typeType specifies the way concurrency
+ is managed for a singleton or stateful session bean.
+
+ The concurrency management type must be one of the following:
+
+ Bean
+ Container
+
+ Bean managed concurrency can only be specified for a singleton bean.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:restriction base="javaee:string">
+ <xsd:enumeration value="Bean"/>
+ <xsd:enumeration value="Container"/>
+ </xsd:restriction>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="concurrent-lock-typeType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The concurrent-lock-typeType specifies how the container must
+ manage concurrent access to a method of a Singleton bean
+ with container-managed concurrency.
+
+ The container managed concurrency lock type must be one
+ of the following :
+
+ Read
+ Write
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:restriction base="javaee:string">
+ <xsd:enumeration value="Read"/>
+ <xsd:enumeration value="Write"/>
+ </xsd:restriction>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="concurrent-methodType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The concurrent-methodType specifies information about a method
+ of a bean with container managed concurrency.
+
+ The optional lock element specifies the kind of concurrency
+ lock asssociated with the method.
+
+ The optional access-timeout element specifies the amount of
+ time (in a given time unit) the container should wait for a
+ concurrency lock before throwing an exception to the client.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="method"
+ type="javaee:named-methodType"/>
+ <xsd:element name="lock"
+ type="javaee:concurrent-lock-typeType"
+ minOccurs="0"/>
+ <xsd:element name="access-timeout"
+ type="javaee:access-timeoutType"
+ minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="container-transactionType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The container-transactionType specifies how the container
+ must manage transaction scopes for the enterprise bean's
+ method invocations. It defines an optional description, a
+ list of method elements, and a transaction attribute. The
+ transaction attribute is to be applied to all the specified
+ methods.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description"
+ type="javaee:descriptionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="method"
+ type="javaee:methodType"
+ maxOccurs="unbounded"/>
+ <xsd:element name="trans-attribute"
+ type="javaee:trans-attributeType"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="depends-onType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The depends-onType is used to express initialization
+ ordering dependencies between Singleton components.
+ The depends-onType specifies the names of one or more
+ Singleton beans in the same application as the referring
+ Singleton, each of which must be initialized before
+ the referring bean.
+
+ Each dependent bean is expressed using ejb-link syntax.
+ The order in which dependent beans are initialized at
+ runtime is not guaranteed to match the order in which
+ they are listed.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="ejb-name"
+ type="javaee:ejb-linkType"
+ minOccurs="1"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="ejb-classType">
+ <xsd:annotation>
+ <xsd:documentation>
+<![CDATA[[
+ The ejb-classType contains the fully-qualified name of the
+ enterprise bean's class. It is used by ejb-class elements.
+
+ Example:
+
+ <ejb-class>com.wombat.empl.EmployeeServiceBean</ejb-class>
+
+]]>
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:restriction base="javaee:fully-qualified-classType"/>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="ejb-jarType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The ejb-jarType defines the root element of the EJB
+ deployment descriptor. It contains
+
+ - an optional description of the ejb-jar file
+ - an optional display name
+ - an optional icon that contains a small and a large
+ icon file name
+ - an optional module name. Only applicable to
+ stand-alone ejb-jars or ejb-jars packaged in an ear.
+ Ignored if specified for an ejb-jar.xml within a .war.
+ In that case, standard .war module-name rules apply.
+ - structural information about all included
+ enterprise beans that is not specified through
+ annotations
+ - structural information about interceptor classes
+ - a descriptor for container managed relationships,
+ if any.
+ - an optional application-assembly descriptor
+ - an optional name of an ejb-client-jar file for the
+ ejb-jar.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="module-name"
+ type="javaee:string"
+ minOccurs="0"/>
+ <xsd:group ref="javaee:descriptionGroup"/>
+ <xsd:element name="enterprise-beans"
+ type="javaee:enterprise-beansType"
+ minOccurs="0"/>
+ <xsd:element name="interceptors"
+ type="javaee:interceptorsType"
+ minOccurs="0"/>
+ <xsd:element name="relationships"
+ type="javaee:relationshipsType"
+ minOccurs="0">
+ <xsd:unique name="relationship-name-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The ejb-relation-name contains the name of a
+ relation. The name must be unique within
+ relationships.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="javaee:ejb-relation"/>
+ <xsd:field xpath="javaee:ejb-relation-name"/>
+ </xsd:unique>
+ </xsd:element>
+ <xsd:element name="assembly-descriptor"
+ type="javaee:assembly-descriptorType"
+ minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ Providing an assembly-descriptor in the deployment
+ descriptor is optional for the ejb-jar or .war file
+ producer.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="ejb-client-jar"
+ type="javaee:pathType"
+ minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>
+<![CDATA[[
+ The optional ejb-client-jar element specifies a JAR
+ file that contains the class files necessary for a
+ client program to access the
+ enterprise beans in the ejb-jar file.
+
+ Example:
+
+ <ejb-client-jar>employee_service_client.jar
+ </ejb-client-jar>
+
+]]>
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute name="version"
+ type="javaee:dewey-versionType"
+ fixed="3.1"
+ use="required">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The version specifies the version of the
+ EJB specification that the instance document must
+ comply with. This information enables deployment tools
+ to validate a particular EJB Deployment
+ Descriptor with respect to a specific version of the EJB
+ schema.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="metadata-complete"
+ type="xsd:boolean">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The metadata-complete attribute defines whether this
+ deployment descriptor and other related deployment
+ descriptors for this module (e.g., web service
+ descriptors) are complete, or whether the class
+ files available to this module and packaged with
+ this application should be examined for annotations
+ that specify deployment information.
+
+ If metadata-complete is set to "true", the deployment
+ tool must ignore any annotations that specify deployment
+ information, which might be present in the class files
+ of the application.
+
+ If metadata-complete is not specified or is set to
+ "false", the deployment tool must examine the class
+ files of the application for annotations, as
+ specified by the specifications.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:attribute>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="ejb-nameType">
+ <xsd:annotation>
+ <xsd:documentation>
+<![CDATA[[
+ The ejb-nameType specifies an enterprise bean's name. It is
+ used by ejb-name elements. This name is assigned by the
+ file producer to name the enterprise bean in the
+ ejb-jar or .war file's deployment descriptor. The name must be
+ unique among the names of the enterprise beans in the same
+ ejb-jar or .war file.
+
+ There is no architected relationship between the used
+ ejb-name in the deployment descriptor and the JNDI name that
+ the Deployer will assign to the enterprise bean's home.
+
+ The name for an entity bean must conform to the lexical
+ rules for an NMTOKEN.
+
+ Example:
+
+ <ejb-name>EmployeeService</ejb-name>
+
+]]>
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:restriction base="javaee:xsdNMTOKENType"/>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="ejb-relationType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The ejb-relationType describes a relationship between two
+ entity beans with container-managed persistence. It is used
+ by ejb-relation elements. It contains a description; an
+ optional ejb-relation-name element; and exactly two
+ relationship role declarations, defined by the
+ ejb-relationship-role elements. The name of the
+ relationship, if specified, is unique within the ejb-jar
+ file.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description"
+ type="javaee:descriptionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="ejb-relation-name"
+ type="javaee:string"
+ minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The ejb-relation-name element provides a unique name
+ within the ejb-jar file for a relationship.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="ejb-relationship-role"
+ type="javaee:ejb-relationship-roleType"/>
+ <xsd:element name="ejb-relationship-role"
+ type="javaee:ejb-relationship-roleType"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="ejb-relationship-roleType">
+ <xsd:annotation>
+ <xsd:documentation>
+<![CDATA[[
+ The ejb-relationship-roleType describes a role within a
+ relationship. There are two roles in each relationship.
+
+ The ejb-relationship-roleType contains an optional
+ description; an optional name for the relationship role; a
+ specification of the multiplicity of the role; an optional
+ specification of cascade-delete functionality for the role;
+ the role source; and a declaration of the cmr-field, if any,
+ by means of which the other side of the relationship is
+ accessed from the perspective of the role source.
+
+ The multiplicity and role-source element are mandatory.
+
+ The relationship-role-source element designates an entity
+ bean by means of an ejb-name element. For bidirectional
+ relationships, both roles of a relationship must declare a
+ relationship-role-source element that specifies a cmr-field
+ in terms of which the relationship is accessed. The lack of
+ a cmr-field element in an ejb-relationship-role specifies
+ that the relationship is unidirectional in navigability and
+ the entity bean that participates in the relationship is
+ "not aware" of the relationship.
+
+ Example:
+
+ <ejb-relation>
+ <ejb-relation-name>Product-LineItem</ejb-relation-name>
+ <ejb-relationship-role>
+ <ejb-relationship-role-name>product-has-lineitems
+ </ejb-relationship-role-name>
+ <multiplicity>One</multiplicity>
+ <relationship-role-source>
+ <ejb-name>ProductEJB</ejb-name>
+ </relationship-role-source>
+ </ejb-relationship-role>
+ </ejb-relation>
+
+]]>
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description"
+ type="javaee:descriptionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="ejb-relationship-role-name"
+ type="javaee:string"
+ minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The ejb-relationship-role-name element defines a
+ name for a role that is unique within an
+ ejb-relation. Different relationships can use the
+ same name for a role.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="multiplicity"
+ type="javaee:multiplicityType"/>
+ <xsd:element name="cascade-delete"
+ type="javaee:emptyType"
+ minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The cascade-delete element specifies that, within a
+ particular relationship, the lifetime of one or more
+ entity beans is dependent upon the lifetime of
+ another entity bean. The cascade-delete element can
+ only be specified for an ejb-relationship-role
+ element contained in an ejb-relation element in
+ which the other ejb-relationship-role
+ element specifies a multiplicity of One.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="relationship-role-source"
+ type="javaee:relationship-role-sourceType"/>
+ <xsd:element name="cmr-field"
+ type="javaee:cmr-fieldType"
+ minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="enterprise-beansType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The enterprise-beansType declares one or more enterprise
+ beans. Each bean can be a session, entity or message-driven
+ bean.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:choice maxOccurs="unbounded">
+ <xsd:element name="session"
+ type="javaee:session-beanType">
+ <xsd:unique name="session-ejb-local-ref-name-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The ejb-ref-name element contains the name of
+ an EJB reference. The EJB reference is an entry in
+ the component's environment and is relative to the
+ java:comp/env context. The name must be unique within
+ the component.
+
+ It is recommended that name be prefixed with "ejb/".
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="javaee:ejb-local-ref"/>
+ <xsd:field xpath="javaee:ejb-ref-name"/>
+ </xsd:unique>
+ <xsd:unique name="session-ejb-ref-name-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The ejb-ref-name element contains the name of an EJB
+ reference. The EJB reference is an entry in the
+ component's environment and is relative to the
+ java:comp/env context. The name must be unique
+ within the component.
+
+ It is recommended that name is prefixed with "ejb/".
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="javaee:ejb-ref"/>
+ <xsd:field xpath="javaee:ejb-ref-name"/>
+ </xsd:unique>
+ <xsd:unique name="session-resource-env-ref-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The resource-env-ref-name element specifies the name
+ of a resource environment reference; its value is
+ the environment entry name used in the component
+ code. The name is a JNDI name relative to the
+ java:comp/env context and must be unique within an
+ component.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="javaee:resource-env-ref"/>
+ <xsd:field xpath="javaee:resource-env-ref-name"/>
+ </xsd:unique>
+ <xsd:unique name="session-message-destination-ref-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The message-destination-ref-name element specifies the name
+ of a message destination reference; its value is
+ the message destination reference name used in the component
+ code. The name is a JNDI name relative to the
+ java:comp/env context and must be unique within an
+ component.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="javaee:message-destination-ref"/>
+ <xsd:field xpath="javaee:message-destination-ref-name"/>
+ </xsd:unique>
+ <xsd:unique name="session-res-ref-name-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The res-ref-name element specifies the name of a
+ resource manager connection factory reference. The name
+ is a JNDI name relative to the java:comp/env context.
+ The name must be unique within an component.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="javaee:resource-ref"/>
+ <xsd:field xpath="javaee:res-ref-name"/>
+ </xsd:unique>
+ <xsd:unique name="session-env-entry-name-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The env-entry-name element contains the name of a
+ component's environment entry. The name is a JNDI
+ name relative to the java:comp/env context. The
+ name must be unique within an component.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="javaee:env-entry"/>
+ <xsd:field xpath="javaee:env-entry-name"/>
+ </xsd:unique>
+ </xsd:element>
+ <xsd:element name="entity"
+ type="javaee:entity-beanType">
+ <xsd:unique name="entity-ejb-local-ref-name-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The ejb-ref-name element contains the name of
+ an EJB reference. The EJB reference is an entry in
+ the component's environment and is relative to the
+ java:comp/env context. The name must be unique within
+ the component.
+
+ It is recommended that name be prefixed with "ejb/".
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="javaee:ejb-local-ref"/>
+ <xsd:field xpath="javaee:ejb-ref-name"/>
+ </xsd:unique>
+ <xsd:unique name="entity-ejb-ref-name-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The ejb-ref-name element contains the name of an EJB
+ reference. The EJB reference is an entry in the
+ component's environment and is relative to the
+ java:comp/env context. The name must be unique
+ within the component.
+
+ It is recommended that name is prefixed with "ejb/".
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="javaee:ejb-ref"/>
+ <xsd:field xpath="javaee:ejb-ref-name"/>
+ </xsd:unique>
+ <xsd:unique name="entity-resource-env-ref-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The resource-env-ref-name element specifies the name
+ of a resource environment reference; its value is
+ the environment entry name used in the component
+ code. The name is a JNDI name relative to the
+ java:comp/env context and must be unique within an
+ component.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="javaee:resource-env-ref"/>
+ <xsd:field xpath="javaee:resource-env-ref-name"/>
+ </xsd:unique>
+ <xsd:unique name="entity-message-destination-ref-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The message-destination-ref-name element specifies the name
+ of a message destination reference; its value is
+ the message destination reference name used in the component
+ code. The name is a JNDI name relative to the
+ java:comp/env context and must be unique within an
+ component.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="javaee:message-destination-ref"/>
+ <xsd:field xpath="javaee:message-destination-ref-name"/>
+ </xsd:unique>
+ <xsd:unique name="entity-res-ref-name-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The res-ref-name element specifies the name of a
+ resource manager connection factory reference. The name
+ is a JNDI name relative to the java:comp/env context.
+ The name must be unique within an component.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="javaee:resource-ref"/>
+ <xsd:field xpath="javaee:res-ref-name"/>
+ </xsd:unique>
+ <xsd:unique name="entity-env-entry-name-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The env-entry-name element contains the name of a
+ component's environment entry. The name is a JNDI
+ name relative to the java:comp/env context. The
+ name must be unique within an component.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="javaee:env-entry"/>
+ <xsd:field xpath="javaee:env-entry-name"/>
+ </xsd:unique>
+ </xsd:element>
+ <xsd:element name="message-driven"
+ type="javaee:message-driven-beanType">
+ <xsd:unique name="messaged-ejb-local-ref-name-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The ejb-ref-name element contains the name of
+ an EJB reference. The EJB reference is an entry in
+ the component's environment and is relative to the
+ java:comp/env context. The name must be unique within
+ the component.
+
+ It is recommended that name be prefixed with "ejb/".
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="javaee:ejb-local-ref"/>
+ <xsd:field xpath="javaee:ejb-ref-name"/>
+ </xsd:unique>
+ <xsd:unique name="messaged-ejb-ref-name-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The ejb-ref-name element contains the name of an EJB
+ reference. The EJB reference is an entry in the
+ component's environment and is relative to the
+ java:comp/env context. The name must be unique
+ within the component.
+
+ It is recommended that name is prefixed with "ejb/".
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="javaee:ejb-ref"/>
+ <xsd:field xpath="javaee:ejb-ref-name"/>
+ </xsd:unique>
+ <xsd:unique name="messaged-resource-env-ref-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The resource-env-ref-name element specifies the name
+ of a resource environment reference; its value is
+ the environment entry name used in the component
+ code. The name is a JNDI name relative to the
+ java:comp/env context and must be unique within an
+ component.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="javaee:resource-env-ref"/>
+ <xsd:field xpath="javaee:resource-env-ref-name"/>
+ </xsd:unique>
+ <xsd:unique name="messaged-message-destination-ref-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The message-destination-ref-name element specifies the name
+ of a message destination reference; its value is
+ the message destination reference name used in the component
+ code. The name is a JNDI name relative to the
+ java:comp/env context and must be unique within an
+ component.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="javaee:message-destination-ref"/>
+ <xsd:field xpath="javaee:message-destination-ref-name"/>
+ </xsd:unique>
+ <xsd:unique name="messaged-res-ref-name-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The res-ref-name element specifies the name of a
+ resource manager connection factory reference. The name
+ is a JNDI name relative to the java:comp/env context.
+ The name must be unique within an component.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="javaee:resource-ref"/>
+ <xsd:field xpath="javaee:res-ref-name"/>
+ </xsd:unique>
+ <xsd:unique name="messaged-env-entry-name-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The env-entry-name element contains the name of a
+ component's environment entry. The name is a JNDI
+ name relative to the java:comp/env context. The
+ name must be unique within an component.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath="javaee:env-entry"/>
+ <xsd:field xpath="javaee:env-entry-name"/>
+ </xsd:unique>
+ </xsd:element>
+ </xsd:choice>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="entity-beanType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The entity-beanType declares an entity bean. The declaration
+ consists of:
+
+ - an optional description
+ - an optional display name
+ - an optional icon element that contains a small and a large
+ icon file name
+ - a unique name assigned to the enterprise bean
+ in the deployment descriptor
+ - an optional mapped-name element that can be used to provide
+ vendor-specific deployment information such as the physical
+ jndi-name of the entity bean's remote home interface. This
+ element is not required to be supported by all implementations.
+ Any use of this element is non-portable.
+ - the names of the entity bean's remote home
+ and remote interfaces, if any
+ - the names of the entity bean's local home and local
+ interfaces, if any
+ - the entity bean's implementation class
+ - the optional entity bean's persistence management type. If
+ this element is not specified it is defaulted to Container.
+ - the entity bean's primary key class name
+ - an indication of the entity bean's reentrancy
+ - an optional specification of the
+ entity bean's cmp-version
+ - an optional specification of the entity bean's
+ abstract schema name
+ - an optional list of container-managed fields
+ - an optional specification of the primary key
+ field
+ - an optional declaration of the bean's environment
+ entries
+ - an optional declaration of the bean's EJB
+ references
+ - an optional declaration of the bean's local
+ EJB references
+ - an optional declaration of the bean's web
+ service references
+ - an optional declaration of the security role
+ references
+ - an optional declaration of the security identity
+ to be used for the execution of the bean's methods
+ - an optional declaration of the bean's
+ resource manager connection factory references
+ - an optional declaration of the bean's
+ resource environment references
+ - an optional declaration of the bean's message
+ destination references
+ - an optional set of query declarations
+ for finder and select methods for an entity
+ bean with cmp-version 2.x.
+
+ The optional abstract-schema-name element must be specified
+ for an entity bean with container-managed persistence and
+ cmp-version 2.x.
+
+ The optional primkey-field may be present in the descriptor
+ if the entity's persistence-type is Container.
+
+ The optional cmp-version element may be present in the
+ descriptor if the entity's persistence-type is Container. If
+ the persistence-type is Container and the cmp-version
+ element is not specified, its value defaults to 2.x.
+
+ The optional home and remote elements must be specified if
+ the entity bean cmp-version is 1.x.
+
+ The optional home and remote elements must be specified if
+ the entity bean has a remote home and remote interface.
+
+ The optional local-home and local elements must be specified
+ if the entity bean has a local home and local interface.
+
+ Either both the local-home and the local elements or both
+ the home and the remote elements must be specified.
+
+ The optional query elements must be present if the
+ persistence-type is Container and the cmp-version is 2.x and
+ query methods other than findByPrimaryKey have been defined
+ for the entity bean.
+
+ The other elements that are optional are "optional" in the
+ sense that they are omitted if the lists represented by them
+ are empty.
+
+ At least one cmp-field element must be present in the
+ descriptor if the entity's persistence-type is Container and
+ the cmp-version is 1.x, and none must not be present if the
+ entity's persistence-type is Bean.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:group ref="javaee:descriptionGroup"/>
+ <xsd:element name="ejb-name"
+ type="javaee:ejb-nameType"/>
+ <xsd:element name="mapped-name"
+ type="javaee:xsdStringType"
+ minOccurs="0"/>
+ <xsd:element name="home"
+ type="javaee:homeType"
+ minOccurs="0"/>
+ <xsd:element name="remote"
+ type="javaee:remoteType"
+ minOccurs="0"/>
+ <xsd:element name="local-home"
+ type="javaee:local-homeType"
+ minOccurs="0"/>
+ <xsd:element name="local"
+ type="javaee:localType"
+ minOccurs="0"/>
+ <xsd:element name="ejb-class"
+ type="javaee:ejb-classType"/>
+ <xsd:element name="persistence-type"
+ type="javaee:persistence-typeType"/>
+ <xsd:element name="prim-key-class"
+ type="javaee:fully-qualified-classType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The prim-key-class element contains the
+ fully-qualified name of an
+ entity bean's primary key class.
+
+ If the definition of the primary key class is
+ deferred to deployment time, the prim-key-class
+ element should specify java.lang.Object.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="reentrant"
+ type="javaee:true-falseType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The reentrant element specifies whether an entity
+ bean is reentrant or not.
+
+ The reentrant element must be one of the two
+ following: true or false
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="cmp-version"
+ type="javaee:cmp-versionType"
+ minOccurs="0"/>
+ <xsd:element name="abstract-schema-name"
+ type="javaee:java-identifierType"
+ minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The abstract-schema-name element specifies the name
+ of the abstract schema type of an entity bean with
+ cmp-version 2.x. It is used in EJB QL queries.
+
+ For example, the abstract-schema-name for an entity
+ bean whose local interface is
+ com.acme.commerce.Order might be Order.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="cmp-field"
+ type="javaee:cmp-fieldType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="primkey-field"
+ type="javaee:string"
+ minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The primkey-field element is used to specify the
+ name of the primary key field for an entity with
+ container-managed persistence.
+
+ The primkey-field must be one of the fields declared
+ in the cmp-field element, and the type of the field
+ must be the same as the primary key type.
+
+ The primkey-field element is not used if the primary
+ key maps to multiple container-managed fields
+ (i.e. the key is a compound key). In this case, the
+ fields of the primary key class must be public, and
+ their names must correspond to the field names of
+ the entity bean class that comprise the key.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:group ref="javaee:jndiEnvironmentRefsGroup"/>
+ <xsd:element name="security-role-ref"
+ type="javaee:security-role-refType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="security-identity"
+ type="javaee:security-identityType"
+ minOccurs="0"/>
+ <xsd:element name="query"
+ type="javaee:queryType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="exclude-listType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The exclude-listType specifies one or more methods which
+ the Assembler marks to be uncallable.
+
+ If the method permission relation contains methods that are
+ in the exclude list, the Deployer should consider those
+ methods to be uncallable.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description"
+ type="javaee:descriptionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="method"
+ type="javaee:methodType"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="application-exceptionType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The application-exceptionType declares an application
+ exception. The declaration consists of:
+
+ - the exception class. When the container receives
+ an exception of this type, it is required to
+ forward this exception as an applcation exception
+ to the client regardless of whether it is a checked
+ or unchecked exception.
+ - an optional rollback element. If this element is
+ set to true, the container must rollback the current
+ transaction before forwarding the exception to the
+ client. If not specified, it defaults to false.
+ - an optional inherited element. If this element is
+ set to true, subclasses of the exception class type
+ are also automatically considered application
+ exceptions (unless overriden at a lower level).
+ If set to false, only the exception class type is
+ considered an application-exception, not its
+ exception subclasses. If not specified, this
+ value defaults to true.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="exception-class"
+ type="javaee:fully-qualified-classType"/>
+ <xsd:element name="rollback"
+ type="javaee:true-falseType"
+ minOccurs="0"/>
+ <xsd:element name="inherited"
+ type="javaee:true-falseType"
+ minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="interceptorsType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The interceptorsType element declares one or more interceptor
+ classes used by components within this ejb-jar or .war. The declaration
+ consists of :
+
+ - An optional description.
+ - One or more interceptor elements.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description"
+ type="javaee:descriptionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="interceptor"
+ type="javaee:interceptorType"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="interceptorType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The interceptorType element declares information about a single
+ interceptor class. It consists of :
+
+ - An optional description.
+ - The fully-qualified name of the interceptor class.
+ - An optional list of around invoke methods declared on the
+ interceptor class and/or its super-classes.
+ - An optional list of around timeout methods declared on the
+ interceptor class and/or its super-classes.
+ - An optional list environment dependencies for the interceptor
+ class and/or its super-classes.
+ - An optional list of post-activate methods declared on the
+ interceptor class and/or its super-classes.
+ - An optional list of pre-passivate methods declared on the
+ interceptor class and/or its super-classes.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description"
+ type="javaee:descriptionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="interceptor-class"
+ type="javaee:fully-qualified-classType"/>
+ <xsd:element name="around-invoke"
+ type="javaee:around-invokeType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="around-timeout"
+ type="javaee:around-timeoutType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:group ref="javaee:jndiEnvironmentRefsGroup"/>
+ <xsd:element name="post-activate"
+ type="javaee:lifecycle-callbackType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="pre-passivate"
+ type="javaee:lifecycle-callbackType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="interceptor-bindingType">
+ <xsd:annotation>
+ <xsd:documentation>
+<![CDATA[[
+ The interceptor-bindingType element describes the binding of
+ interceptor classes to beans within the ejb-jar or .war.
+ It consists of :
+
+ - An optional description.
+ - The name of an ejb within the module or the wildcard value "*",
+ which is used to define interceptors that are bound to all
+ beans in the ejb-jar or .war.
+ - A list of interceptor classes that are bound to the contents of
+ the ejb-name element or a specification of the total ordering
+ over the interceptors defined for the given level and above.
+ - An optional exclude-default-interceptors element. If set to true,
+ specifies that default interceptors are not to be applied to
+ a bean-class and/or business method.
+ - An optional exclude-class-interceptors element. If set to true,
+ specifies that class interceptors are not to be applied to
+ a business method.
+ - An optional set of method elements for describing the name/params
+ of a method-level interceptor.
+
+ Interceptors bound to all classes using the wildcard syntax
+ "*" are default interceptors for the components in the ejb-jar or .war.
+ In addition, interceptors may be bound at the level of the bean
+ class (class-level interceptors) or business methods (method-level
+ interceptors ).
+
+ The binding of interceptors to classes is additive. If interceptors
+ are bound at the class-level and/or default-level as well as the
+ method-level, both class-level and/or default-level as well as
+ method-level will apply.
+
+ There are four possible styles of the interceptor element syntax :
+
+ 1.
+ <interceptor-binding>
+ <ejb-name>*</ejb-name>
+ <interceptor-class>INTERCEPTOR</interceptor-class>
+ </interceptor-binding>
+
+ Specifying the ejb-name as the wildcard value "*" designates
+ default interceptors (interceptors that apply to all session and
+ message-driven beans contained in the ejb-jar or .war).
+
+ 2.
+ <interceptor-binding>
+ <ejb-name>EJBNAME</ejb-name>
+ <interceptor-class>INTERCEPTOR</interceptor-class>
+ </interceptor-binding>
+
+ This style is used to refer to interceptors associated with the
+ specified enterprise bean(class-level interceptors).
+
+ 3.
+ <interceptor-binding>
+ <ejb-name>EJBNAME</ejb-name>
+ <interceptor-class>INTERCEPTOR</interceptor-class>
+ <method>
+ <method-name>METHOD</method-name>
+ </method>
+ </interceptor-binding>
+
+ This style is used to associate a method-level interceptor with
+ the specified enterprise bean. If there are multiple methods
+ with the same overloaded name, the element of this style refers
+ to all the methods with the overloaded name. Method-level
+ interceptors can only be associated with business methods of the
+ bean class. Note that the wildcard value "*" cannot be used
+ to specify method-level interceptors.
+
+ 4.
+ <interceptor-binding>
+ <ejb-name>EJBNAME</ejb-name>
+ <interceptor-class>INTERCEPTOR</interceptor-class>
+ <method>
+ <method-name>METHOD</method-name>
+ <method-params>
+ <method-param>PARAM-1</method-param>
+ <method-param>PARAM-2</method-param>
+ ...
+ <method-param>PARAM-N</method-param>
+ </method-params>
+ </method>
+ </interceptor-binding>
+
+ This style is used to associate a method-level interceptor with
+ the specified method of the specified enterprise bean. This
+ style is used to refer to a single method within a set of methods
+ with an overloaded name. The values PARAM-1 through PARAM-N
+ are the fully-qualified Java types of the method's input parameters
+ (if the method has no input arguments, the method-params element
+ contains no method-param elements). Arrays are specified by the
+ array element's type, followed by one or more pair of square
+ brackets (e.g. int[][]).
+
+]]>
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description"
+ type="javaee:descriptionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="ejb-name"
+ type="javaee:string"/>
+ <xsd:choice>
+ <xsd:element name="interceptor-class"
+ type="javaee:fully-qualified-classType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="interceptor-order"
+ type="javaee:interceptor-orderType"
+ minOccurs="1"/>
+ </xsd:choice>
+ <xsd:element name="exclude-default-interceptors"
+ type="javaee:true-falseType"
+ minOccurs="0"/>
+ <xsd:element name="exclude-class-interceptors"
+ type="javaee:true-falseType"
+ minOccurs="0"/>
+ <xsd:element name="method"
+ type="javaee:named-methodType"
+ minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="interceptor-orderType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The interceptor-orderType element describes a total ordering
+ of interceptor classes.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="interceptor-class"
+ type="javaee:fully-qualified-classType"
+ minOccurs="1"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="named-methodType">
+ <xsd:sequence>
+ <xsd:element name="method-name"
+ type="javaee:string"/>
+ <xsd:element name="method-params"
+ type="javaee:method-paramsType"
+ minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="init-methodType">
+ <xsd:sequence>
+ <xsd:element name="create-method"
+ type="javaee:named-methodType"/>
+ <xsd:element name="bean-method"
+ type="javaee:named-methodType"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="remove-methodType">
+ <xsd:sequence>
+ <xsd:element name="bean-method"
+ type="javaee:named-methodType"/>
+ <xsd:element name="retain-if-exception"
+ type="javaee:true-falseType"
+ minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="message-driven-beanType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The message-driven element declares a message-driven
+ bean. The declaration consists of:
+
+ - an optional description
+ - an optional display name
+ - an optional icon element that contains a small and a large
+ icon file name.
+ - a name assigned to the enterprise bean in
+ the deployment descriptor
+ - an optional mapped-name element that can be used to provide
+ vendor-specific deployment information such as the physical
+ jndi-name of destination from which this message-driven bean
+ should consume. This element is not required to be supported
+ by all implementations. Any use of this element is non-portable.
+ - the message-driven bean's implementation class
+ - an optional declaration of the bean's messaging
+ type
+ - an optional declaration of the bean's timeout method for
+ handling programmatically created timers
+ - an optional declaration of timers to be automatically created at
+ deployment time
+ - the optional message-driven bean's transaction management
+ type. If it is not defined, it is defaulted to Container.
+ - an optional declaration of the bean's
+ message-destination-type
+ - an optional declaration of the bean's
+ message-destination-link
+ - an optional declaration of the message-driven bean's
+ activation configuration properties
+ - an optional list of the message-driven bean class and/or
+ superclass around-invoke methods.
+ - an optional list of the message-driven bean class and/or
+ superclass around-timeout methods.
+ - an optional declaration of the bean's environment
+ entries
+ - an optional declaration of the bean's EJB references
+ - an optional declaration of the bean's local EJB
+ references
+ - an optional declaration of the bean's web service
+ references
+ - an optional declaration of the security role
+ references
+ - an optional declaration of the security
+ identity to be used for the execution of the bean's
+ methods
+ - an optional declaration of the bean's
+ resource manager connection factory
+ references
+ - an optional declaration of the bean's resource
+ environment references.
+ - an optional declaration of the bean's message
+ destination references
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:group ref="javaee:descriptionGroup"/>
+ <xsd:element name="ejb-name"
+ type="javaee:ejb-nameType"/>
+ <xsd:element name="mapped-name"
+ type="javaee:xsdStringType"
+ minOccurs="0"/>
+ <xsd:element name="ejb-class"
+ type="javaee:ejb-classType"
+ minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The ejb-class element specifies the fully qualified name
+ of the bean class for this ejb. It is required unless
+ there is a component-defining annotation for the same
+ ejb-name.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="messaging-type"
+ type="javaee:fully-qualified-classType"
+ minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The messaging-type element specifies the message
+ listener interface of the message-driven bean.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="timeout-method"
+ type="javaee:named-methodType"
+ minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The timeout-method element specifies the method that
+ will receive callbacks for programmatically
+ created timers.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="timer"
+ type="javaee:timerType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="transaction-type"
+ type="javaee:transaction-typeType"
+ minOccurs="0"/>
+ <xsd:element name="message-destination-type"
+ type="javaee:message-destination-typeType"
+ minOccurs="0"/>
+ <xsd:element name="message-destination-link"
+ type="javaee:message-destination-linkType"
+ minOccurs="0"/>
+ <xsd:element name="activation-config"
+ type="javaee:activation-configType"
+ minOccurs="0"/>
+ <xsd:element name="around-invoke"
+ type="javaee:around-invokeType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="around-timeout"
+ type="javaee:around-timeoutType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:group ref="javaee:jndiEnvironmentRefsGroup"/>
+ <xsd:element name="security-role-ref"
+ type="javaee:security-role-refType"
+ minOccurs="0"
+ maxOccurs="unbounded">
+ </xsd:element>
+ <xsd:element name="security-identity"
+ type="javaee:security-identityType"
+ minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="methodType">
+ <xsd:annotation>
+ <xsd:documentation>
+<![CDATA[[
+ The methodType is used to denote a method of an enterprise
+ bean's business, home, component, and/or web service endpoint
+ interface, or, in the case of a message-driven bean, the
+ bean's message listener method, or a set of such
+ methods. The ejb-name element must be the name of one of the
+ enterprise beans declared in the deployment descriptor; the
+ optional method-intf element allows to distinguish between a
+ method with the same signature that is multiply defined
+ across the business, home, component, and/or web service
+ endpoint nterfaces; the method-name element specifies the
+ method name; and the optional method-params elements identify
+ a single method among multiple methods with an overloaded
+ method name.
+
+ There are three possible styles of using methodType element
+ within a method element:
+
+ 1.
+ <method>
+ <ejb-name>EJBNAME</ejb-name>
+ <method-name>*</method-name>
+ </method>
+
+ This style is used to refer to all the methods of the
+ specified enterprise bean's business, home, component,
+ and/or web service endpoint interfaces.
+
+ 2.
+ <method>
+ <ejb-name>EJBNAME</ejb-name>
+ <method-name>METHOD</method-name>
+ </method>
+
+ This style is used to refer to the specified method of
+ the specified enterprise bean. If there are multiple
+ methods with the same overloaded name, the element of
+ this style refers to all the methods with the overloaded
+ name.
+
+ 3.
+ <method>
+ <ejb-name>EJBNAME</ejb-name>
+ <method-name>METHOD</method-name>
+ <method-params>
+ <method-param>PARAM-1</method-param>
+ <method-param>PARAM-2</method-param>
+ ...
+ <method-param>PARAM-n</method-param>
+ </method-params>
+ </method>
+
+ This style is used to refer to a single method within a
+ set of methods with an overloaded name. PARAM-1 through
+ PARAM-n are the fully-qualified Java types of the
+ method's input parameters (if the method has no input
+ arguments, the method-params element contains no
+ method-param elements). Arrays are specified by the
+ array element's type, followed by one or more pair of
+ square brackets (e.g. int[][]). If there are multiple
+ methods with the same overloaded name, this style refers
+ to all of the overloaded methods.
+
+ Examples:
+
+ Style 1: The following method element refers to all the
+ methods of the EmployeeService bean's business, home,
+ component, and/or web service endpoint interfaces:
+
+ <method>
+ <ejb-name>EmployeeService</ejb-name>
+ <method-name>*</method-name>
+ </method>
+
+ Style 2: The following method element refers to all the
+ create methods of the EmployeeService bean's home
+ interface(s).
+
+ <method>
+ <ejb-name>EmployeeService</ejb-name>
+ <method-name>create</method-name>
+ </method>
+
+ Style 3: The following method element refers to the
+ create(String firstName, String LastName) method of the
+ EmployeeService bean's home interface(s).
+
+ <method>
+ <ejb-name>EmployeeService</ejb-name>
+ <method-name>create</method-name>
+ <method-params>
+ <method-param>java.lang.String</method-param>
+ <method-param>java.lang.String</method-param>
+ </method-params>
+ </method>
+
+ The following example illustrates a Style 3 element with
+ more complex parameter types. The method
+ foobar(char s, int i, int[] iar, mypackage.MyClass mycl,
+ mypackage.MyClass[][] myclaar) would be specified as:
+
+ <method>
+ <ejb-name>EmployeeService</ejb-name>
+ <method-name>foobar</method-name>
+ <method-params>
+ <method-param>char</method-param>
+ <method-param>int</method-param>
+ <method-param>int[]</method-param>
+ <method-param>mypackage.MyClass</method-param>
+ <method-param>mypackage.MyClass[][]</method-param>
+ </method-params>
+ </method>
+
+ The optional method-intf element can be used when it becomes
+ necessary to differentiate between a method that is multiply
+ defined across the enterprise bean's business, home, component,
+ and/or web service endpoint interfaces with the same name and
+ signature. However, if the same method is a method of both the
+ local business interface, and the local component interface,
+ the same attribute applies to the method for both interfaces.
+ Likewise, if the same method is a method of both the remote
+ business interface and the remote component interface, the same
+ attribute applies to the method for both interfaces.
+
+ For example, the method element
+
+ <method>
+ <ejb-name>EmployeeService</ejb-name>
+ <method-intf>Remote</method-intf>
+ <method-name>create</method-name>
+ <method-params>
+ <method-param>java.lang.String</method-param>
+ <method-param>java.lang.String</method-param>
+ </method-params>
+ </method>
+
+ can be used to differentiate the create(String, String)
+ method defined in the remote interface from the
+ create(String, String) method defined in the remote home
+ interface, which would be defined as
+
+ <method>
+ <ejb-name>EmployeeService</ejb-name>
+ <method-intf>Home</method-intf>
+ <method-name>create</method-name>
+ <method-params>
+ <method-param>java.lang.String</method-param>
+ <method-param>java.lang.String</method-param>
+ </method-params>
+ </method>
+
+ and the create method that is defined in the local home
+ interface which would be defined as
+
+ <method>
+ <ejb-name>EmployeeService</ejb-name>
+ <method-intf>LocalHome</method-intf>
+ <method-name>create</method-name>
+ <method-params>
+ <method-param>java.lang.String</method-param>
+ <method-param>java.lang.String</method-param>
+ </method-params>
+ </method>
+
+ The method-intf element can be used with all three Styles
+ of the method element usage. For example, the following
+ method element example could be used to refer to all the
+ methods of the EmployeeService bean's remote home interface
+ and the remote business interface.
+
+ <method>
+ <ejb-name>EmployeeService</ejb-name>
+ <method-intf>Home</method-intf>
+ <method-name>*</method-name>
+ </method>
+
+]]>
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description"
+ type="javaee:descriptionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="ejb-name"
+ type="javaee:ejb-nameType"/>
+ <xsd:element name="method-intf"
+ type="javaee:method-intfType"
+ minOccurs="0">
+ </xsd:element>
+ <xsd:element name="method-name"
+ type="javaee:method-nameType"/>
+ <xsd:element name="method-params"
+ type="javaee:method-paramsType"
+ minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="method-intfType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The method-intf element allows a method element to
+ differentiate between the methods with the same name and
+ signature that are multiply defined across the home and
+ component interfaces (e.g, in both an enterprise bean's
+ remote and local interfaces or in both an enterprise bean's
+ home and remote interfaces, etc.); the component and web
+ service endpoint interfaces, and so on.
+
+ Local applies to the local component interface, local business
+ interfaces, and the no-interface view.
+
+ Remote applies to both remote component interface and the remote
+ business interfaces.
+
+ ServiceEndpoint refers to methods exposed through a web service
+ endpoint.
+
+ Timer refers to the bean's timeout callback methods.
+
+ MessageEndpoint refers to the methods of a message-driven bean's
+ message-listener interface.
+
+ The method-intf element must be one of the following:
+
+ Home
+ Remote
+ LocalHome
+ Local
+ ServiceEndpoint
+ Timer
+ MessageEndpoint
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:restriction base="javaee:string">
+ <xsd:enumeration value="Home"/>
+ <xsd:enumeration value="Remote"/>
+ <xsd:enumeration value="LocalHome"/>
+ <xsd:enumeration value="Local"/>
+ <xsd:enumeration value="ServiceEndpoint"/>
+ <xsd:enumeration value="Timer"/>
+ <xsd:enumeration value="MessageEndpoint"/>
+ </xsd:restriction>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="method-nameType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The method-nameType contains a name of an enterprise
+ bean method or the asterisk (*) character. The asterisk is
+ used when the element denotes all the methods of an
+ enterprise bean's client view interfaces.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:restriction base="javaee:string"/>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="method-paramsType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The method-paramsType defines a list of the
+ fully-qualified Java type names of the method parameters.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="method-param"
+ type="javaee:java-typeType"
+ minOccurs="0"
+ maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The method-param element contains a primitive
+ or a fully-qualified Java type name of a method
+ parameter.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="method-permissionType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The method-permissionType specifies that one or more
+ security roles are allowed to invoke one or more enterprise
+ bean methods. The method-permissionType consists of an
+ optional description, a list of security role names or an
+ indicator to state that the method is unchecked for
+ authorization, and a list of method elements.
+
+ The security roles used in the method-permissionType
+ must be defined in the security-role elements of the
+ deployment descriptor, and the methods must be methods
+ defined in the enterprise bean's business, home, component
+ and/or web service endpoint interfaces.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description"
+ type="javaee:descriptionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:choice>
+ <xsd:element name="role-name"
+ type="javaee:role-nameType"
+ maxOccurs="unbounded"/>
+ <xsd:element name="unchecked"
+ type="javaee:emptyType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The unchecked element specifies that a method is
+ not checked for authorization by the container
+ prior to invocation of the method.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ </xsd:choice>
+ <xsd:element name="method"
+ type="javaee:methodType"
+ maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="multiplicityType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The multiplicityType describes the multiplicity of the
+ role that participates in a relation.
+
+ The value must be one of the two following:
+
+ One
+ Many
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:restriction base="javaee:string">
+ <xsd:enumeration value="One"/>
+ <xsd:enumeration value="Many"/>
+ </xsd:restriction>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="persistence-typeType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The persistence-typeType specifies an entity bean's persistence
+ management type.
+
+ The persistence-type element must be one of the two following:
+
+ Bean
+ Container
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:restriction base="javaee:string">
+ <xsd:enumeration value="Bean"/>
+ <xsd:enumeration value="Container"/>
+ </xsd:restriction>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="queryType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The queryType defines a finder or select
+ query. It contains
+ - an optional description of the query
+ - the specification of the finder or select
+ method it is used by
+ - an optional specification of the result type
+ mapping, if the query is for a select method
+ and entity objects are returned.
+ - the EJB QL query string that defines the query.
+
+ Queries that are expressible in EJB QL must use the ejb-ql
+ element to specify the query. If a query is not expressible
+ in EJB QL, the description element should be used to
+ describe the semantics of the query and the ejb-ql element
+ should be empty.
+
+ The result-type-mapping is an optional element. It can only
+ be present if the query-method specifies a select method
+ that returns entity objects. The default value for the
+ result-type-mapping element is "Local".
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description"
+ type="javaee:descriptionType"
+ minOccurs="0"/>
+ <xsd:element name="query-method"
+ type="javaee:query-methodType"/>
+ <xsd:element name="result-type-mapping"
+ type="javaee:result-type-mappingType"
+ minOccurs="0"/>
+ <xsd:element name="ejb-ql"
+ type="javaee:xsdStringType"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="query-methodType">
+ <xsd:annotation>
+ <xsd:documentation>
+<![CDATA[[
+ The query-method specifies the method for a finder or select
+ query.
+
+ The method-name element specifies the name of a finder or select
+ method in the entity bean's implementation class.
+
+ Each method-param must be defined for a query-method using the
+ method-params element.
+
+ It is used by the query-method element.
+
+ Example:
+
+ <query>
+ <description>Method finds large orders</description>
+ <query-method>
+ <method-name>findLargeOrders</method-name>
+ <method-params></method-params>
+ </query-method>
+ <ejb-ql>
+ SELECT OBJECT(o) FROM Order o
+ WHERE o.amount > 1000
+ </ejb-ql>
+ </query>
+
+]]>
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="method-name"
+ type="javaee:method-nameType"/>
+ <xsd:element name="method-params"
+ type="javaee:method-paramsType"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="relationship-role-sourceType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The relationship-role-sourceType designates the source of a
+ role that participates in a relationship. A
+ relationship-role-sourceType is used by
+ relationship-role-source elements to uniquely identify an
+ entity bean.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description"
+ type="javaee:descriptionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="ejb-name"
+ type="javaee:ejb-nameType"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="relationshipsType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The relationshipsType describes the relationships in
+ which entity beans with container-managed persistence
+ participate. The relationshipsType contains an optional
+ description; and a list of ejb-relation elements, which
+ specify the container managed relationships.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description"
+ type="javaee:descriptionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="ejb-relation"
+ type="javaee:ejb-relationType"
+ maxOccurs="unbounded">
+ <xsd:unique name="role-name-uniqueness">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The ejb-relationship-role-name contains the name of a
+ relationship role. The name must be unique within
+ a relationship, but can be reused in different
+ relationships.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:selector xpath=".//javaee:ejb-relationship-role-name"/>
+ <xsd:field xpath="."/>
+ </xsd:unique>
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="result-type-mappingType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The result-type-mappingType is used in the query element to
+ specify whether an abstract schema type returned by a query
+ for a select method is to be mapped to an EJBLocalObject or
+ EJBObject type.
+
+ The value must be one of the following:
+
+ Local
+ Remote
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:restriction base="javaee:string">
+ <xsd:enumeration value="Local"/>
+ <xsd:enumeration value="Remote"/>
+ </xsd:restriction>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="security-identityType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The security-identityType specifies whether the caller's
+ security identity is to be used for the execution of the
+ methods of the enterprise bean or whether a specific run-as
+ identity is to be used. It contains an optional description
+ and a specification of the security identity to be used.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description"
+ type="javaee:descriptionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:choice>
+ <xsd:element name="use-caller-identity"
+ type="javaee:emptyType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The use-caller-identity element specifies that
+ the caller's security identity be used as the
+ security identity for the execution of the
+ enterprise bean's methods.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="run-as"
+ type="javaee:run-asType"/>
+ </xsd:choice>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="session-beanType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The session-beanType declares an session bean. The
+ declaration consists of:
+
+ - an optional description
+ - an optional display name
+ - an optional icon element that contains a small and a large
+ icon file name
+ - a name assigned to the enterprise bean
+ in the deployment description
+ - an optional mapped-name element that can be used to provide
+ vendor-specific deployment information such as the physical
+ jndi-name of the session bean's remote home/business interface.
+ This element is not required to be supported by all
+ implementations. Any use of this element is non-portable.
+ - the names of all the remote or local business interfaces,
+ if any
+ - the names of the session bean's remote home and
+ remote interfaces, if any
+ - the names of the session bean's local home and
+ local interfaces, if any
+ - an optional declaration that this bean exposes a
+ no-interface view
+ - the name of the session bean's web service endpoint
+ interface, if any
+ - the session bean's implementation class
+ - the session bean's state management type
+ - an optional declaration of a stateful session bean's timeout value
+ - an optional declaration of the session bean's timeout method for
+ handling programmatically created timers
+ - an optional declaration of timers to be automatically created at
+ deployment time
+ - an optional declaration that a Singleton bean has eager
+ initialization
+ - an optional declaration of a Singleton/Stateful bean's concurrency
+ management type
+ - an optional declaration of the method locking metadata
+ for a Singleton with container managed concurrency
+ - an optional declaration of the other Singleton beans in the
+ application that must be initialized before this bean
+ - an optional declaration of the session bean's asynchronous
+ methods
+ - the optional session bean's transaction management type.
+ If it is not present, it is defaulted to Container.
+ - an optional declaration of a stateful session bean's
+ afterBegin, beforeCompletion, and/or afterCompletion methods
+ - an optional list of the session bean class and/or
+ superclass around-invoke methods.
+ - an optional list of the session bean class and/or
+ superclass around-timeout methods.
+ - an optional declaration of the bean's
+ environment entries
+ - an optional declaration of the bean's EJB references
+ - an optional declaration of the bean's local
+ EJB references
+ - an optional declaration of the bean's web
+ service references
+ - an optional declaration of the security role
+ references
+ - an optional declaration of the security identity
+ to be used for the execution of the bean's methods
+ - an optional declaration of the bean's resource
+ manager connection factory references
+ - an optional declaration of the bean's resource
+ environment references.
+ - an optional declaration of the bean's message
+ destination references
+
+ The elements that are optional are "optional" in the sense
+ that they are omitted when if lists represented by them are
+ empty.
+
+ The service-endpoint element may only be specified if the
+ bean is a stateless session bean.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:group ref="javaee:descriptionGroup"/>
+ <xsd:element name="ejb-name"
+ type="javaee:ejb-nameType"/>
+ <xsd:element name="mapped-name"
+ type="javaee:xsdStringType"
+ minOccurs="0"/>
+ <xsd:element name="home"
+ type="javaee:homeType"
+ minOccurs="0"/>
+ <xsd:element name="remote"
+ type="javaee:remoteType"
+ minOccurs="0"/>
+ <xsd:element name="local-home"
+ type="javaee:local-homeType"
+ minOccurs="0"/>
+ <xsd:element name="local"
+ type="javaee:localType"
+ minOccurs="0"/>
+ <xsd:element name="business-local"
+ type="javaee:fully-qualified-classType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="business-remote"
+ type="javaee:fully-qualified-classType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="local-bean"
+ type="javaee:emptyType"
+ minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The local-bean element declares that this
+ session bean exposes a no-interface Local client view.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="service-endpoint"
+ type="javaee:fully-qualified-classType"
+ minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The service-endpoint element contains the
+ fully-qualified name of the enterprise bean's web
+ service endpoint interface. The service-endpoint
+ element may only be specified for a stateless
+ session bean. The specified interface must be a
+ valid JAX-RPC service endpoint interface.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="ejb-class"
+ type="javaee:ejb-classType"
+ minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The ejb-class element specifies the fully qualified name
+ of the bean class for this ejb. It is required unless
+ there is a component-defining annotation for the same
+ ejb-name.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="session-type"
+ type="javaee:session-typeType"
+ minOccurs="0"/>
+ <xsd:element name="stateful-timeout"
+ type="javaee:stateful-timeoutType"
+ minOccurs="0"/>
+ <xsd:element name="timeout-method"
+ type="javaee:named-methodType"
+ minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The timeout-method element specifies the method that
+ will receive callbacks for programmatically
+ created timers.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="timer"
+ type="javaee:timerType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="init-on-startup"
+ type="javaee:true-falseType"
+ minOccurs="0">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The init-on-startup element specifies that a Singleton
+ bean has eager initialization.
+ This element can only be specified for singleton session
+ beans.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="concurrency-management-type"
+ type="javaee:concurrency-management-typeType"
+ minOccurs="0"/>
+ <xsd:element name="concurrent-method"
+ type="javaee:concurrent-methodType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="depends-on"
+ type="javaee:depends-onType"
+ minOccurs="0"/>
+ <xsd:element name="init-method"
+ type="javaee:init-methodType"
+ minOccurs="0"
+ maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The init-method element specifies the mappings for
+ EJB 2.x style create methods for an EJB 3.x bean.
+ This element can only be specified for stateful
+ session beans.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="remove-method"
+ type="javaee:remove-methodType"
+ minOccurs="0"
+ maxOccurs="unbounded">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The remove-method element specifies the mappings for
+ EJB 2.x style remove methods for an EJB 3.x bean.
+ This element can only be specified for stateful
+ session beans.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ </xsd:element>
+ <xsd:element name="async-method"
+ type="javaee:async-methodType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="transaction-type"
+ type="javaee:transaction-typeType"
+ minOccurs="0"/>
+ <xsd:element name="after-begin-method"
+ type="javaee:named-methodType"
+ minOccurs="0"/>
+ <xsd:element name="before-completion-method"
+ type="javaee:named-methodType"
+ minOccurs="0"/>
+ <xsd:element name="after-completion-method"
+ type="javaee:named-methodType"
+ minOccurs="0"/>
+ <xsd:element name="around-invoke"
+ type="javaee:around-invokeType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="around-timeout"
+ type="javaee:around-timeoutType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:group ref="javaee:jndiEnvironmentRefsGroup"/>
+ <xsd:element name="post-activate"
+ type="javaee:lifecycle-callbackType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="pre-passivate"
+ type="javaee:lifecycle-callbackType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="security-role-ref"
+ type="javaee:security-role-refType"
+ minOccurs="0"
+ maxOccurs="unbounded">
+ </xsd:element>
+ <xsd:element name="security-identity"
+ type="javaee:security-identityType"
+ minOccurs="0">
+ </xsd:element>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="session-typeType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The session-typeType describes whether the session bean is a
+ singleton, stateful or stateless session. It is used by
+ session-type elements.
+
+ The value must be one of the three following:
+
+ Singleton
+ Stateful
+ Stateless
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:restriction base="javaee:string">
+ <xsd:enumeration value="Singleton"/>
+ <xsd:enumeration value="Stateful"/>
+ <xsd:enumeration value="Stateless"/>
+ </xsd:restriction>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="stateful-timeoutType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The stateful-timeoutType represents the amount of time
+ a stateful session bean can be idle(not receive any client
+ invocations) before it is eligible for removal by the container.
+
+ A timeout value of 0 means the bean is immediately eligible for removal.
+
+ A timeout value of -1 means the bean will never be removed due to timeout.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="timeout"
+ type="javaee:xsdIntegerType"/>
+ <xsd:element name="unit"
+ type="javaee:time-unit-typeType"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="time-unit-typeType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The time-unit-typeType represents a time duration at a given
+ unit of granularity.
+
+ The time unit type must be one of the following :
+
+ Days
+ Hours
+ Minutes
+ Seconds
+ Milliseconds
+ Microseconds
+ Nanoseconds
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:restriction base="javaee:string">
+ <xsd:enumeration value="Days"/>
+ <xsd:enumeration value="Hours"/>
+ <xsd:enumeration value="Minutes"/>
+ <xsd:enumeration value="Seconds"/>
+ <xsd:enumeration value="Milliseconds"/>
+ <xsd:enumeration value="Microseconds"/>
+ <xsd:enumeration value="Nanoseconds"/>
+ </xsd:restriction>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="timer-scheduleType">
+ <xsd:sequence>
+ <xsd:element name="second"
+ type="javaee:string"
+ minOccurs="0"/>
+ <xsd:element name="minute"
+ type="javaee:string"
+ minOccurs="0"/>
+ <xsd:element name="hour"
+ type="javaee:string"
+ minOccurs="0"/>
+ <xsd:element name="day-of-month"
+ type="javaee:string"
+ minOccurs="0"/>
+ <xsd:element name="month"
+ type="javaee:string"
+ minOccurs="0"/>
+ <xsd:element name="day-of-week"
+ type="javaee:string"
+ minOccurs="0"/>
+ <xsd:element name="year"
+ type="javaee:string"
+ minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="timerType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The timerType specifies an enterprise bean timer. Each
+ timer is automatically created by the container upon
+ deployment. Timer callbacks occur based on the
+ schedule attributes. All callbacks are made to the
+ timeout-method associated with the timer.
+
+ A timer can have an optional start and/or end date. If
+ a start date is specified, it takes precedence over the
+ associated timer schedule such that any matching
+ expirations prior to the start time will not occur.
+ Likewise, no matching expirations will occur after any
+ end date. Start/End dates are specified using the
+ XML Schema dateTime type, which follows the ISO-8601
+ standard for date(and optional time-within-the-day)
+ representation.
+
+ An optional flag can be used to control whether
+ this timer has persistent(true) delivery semantics or
+ non-persistent(false) delivery semantics. If not specified,
+ the value defaults to persistent(true).
+
+ A time zone can optionally be associated with a timer.
+ If specified, the timer's schedule is evaluated in the context
+ of that time zone, regardless of the default time zone in which
+ the container is executing. Time zones are specified as an
+ ID string. The set of required time zone IDs is defined by
+ the Zone Name(TZ) column of the public domain zoneinfo database.
+
+ An optional info string can be assigned to the timer and
+ retrieved at runtime through the Timer.getInfo() method.
+
+ The timerType can only be specified on stateless session
+ beans, singleton session beans, and message-driven beans.
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:sequence>
+ <xsd:element name="description"
+ type="javaee:descriptionType"
+ minOccurs="0"
+ maxOccurs="unbounded"/>
+ <xsd:element name="schedule"
+ type="javaee:timer-scheduleType"/>
+ <xsd:element name="start"
+ type="xsd:dateTime"
+ minOccurs="0"/>
+ <xsd:element name="end"
+ type="xsd:dateTime"
+ minOccurs="0"/>
+ <xsd:element name="timeout-method"
+ type="javaee:named-methodType"/>
+ <xsd:element name="persistent"
+ type="javaee:true-falseType"
+ minOccurs="0"/>
+ <xsd:element name="timezone"
+ type="javaee:string"
+ minOccurs="0"/>
+ <xsd:element name="info"
+ type="javaee:string"
+ minOccurs="0"/>
+ </xsd:sequence>
+ <xsd:attribute name="id"
+ type="xsd:ID"/>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="trans-attributeType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The trans-attributeType specifies how the container must
+ manage the transaction boundaries when delegating a method
+ invocation to an enterprise bean's business method.
+
+ The value must be one of the following:
+
+ NotSupported
+ Supports
+ Required
+ RequiresNew
+ Mandatory
+ Never
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:restriction base="javaee:string">
+ <xsd:enumeration value="NotSupported"/>
+ <xsd:enumeration value="Supports"/>
+ <xsd:enumeration value="Required"/>
+ <xsd:enumeration value="RequiresNew"/>
+ <xsd:enumeration value="Mandatory"/>
+ <xsd:enumeration value="Never"/>
+ </xsd:restriction>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+
+<!-- **************************************************** -->
+
+ <xsd:complexType name="transaction-typeType">
+ <xsd:annotation>
+ <xsd:documentation>
+
+ The transaction-typeType specifies an enterprise bean's
+ transaction management type.
+
+ The transaction-type must be one of the two following:
+
+ Bean
+ Container
+
+ </xsd:documentation>
+ </xsd:annotation>
+ <xsd:simpleContent>
+ <xsd:restriction base="javaee:string">
+ <xsd:enumeration value="Bean"/>
+ <xsd:enumeration value="Container"/>
+ </xsd:restriction>
+ </xsd:simpleContent>
+ </xsd:complexType>
+
+</xsd:schema>
Added: projects/metadata/ejb/trunk/src/test/java/org/jboss/metadata/ejb/test/async/AsyncMethodBean.java
===================================================================
--- projects/metadata/ejb/trunk/src/test/java/org/jboss/metadata/ejb/test/async/AsyncMethodBean.java (rev 0)
+++ projects/metadata/ejb/trunk/src/test/java/org/jboss/metadata/ejb/test/async/AsyncMethodBean.java 2009-11-27 09:56:58 UTC (rev 97075)
@@ -0,0 +1,39 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, 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.metadata.ejb.test.async;
+
+import javax.ejb.Asynchronous;
+import javax.ejb.Stateless;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+ at Stateless
+public class AsyncMethodBean
+{
+ @Asynchronous
+ public void test2(String s)
+ {
+
+ }
+}
Added: projects/metadata/ejb/trunk/src/test/java/org/jboss/metadata/ejb/test/async/unit/AsyncMethodTestCase.java
===================================================================
--- projects/metadata/ejb/trunk/src/test/java/org/jboss/metadata/ejb/test/async/unit/AsyncMethodTestCase.java (rev 0)
+++ projects/metadata/ejb/trunk/src/test/java/org/jboss/metadata/ejb/test/async/unit/AsyncMethodTestCase.java 2009-11-27 09:56:58 UTC (rev 97075)
@@ -0,0 +1,130 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2008, 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.metadata.ejb.test.async.unit;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+import java.lang.reflect.AnnotatedElement;
+import java.net.URL;
+import java.util.Collection;
+
+import org.jboss.metadata.annotation.creator.ejb.jboss.JBoss50Creator;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.annotation.finder.DefaultAnnotationFinder;
+import org.jboss.metadata.ejb.jboss.JBoss50MetaData;
+import org.jboss.metadata.ejb.jboss.JBossSessionBean31MetaData;
+import org.jboss.metadata.ejb.spec.AsyncMethodMetaData;
+import org.jboss.metadata.ejb.spec.EjbJar30MetaData;
+import org.jboss.metadata.ejb.spec.EjbJarMetaData;
+import org.jboss.metadata.ejb.spec.SessionBean31MetaData;
+import org.jboss.test.metadata.common.PackageScanner;
+import org.jboss.test.metadata.common.ScanPackage;
+import org.jboss.xb.binding.JBossXBException;
+import org.jboss.xb.binding.Unmarshaller;
+import org.jboss.xb.binding.UnmarshallerFactory;
+import org.jboss.xb.binding.resolver.MultiClassSchemaResolver;
+import org.jboss.xb.binding.resolver.MutableSchemaResolver;
+import org.junit.BeforeClass;
+import org.junit.Test;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ * @version $Revision: $
+ */
+public class AsyncMethodTestCase
+{
+ private static MutableSchemaResolver schemaBindingResolver;
+ private static UnmarshallerFactory unmarshallerFactory = UnmarshallerFactory.newInstance();
+
+ @BeforeClass
+ public static void beforeClass()
+ {
+ schemaBindingResolver = new MultiClassSchemaResolver();
+ schemaBindingResolver.mapLocationToClass("ejb-jar_3_1.xsd", EjbJar30MetaData.class);
+ }
+
+ @Test
+ @ScanPackage("org.jboss.metadata.ejb.test.async")
+ public void testMerge() throws Exception
+ {
+ EjbJarMetaData jarMetaData = unmarshal(EjbJarMetaData.class, "/org/jboss/metadata/ejb/test/async/ejb-jar.xml");
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ JBoss50Creator creator = new JBoss50Creator(finder);
+ Collection<Class<?>> classes = PackageScanner.loadClasses();
+ JBoss50MetaData annotatedMetaData = creator.create(classes);
+
+ JBoss50MetaData mergedMetaData = new JBoss50MetaData();
+ // note that we use the annotation as overrides :-)
+ mergedMetaData.merge(annotatedMetaData, jarMetaData);
+
+ JBossSessionBean31MetaData bean = (JBossSessionBean31MetaData) mergedMetaData.getEnterpriseBean("AsyncMethodBean");
+ assertNotNull(bean);
+ assertNotNull("asyncMethods not merged", bean.getAsyncMethods());
+ assertEquals(2, bean.getAsyncMethods().size());
+ AsyncMethodMetaData asyncMethod = bean.getAsyncMethods().get(0);
+ // annotated comes first in this test case, see above
+ assertEquals("test2", asyncMethod.getMethodName());
+ assertEquals("java.lang.String", asyncMethod.getMethodParams().get(0));
+ asyncMethod = bean.getAsyncMethods().get(1);
+ assertEquals("test", asyncMethod.getMethodName());
+ assertEquals("int", asyncMethod.getMethodParams().get(0));
+ }
+
+ @Test
+ public void testParse() throws Exception
+ {
+ EjbJarMetaData jarMetaData = unmarshal(EjbJarMetaData.class, "/org/jboss/metadata/ejb/test/async/ejb-jar.xml");
+ assertNotNull(jarMetaData);
+ SessionBean31MetaData bean = (SessionBean31MetaData) jarMetaData.getEnterpriseBean("AsyncMethodBean");
+ assertNotNull(bean);
+ AsyncMethodMetaData asyncMethod = bean.getAsyncMethods().get(0);
+ assertEquals("test", asyncMethod.getMethodName());
+ assertEquals("int", asyncMethod.getMethodParams().get(0));
+ }
+
+ @Test
+ @ScanPackage("org.jboss.metadata.ejb.test.async")
+ public void testScan() throws Exception
+ {
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ JBoss50Creator creator = new JBoss50Creator(finder);
+ Collection<Class<?>> classes = PackageScanner.loadClasses();
+ JBoss50MetaData metaData = creator.create(classes);
+ assertNotNull(metaData);
+ JBossSessionBean31MetaData bean = (JBossSessionBean31MetaData) metaData.getEnterpriseBean("AsyncMethodBean");
+ assertNotNull(bean);
+ AsyncMethodMetaData asyncMethod = bean.getAsyncMethods().get(0);
+ assertEquals("test2", asyncMethod.getMethodName());
+ assertEquals("java.lang.String", asyncMethod.getMethodParams().get(0));
+ }
+
+ private static <T> T unmarshal(Class<T> type, String resource) throws JBossXBException
+ {
+ Unmarshaller unmarshaller = unmarshallerFactory.newUnmarshaller();
+ unmarshaller.setValidation(false);
+ URL url = type.getResource(resource);
+ if(url == null)
+ throw new IllegalArgumentException("Failed to find resource " + resource);
+ return type.cast(unmarshaller.unmarshal(url.toString(), schemaBindingResolver));
+ }
+}
Modified: projects/metadata/ejb/trunk/src/test/java/org/jboss/test/metadata/ejb/JBoss50UnitTestCase.java
===================================================================
--- projects/metadata/ejb/trunk/src/test/java/org/jboss/test/metadata/ejb/JBoss50UnitTestCase.java 2009-11-27 07:49:24 UTC (rev 97074)
+++ projects/metadata/ejb/trunk/src/test/java/org/jboss/test/metadata/ejb/JBoss50UnitTestCase.java 2009-11-27 09:56:58 UTC (rev 97075)
@@ -67,6 +67,7 @@
import org.jboss.metadata.ejb.spec.EnterpriseBeansMetaData;
import org.jboss.metadata.ejb.spec.MessageDrivenBeanMetaData;
import org.jboss.metadata.ejb.spec.SecurityIdentityMetaData;
+import org.jboss.metadata.ejb.spec.SessionBean31MetaData;
import org.jboss.metadata.ejb.spec.SessionBeanMetaData;
import org.jboss.metadata.ejb.spec.SubscriptionDurability;
import org.jboss.metadata.javaee.spec.EJBLocalReferenceMetaData;
@@ -266,7 +267,7 @@
// normally from the annotation scanner
EjbJar30MetaData ejbJar = new EjbJar30MetaData();
ejbJar.setEnterpriseBeans(new EnterpriseBeansMetaData());
- SessionBeanMetaData sessionBean = new SessionBeanMetaData();
+ SessionBeanMetaData sessionBean = new SessionBean31MetaData();
sessionBean.setEjbName("MyStatelessBean");
ejbJar.getEnterpriseBeans().add(sessionBean);
Added: projects/metadata/ejb/trunk/src/test/resources/org/jboss/metadata/ejb/test/async/ejb-jar.xml
===================================================================
--- projects/metadata/ejb/trunk/src/test/resources/org/jboss/metadata/ejb/test/async/ejb-jar.xml (rev 0)
+++ projects/metadata/ejb/trunk/src/test/resources/org/jboss/metadata/ejb/test/async/ejb-jar.xml 2009-11-27 09:56:58 UTC (rev 97075)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ejb-jar xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ejb-jar_3_1.xsd"
+ version="3.1">
+ <enterprise-beans>
+ <session>
+ <ejb-name>AsyncMethodBean</ejb-name>
+ <async-method>
+ <method-name>test</method-name>
+ <method-params>
+ <method-param>int</method-param>
+ </method-params>
+ </async-method>
+ </session>
+ </enterprise-beans>
+</ejb-jar>
\ No newline at end of file
More information about the jboss-cvs-commits
mailing list