[jboss-cvs] JBossAS SVN: r106390 - in projects/metadata/ejb/tags: jboss-metadata-ejb-2.0.0-alpha-17 and 6 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Thu Jul 1 17:21:46 EDT 2010
Author: wolfc
Date: 2010-07-01 17:21:45 -0400 (Thu, 01 Jul 2010)
New Revision: 106390
Added:
projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/
projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/pom.xml
projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractEnterpriseBeanProcessor.java
projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractEnterpriseBeanProcessor.java
projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/metadata/ejb/test/jbmeta292/unit/InheritanceTestCase.java
projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3UnitTestCase.java
projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/test/metadata/annotation/ejb3/JBossAnnotationEjb3UnitTestCase.java
projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/test/metadata/annotation/jbmeta99/PostXmlProcessingUnitTestCase.java
Removed:
projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/pom.xml
projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractEnterpriseBeanProcessor.java
projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractEnterpriseBeanProcessor.java
projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/metadata/ejb/test/jbmeta292/unit/InheritanceTestCase.java
projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3UnitTestCase.java
projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/test/metadata/annotation/ejb3/JBossAnnotationEjb3UnitTestCase.java
projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/test/metadata/annotation/jbmeta99/PostXmlProcessingUnitTestCase.java
Modified:
projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/resources/log4j.xml
Log:
[maven-release-plugin] copy for tag jboss-metadata-ejb-2.0.0-alpha-17
Copied: projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17 (from rev 106305, projects/metadata/ejb/trunk)
Deleted: projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/pom.xml
===================================================================
--- projects/metadata/ejb/trunk/pom.xml 2010-06-29 12:27:11 UTC (rev 106305)
+++ projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/pom.xml 2010-07-01 21:21:45 UTC (rev 106390)
@@ -1,219 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.jboss</groupId>
- <artifactId>jboss-parent</artifactId>
- <version>4.0.CR1</version>
- </parent>
- <groupId>org.jboss.metadata</groupId>
- <artifactId>jboss-metadata-ejb</artifactId>
- <packaging>jar</packaging>
- <version>2.0.0-SNAPSHOT</version>
- <name>JBoss Metadata EJB</name>
- <url>http://www.jboss.org</url>
- <description>The common JavaEE metadata classes</description>
- <scm>
- <connection>scm:svn:http://anonsvn.jboss.org/repos/jbossas/projects/metadata/ejb/tags/2.0.0-alpha-16</connection>
- <developerConnection>scm:svn:https://svn.jboss.org/repos/jbossas/projects/metadata/ejb/tags/2.0.0-alpha-16</developerConnection>
- </scm>
-
- <distributionManagement>
- <repository>
- <id>jboss-releases-repository</id>
- <name>JBoss Releases Repository</name>
- <url>https://repository.jboss.org/nexus/service/local/staging/deploy/maven2/</url>
- </repository>
-
- <snapshotRepository>
- <id>jboss-snapshots-repository</id>
- <name>JBoss Snapshots Repository</name>
- <url>https://repository.jboss.org/nexus/content/repositories/snapshots/</url>
- </snapshotRepository>
-
- </distributionManagement>
-
- <build>
- <outputDirectory>${profile.outputDirectory}</outputDirectory>
- <testOutputDirectory>${profile.testOutputDirectory}</testOutputDirectory>
- <plugins>
- <plugin>
- <artifactId>maven-enforcer-plugin</artifactId>
- <executions>
- <!-- Enforce JDK6 -->
- <execution>
- <id>enforce-jdk6</id>
- <goals>
- <goal>enforce</goal>
- </goals>
- <configuration>
- <rules>
- <requireJavaVersion>
- <version>1.6</version>
- </requireJavaVersion>
- </rules>
- </configuration>
- </execution>
- <!-- Banned dependencies -->
- <execution>
- <id>enforce-banned-dependencies</id>
- <goals>
- <goal>enforce</goal>
- </goals>
- </execution>
- </executions>
- <configuration>
- <rules>
- <bannedDependencies>
- <excludes>
- <!-- JBMETA-262 Use org.jboss.spec.javax.ejb:jboss-ejb-api_3.1_spec -->
- <exclude>org.jboss.ejb3:jboss-ejb3-api</exclude>
- <exclude>org.jboss.javaee:jboss-ejb-api_3.1</exclude>
- </excludes>
- </bannedDependencies>
- </rules>
- </configuration>
-
- </plugin>
-
- <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>
- <configuration>
- <printSummary>true</printSummary>
- <disableXmlReport>false</disableXmlReport>
- <redirectTestOutputToFile>true</redirectTestOutputToFile>
- <testFailureIgnore>false</testFailureIgnore>
- <includes>
- <include>**/*TestCase.java</include>
- </includes>
- </configuration>
- </plugin>
- </plugins>
- </build>
-
- <repositories>
- <repository>
- <id>repository.jboss.org</id>
- <name>JBoss Repository</name>
- <layout>default</layout>
- <url>http://repository.jboss.org/maven2/</url>
- <snapshots>
- <enabled>false</enabled>
- </snapshots>
- </repository>
- <repository>
- <id>snapshots.jboss.org</id>
- <name>JBoss Snapshot Repository</name>
- <layout>default</layout>
- <url>http://snapshots.jboss.org/maven2/</url>
- <releases>
- <enabled>false</enabled>
- </releases>
- <snapshots>
- <enabled>true</enabled>
- </snapshots>
- </repository>
- </repositories>
-
- <!--
- Eclipse settings have been removed from parent. This needs to be
- done via an eclipse profile.
- http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4085896#4085896
- -->
- <profiles>
- <profile>
- <id>default</id>
- <activation>
- <activeByDefault>true</activeByDefault>
- </activation>
- <properties>
- <profile.outputDirectory>target/classes</profile.outputDirectory>
- <profile.testOutputDirectory>target/tests-classes</profile.testOutputDirectory>
- </properties>
- </profile>
-
- <profile>
- <id>eclipse</id>
- <properties>
- <profile.outputDirectory>eclipse-target/classes</profile.outputDirectory>
- <profile.testOutputDirectory>eclipse-target/tests-classes</profile.testOutputDirectory>
- </properties>
- </profile>
- </profiles>
-
- <!-- Compile Dependencies -->
- <dependencies>
-
- <dependency>
- <groupId>org.jboss.spec.javax.ejb</groupId>
- <artifactId>jboss-ejb-api_3.1_spec</artifactId>
- <version>1.0.0.Beta2</version>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.metadata</groupId>
- <artifactId>jboss-metadata-common</artifactId>
- <version>2.0.0.Alpha15</version>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.metadata</groupId>
- <artifactId>jboss-metadata-common</artifactId>
- <version>2.0.0.Alpha15</version>
- <type>test-jar</type>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.ejb3</groupId>
- <artifactId>jboss-ejb3-ext-api</artifactId>
- <version>1.1.0</version>
- <exclusions>
- <exclusion>
- <groupId>org.jboss.metadata</groupId>
- <artifactId>jboss-metadata</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
-
- <dependency>
- <groupId>org.jboss</groupId>
- <artifactId>jbossxb</artifactId>
- <version>2.0.2.Beta7</version>
- </dependency>
-
- <!-- Test Dependencies -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.4</version>
- <scope>test</scope>
- </dependency>
-
- <!-- To counter AbstractMethodErrors -->
- <dependency>
- <groupId>org.jboss.logging</groupId>
- <artifactId>jboss-logging-log4j</artifactId>
- <version>2.2.0.CR1</version>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.jboss.test</groupId>
- <artifactId>jboss-test</artifactId>
- <version>1.1.4.GA</version>
- <scope>test</scope>
- </dependency>
-
- </dependencies>
-
-</project>
Copied: projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/pom.xml (from rev 106389, projects/metadata/ejb/trunk/pom.xml)
===================================================================
--- projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/pom.xml (rev 0)
+++ projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/pom.xml 2010-07-01 21:21:45 UTC (rev 106390)
@@ -0,0 +1,219 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.jboss</groupId>
+ <artifactId>jboss-parent</artifactId>
+ <version>4.0.CR1</version>
+ </parent>
+ <groupId>org.jboss.metadata</groupId>
+ <artifactId>jboss-metadata-ejb</artifactId>
+ <packaging>jar</packaging>
+ <version>2.0.0-alpha-17</version>
+ <name>JBoss Metadata EJB</name>
+ <url>http://www.jboss.org</url>
+ <description>The common JavaEE metadata classes</description>
+ <scm>
+ <connection>scm:svn:http://anonsvn.jboss.org/repos/jbossas/projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17</connection>
+ <developerConnection>scm:svn:https://svn.jboss.org/repos/jbossas/projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17</developerConnection>
+ </scm>
+
+ <distributionManagement>
+ <repository>
+ <id>jboss-releases-repository</id>
+ <name>JBoss Releases Repository</name>
+ <url>https://repository.jboss.org/nexus/service/local/staging/deploy/maven2/</url>
+ </repository>
+
+ <snapshotRepository>
+ <id>jboss-snapshots-repository</id>
+ <name>JBoss Snapshots Repository</name>
+ <url>https://repository.jboss.org/nexus/content/repositories/snapshots/</url>
+ </snapshotRepository>
+
+ </distributionManagement>
+
+ <build>
+ <outputDirectory>${profile.outputDirectory}</outputDirectory>
+ <testOutputDirectory>${profile.testOutputDirectory}</testOutputDirectory>
+ <plugins>
+ <plugin>
+ <artifactId>maven-enforcer-plugin</artifactId>
+ <executions>
+ <!-- Enforce JDK6 -->
+ <execution>
+ <id>enforce-jdk6</id>
+ <goals>
+ <goal>enforce</goal>
+ </goals>
+ <configuration>
+ <rules>
+ <requireJavaVersion>
+ <version>1.6</version>
+ </requireJavaVersion>
+ </rules>
+ </configuration>
+ </execution>
+ <!-- Banned dependencies -->
+ <execution>
+ <id>enforce-banned-dependencies</id>
+ <goals>
+ <goal>enforce</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <rules>
+ <bannedDependencies>
+ <excludes>
+ <!-- JBMETA-262 Use org.jboss.spec.javax.ejb:jboss-ejb-api_3.1_spec -->
+ <exclude>org.jboss.ejb3:jboss-ejb3-api</exclude>
+ <exclude>org.jboss.javaee:jboss-ejb-api_3.1</exclude>
+ </excludes>
+ </bannedDependencies>
+ </rules>
+ </configuration>
+
+ </plugin>
+
+ <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>
+ <configuration>
+ <printSummary>true</printSummary>
+ <disableXmlReport>false</disableXmlReport>
+ <redirectTestOutputToFile>true</redirectTestOutputToFile>
+ <testFailureIgnore>false</testFailureIgnore>
+ <includes>
+ <include>**/*TestCase.java</include>
+ </includes>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <repositories>
+ <repository>
+ <id>repository.jboss.org</id>
+ <name>JBoss Repository</name>
+ <layout>default</layout>
+ <url>http://repository.jboss.org/maven2/</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </repository>
+ <repository>
+ <id>snapshots.jboss.org</id>
+ <name>JBoss Snapshot Repository</name>
+ <layout>default</layout>
+ <url>http://snapshots.jboss.org/maven2/</url>
+ <releases>
+ <enabled>false</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+
+ <!--
+ Eclipse settings have been removed from parent. This needs to be
+ done via an eclipse profile.
+ http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4085896#4085896
+ -->
+ <profiles>
+ <profile>
+ <id>default</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ </activation>
+ <properties>
+ <profile.outputDirectory>target/classes</profile.outputDirectory>
+ <profile.testOutputDirectory>target/tests-classes</profile.testOutputDirectory>
+ </properties>
+ </profile>
+
+ <profile>
+ <id>eclipse</id>
+ <properties>
+ <profile.outputDirectory>eclipse-target/classes</profile.outputDirectory>
+ <profile.testOutputDirectory>eclipse-target/tests-classes</profile.testOutputDirectory>
+ </properties>
+ </profile>
+ </profiles>
+
+ <!-- Compile Dependencies -->
+ <dependencies>
+
+ <dependency>
+ <groupId>org.jboss.spec.javax.ejb</groupId>
+ <artifactId>jboss-ejb-api_3.1_spec</artifactId>
+ <version>1.0.0.Beta2</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.metadata</groupId>
+ <artifactId>jboss-metadata-common</artifactId>
+ <version>2.0.0.Alpha15</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.metadata</groupId>
+ <artifactId>jboss-metadata-common</artifactId>
+ <version>2.0.0.Alpha15</version>
+ <type>test-jar</type>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.ejb3</groupId>
+ <artifactId>jboss-ejb3-ext-api</artifactId>
+ <version>1.1.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.jboss.metadata</groupId>
+ <artifactId>jboss-metadata</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss</groupId>
+ <artifactId>jbossxb</artifactId>
+ <version>2.0.2.Beta7</version>
+ </dependency>
+
+ <!-- Test Dependencies -->
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <version>4.4</version>
+ <scope>test</scope>
+ </dependency>
+
+ <!-- To counter AbstractMethodErrors -->
+ <dependency>
+ <groupId>org.jboss.logging</groupId>
+ <artifactId>jboss-logging-log4j</artifactId>
+ <version>2.2.0.CR1</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.test</groupId>
+ <artifactId>jboss-test</artifactId>
+ <version>1.1.4.GA</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+</project>
Deleted: projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractEnterpriseBeanProcessor.java
===================================================================
--- projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractEnterpriseBeanProcessor.java 2010-06-29 12:27:11 UTC (rev 106305)
+++ projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractEnterpriseBeanProcessor.java 2010-07-01 21:21:45 UTC (rev 106390)
@@ -1,175 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.metadata.annotation.creator.ejb;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.AnnotatedElement;
-import java.lang.reflect.Method;
-import java.util.Collection;
-import java.util.Collections;
-
-import org.jboss.metadata.annotation.creator.AbstractComponentProcessor;
-import org.jboss.metadata.annotation.creator.DeclareRolesProcessor;
-import org.jboss.metadata.annotation.creator.Processor;
-import org.jboss.metadata.annotation.finder.AnnotationFinder;
-import org.jboss.metadata.ejb.spec.AssemblyDescriptorMetaData;
-import org.jboss.metadata.ejb.spec.EjbJar3xMetaData;
-import org.jboss.metadata.ejb.spec.EnterpriseBeanMetaData;
-import org.jboss.metadata.ejb.spec.EnterpriseBeansMetaData;
-import org.jboss.metadata.ejb.spec.ExcludeListMetaData;
-import org.jboss.metadata.ejb.spec.InterceptorBindingsMetaData;
-import org.jboss.metadata.ejb.spec.MethodPermissionsMetaData;
-import org.jboss.metadata.javaee.spec.EnvironmentRefsGroupMetaData;
-import org.jboss.metadata.javaee.spec.SecurityRolesMetaData;
-
-/**
- * Comment
- *
- * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
- * @version $Revision: 76002 $
- */
-public abstract class AbstractEnterpriseBeanProcessor<MD extends EnterpriseBeanMetaData>
- extends AbstractComponentProcessor<MD>
- implements Processor<EjbJar3xMetaData, Class<?>>
-{
- protected abstract MD create(Class<?> beanClass);
-
- protected AbstractEnterpriseBeanProcessor(AnnotationFinder<AnnotatedElement> finder)
- {
- super(finder);
- // @TransactionAttribute
- addTypeProcessor(new TransactionAttributeClassProcessor<MD>(finder));
- addMethodProcessor(new TransactionAttributeMethodProcessor<MD>(finder));
- // @RunAs
- addTypeProcessor(new RunAsProcessor(finder));
- // @DeclareRoles
- addTypeProcessor(new DeclareRolesProcessor(finder));
- // @DenyAll
- addMethodProcessor(new DenyAllProcessor(finder));
- // @RolesAllowed
- addTypeProcessor(new RolesAllowedProcessor<Class>(finder));
- addMethodProcessor(new RolesAllowedProcessor<Method>(finder));
- // @PermitAll
- addTypeProcessor(new PermitAllProcessor<Class>(finder));
- addMethodProcessor(new PermitAllProcessor<Method>(finder));
- // @Interceptors
- addTypeProcessor(new InterceptorsProcessor<Class>(finder));
- addMethodProcessor(new InterceptorsProcessor<Method>(finder));
- }
-
- /**
- * TODO: this should iterate over all method processors
- */
- public void process(EjbJar3xMetaData ejbJarMetaData, Class<?> beanClass)
- {
- MD beanMetaData = create(beanClass);
- if(beanMetaData == null)
- return;
-
- EjbNameThreadLocal.ejbName.set(beanMetaData.getEjbName());
-
- EnvironmentRefsGroupMetaData env = (EnvironmentRefsGroupMetaData) beanMetaData.getJndiEnvironmentRefsGroup();
- if(env == null)
- {
- env = new EnvironmentRefsGroupMetaData();
- beanMetaData.setJndiEnvironmentRefsGroup(env);
- }
- super.process(env, beanClass);
-
-
- if(ejbJarMetaData.getEnterpriseBeans() == null)
- ejbJarMetaData.setEnterpriseBeans(new EnterpriseBeansMetaData());
-
- ejbJarMetaData.getEnterpriseBeans().add(beanMetaData);
- processClass(beanMetaData, beanClass);
-
- AssemblyDescriptorMetaData assembly = ejbJarMetaData.getAssemblyDescriptor();
- if(assembly == null)
- {
- assembly = new AssemblyDescriptorMetaData();
- ejbJarMetaData.setAssemblyDescriptor(assembly);
- }
- // @DeclareRoles
- SecurityRolesMetaData securityRoles = assembly.getSecurityRoles();
- if(securityRoles == null)
- {
- securityRoles = new SecurityRolesMetaData();
- assembly.setSecurityRoles(securityRoles);
- }
- super.processClass(securityRoles, beanClass);
- // @DenyAll
- ExcludeListMetaData excludes = assembly.getExcludeList();
- if(excludes == null)
- {
- excludes = new ExcludeListMetaData();
- assembly.setExcludeList(excludes);
- }
- super.processClass(excludes, beanClass);
-
- // @RolesAllowed, @PermitAll
- MethodPermissionsMetaData permissions = assembly.getMethodPermissions();
- if(permissions == null)
- {
- permissions = new MethodPermissionsMetaData();
- assembly.setMethodPermissions(permissions);
- }
- super.processClass(permissions, beanClass);
-
- // @Interceptors
- InterceptorBindingsMetaData interceptors = assembly.getInterceptorBindings();
- if(interceptors == null)
- {
- interceptors = new InterceptorBindingsMetaData();
- assembly.setInterceptorBindings(interceptors);
- }
- super.processClass(interceptors, beanClass);
-
- EjbNameThreadLocal.ejbName.set(null);
- }
-
- /**
- * Get the processed annotations types.
- * Inherited classes need to override the getAnnotationTypes method from AbstractProcessor
- * to only expose the top level class annotation.
- *
- * @returns a collection of processed annotations
- */
- public abstract Collection<Class<? extends Annotation>> getAnnotationTypes();
-
- /**
- * Get the processed annotations for a specific scope.
- * In case of a EnterpriseBean we only need the TYPE annotation, as the other annotations
- * depend on the presents of this 'top level' annotation. e.g. @Stateful, @Stateles, @MesageDriven
- *
- * @param scope the Scope
- * @returns a collection of processed annotations
- *
- */
- @Override
- public Collection<Class<? extends Annotation>> getProcessedAnnotations(Scope scope)
- {
- if(scope == Scope.TYPE)
- return getAnnotationTypes();
- else
- return Collections.EMPTY_SET;
- }
-}
Copied: projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractEnterpriseBeanProcessor.java (from rev 106310, projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractEnterpriseBeanProcessor.java)
===================================================================
--- projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractEnterpriseBeanProcessor.java (rev 0)
+++ projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/main/java/org/jboss/metadata/annotation/creator/ejb/AbstractEnterpriseBeanProcessor.java 2010-07-01 21:21:45 UTC (rev 106390)
@@ -0,0 +1,169 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.metadata.annotation.creator.ejb;
+
+import org.jboss.metadata.annotation.creator.AbstractComponentProcessor;
+import org.jboss.metadata.annotation.creator.DeclareRolesProcessor;
+import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.ejb.spec.*;
+import org.jboss.metadata.javaee.spec.EnvironmentRefsGroupMetaData;
+import org.jboss.metadata.javaee.spec.SecurityRolesMetaData;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.AnnotatedElement;
+import java.lang.reflect.Method;
+import java.util.Collection;
+import java.util.Collections;
+
+/**
+ * Comment
+ *
+ * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
+ * @version $Revision: 76002 $
+ */
+public abstract class AbstractEnterpriseBeanProcessor<MD extends EnterpriseBeanMetaData>
+ extends AbstractComponentProcessor<MD>
+ implements Processor<EjbJar3xMetaData, Class<?>>
+{
+ protected abstract MD create(Class<?> beanClass);
+
+ protected AbstractEnterpriseBeanProcessor(AnnotationFinder<AnnotatedElement> finder)
+ {
+ super(finder);
+ // @TransactionAttribute
+ //addTypeProcessor(new TransactionAttributeClassProcessor<MD>(finder));
+ //addMethodProcessor(new TransactionAttributeMethodProcessor<MD>(finder));
+ // @RunAs
+ addTypeProcessor(new RunAsProcessor(finder));
+ // @DeclareRoles
+ addTypeProcessor(new DeclareRolesProcessor(finder));
+ // @DenyAll
+ addMethodProcessor(new DenyAllProcessor(finder));
+ // @RolesAllowed
+ addTypeProcessor(new RolesAllowedProcessor<Class>(finder));
+ addMethodProcessor(new RolesAllowedProcessor<Method>(finder));
+ // @PermitAll
+ addTypeProcessor(new PermitAllProcessor<Class>(finder));
+ addMethodProcessor(new PermitAllProcessor<Method>(finder));
+ // @Interceptors
+ addTypeProcessor(new InterceptorsProcessor<Class>(finder));
+ addMethodProcessor(new InterceptorsProcessor<Method>(finder));
+ }
+
+ /**
+ * TODO: this should iterate over all method processors
+ */
+ public void process(EjbJar3xMetaData ejbJarMetaData, Class<?> beanClass)
+ {
+ MD beanMetaData = create(beanClass);
+ if(beanMetaData == null)
+ return;
+
+ EjbNameThreadLocal.ejbName.set(beanMetaData.getEjbName());
+
+ EnvironmentRefsGroupMetaData env = (EnvironmentRefsGroupMetaData) beanMetaData.getJndiEnvironmentRefsGroup();
+ if(env == null)
+ {
+ env = new EnvironmentRefsGroupMetaData();
+ beanMetaData.setJndiEnvironmentRefsGroup(env);
+ }
+ super.process(env, beanClass);
+
+
+ if(ejbJarMetaData.getEnterpriseBeans() == null)
+ ejbJarMetaData.setEnterpriseBeans(new EnterpriseBeansMetaData());
+
+ ejbJarMetaData.getEnterpriseBeans().add(beanMetaData);
+ processClass(beanMetaData, beanClass);
+
+ AssemblyDescriptorMetaData assembly = ejbJarMetaData.getAssemblyDescriptor();
+ if(assembly == null)
+ {
+ assembly = new AssemblyDescriptorMetaData();
+ ejbJarMetaData.setAssemblyDescriptor(assembly);
+ }
+ // @DeclareRoles
+ SecurityRolesMetaData securityRoles = assembly.getSecurityRoles();
+ if(securityRoles == null)
+ {
+ securityRoles = new SecurityRolesMetaData();
+ assembly.setSecurityRoles(securityRoles);
+ }
+ super.processClass(securityRoles, beanClass);
+ // @DenyAll
+ ExcludeListMetaData excludes = assembly.getExcludeList();
+ if(excludes == null)
+ {
+ excludes = new ExcludeListMetaData();
+ assembly.setExcludeList(excludes);
+ }
+ super.processClass(excludes, beanClass);
+
+ // @RolesAllowed, @PermitAll
+ MethodPermissionsMetaData permissions = assembly.getMethodPermissions();
+ if(permissions == null)
+ {
+ permissions = new MethodPermissionsMetaData();
+ assembly.setMethodPermissions(permissions);
+ }
+ super.processClass(permissions, beanClass);
+
+ // @Interceptors
+ InterceptorBindingsMetaData interceptors = assembly.getInterceptorBindings();
+ if(interceptors == null)
+ {
+ interceptors = new InterceptorBindingsMetaData();
+ assembly.setInterceptorBindings(interceptors);
+ }
+ super.processClass(interceptors, beanClass);
+
+ EjbNameThreadLocal.ejbName.set(null);
+ }
+
+ /**
+ * Get the processed annotations types.
+ * Inherited classes need to override the getAnnotationTypes method from AbstractProcessor
+ * to only expose the top level class annotation.
+ *
+ * @returns a collection of processed annotations
+ */
+ public abstract Collection<Class<? extends Annotation>> getAnnotationTypes();
+
+ /**
+ * Get the processed annotations for a specific scope.
+ * In case of a EnterpriseBean we only need the TYPE annotation, as the other annotations
+ * depend on the presents of this 'top level' annotation. e.g. @Stateful, @Stateles, @MesageDriven
+ *
+ * @param scope the Scope
+ * @returns a collection of processed annotations
+ *
+ */
+ @Override
+ public Collection<Class<? extends Annotation>> getProcessedAnnotations(Scope scope)
+ {
+ if(scope == Scope.TYPE)
+ return getAnnotationTypes();
+ else
+ return Collections.EMPTY_SET;
+ }
+}
Deleted: projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractEnterpriseBeanProcessor.java
===================================================================
--- projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractEnterpriseBeanProcessor.java 2010-06-29 12:27:11 UTC (rev 106305)
+++ projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractEnterpriseBeanProcessor.java 2010-07-01 21:21:45 UTC (rev 106390)
@@ -1,196 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, 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.lang.reflect.Method;
-import java.util.Collection;
-import java.util.Collections;
-
-import org.jboss.metadata.annotation.creator.DeclareRolesProcessor;
-import org.jboss.metadata.annotation.creator.Processor;
-import org.jboss.metadata.annotation.creator.jboss.AbstractComponentProcessor;
-import org.jboss.metadata.annotation.finder.AnnotationFinder;
-import org.jboss.metadata.ejb.jboss.JBossAssemblyDescriptorMetaData;
-import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
-import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeansMetaData;
-import org.jboss.metadata.ejb.jboss.JBossEnvironmentRefsGroupMetaData;
-import org.jboss.metadata.ejb.jboss.JBossMetaData;
-import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
-import org.jboss.metadata.ejb.spec.ExcludeListMetaData;
-import org.jboss.metadata.ejb.spec.InterceptorBindingsMetaData;
-import org.jboss.metadata.ejb.spec.MethodPermissionsMetaData;
-import org.jboss.metadata.javaee.spec.SecurityRolesMetaData;
-
-
-/**
- * A AbstractEnterpriseBeanProcessor.
- *
- * @author <a href="alex at jboss.com">Alexey Loubyansky</a>
- * @version $Revision: 1.1 $
- */
-public abstract class AbstractEnterpriseBeanProcessor<MD extends JBossEnterpriseBeanMetaData>
- extends AbstractComponentProcessor<MD>
- implements Processor<JBossMetaData, Class<?>>
-{
- protected abstract MD create(Class<?> beanClass);
-
- protected AbstractEnterpriseBeanProcessor(AnnotationFinder<AnnotatedElement> finder)
- {
- super(finder);
- // @TransactionAttribute
- addTypeProcessor(new TransactionAttributeClassProcessor<MD>(finder));
- addMethodProcessor(new TransactionAttributeMethodProcessor<MD>(finder));
- // @RunAs
- addTypeProcessor(new RunAsProcessor(finder));
- // @DeclareRoles
- addTypeProcessor(new DeclareRolesProcessor(finder));
- // @DenyAll
- addMethodProcessor(new DenyAllProcessor(finder));
- // @RolesAllowed
- addTypeProcessor(new RolesAllowedProcessor<Class>(finder));
- addMethodProcessor(new RolesAllowedProcessor<Method>(finder));
- // @PermitAll
- addTypeProcessor(new PermitAllProcessor<Class>(finder));
- addMethodProcessor(new PermitAllProcessor<Method>(finder));
- // @Interceptors
- addTypeProcessor(new InterceptorsProcessor<Class>(finder));
- addMethodProcessor(new InterceptorsProcessor<Method>(finder));
- // @AspectDomain
- addTypeProcessor(new JBossAspectDomainProcessor(finder));
- // @JndiBindingPolicy
- addTypeProcessor(new JBossJndiPolicyProcessor(finder));
- // @Pool
- addTypeProcessor(new JBossPoolProcessor(finder));
- }
-
-
- public void process(JBossMetaData ejbJarMetaData, Class<?> beanClass)
- {
- MD beanMetaData = create(beanClass);
- if(beanMetaData == null)
- return;
-
- process(ejbJarMetaData, beanMetaData, beanClass);
- }
-
- /**
- * TODO: this should iterate over all method processors
- */
- public void process(JBossMetaData ejbJarMetaData, JBossEnterpriseBeanMetaData beanMetaData, Class<?> beanClass)
- {
- EjbNameThreadLocal.ejbName.set(beanMetaData.getEjbName());
-
- try
- {
- JBossEnvironmentRefsGroupMetaData env = (JBossEnvironmentRefsGroupMetaData) beanMetaData.getJndiEnvironmentRefsGroup();
- if(env == null)
- {
- env = new JBossEnvironmentRefsGroupMetaData();
- beanMetaData.setJndiEnvironmentRefsGroup(env);
- }
- super.process(env, beanClass);
-
-
- if(ejbJarMetaData.getEnterpriseBeans() == null)
- ejbJarMetaData.setEnterpriseBeans(new JBossEnterpriseBeansMetaData());
-
- ejbJarMetaData.getEnterpriseBeans().add(beanMetaData);
- processClass(beanMetaData, beanClass);
-
- JBossAssemblyDescriptorMetaData assembly = ejbJarMetaData.getAssemblyDescriptor();
- if(assembly == null)
- {
- assembly = new JBossAssemblyDescriptorMetaData();
- ejbJarMetaData.setAssemblyDescriptor(assembly);
- }
- // @DeclareRoles
- SecurityRolesMetaData securityRoles = assembly.getSecurityRoles();
- if(securityRoles == null)
- {
- securityRoles = new SecurityRolesMetaData();
- assembly.setSecurityRoles(securityRoles);
- }
- super.processClass(securityRoles, beanClass);
- // @DenyAll
- ExcludeListMetaData excludes = assembly.getExcludeList();
- if(excludes == null)
- {
- excludes = new ExcludeListMetaData();
- assembly.setExcludeList(excludes);
- }
- super.processClass(excludes, beanClass);
-
- // @RolesAllowed, @PermitAll
- MethodPermissionsMetaData permissions = assembly.getMethodPermissions();
- if(permissions == null)
- {
- permissions = new MethodPermissionsMetaData();
- assembly.setMethodPermissions(permissions);
- }
- super.processClass(permissions, beanClass);
-
- // @Interceptors
- InterceptorBindingsMetaData interceptors = assembly.getInterceptorBindings();
- if(interceptors == null)
- {
- interceptors = new InterceptorBindingsMetaData();
- assembly.setInterceptorBindings(interceptors);
- }
- super.processClass(interceptors, beanClass);
-
- }
- finally
- {
- EjbNameThreadLocal.ejbName.set(null);
- }
- }
-
- /**
- * Get the processed annotations types.
- * Inherited classes need to override the getAnnotationTypes method from AbstractProcessor
- * to only expose the top level class annotation.
- *
- * @returns a collection of processed annotations
- */
- public abstract Collection<Class<? extends Annotation>> getAnnotationTypes();
-
- /**
- * Get the processed annotations for a specific scope.
- * In case of a EnterpriseBean we only need the TYPE annotation, as the other annotations
- * depend on the presents of this 'top level' annotation. e.g. @Stateful, @Stateles, @MesageDriven
- *
- * @param scope the Scope
- * @returns a collection of processed annotations
- *
- */
- @Override
- public Collection<Class<? extends Annotation>> getProcessedAnnotations(Scope scope)
- {
- if(scope == Scope.TYPE)
- return getAnnotationTypes();
- else
- return Collections.EMPTY_SET;
- }
-
-}
Copied: projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractEnterpriseBeanProcessor.java (from rev 106310, projects/metadata/ejb/trunk/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractEnterpriseBeanProcessor.java)
===================================================================
--- projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractEnterpriseBeanProcessor.java (rev 0)
+++ projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/main/java/org/jboss/metadata/annotation/creator/ejb/jboss/AbstractEnterpriseBeanProcessor.java 2010-07-01 21:21:45 UTC (rev 106390)
@@ -0,0 +1,191 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, 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 org.jboss.metadata.annotation.creator.DeclareRolesProcessor;
+import org.jboss.metadata.annotation.creator.Processor;
+import org.jboss.metadata.annotation.creator.jboss.AbstractComponentProcessor;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.ejb.jboss.*;
+import org.jboss.metadata.ejb.spec.ExcludeListMetaData;
+import org.jboss.metadata.ejb.spec.InterceptorBindingsMetaData;
+import org.jboss.metadata.ejb.spec.MethodPermissionsMetaData;
+import org.jboss.metadata.javaee.spec.SecurityRolesMetaData;
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.AnnotatedElement;
+import java.lang.reflect.Method;
+import java.util.Collection;
+import java.util.Collections;
+
+
+/**
+ * A AbstractEnterpriseBeanProcessor.
+ *
+ * @author <a href="alex at jboss.com">Alexey Loubyansky</a>
+ * @version $Revision: 1.1 $
+ */
+public abstract class AbstractEnterpriseBeanProcessor<MD extends JBossEnterpriseBeanMetaData>
+ extends AbstractComponentProcessor<MD>
+ implements Processor<JBossMetaData, Class<?>>
+{
+ protected abstract MD create(Class<?> beanClass);
+
+ protected AbstractEnterpriseBeanProcessor(AnnotationFinder<AnnotatedElement> finder)
+ {
+ super(finder);
+ // @TransactionAttribute
+ //addTypeProcessor(new TransactionAttributeClassProcessor<MD>(finder));
+ //addMethodProcessor(new TransactionAttributeMethodProcessor<MD>(finder));
+ // @RunAs
+ addTypeProcessor(new RunAsProcessor(finder));
+ // @DeclareRoles
+ addTypeProcessor(new DeclareRolesProcessor(finder));
+ // @DenyAll
+ addMethodProcessor(new DenyAllProcessor(finder));
+ // @RolesAllowed
+ addTypeProcessor(new RolesAllowedProcessor<Class>(finder));
+ addMethodProcessor(new RolesAllowedProcessor<Method>(finder));
+ // @PermitAll
+ addTypeProcessor(new PermitAllProcessor<Class>(finder));
+ addMethodProcessor(new PermitAllProcessor<Method>(finder));
+ // @Interceptors
+ addTypeProcessor(new InterceptorsProcessor<Class>(finder));
+ addMethodProcessor(new InterceptorsProcessor<Method>(finder));
+ // @AspectDomain
+ addTypeProcessor(new JBossAspectDomainProcessor(finder));
+ // @JndiBindingPolicy
+ addTypeProcessor(new JBossJndiPolicyProcessor(finder));
+ // @Pool
+ addTypeProcessor(new JBossPoolProcessor(finder));
+ }
+
+
+ public void process(JBossMetaData ejbJarMetaData, Class<?> beanClass)
+ {
+ MD beanMetaData = create(beanClass);
+ if(beanMetaData == null)
+ return;
+
+ process(ejbJarMetaData, beanMetaData, beanClass);
+ }
+
+ /**
+ * TODO: this should iterate over all method processors
+ */
+ public void process(JBossMetaData ejbJarMetaData, JBossEnterpriseBeanMetaData beanMetaData, Class<?> beanClass)
+ {
+ EjbNameThreadLocal.ejbName.set(beanMetaData.getEjbName());
+
+ try
+ {
+ JBossEnvironmentRefsGroupMetaData env = (JBossEnvironmentRefsGroupMetaData) beanMetaData.getJndiEnvironmentRefsGroup();
+ if(env == null)
+ {
+ env = new JBossEnvironmentRefsGroupMetaData();
+ beanMetaData.setJndiEnvironmentRefsGroup(env);
+ }
+ super.process(env, beanClass);
+
+
+ if(ejbJarMetaData.getEnterpriseBeans() == null)
+ ejbJarMetaData.setEnterpriseBeans(new JBossEnterpriseBeansMetaData());
+
+ ejbJarMetaData.getEnterpriseBeans().add(beanMetaData);
+ processClass(beanMetaData, beanClass);
+
+ JBossAssemblyDescriptorMetaData assembly = ejbJarMetaData.getAssemblyDescriptor();
+ if(assembly == null)
+ {
+ assembly = new JBossAssemblyDescriptorMetaData();
+ ejbJarMetaData.setAssemblyDescriptor(assembly);
+ }
+ // @DeclareRoles
+ SecurityRolesMetaData securityRoles = assembly.getSecurityRoles();
+ if(securityRoles == null)
+ {
+ securityRoles = new SecurityRolesMetaData();
+ assembly.setSecurityRoles(securityRoles);
+ }
+ super.processClass(securityRoles, beanClass);
+ // @DenyAll
+ ExcludeListMetaData excludes = assembly.getExcludeList();
+ if(excludes == null)
+ {
+ excludes = new ExcludeListMetaData();
+ assembly.setExcludeList(excludes);
+ }
+ super.processClass(excludes, beanClass);
+
+ // @RolesAllowed, @PermitAll
+ MethodPermissionsMetaData permissions = assembly.getMethodPermissions();
+ if(permissions == null)
+ {
+ permissions = new MethodPermissionsMetaData();
+ assembly.setMethodPermissions(permissions);
+ }
+ super.processClass(permissions, beanClass);
+
+ // @Interceptors
+ InterceptorBindingsMetaData interceptors = assembly.getInterceptorBindings();
+ if(interceptors == null)
+ {
+ interceptors = new InterceptorBindingsMetaData();
+ assembly.setInterceptorBindings(interceptors);
+ }
+ super.processClass(interceptors, beanClass);
+
+ }
+ finally
+ {
+ EjbNameThreadLocal.ejbName.set(null);
+ }
+ }
+
+ /**
+ * Get the processed annotations types.
+ * Inherited classes need to override the getAnnotationTypes method from AbstractProcessor
+ * to only expose the top level class annotation.
+ *
+ * @returns a collection of processed annotations
+ */
+ public abstract Collection<Class<? extends Annotation>> getAnnotationTypes();
+
+ /**
+ * Get the processed annotations for a specific scope.
+ * In case of a EnterpriseBean we only need the TYPE annotation, as the other annotations
+ * depend on the presents of this 'top level' annotation. e.g. @Stateful, @Stateles, @MesageDriven
+ *
+ * @param scope the Scope
+ * @returns a collection of processed annotations
+ *
+ */
+ @Override
+ public Collection<Class<? extends Annotation>> getProcessedAnnotations(Scope scope)
+ {
+ if(scope == Scope.TYPE)
+ return getAnnotationTypes();
+ else
+ return Collections.EMPTY_SET;
+ }
+
+}
Deleted: projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/metadata/ejb/test/jbmeta292/unit/InheritanceTestCase.java
===================================================================
--- projects/metadata/ejb/trunk/src/test/java/org/jboss/metadata/ejb/test/jbmeta292/unit/InheritanceTestCase.java 2010-06-29 12:27:11 UTC (rev 106305)
+++ projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/metadata/ejb/test/jbmeta292/unit/InheritanceTestCase.java 2010-07-01 21:21:45 UTC (rev 106390)
@@ -1,93 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright (c) 2010, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.metadata.ejb.test.jbmeta292.unit;
-
-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.JBossMetaData;
-import org.jboss.metadata.ejb.spec.ContainerTransactionMetaData;
-import org.jboss.test.metadata.common.PackageScanner;
-import org.jboss.test.metadata.common.ScanPackage;
-import org.junit.Test;
-
-import javax.ejb.TransactionAttributeType;
-import java.lang.reflect.AnnotatedElement;
-import java.util.Collection;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-
-/**
- * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
- */
-public class InheritanceTestCase
-{
- @Test
- @ScanPackage("org.jboss.metadata.ejb.test.jbmeta292")
- public void testOverrideClass() throws Exception
- {
- AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
- JBoss50Creator creator = new JBoss50Creator(finder);
- Collection<Class<?>> classes = PackageScanner.loadClasses();
- JBossMetaData metaData = creator.create(classes);
- assertNotNull(metaData);
- // From here on, it's all speculation. The mechanism itself is broken, so this test is written to fail explicitly.
- assertEquals(2, metaData.getAssemblyDescriptor().getContainerTransactions().size());
- // the first one is on TxBeanBase with method=*
- // in essence, the defining class is also a nominator
- ContainerTransactionMetaData ctmd = metaData.getAssemblyDescriptor().getContainerTransactionsByEjbName("ABean").get(0);
- assertEquals("*", ctmd.getMethods().get(0).getMethodName());
- boolean matches = ctmd.matches("bar", null, null);
- assertTrue(matches);
- // TODO: or should it be REQUIRED?
- assertEquals(TransactionAttributeType.MANDATORY, ctmd.getTransAttribute());
- }
-
- @Test
- @ScanPackage("org.jboss.metadata.ejb.test.jbmeta292")
- public void testOverrideMethod() throws Exception
- {
- AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
- JBoss50Creator creator = new JBoss50Creator(finder);
- Collection<Class<?>> classes = PackageScanner.loadClasses();
- JBossMetaData metaData = creator.create(classes);
- assertNotNull(metaData);
- // From here on, it's all speculation. The mechanism itself is broken, so this test is written to fail explicitly.
- assertEquals(2, metaData.getAssemblyDescriptor().getContainerTransactions().size());
- // the second one is on TxBeanBase with method=foo
- // in essence, the defining class is also a nominator
- ContainerTransactionMetaData ctmd = metaData.getAssemblyDescriptor().getContainerTransactionsByEjbName("ABean").get(1);
- assertEquals("foo", ctmd.getMethods().get(0).getMethodName());
- boolean matches = ctmd.matches("foo", null, null);
- if(matches)
- {
- // ABean does not specify a tx-attr and overrides foo, thus it should be REQUIRED
- assertEquals(TransactionAttributeType.REQUIRED, ctmd.getTransAttribute());
- }
- else
- {
- // this is the good path, it should never have been matched
- }
- }
-}
Copied: projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/metadata/ejb/test/jbmeta292/unit/InheritanceTestCase.java (from rev 106310, projects/metadata/ejb/trunk/src/test/java/org/jboss/metadata/ejb/test/jbmeta292/unit/InheritanceTestCase.java)
===================================================================
--- projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/metadata/ejb/test/jbmeta292/unit/InheritanceTestCase.java (rev 0)
+++ projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/metadata/ejb/test/jbmeta292/unit/InheritanceTestCase.java 2010-07-01 21:21:45 UTC (rev 106390)
@@ -0,0 +1,93 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright (c) 2010, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.metadata.ejb.test.jbmeta292.unit;
+
+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.JBossMetaData;
+import org.jboss.test.metadata.common.PackageScanner;
+import org.jboss.test.metadata.common.ScanPackage;
+import org.junit.Test;
+
+import java.lang.reflect.AnnotatedElement;
+import java.util.Collection;
+
+import static org.junit.Assert.assertNotNull;
+
+/**
+ * @author <a href="mailto:cdewolf at redhat.com">Carlo de Wolf</a>
+ */
+public class InheritanceTestCase
+{
+ @Test
+ @ScanPackage("org.jboss.metadata.ejb.test.jbmeta292")
+ public void testOverrideClass() throws Exception
+ {
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ JBoss50Creator creator = new JBoss50Creator(finder);
+ Collection<Class<?>> classes = PackageScanner.loadClasses();
+ JBossMetaData metaData = creator.create(classes);
+ assertNotNull(metaData);
+ /*
+ // From here on, it's all speculation. The mechanism itself is broken, so this test is written to fail explicitly.
+ assertEquals(2, metaData.getAssemblyDescriptor().getContainerTransactions().size());
+ // the first one is on TxBeanBase with method=*
+ // in essence, the defining class is also a nominator
+ ContainerTransactionMetaData ctmd = metaData.getAssemblyDescriptor().getContainerTransactionsByEjbName("ABean").get(0);
+ assertEquals("*", ctmd.getMethods().get(0).getMethodName());
+ boolean matches = ctmd.matches("bar", null, null);
+ assertTrue(matches);
+ // TODO: or should it be REQUIRED?
+ assertEquals(TransactionAttributeType.MANDATORY, ctmd.getTransAttribute());
+ */
+ }
+
+ @Test
+ @ScanPackage("org.jboss.metadata.ejb.test.jbmeta292")
+ public void testOverrideMethod() throws Exception
+ {
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ JBoss50Creator creator = new JBoss50Creator(finder);
+ Collection<Class<?>> classes = PackageScanner.loadClasses();
+ JBossMetaData metaData = creator.create(classes);
+ assertNotNull(metaData);
+ /*
+ // From here on, it's all speculation. The mechanism itself is broken, so this test is written to fail explicitly.
+ assertEquals(2, metaData.getAssemblyDescriptor().getContainerTransactions().size());
+ // the second one is on TxBeanBase with method=foo
+ // in essence, the defining class is also a nominator
+ ContainerTransactionMetaData ctmd = metaData.getAssemblyDescriptor().getContainerTransactionsByEjbName("ABean").get(1);
+ assertEquals("foo", ctmd.getMethods().get(0).getMethodName());
+ boolean matches = ctmd.matches("foo", null, null);
+ if(matches)
+ {
+ // ABean does not specify a tx-attr and overrides foo, thus it should be REQUIRED
+ assertEquals(TransactionAttributeType.REQUIRED, ctmd.getTransAttribute());
+ }
+ else
+ {
+ // this is the good path, it should never have been matched
+ }
+ */
+ }
+}
Deleted: projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3UnitTestCase.java
===================================================================
--- projects/metadata/ejb/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3UnitTestCase.java 2010-06-29 12:27:11 UTC (rev 106305)
+++ projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3UnitTestCase.java 2010-07-01 21:21:45 UTC (rev 106390)
@@ -1,833 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2007, Red Hat Middleware LLC, and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.test.metadata.annotation.ejb3;
-
-import java.io.File;
-import java.io.FilenameFilter;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.AnnotatedElement;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.ejb.ApplicationException;
-import javax.ejb.MessageDriven;
-import javax.ejb.Stateful;
-import javax.ejb.Stateless;
-import javax.ejb.Timer;
-import javax.ejb.TransactionAttributeType;
-
-import org.jboss.metadata.annotation.creator.ejb.EjbJar30Creator;
-import org.jboss.metadata.annotation.finder.AnnotationFinder;
-import org.jboss.metadata.annotation.finder.DefaultAnnotationFinder;
-import org.jboss.metadata.common.ejb.IEnterpriseBeanMetaData;
-import org.jboss.metadata.ejb.jboss.JBoss50MetaData;
-import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
-import org.jboss.metadata.ejb.jboss.JBossMessageDrivenBeanMetaData;
-import org.jboss.metadata.ejb.jboss.JBossMetaData;
-import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
-import org.jboss.metadata.ejb.spec.ActivationConfigMetaData;
-import org.jboss.metadata.ejb.spec.ActivationConfigPropertiesMetaData;
-import org.jboss.metadata.ejb.spec.ActivationConfigPropertyMetaData;
-import org.jboss.metadata.ejb.spec.AnnotationMergedView;
-import org.jboss.metadata.ejb.spec.AroundInvokeMetaData;
-import org.jboss.metadata.ejb.spec.AroundInvokesMetaData;
-import org.jboss.metadata.ejb.spec.AssemblyDescriptorMetaData;
-import org.jboss.metadata.ejb.spec.ContainerTransactionMetaData;
-import org.jboss.metadata.ejb.spec.EjbJar30MetaData;
-import org.jboss.metadata.ejb.spec.EjbJar3xMetaData;
-import org.jboss.metadata.ejb.spec.EjbJarMetaData;
-import org.jboss.metadata.ejb.spec.EnterpriseBeanMetaData;
-import org.jboss.metadata.ejb.spec.EnterpriseBeansMetaData;
-import org.jboss.metadata.ejb.spec.ExcludeListMetaData;
-import org.jboss.metadata.ejb.spec.InitMethodMetaData;
-import org.jboss.metadata.ejb.spec.InitMethodsMetaData;
-import org.jboss.metadata.ejb.spec.InterceptorBindingMetaData;
-import org.jboss.metadata.ejb.spec.InterceptorBindingsMetaData;
-import org.jboss.metadata.ejb.spec.MessageDrivenBeanMetaData;
-import org.jboss.metadata.ejb.spec.MethodMetaData;
-import org.jboss.metadata.ejb.spec.MethodParametersMetaData;
-import org.jboss.metadata.ejb.spec.MethodPermissionMetaData;
-import org.jboss.metadata.ejb.spec.MethodPermissionsMetaData;
-import org.jboss.metadata.ejb.spec.MethodsMetaData;
-import org.jboss.metadata.ejb.spec.NamedMethodMetaData;
-import org.jboss.metadata.ejb.spec.RemoveMethodMetaData;
-import org.jboss.metadata.ejb.spec.RemoveMethodsMetaData;
-import org.jboss.metadata.ejb.spec.SecurityIdentityMetaData;
-import org.jboss.metadata.ejb.spec.SessionBeanMetaData;
-import org.jboss.metadata.ejb.spec.SessionType;
-import org.jboss.metadata.javaee.spec.AnnotatedEJBReferenceMetaData;
-import org.jboss.metadata.javaee.spec.AnnotatedEJBReferencesMetaData;
-import org.jboss.metadata.javaee.spec.EJBLocalReferenceMetaData;
-import org.jboss.metadata.javaee.spec.EJBReferenceMetaData;
-import org.jboss.metadata.javaee.spec.LifecycleCallbackMetaData;
-import org.jboss.metadata.javaee.spec.LifecycleCallbacksMetaData;
-import org.jboss.metadata.javaee.spec.MessageDestinationReferenceMetaData;
-import org.jboss.metadata.javaee.spec.MessageDestinationReferencesMetaData;
-import org.jboss.metadata.javaee.spec.MessageDestinationUsageType;
-import org.jboss.metadata.javaee.spec.PersistenceContextReferenceMetaData;
-import org.jboss.metadata.javaee.spec.ResourceEnvironmentReferenceMetaData;
-import org.jboss.metadata.javaee.spec.ResourceEnvironmentReferencesMetaData;
-import org.jboss.metadata.javaee.spec.RunAsMetaData;
-import org.jboss.metadata.javaee.spec.SecurityRoleMetaData;
-import org.jboss.metadata.javaee.spec.SecurityRolesMetaData;
-import org.jboss.metadata.javaee.spec.ServiceReferenceMetaData;
-import org.jboss.metadata.javaee.spec.ServiceReferencesMetaData;
-import org.jboss.test.metadata.annotation.ejb3.defaultinterface.DefaultInterface;
-import org.jboss.test.metadata.annotation.ejb3.multiview.Multiview21Remote;
-import org.jboss.test.metadata.annotation.ejb3.multiview.Multiview3Remote;
-import org.jboss.test.metadata.annotation.ejb3.multiview.MultiviewHome;
-import org.jboss.test.metadata.annotation.ejb3.partialxml.EjbLink2Bean;
-import org.jboss.test.metadata.annotation.ejb3.partialxml.EjbLink3Bean;
-import org.jboss.test.metadata.annotation.ejb3.runas.InterMediateBean;
-import org.jboss.test.metadata.common.PackageScanner;
-import org.jboss.test.metadata.common.ScanPackage;
-import org.jboss.test.metadata.common.SetHelper;
-import org.jboss.test.metadata.ejb.EjbJar3xEverythingUnitTestCase;
-import org.jboss.test.metadata.javaee.AbstractJavaEEMetaDataTest;
-import org.jboss.test.metadata.javaee.AbstractJavaEEEverythingTest.Mode;
-
-/**
- * This tests the annotation translation framework.
- *
- * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
- * @author Scott.Stark at jboss.org
- * @version $Revision: 88355 $
- */
-public class AnnotationEjb3UnitTestCase extends AbstractJavaEEMetaDataTest
-{
- /**
- * @param name
- */
- public AnnotationEjb3UnitTestCase(String name)
- {
- super(name);
- }
-
- private void assertMyStatefulBean(IEnterpriseBeanMetaData enterpriseBean)
- {
- assertTrue(enterpriseBean instanceof SessionBeanMetaData);
-
- SessionBeanMetaData bean = (SessionBeanMetaData) enterpriseBean;
- assertEquals(SessionType.Stateful, bean.getSessionType());
- assertEquals(MyStatefulBean.class.getName(), bean.getEjbClass());
- assertEquals("AnotherName", bean.getEjbName());
-
- assertNotNull("bean has no business remotes", bean.getBusinessRemotes());
- assertEquals(1, bean.getBusinessRemotes().size());
- assertTrue(bean.getBusinessRemotes().contains(MyStateful.class.getName()));
- assertEquals(MyStatefulHome.class.getName(), bean.getHome());
-
- // @EJBs
- AnnotatedEJBReferencesMetaData ejbRefs = bean.getAnnotatedEjbReferences();
- assertEquals(2, ejbRefs.size());
- AnnotatedEJBReferenceMetaData local1 = ejbRefs.get("ejb/local1");
- assertNotNull(local1);
- assertEquals("java:/MyLocalSession1", local1.getMappedName());
- assertEquals("ejb/local1", local1.getEjbRefName());
- assertEquals("MyLocalSession1", local1.getLink());
- assertEquals("A reference to MyLocalSession1", local1.getDescriptions().value()[0].value());
- assertEquals(MyStatelessLocal.class, local1.getBeanInterface());
- AnnotatedEJBReferenceMetaData local2 = ejbRefs.get("ejb/local2");
- assertNotNull(local2);
- assertEquals("java:/MyLocalSession2", local2.getMappedName());
- assertEquals("ejb/local2", local2.getEjbRefName());
- assertEquals("local.jar#MyLocalSession1", local2.getLink());
- assertEquals("A reference to MyLocalSession2", local2.getDescriptions().value()[0].value());
- assertEquals(MyStatelessLocal.class, local2.getBeanInterface());
- // @PostConstruct
- LifecycleCallbacksMetaData postConstructs = bean.getPostConstructs();
- assertNotNull(postConstructs);
- assertEquals(1, postConstructs.size());
- LifecycleCallbackMetaData postConstruct = postConstructs.get(0);
- assertEquals("setUp", postConstruct.getMethodName());
- assertEquals(MyStatefulBean.class.getName(), postConstruct.getClassName());
- // @PreDestroy
- LifecycleCallbacksMetaData preDestroys = bean.getPreDestroys();
- assertNotNull(preDestroys);
- assertEquals(1, preDestroys.size());
- LifecycleCallbackMetaData preDestroy = preDestroys.get(0);
- assertEquals("tearDown", preDestroy.getMethodName());
- assertEquals(MyStatefulBean.class.getName(), preDestroy.getClassName());
- // @Init
- InitMethodsMetaData initMethods = bean.getInitMethods();
- assertNotNull(initMethods);
- assertEquals(1, initMethods.size());
- InitMethodMetaData initMethod = initMethods.get(0);
- assertEquals("init", initMethod.getBeanMethod().getMethodName());
- // @PostActivate
- LifecycleCallbacksMetaData postActivates = bean.getPostActivates();
- assertNotNull(postActivates);
- assertEquals(1, postActivates.size());
- LifecycleCallbackMetaData postActivate = postActivates.get(0);
- assertEquals("activate", postActivate.getMethodName());
- assertEquals(MyStatefulBean.class.getName(), postActivate.getClassName());
- // @PrePassivate
- LifecycleCallbacksMetaData prePassivates = bean.getPrePassivates();
- assertNotNull(prePassivates);
- assertEquals(1, prePassivates.size());
- LifecycleCallbackMetaData prePassivate = prePassivates.get(0);
- assertEquals("passivate", prePassivate.getMethodName());
- assertEquals(MyStatefulBean.class.getName(), prePassivate.getClassName());
- // @Remove
- RemoveMethodsMetaData removeMethods = bean.getRemoveMethods();
- assertNotNull(removeMethods);
- assertEquals(1, removeMethods.size());
- RemoveMethodMetaData removeMethod = removeMethods.get(0);
- assertEquals("remove", removeMethod.getBeanMethod().getMethodName());
- // @Resource
- ResourceEnvironmentReferencesMetaData resource = bean.getResourceEnvironmentReferences();
- assertNotNull(resource);
- assertEquals(1, resource.size());
- ResourceEnvironmentReferenceMetaData ref = resource.get(bean.getEjbClass() + "/context");
- assertNotNull(ref);
- assertNotNull(ref.getInjectionTargets());
- // @PersistenceContext
- PersistenceContextReferenceMetaData persistence = bean.getPersistenceContextReferenceByName("string");
- assertNotNull(persistence);
- assertNotNull(persistence.getInjectionTargets());
- // @WebServiceRef
- ServiceReferencesMetaData serviceRefs = bean.getServiceReferences();
- assertNotNull(serviceRefs);
- assertEquals(1, serviceRefs.size());
- ServiceReferenceMetaData serviceRef = serviceRefs.get(bean.getEjbClass() + "/webserviceRef");
- assertNotNull(serviceRef);
- assertNotNull(serviceRef.getInjectionTargets());
- }
-
- private void assertMyStateless21Bean(IEnterpriseBeanMetaData enterpriseBean)
- {
- assertTrue(enterpriseBean instanceof SessionBeanMetaData);
- SessionBeanMetaData bean = (SessionBeanMetaData) enterpriseBean;
- assertEquals(SessionType.Stateless, bean.getSessionType());
- assertEquals(MyStateless21Bean.class.getName(), bean.getEjbClass());
- assertEquals("MyStateless21Bean", bean.getEjbName());
-
- assertNull("bean has business locals (instead of local interface)", bean.getBusinessLocals());
-
- assertEquals(MyStateless21Local.class.getName(), bean.getLocal());
- assertEquals(MyStateless21Home.class.getName(), bean.getLocalHome());
- }
-
- private void assertMyStatelessBean(IEnterpriseBeanMetaData enterpriseBean)
- {
- assertTrue(enterpriseBean instanceof SessionBeanMetaData);
- SessionBeanMetaData bean = (SessionBeanMetaData) enterpriseBean;
- assertEquals(SessionType.Stateless, bean.getSessionType());
- assertEquals(MyStatelessBean.class.getName(), bean.getEjbClass());
- assertEquals("MyStatelessBean", bean.getEjbName());
-
- assertNotNull("bean has no business locals", bean.getBusinessLocals());
- assertEquals(1, bean.getBusinessLocals().size());
- assertTrue(bean.getBusinessLocals().contains(MyStatelessLocal.class.getName()));
-
- assertNotNull("bean has no container transactions", bean.getContainerTransactions());
- Iterator<ContainerTransactionMetaData> it = bean.getContainerTransactions().iterator();
- String[] params =
- {};
- ContainerTransactionMetaData tx1 = it.next();
- assertEquals(TransactionAttributeType.NEVER, tx1.getTransAttribute());
- MethodsMetaData tx1Methods = tx1.getMethods();
- assertNotNull(tx1Methods);
- assertTrue(tx1Methods.matches("*", params, null));
-
- ContainerTransactionMetaData tx2 = it.next();
- assertEquals(TransactionAttributeType.MANDATORY, tx2.getTransAttribute());
- MethodsMetaData tx2Methods = tx2.getMethods();
- assertTrue(tx2Methods.matches("transactionAttributeMandatory", params, null));
-
- // @EJB
- AnnotatedEJBReferencesMetaData ejbRefs = bean.getAnnotatedEjbReferences();
- assertEquals(2, ejbRefs.size());
- AnnotatedEJBReferenceMetaData injectedField = ejbRefs.get("injectedField");
- assertNotNull(injectedField);
- assertEquals(MyStatelessLocal.class, injectedField.getBeanInterface());
- AnnotatedEJBReferenceMetaData injectedFieldWithOverridenName = ejbRefs.get("overrideName");
- assertNotNull(injectedFieldWithOverridenName);
- assertEquals(MyStatelessLocal.class, injectedFieldWithOverridenName.getBeanInterface());
- // @PostConstruct
- LifecycleCallbacksMetaData postConstructs = bean.getPostConstructs();
- assertNotNull(postConstructs);
- assertEquals(1, postConstructs.size());
- LifecycleCallbackMetaData postConstruct = postConstructs.get(0);
- assertEquals("setUp", postConstruct.getMethodName());
- assertEquals(MyStatelessBean.class.getName(), postConstruct.getClassName());
- // @PreDestroy
- LifecycleCallbacksMetaData preDestroys = bean.getPreDestroys();
- assertNotNull(preDestroys);
- assertEquals(1, preDestroys.size());
- LifecycleCallbackMetaData preDestroy = preDestroys.get(0);
- assertEquals("tearDown", preDestroy.getMethodName());
- assertEquals(MyStatelessBean.class.getName(), preDestroy.getClassName());
-
- // @RunAs
- SecurityIdentityMetaData identity = bean.getSecurityIdentity();
- assertNotNull(identity);
- RunAsMetaData runAs = identity.getRunAs();
- assertNotNull(runAs);
- assertEquals("InternalUser", runAs.getRoleName());
-
- // @AroundInvoke
- AroundInvokesMetaData invokes = bean.getAroundInvokes();
- assertNotNull(invokes);
- assertEquals(1, invokes.size());
- AroundInvokeMetaData aroundInvoke = invokes.get(0);
- assertEquals(MyStatelessBean.class.getName(), aroundInvoke.getClassName());
- assertEquals("intercept", aroundInvoke.getMethodName());
-
- // @Timeout
- NamedMethodMetaData timeoutMethod = bean.getTimeoutMethod();
- assertNotNull(timeoutMethod);
- assertEquals("timeout", timeoutMethod.getMethodName());
- MethodParametersMetaData parameters = timeoutMethod.getMethodParams();
- assertEquals(1, parameters.size());
- assertEquals(Timer.class.getName(), parameters.get(0));
- }
-
- private void assertMyMDB(IEnterpriseBeanMetaData enterpriseBean)
- {
- assertTrue(enterpriseBean instanceof MessageDrivenBeanMetaData);
- MessageDrivenBeanMetaData bean = (MessageDrivenBeanMetaData) enterpriseBean;
- assertEquals(MyMDB.class.getName(), bean.getEjbClass());
- assertEquals("MailMDB", bean.getEjbName());
- assertEquals(false, bean.isJMS());
- assertEquals(IMailListener.class.getName(), bean.getMessagingType());
- ActivationConfigMetaData config = bean.getActivationConfig();
- ActivationConfigMetaData expected = new ActivationConfigMetaData();
- ActivationConfigPropertiesMetaData props = new ActivationConfigPropertiesMetaData();
- ActivationConfigPropertyMetaData p1 = new ActivationConfigPropertyMetaData();
- p1.setName("p1");
- p1.setValue("v1");
- props.add(p1);
- ActivationConfigPropertyMetaData p2 = new ActivationConfigPropertyMetaData();
- p2.setName("p2");
- p2.setValue("v2");
- props.add(p2);
- expected.setActivationConfigProperties(props);
- assertEquals(expected, config);
- assertEquals("java:/mdbs/MailMDB", bean.getMappedName());
- }
-
- private Collection<Class<?>> loadClassesFromCurrentClassDir()
- {
- return loadClassesFromRelativeClassDir(".");
- }
-
- private Collection<Class<?>> loadClassesFromRelativeClassDir(String dir)
- {
- // In real life the deployer will pass probably pass a class scanner
- Collection<Class<?>> classes = new ArrayList<Class<?>>();
- URL currentClassDirURL = getClass().getResource(dir);
- File currentDir;
- try
- {
- currentDir = new File(currentClassDirURL.toURI());
- }
- catch (URISyntaxException e)
- {
- throw new RuntimeException(e);
- }
- String classFileNames[] = currentDir.list(new FilenameFilter()
- {
- public boolean accept(File dir, String name)
- {
- return name.endsWith(".class");
- }
- });
- if (classFileNames == null)
- throw new RuntimeException("list failed");
-
- Arrays.sort(classFileNames);
-
- String packageName;
- if (dir.indexOf('/') != -1)
- packageName = dir.replaceAll("\\/", "") + ".";
- else
- packageName = ".";
-
- for (String classFileName : classFileNames)
- {
- String className = getClass().getPackage().getName() + packageName
- + classFileName.substring(0, classFileName.length() - 6);
- try
- {
- classes.add(Class.forName(className));
- }
- catch (ClassNotFoundException e)
- {
- throw new RuntimeException(e);
- }
- }
- return classes;
- }
-
- public void testBeans() throws Exception
- {
- AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
-
- Collection<Class<?>> classes = loadClassesFromCurrentClassDir();
- //System.out.println("Processing classes: " + classes);
-
- //enableTrace("org.jboss.metadata.annotation.creator");
- EjbJar30Creator creator = new EjbJar30Creator(finder);
-
- EjbJar30MetaData metaData = creator.create(classes);
-
- assertTrue(metaData.isEJB3x());
- assertEquals(EjbJarMetaData.LATEST_EJB_JAR_XSD_VERSION, metaData.getVersion());
-
- assertNotNull("no beans defined", metaData.getEnterpriseBeans());
- assertNotNull("no assembly descriptor defined", metaData.getAssemblyDescriptor());
-
- // There is a bug in IdMetaDataImpl.hashCode which isn't unique when id is not set.
- //for (ContainerTransactionMetaData transaction : metaData.getAssemblyDescriptor().getContainerTransactions())
- //{
- // System.out.println(transaction);
- //}
-
- assertEquals(6, metaData.getEnterpriseBeans().size());
-
- assertMyStatefulBean(metaData.getEnterpriseBean("AnotherName")); // MyStatefulBean
- assertMyStateless21Bean(metaData.getEnterpriseBean("MyStateless21Bean"));
- assertMyStatelessBean(metaData.getEnterpriseBean("MyStatelessBean"));
- assertMyMDB(metaData.getEnterpriseBean("MailMDB"));
-
- AssemblyDescriptorMetaData assembly = metaData.getAssemblyDescriptor();
- assertNotNull("no application exceptions defined", assembly.getApplicationExceptions());
- assertEquals(1, assembly.getApplicationExceptions().size());
- //System.out.println(assembly.getContainerTransactionsByEjbName("MyStatelessBean"));
-
- // @DeclareRoles
- SecurityRolesMetaData securityRoles = assembly.getSecurityRoles();
- assertNotNull(securityRoles);
- assertEquals(2, securityRoles.size());
- SecurityRoleMetaData role1 = securityRoles.get("Role1");
- assertNotNull(role1);
- assertEquals("Role1", role1.getRoleName());
- SecurityRoleMetaData role2 = securityRoles.get("Role2");
- assertNotNull(role2);
- assertEquals("Role2", role2.getRoleName());
-
- // @DenyAll
- // cls.getDeclaredMethods is un-ordered, so we must use bestMatch
- ExcludeListMetaData excludes = assembly.getExcludeList();
- assertNotNull(excludes);
- MethodsMetaData excludedMethods = excludes.getMethods();
- assertEquals(2, excludedMethods.size());
- MethodMetaData m0 = excludedMethods.bestMatch("denyAll", (Class[]) null, null, null);
- assertEquals("MyStatelessBean", m0.getEjbName());
- assertEquals("denyAll", m0.getMethodName());
- MethodParametersMetaData noargs = new MethodParametersMetaData();
- assertEquals(noargs, m0.getMethodParams());
- MethodMetaData m1 = excludedMethods.bestMatch("excluded", (Class[]) null, null, null);;
- assertEquals("MyStatelessBean", m1.getEjbName());
- assertEquals("excluded", m1.getMethodName());
- assertEquals(noargs, m1.getMethodParams());
-
- // @PermitAll, @RolesAllowed({"AccessRole1", "AccessRole2"})
- MethodPermissionsMetaData allPerms = assembly.getMethodPermissions();
- assertEquals(8, allPerms.size());
- MethodPermissionsMetaData perms = assembly.getMethodPermissionsByEjbName("MyStatelessBean");
- assertEquals(2, perms.size());
- MethodPermissionMetaData permitAll = null;
- MethodPermissionMetaData rolesAllowed = null;
- for (MethodPermissionMetaData mp : perms)
- {
- if (mp.matches("permitAll", null, null))
- permitAll = mp;
- if (mp.matches("rolesAllowed", null, null))
- rolesAllowed = mp;
- }
- assertNotNull(permitAll);
- assertTrue(permitAll.isNotChecked());
- assertTrue(permitAll.isNotChecked("permitAll", null, null));
- assertNotNull(rolesAllowed);
- HashSet<String> roles = new HashSet<String>();
- roles.add("AccessRole1");
- roles.add("AccessRole2");
- assertEquals(roles, rolesAllowed.getRoles());
-
- // Validate the MyStateless @Interceptors
- InterceptorBindingsMetaData interceptorBindings = assembly.getInterceptorBindings();
- assertEquals(2, interceptorBindings.size());
- InterceptorBindingMetaData ib0 = interceptorBindings.get(0);
- InterceptorBindingMetaData ib1 = interceptorBindings.get(1);
- assertEquals("MyStatelessBean", ib0.getEjbName());
- NamedMethodMetaData ib0Method = ib0.getMethod();
- if (ib0Method == null)
- {
- // The class level @Interceptors
- assertFalse(ib0.isExcludeClassInterceptors());
- assertTrue(ib0.isExcludeDefaultInterceptors());
- assertEquals(TestClassInterceptor.class.getName(), ib0.getInterceptorClasses().iterator().next());
- }
- else
- {
- // The method level @Interceptors
- assertTrue(ib0.isExcludeClassInterceptors());
- assertTrue(ib0.isExcludeDefaultInterceptors());
- assertEquals(TestMethodInterceptor.class.getName(), ib0.getInterceptorClasses().iterator().next());
- assertEquals("intercept2", ib0Method.getMethodName());
- }
- assertEquals("MyStatelessBean", ib1.getEjbName());
- NamedMethodMetaData ib1Method = ib1.getMethod();
- if (ib1Method == null)
- {
- // The class level @Interceptors
- assertFalse(ib1.isExcludeClassInterceptors());
- assertTrue(ib1.isExcludeDefaultInterceptors());
- assertEquals(TestClassInterceptor.class.getName(), ib1.getInterceptorClasses().iterator().next());
- }
- else
- {
- // The method level @Interceptors
- assertTrue(ib1.isExcludeClassInterceptors());
- assertTrue(ib1.isExcludeDefaultInterceptors());
- assertEquals(TestMethodInterceptor.class.getName(), ib1.getInterceptorClasses().iterator().next());
- assertEquals("intercept2", ib1Method.getMethodName());
- }
- }
-
- /**
- * Test merging annotation and xml based metadata
- * @throws Exception
- */
- public void testXmlMerge() throws Exception
- {
- Class<?>[] beanClasses =
- {InterMediateBean.class};
- List<Class<?>> classes = Arrays.asList(beanClasses);
- AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
- EjbJar30Creator creator = new EjbJar30Creator(finder);
- EjbJar30MetaData metaData = creator.create(classes);
- EjbJar3xMetaData specMetaData = unmarshal(EjbJar3xMetaData.class);
- EjbJar3xMetaData merged = new EjbJar30MetaData();
- AnnotationMergedView.merge(merged, specMetaData, metaData);
-
- EnterpriseBeanMetaData enterpriseBean = merged.getEnterpriseBean("InterMediateBean");
- assertNotNull(enterpriseBean);
- assertInterMediateBean(enterpriseBean);
- SessionBeanMetaData sb = (SessionBeanMetaData) merged.getEnterpriseBean("TargetBean");
- assertNotNull(sb);
- }
-
- /**
- *
- * @throws Exception
- */
- public void testAnnotationMergedViewWithPartialXml() throws Exception
- {
- Class<?>[] beanClasses =
- {EjbLink2Bean.class, EjbLink3Bean.class};
- List<Class<?>> classes = Arrays.asList(beanClasses);
- AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
- EjbJar30Creator creator = new EjbJar30Creator(finder);
- EjbJar30MetaData metaData = creator.create(classes);
- EjbJar3xMetaData specMetaData = unmarshal(EjbJar3xMetaData.class);
- EjbJar3xMetaData merged = new EjbJar30MetaData();
- AnnotationMergedView.merge(merged, specMetaData, metaData);
-
- JBossMetaData jbossMetaData = unmarshal("AnnotationEjb3_testAnnotationMergedViewWithPartialXml-jboss.xml",
- JBossMetaData.class, null);
- // Create a merged view
- JBossMetaData jbossMergedMetaData = new JBossMetaData();
- jbossMergedMetaData.merge(jbossMetaData, merged);
-
- EnterpriseBeanMetaData bean2 = merged.getEnterpriseBean("EjbLink2Bean");
- assertNotNull(bean2);
- EJBReferenceMetaData ref1 = bean2.getEjbReferenceByName("ejb/EjbLink1Bean");
- assertNotNull(ref1);
- EJBLocalReferenceMetaData ref3 = bean2.getEjbLocalReferenceByName("ejb/EjbLink3Bean");
- assertNotNull(ref3);
-
- EnterpriseBeanMetaData bean3 = merged.getEnterpriseBean("EjbLink3Bean");
- assertNotNull(bean3);
-
- JBossEnterpriseBeanMetaData jbean2 = jbossMergedMetaData.getEnterpriseBean("EjbLink2Bean");
- assertNotNull(jbean2);
- JBossEnterpriseBeanMetaData jbean3 = jbossMergedMetaData.getEnterpriseBean("EjbLink3Bean");
- assertNotNull(jbean3);
- }
-
- /**
- * Test merging annotation based metadata without xml
- * @throws Exception
- */
- public void testAnnotationMergedViewWithNoXml() throws Exception
- {
- Class<?>[] beanClasses =
- {MyStatelessBean.class};
- List<Class<?>> classes = Arrays.asList(beanClasses);
- AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
- EjbJar30Creator creator = new EjbJar30Creator(finder);
- EjbJar30MetaData metaData = creator.create(classes);
- EjbJar3xMetaData specMetaData = new EjbJar30MetaData();
- EjbJar3xMetaData merged = new EjbJar30MetaData();
- AnnotationMergedView.merge(merged, specMetaData, metaData);
-
- EnterpriseBeansMetaData beans = merged.getEnterpriseBeans();
- assertNotNull(beans);
- assertEquals(1, beans.size());
- EnterpriseBeanMetaData bean = beans.get("MyStatelessBean");
- assertNotNull(bean);
- assertMyStatelessBean(bean);
- }
-
- @SuppressWarnings("unchecked")
- @ScanPackage("org.jboss.test.metadata.annotation.ejb3.multiview")
- public void testMultiview() throws Exception
- {
- AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
-
- Collection<Class<?>> classes = PackageScanner.loadClasses();
- //System.out.println("Processing classes: " + classes);
-
- //enableTrace("org.jboss.metadata.annotation.creator");
- EjbJar30Creator creator = new EjbJar30Creator(finder);
-
- EjbJar30MetaData metaData = creator.create(classes);
-
- assertTrue(metaData.isEJB3x());
- assertEquals(EjbJarMetaData.LATEST_EJB_JAR_XSD_VERSION, metaData.getVersion());
-
- assertNotNull("no beans defined", metaData.getEnterpriseBeans());
- //assertNotNull("no assembly descriptor defined", metaData.getAssemblyDescriptor());
- SessionBeanMetaData bean = (SessionBeanMetaData) metaData.getEnterpriseBean("MultiviewBean");
- assertNotNull(bean);
- assertEquals(MultiviewHome.class.getName(), bean.getHome());
- assertEquals(Multiview21Remote.class.getName(), bean.getRemote());
- assertEquals(SetHelper.createSet(Multiview3Remote.class.getName()), bean.getBusinessRemotes());
- InitMethodsMetaData initMethods = bean.getInitMethods();
- assertNotNull(initMethods);
- assertEquals(1, initMethods.size());
- InitMethodMetaData initMethod = initMethods.get(0);
- assertEquals("create", initMethod.getBeanMethod().getMethodName());
- }
-
- /**
- * Test merging annotation and xml based metadata
- * @throws Exception
- */
- public void testPostConstruct() throws Exception
- {
- Class<?>[] beanClasses =
- {MetaDataStatelessBean.class};
- List<Class<?>> classes = Arrays.asList(beanClasses);
- AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
- EjbJar30Creator creator = new EjbJar30Creator(finder);
- EjbJar30MetaData metaData = creator.create(classes);
- EjbJar3xMetaData specMetaData = unmarshal(EjbJar3xMetaData.class);
- EjbJar3xMetaData merged = new EjbJar30MetaData();
- AnnotationMergedView.merge(merged, specMetaData, metaData);
-
- SessionBeanMetaData sessionBean = (SessionBeanMetaData) merged.getEnterpriseBean("MetaDataStatelessBean");
- assertNotNull(sessionBean);
- LifecycleCallbacksMetaData lifecycleCallbacks = sessionBean.getPostConstructs();
- assertNotNull(lifecycleCallbacks);
- assertEquals(1, lifecycleCallbacks.size());
- LifecycleCallbackMetaData lifecycleCallback = lifecycleCallbacks.get(0);
- assertEquals("postConstruct", lifecycleCallback.getMethodName());
- }
-
- /**
- * Test that we don't lose anything because of an annotation merge.
- *
- * @throws Exception
- */
- public void testEjbJar3xEverything() throws Exception
- {
- EjbJar3xEverythingUnitTestCase ejbJar = new EjbJar3xEverythingUnitTestCase("ejb-jar");
- EjbJar3xMetaData specMetaData = unmarshal("/org/jboss/test/metadata/ejb/EjbJar3xEverything_testEverything.xml",
- EjbJar30MetaData.class);
- //ejbJar.assertEverythingWithAppMetaData(specMetaData, Mode.SPEC);
-
- EjbJar3xMetaData metaData = new EjbJar30MetaData();
- EjbJar3xMetaData merged = new EjbJar30MetaData();
- AnnotationMergedView.merge(merged, specMetaData, metaData);
- ejbJar.assertEverythingWithAppMetaData(merged, Mode.SPEC);
- }
-
- /**
- * Test the merge of a MessageDrivenBeanMetaData.
- *
- * @throws Exception
- */
- @ScanPackage("org.jboss.test.metadata.annotation.ejb3.messagelistenerinterface")
- public void testMessageDrivenBeanMerge() throws Exception
- {
- // annotations define a MDB
- AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
-
- Collection<Class<?>> classes = PackageScanner.loadClasses();
- //System.out.println("Processing classes: " + classes);
-
- EjbJar30Creator creator = new EjbJar30Creator(finder);
-
- EjbJar30MetaData metaData = creator.create(classes);
-
- // xml augments it with a messaging-interface
- EjbJar3xMetaData specMetaData = unmarshal(EjbJar3xMetaData.class);
-
- EjbJar3xMetaData merged = new EjbJar30MetaData();
- AnnotationMergedView.merge(merged, specMetaData, metaData);
-
- MessageDrivenBeanMetaData result = (MessageDrivenBeanMetaData) merged
- .getEnterpriseBean("UnknownMessageListenerInterfaceMDB");
- assertEquals("javax.jms.MessageListener", result.getMessagingType());
- ActivationConfigPropertiesMetaData activationConfigProperties = result.getActivationConfig()
- .getActivationConfigProperties();
- assertEquals(3, activationConfigProperties.size());
- assertEquals("none", activationConfigProperties.get("dummy").getValue());
- assertEquals("Auto-acknowledge", activationConfigProperties.get("acknowledgeMode").getValue());
- assertEquals("javax.jms.Queue", activationConfigProperties.get("destinationType").getValue());
- assertEquals("two_ejb.jar#MsgBeanInQueue", result.getMessageDestinationLink());
- MessageDestinationReferencesMetaData mdRefs = result.getMessageDestinationReferences();
- assertEquals(1, mdRefs.size());
- MessageDestinationReferenceMetaData replyQueue = mdRefs.get("replyQueue");
- assertNotNull(replyQueue);
- assertEquals("javax.jms.Queue", replyQueue.getType());
- assertEquals("two_ejb.jar#MsgBeanOutQueue", replyQueue.getLink());
- assertEquals(MessageDestinationUsageType.Produces, replyQueue.getMessageDestinationUsage());
- }
-
- /**
- * EJB 3 4.6.6:
- * If bean class implements a single interface, that interface is assumed to be the busi-
- * ness interface of the bean. This business interface will be a local interface unless the
- * interface is designated as a remote business interface by use of the Remote annota-
- * tion on the bean class or interface or by means of the deployment descriptor.
- * @throws Exception
- */
- @ScanPackage("org.jboss.test.metadata.annotation.ejb3.defaultinterface")
- public void testDefaultInterface() throws Exception
- {
- AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
-
- Collection<Class<?>> classes = PackageScanner.loadClasses();
- //System.out.println("Processing classes: " + classes);
-
- EjbJar30Creator creator = new EjbJar30Creator(finder);
-
- EjbJar30MetaData metaData = creator.create(classes);
-
- SessionBeanMetaData bean = (SessionBeanMetaData) metaData.getEnterpriseBean("DefaultRemoteInterfaceBean");
-
- assertEquals(1, bean.getBusinessRemotes().size());
- assertTrue(bean.getBusinessRemotes().contains(DefaultInterface.class.getName()));
-
- bean = (SessionBeanMetaData) metaData.getEnterpriseBean("DefaultLocalInterfaceBean");
-
- assertEquals(1, bean.getBusinessLocals().size());
- assertTrue(bean.getBusinessLocals().contains(DefaultInterface.class.getName()));
- }
-
- @ScanPackage("org.jboss.test.metadata.annotation.ejb3.jbmeta30")
- public void testMergeGenericMDBMetaData() throws Exception
- {
- AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
-
- Collection<Class<?>> classes = PackageScanner.loadClasses();
- //System.out.println("Processing classes: " + classes);
-
- EjbJar30Creator creator = new EjbJar30Creator(finder);
-
- EjbJar30MetaData specMetaData = creator.create(classes);
-
- JBossMetaData mergedMetaData = new JBossMetaData();
- JBossMetaData metaData = unmarshal(JBossMetaData.class);
- mergedMetaData.merge(metaData, specMetaData);
-
- JBossMessageDrivenBeanMetaData mdb = (JBossMessageDrivenBeanMetaData) mergedMetaData
- .getEnterpriseBean("MessageDrivenBean");
- assertEquals("MDB_QUEUE", mdb.getDestinationJndiName());
- }
-
- @ScanPackage("org.jboss.test.metadata.annotation.ejb3.jbas5124")
- public void testMergeGenericMetaData() throws Exception
- {
- AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
-
- Collection<Class<?>> classes = PackageScanner.loadClasses();
- //System.out.println("Processing classes: " + classes);
-
- EjbJar30Creator creator = new EjbJar30Creator(finder);
-
- EjbJar30MetaData specMetaData = creator.create(classes);
-
- JBossMetaData mergedMetaData = new JBossMetaData();
- JBossMetaData metaData = unmarshal(JBossMetaData.class);
- mergedMetaData.merge(metaData, specMetaData);
-
- JBossSessionBeanMetaData ssbean = (JBossSessionBeanMetaData) mergedMetaData.getEnterpriseBean("StatelessBean");
- assertNotNull(ssbean);
- assertEquals("StatelessBean-jndi-name", ssbean.getJndiName());
- assertEquals("StatelessBean-home-jndi-name", ssbean.getHomeJndiName());
- assertTrue(ssbean.isStateless());
- JBossSessionBeanMetaData sfbean = (JBossSessionBeanMetaData) mergedMetaData.getEnterpriseBean("StatefulBean");
- assertNotNull(sfbean);
- assertEquals("StatefulBean-jndi-name", sfbean.getJndiName());
- assertEquals("StatefulBean-home-jndi-name", sfbean.getHomeJndiName());
- assertTrue(sfbean.isStateful());
- }
-
- private void assertInterMediateBean(EnterpriseBeanMetaData interMediateBean)
- {
- // Validate the merged InterMediateBean
- assertNotNull(interMediateBean);
- assertEquals("org.jboss.test.metadata.annotation.ejb3.runas.InterMediate", interMediateBean.getEjbClass());
- assertTrue(interMediateBean instanceof SessionBeanMetaData);
- SessionBeanMetaData sInterMediateBean = (SessionBeanMetaData) interMediateBean;
- assertEquals(SessionType.Stateless, sInterMediateBean.getSessionType());
- SecurityIdentityMetaData identity = sInterMediateBean.getSecurityIdentity();
- assertNotNull(identity);
- RunAsMetaData runAs = identity.getRunAs();
- assertNotNull(runAs);
- assertEquals("InternalUser", runAs.getRoleName());
- }
-
- public void testEjbJar30CreatorAnnotationContext()
- {
- AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
- EjbJar30Creator creator = new EjbJar30Creator(finder);
-
- assertNotNull(creator);
- assertNotNull(creator.getAnnotationContext());
-
- Collection<Class<? extends Annotation>> expected = new HashSet<Class<? extends Annotation>>();
- expected.add(Stateless.class);
- expected.add(Stateful.class);
- expected.add(MessageDriven.class);
- expected.add(ApplicationException.class);
-
- // Check Type annotations, others must be empty
- assertEquals(expected.size(), creator.getAnnotationContext().getTypeAnnotations().size());
- assertTrue(creator.getAnnotationContext().getTypeAnnotations().containsAll(expected));
-
- assertTrue(creator.getAnnotationContext().getFieldAnnotations().isEmpty());
- assertTrue(creator.getAnnotationContext().getMethodAnnotations().isEmpty());
- }
-}
Copied: projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3UnitTestCase.java (from rev 106310, projects/metadata/ejb/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3UnitTestCase.java)
===================================================================
--- projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3UnitTestCase.java (rev 0)
+++ projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/test/metadata/annotation/ejb3/AnnotationEjb3UnitTestCase.java 2010-07-01 21:21:45 UTC (rev 106390)
@@ -0,0 +1,778 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, Red Hat Middleware LLC, and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.test.metadata.annotation.ejb3;
+
+import org.jboss.metadata.annotation.creator.ejb.EjbJar30Creator;
+import org.jboss.metadata.annotation.finder.AnnotationFinder;
+import org.jboss.metadata.annotation.finder.DefaultAnnotationFinder;
+import org.jboss.metadata.common.ejb.IEnterpriseBeanMetaData;
+import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
+import org.jboss.metadata.ejb.jboss.JBossMessageDrivenBeanMetaData;
+import org.jboss.metadata.ejb.jboss.JBossMetaData;
+import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
+import org.jboss.metadata.ejb.spec.*;
+import org.jboss.metadata.javaee.spec.*;
+import org.jboss.test.metadata.annotation.ejb3.defaultinterface.DefaultInterface;
+import org.jboss.test.metadata.annotation.ejb3.multiview.Multiview21Remote;
+import org.jboss.test.metadata.annotation.ejb3.multiview.Multiview3Remote;
+import org.jboss.test.metadata.annotation.ejb3.multiview.MultiviewHome;
+import org.jboss.test.metadata.annotation.ejb3.partialxml.EjbLink2Bean;
+import org.jboss.test.metadata.annotation.ejb3.partialxml.EjbLink3Bean;
+import org.jboss.test.metadata.annotation.ejb3.runas.InterMediateBean;
+import org.jboss.test.metadata.common.PackageScanner;
+import org.jboss.test.metadata.common.ScanPackage;
+import org.jboss.test.metadata.common.SetHelper;
+import org.jboss.test.metadata.ejb.EjbJar3xEverythingUnitTestCase;
+import org.jboss.test.metadata.javaee.AbstractJavaEEEverythingTest.Mode;
+import org.jboss.test.metadata.javaee.AbstractJavaEEMetaDataTest;
+
+import javax.ejb.*;
+import javax.ejb.Timer;
+import java.io.File;
+import java.io.FilenameFilter;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.AnnotatedElement;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.*;
+
+/**
+ * This tests the annotation translation framework.
+ *
+ * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
+ * @author Scott.Stark at jboss.org
+ * @version $Revision: 88355 $
+ */
+public class AnnotationEjb3UnitTestCase extends AbstractJavaEEMetaDataTest
+{
+ /**
+ * @param name
+ */
+ public AnnotationEjb3UnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ private void assertMyStatefulBean(IEnterpriseBeanMetaData enterpriseBean)
+ {
+ assertTrue(enterpriseBean instanceof SessionBeanMetaData);
+
+ SessionBeanMetaData bean = (SessionBeanMetaData) enterpriseBean;
+ assertEquals(SessionType.Stateful, bean.getSessionType());
+ assertEquals(MyStatefulBean.class.getName(), bean.getEjbClass());
+ assertEquals("AnotherName", bean.getEjbName());
+
+ assertNotNull("bean has no business remotes", bean.getBusinessRemotes());
+ assertEquals(1, bean.getBusinessRemotes().size());
+ assertTrue(bean.getBusinessRemotes().contains(MyStateful.class.getName()));
+ assertEquals(MyStatefulHome.class.getName(), bean.getHome());
+
+ // @EJBs
+ AnnotatedEJBReferencesMetaData ejbRefs = bean.getAnnotatedEjbReferences();
+ assertEquals(2, ejbRefs.size());
+ AnnotatedEJBReferenceMetaData local1 = ejbRefs.get("ejb/local1");
+ assertNotNull(local1);
+ assertEquals("java:/MyLocalSession1", local1.getMappedName());
+ assertEquals("ejb/local1", local1.getEjbRefName());
+ assertEquals("MyLocalSession1", local1.getLink());
+ assertEquals("A reference to MyLocalSession1", local1.getDescriptions().value()[0].value());
+ assertEquals(MyStatelessLocal.class, local1.getBeanInterface());
+ AnnotatedEJBReferenceMetaData local2 = ejbRefs.get("ejb/local2");
+ assertNotNull(local2);
+ assertEquals("java:/MyLocalSession2", local2.getMappedName());
+ assertEquals("ejb/local2", local2.getEjbRefName());
+ assertEquals("local.jar#MyLocalSession1", local2.getLink());
+ assertEquals("A reference to MyLocalSession2", local2.getDescriptions().value()[0].value());
+ assertEquals(MyStatelessLocal.class, local2.getBeanInterface());
+ // @PostConstruct
+ LifecycleCallbacksMetaData postConstructs = bean.getPostConstructs();
+ assertNotNull(postConstructs);
+ assertEquals(1, postConstructs.size());
+ LifecycleCallbackMetaData postConstruct = postConstructs.get(0);
+ assertEquals("setUp", postConstruct.getMethodName());
+ assertEquals(MyStatefulBean.class.getName(), postConstruct.getClassName());
+ // @PreDestroy
+ LifecycleCallbacksMetaData preDestroys = bean.getPreDestroys();
+ assertNotNull(preDestroys);
+ assertEquals(1, preDestroys.size());
+ LifecycleCallbackMetaData preDestroy = preDestroys.get(0);
+ assertEquals("tearDown", preDestroy.getMethodName());
+ assertEquals(MyStatefulBean.class.getName(), preDestroy.getClassName());
+ // @Init
+ InitMethodsMetaData initMethods = bean.getInitMethods();
+ assertNotNull(initMethods);
+ assertEquals(1, initMethods.size());
+ InitMethodMetaData initMethod = initMethods.get(0);
+ assertEquals("init", initMethod.getBeanMethod().getMethodName());
+ // @PostActivate
+ LifecycleCallbacksMetaData postActivates = bean.getPostActivates();
+ assertNotNull(postActivates);
+ assertEquals(1, postActivates.size());
+ LifecycleCallbackMetaData postActivate = postActivates.get(0);
+ assertEquals("activate", postActivate.getMethodName());
+ assertEquals(MyStatefulBean.class.getName(), postActivate.getClassName());
+ // @PrePassivate
+ LifecycleCallbacksMetaData prePassivates = bean.getPrePassivates();
+ assertNotNull(prePassivates);
+ assertEquals(1, prePassivates.size());
+ LifecycleCallbackMetaData prePassivate = prePassivates.get(0);
+ assertEquals("passivate", prePassivate.getMethodName());
+ assertEquals(MyStatefulBean.class.getName(), prePassivate.getClassName());
+ // @Remove
+ RemoveMethodsMetaData removeMethods = bean.getRemoveMethods();
+ assertNotNull(removeMethods);
+ assertEquals(1, removeMethods.size());
+ RemoveMethodMetaData removeMethod = removeMethods.get(0);
+ assertEquals("remove", removeMethod.getBeanMethod().getMethodName());
+ // @Resource
+ ResourceEnvironmentReferencesMetaData resource = bean.getResourceEnvironmentReferences();
+ assertNotNull(resource);
+ assertEquals(1, resource.size());
+ ResourceEnvironmentReferenceMetaData ref = resource.get(bean.getEjbClass() + "/context");
+ assertNotNull(ref);
+ assertNotNull(ref.getInjectionTargets());
+ // @PersistenceContext
+ PersistenceContextReferenceMetaData persistence = bean.getPersistenceContextReferenceByName("string");
+ assertNotNull(persistence);
+ assertNotNull(persistence.getInjectionTargets());
+ // @WebServiceRef
+ ServiceReferencesMetaData serviceRefs = bean.getServiceReferences();
+ assertNotNull(serviceRefs);
+ assertEquals(1, serviceRefs.size());
+ ServiceReferenceMetaData serviceRef = serviceRefs.get(bean.getEjbClass() + "/webserviceRef");
+ assertNotNull(serviceRef);
+ assertNotNull(serviceRef.getInjectionTargets());
+ }
+
+ private void assertMyStateless21Bean(IEnterpriseBeanMetaData enterpriseBean)
+ {
+ assertTrue(enterpriseBean instanceof SessionBeanMetaData);
+ SessionBeanMetaData bean = (SessionBeanMetaData) enterpriseBean;
+ assertEquals(SessionType.Stateless, bean.getSessionType());
+ assertEquals(MyStateless21Bean.class.getName(), bean.getEjbClass());
+ assertEquals("MyStateless21Bean", bean.getEjbName());
+
+ assertNull("bean has business locals (instead of local interface)", bean.getBusinessLocals());
+
+ assertEquals(MyStateless21Local.class.getName(), bean.getLocal());
+ assertEquals(MyStateless21Home.class.getName(), bean.getLocalHome());
+ }
+
+ private void assertMyStatelessBean(IEnterpriseBeanMetaData enterpriseBean)
+ {
+ assertTrue(enterpriseBean instanceof SessionBeanMetaData);
+ SessionBeanMetaData bean = (SessionBeanMetaData) enterpriseBean;
+ assertEquals(SessionType.Stateless, bean.getSessionType());
+ assertEquals(MyStatelessBean.class.getName(), bean.getEjbClass());
+ assertEquals("MyStatelessBean", bean.getEjbName());
+
+ assertNotNull("bean has no business locals", bean.getBusinessLocals());
+ assertEquals(1, bean.getBusinessLocals().size());
+ assertTrue(bean.getBusinessLocals().contains(MyStatelessLocal.class.getName()));
+
+ // @TransactionAttribute
+// assertNotNull("bean has no container transactions", bean.getContainerTransactions());
+// Iterator<ContainerTransactionMetaData> it = bean.getContainerTransactions().iterator();
+// String[] params =
+// {};
+// ContainerTransactionMetaData tx1 = it.next();
+// assertEquals(TransactionAttributeType.NEVER, tx1.getTransAttribute());
+// MethodsMetaData tx1Methods = tx1.getMethods();
+// assertNotNull(tx1Methods);
+// assertTrue(tx1Methods.matches("*", params, null));
+//
+// ContainerTransactionMetaData tx2 = it.next();
+// assertEquals(TransactionAttributeType.MANDATORY, tx2.getTransAttribute());
+// MethodsMetaData tx2Methods = tx2.getMethods();
+// assertTrue(tx2Methods.matches("transactionAttributeMandatory", params, null));
+
+ // @EJB
+ AnnotatedEJBReferencesMetaData ejbRefs = bean.getAnnotatedEjbReferences();
+ assertEquals(2, ejbRefs.size());
+ AnnotatedEJBReferenceMetaData injectedField = ejbRefs.get("injectedField");
+ assertNotNull(injectedField);
+ assertEquals(MyStatelessLocal.class, injectedField.getBeanInterface());
+ AnnotatedEJBReferenceMetaData injectedFieldWithOverridenName = ejbRefs.get("overrideName");
+ assertNotNull(injectedFieldWithOverridenName);
+ assertEquals(MyStatelessLocal.class, injectedFieldWithOverridenName.getBeanInterface());
+ // @PostConstruct
+ LifecycleCallbacksMetaData postConstructs = bean.getPostConstructs();
+ assertNotNull(postConstructs);
+ assertEquals(1, postConstructs.size());
+ LifecycleCallbackMetaData postConstruct = postConstructs.get(0);
+ assertEquals("setUp", postConstruct.getMethodName());
+ assertEquals(MyStatelessBean.class.getName(), postConstruct.getClassName());
+ // @PreDestroy
+ LifecycleCallbacksMetaData preDestroys = bean.getPreDestroys();
+ assertNotNull(preDestroys);
+ assertEquals(1, preDestroys.size());
+ LifecycleCallbackMetaData preDestroy = preDestroys.get(0);
+ assertEquals("tearDown", preDestroy.getMethodName());
+ assertEquals(MyStatelessBean.class.getName(), preDestroy.getClassName());
+
+ // @RunAs
+ SecurityIdentityMetaData identity = bean.getSecurityIdentity();
+ assertNotNull(identity);
+ RunAsMetaData runAs = identity.getRunAs();
+ assertNotNull(runAs);
+ assertEquals("InternalUser", runAs.getRoleName());
+
+ // @AroundInvoke
+ AroundInvokesMetaData invokes = bean.getAroundInvokes();
+ assertNotNull(invokes);
+ assertEquals(1, invokes.size());
+ AroundInvokeMetaData aroundInvoke = invokes.get(0);
+ assertEquals(MyStatelessBean.class.getName(), aroundInvoke.getClassName());
+ assertEquals("intercept", aroundInvoke.getMethodName());
+
+ // @Timeout
+ NamedMethodMetaData timeoutMethod = bean.getTimeoutMethod();
+ assertNotNull(timeoutMethod);
+ assertEquals("timeout", timeoutMethod.getMethodName());
+ MethodParametersMetaData parameters = timeoutMethod.getMethodParams();
+ assertEquals(1, parameters.size());
+ assertEquals(Timer.class.getName(), parameters.get(0));
+ }
+
+ private void assertMyMDB(IEnterpriseBeanMetaData enterpriseBean)
+ {
+ assertTrue(enterpriseBean instanceof MessageDrivenBeanMetaData);
+ MessageDrivenBeanMetaData bean = (MessageDrivenBeanMetaData) enterpriseBean;
+ assertEquals(MyMDB.class.getName(), bean.getEjbClass());
+ assertEquals("MailMDB", bean.getEjbName());
+ assertEquals(false, bean.isJMS());
+ assertEquals(IMailListener.class.getName(), bean.getMessagingType());
+ ActivationConfigMetaData config = bean.getActivationConfig();
+ ActivationConfigMetaData expected = new ActivationConfigMetaData();
+ ActivationConfigPropertiesMetaData props = new ActivationConfigPropertiesMetaData();
+ ActivationConfigPropertyMetaData p1 = new ActivationConfigPropertyMetaData();
+ p1.setName("p1");
+ p1.setValue("v1");
+ props.add(p1);
+ ActivationConfigPropertyMetaData p2 = new ActivationConfigPropertyMetaData();
+ p2.setName("p2");
+ p2.setValue("v2");
+ props.add(p2);
+ expected.setActivationConfigProperties(props);
+ assertEquals(expected, config);
+ assertEquals("java:/mdbs/MailMDB", bean.getMappedName());
+ }
+
+ private Collection<Class<?>> loadClassesFromCurrentClassDir()
+ {
+ return loadClassesFromRelativeClassDir(".");
+ }
+
+ private Collection<Class<?>> loadClassesFromRelativeClassDir(String dir)
+ {
+ // In real life the deployer will pass probably pass a class scanner
+ Collection<Class<?>> classes = new ArrayList<Class<?>>();
+ URL currentClassDirURL = getClass().getResource(dir);
+ File currentDir;
+ try
+ {
+ currentDir = new File(currentClassDirURL.toURI());
+ }
+ catch (URISyntaxException e)
+ {
+ throw new RuntimeException(e);
+ }
+ String classFileNames[] = currentDir.list(new FilenameFilter()
+ {
+ public boolean accept(File dir, String name)
+ {
+ return name.endsWith(".class");
+ }
+ });
+ if (classFileNames == null)
+ throw new RuntimeException("list failed");
+
+ Arrays.sort(classFileNames);
+
+ String packageName;
+ if (dir.indexOf('/') != -1)
+ packageName = dir.replaceAll("\\/", "") + ".";
+ else
+ packageName = ".";
+
+ for (String classFileName : classFileNames)
+ {
+ String className = getClass().getPackage().getName() + packageName
+ + classFileName.substring(0, classFileName.length() - 6);
+ try
+ {
+ classes.add(Class.forName(className));
+ }
+ catch (ClassNotFoundException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+ return classes;
+ }
+
+ public void testBeans() throws Exception
+ {
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+
+ Collection<Class<?>> classes = loadClassesFromCurrentClassDir();
+ //System.out.println("Processing classes: " + classes);
+
+ //enableTrace("org.jboss.metadata.annotation.creator");
+ EjbJar30Creator creator = new EjbJar30Creator(finder);
+
+ EjbJar30MetaData metaData = creator.create(classes);
+
+ assertTrue(metaData.isEJB3x());
+ assertEquals(EjbJarMetaData.LATEST_EJB_JAR_XSD_VERSION, metaData.getVersion());
+
+ assertNotNull("no beans defined", metaData.getEnterpriseBeans());
+ assertNotNull("no assembly descriptor defined", metaData.getAssemblyDescriptor());
+
+ // There is a bug in IdMetaDataImpl.hashCode which isn't unique when id is not set.
+ //for (ContainerTransactionMetaData transaction : metaData.getAssemblyDescriptor().getContainerTransactions())
+ //{
+ // System.out.println(transaction);
+ //}
+
+ assertEquals(6, metaData.getEnterpriseBeans().size());
+
+ assertMyStatefulBean(metaData.getEnterpriseBean("AnotherName")); // MyStatefulBean
+ assertMyStateless21Bean(metaData.getEnterpriseBean("MyStateless21Bean"));
+ assertMyStatelessBean(metaData.getEnterpriseBean("MyStatelessBean"));
+ assertMyMDB(metaData.getEnterpriseBean("MailMDB"));
+
+ AssemblyDescriptorMetaData assembly = metaData.getAssemblyDescriptor();
+ assertNotNull("no application exceptions defined", assembly.getApplicationExceptions());
+ assertEquals(1, assembly.getApplicationExceptions().size());
+ //System.out.println(assembly.getContainerTransactionsByEjbName("MyStatelessBean"));
+
+ // @DeclareRoles
+ SecurityRolesMetaData securityRoles = assembly.getSecurityRoles();
+ assertNotNull(securityRoles);
+ assertEquals(2, securityRoles.size());
+ SecurityRoleMetaData role1 = securityRoles.get("Role1");
+ assertNotNull(role1);
+ assertEquals("Role1", role1.getRoleName());
+ SecurityRoleMetaData role2 = securityRoles.get("Role2");
+ assertNotNull(role2);
+ assertEquals("Role2", role2.getRoleName());
+
+ // @DenyAll
+ // cls.getDeclaredMethods is un-ordered, so we must use bestMatch
+ ExcludeListMetaData excludes = assembly.getExcludeList();
+ assertNotNull(excludes);
+ MethodsMetaData excludedMethods = excludes.getMethods();
+ assertEquals(2, excludedMethods.size());
+ MethodMetaData m0 = excludedMethods.bestMatch("denyAll", (Class[]) null, null, null);
+ assertEquals("MyStatelessBean", m0.getEjbName());
+ assertEquals("denyAll", m0.getMethodName());
+ MethodParametersMetaData noargs = new MethodParametersMetaData();
+ assertEquals(noargs, m0.getMethodParams());
+ MethodMetaData m1 = excludedMethods.bestMatch("excluded", (Class[]) null, null, null);;
+ assertEquals("MyStatelessBean", m1.getEjbName());
+ assertEquals("excluded", m1.getMethodName());
+ assertEquals(noargs, m1.getMethodParams());
+
+ // @PermitAll, @RolesAllowed({"AccessRole1", "AccessRole2"})
+ MethodPermissionsMetaData allPerms = assembly.getMethodPermissions();
+ assertEquals(8, allPerms.size());
+ MethodPermissionsMetaData perms = assembly.getMethodPermissionsByEjbName("MyStatelessBean");
+ assertEquals(2, perms.size());
+ MethodPermissionMetaData permitAll = null;
+ MethodPermissionMetaData rolesAllowed = null;
+ for (MethodPermissionMetaData mp : perms)
+ {
+ if (mp.matches("permitAll", null, null))
+ permitAll = mp;
+ if (mp.matches("rolesAllowed", null, null))
+ rolesAllowed = mp;
+ }
+ assertNotNull(permitAll);
+ assertTrue(permitAll.isNotChecked());
+ assertTrue(permitAll.isNotChecked("permitAll", null, null));
+ assertNotNull(rolesAllowed);
+ HashSet<String> roles = new HashSet<String>();
+ roles.add("AccessRole1");
+ roles.add("AccessRole2");
+ assertEquals(roles, rolesAllowed.getRoles());
+
+ // Validate the MyStateless @Interceptors
+ InterceptorBindingsMetaData interceptorBindings = assembly.getInterceptorBindings();
+ assertEquals(2, interceptorBindings.size());
+ InterceptorBindingMetaData ib0 = interceptorBindings.get(0);
+ InterceptorBindingMetaData ib1 = interceptorBindings.get(1);
+ assertEquals("MyStatelessBean", ib0.getEjbName());
+ NamedMethodMetaData ib0Method = ib0.getMethod();
+ if (ib0Method == null)
+ {
+ // The class level @Interceptors
+ assertFalse(ib0.isExcludeClassInterceptors());
+ assertTrue(ib0.isExcludeDefaultInterceptors());
+ assertEquals(TestClassInterceptor.class.getName(), ib0.getInterceptorClasses().iterator().next());
+ }
+ else
+ {
+ // The method level @Interceptors
+ assertTrue(ib0.isExcludeClassInterceptors());
+ assertTrue(ib0.isExcludeDefaultInterceptors());
+ assertEquals(TestMethodInterceptor.class.getName(), ib0.getInterceptorClasses().iterator().next());
+ assertEquals("intercept2", ib0Method.getMethodName());
+ }
+ assertEquals("MyStatelessBean", ib1.getEjbName());
+ NamedMethodMetaData ib1Method = ib1.getMethod();
+ if (ib1Method == null)
+ {
+ // The class level @Interceptors
+ assertFalse(ib1.isExcludeClassInterceptors());
+ assertTrue(ib1.isExcludeDefaultInterceptors());
+ assertEquals(TestClassInterceptor.class.getName(), ib1.getInterceptorClasses().iterator().next());
+ }
+ else
+ {
+ // The method level @Interceptors
+ assertTrue(ib1.isExcludeClassInterceptors());
+ assertTrue(ib1.isExcludeDefaultInterceptors());
+ assertEquals(TestMethodInterceptor.class.getName(), ib1.getInterceptorClasses().iterator().next());
+ assertEquals("intercept2", ib1Method.getMethodName());
+ }
+ }
+
+ /**
+ * Test merging annotation and xml based metadata
+ * @throws Exception
+ */
+ public void testXmlMerge() throws Exception
+ {
+ Class<?>[] beanClasses =
+ {InterMediateBean.class};
+ List<Class<?>> classes = Arrays.asList(beanClasses);
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ EjbJar30Creator creator = new EjbJar30Creator(finder);
+ EjbJar30MetaData metaData = creator.create(classes);
+ EjbJar3xMetaData specMetaData = unmarshal(EjbJar3xMetaData.class);
+ EjbJar3xMetaData merged = new EjbJar30MetaData();
+ AnnotationMergedView.merge(merged, specMetaData, metaData);
+
+ EnterpriseBeanMetaData enterpriseBean = merged.getEnterpriseBean("InterMediateBean");
+ assertNotNull(enterpriseBean);
+ assertInterMediateBean(enterpriseBean);
+ SessionBeanMetaData sb = (SessionBeanMetaData) merged.getEnterpriseBean("TargetBean");
+ assertNotNull(sb);
+ }
+
+ /**
+ *
+ * @throws Exception
+ */
+ public void testAnnotationMergedViewWithPartialXml() throws Exception
+ {
+ Class<?>[] beanClasses =
+ {EjbLink2Bean.class, EjbLink3Bean.class};
+ List<Class<?>> classes = Arrays.asList(beanClasses);
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ EjbJar30Creator creator = new EjbJar30Creator(finder);
+ EjbJar30MetaData metaData = creator.create(classes);
+ EjbJar3xMetaData specMetaData = unmarshal(EjbJar3xMetaData.class);
+ EjbJar3xMetaData merged = new EjbJar30MetaData();
+ AnnotationMergedView.merge(merged, specMetaData, metaData);
+
+ JBossMetaData jbossMetaData = unmarshal("AnnotationEjb3_testAnnotationMergedViewWithPartialXml-jboss.xml",
+ JBossMetaData.class, null);
+ // Create a merged view
+ JBossMetaData jbossMergedMetaData = new JBossMetaData();
+ jbossMergedMetaData.merge(jbossMetaData, merged);
+
+ EnterpriseBeanMetaData bean2 = merged.getEnterpriseBean("EjbLink2Bean");
+ assertNotNull(bean2);
+ EJBReferenceMetaData ref1 = bean2.getEjbReferenceByName("ejb/EjbLink1Bean");
+ assertNotNull(ref1);
+ EJBLocalReferenceMetaData ref3 = bean2.getEjbLocalReferenceByName("ejb/EjbLink3Bean");
+ assertNotNull(ref3);
+
+ EnterpriseBeanMetaData bean3 = merged.getEnterpriseBean("EjbLink3Bean");
+ assertNotNull(bean3);
+
+ JBossEnterpriseBeanMetaData jbean2 = jbossMergedMetaData.getEnterpriseBean("EjbLink2Bean");
+ assertNotNull(jbean2);
+ JBossEnterpriseBeanMetaData jbean3 = jbossMergedMetaData.getEnterpriseBean("EjbLink3Bean");
+ assertNotNull(jbean3);
+ }
+
+ /**
+ * Test merging annotation based metadata without xml
+ * @throws Exception
+ */
+ public void testAnnotationMergedViewWithNoXml() throws Exception
+ {
+ Class<?>[] beanClasses =
+ {MyStatelessBean.class};
+ List<Class<?>> classes = Arrays.asList(beanClasses);
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ EjbJar30Creator creator = new EjbJar30Creator(finder);
+ EjbJar30MetaData metaData = creator.create(classes);
+ EjbJar3xMetaData specMetaData = new EjbJar30MetaData();
+ EjbJar3xMetaData merged = new EjbJar30MetaData();
+ AnnotationMergedView.merge(merged, specMetaData, metaData);
+
+ EnterpriseBeansMetaData beans = merged.getEnterpriseBeans();
+ assertNotNull(beans);
+ assertEquals(1, beans.size());
+ EnterpriseBeanMetaData bean = beans.get("MyStatelessBean");
+ assertNotNull(bean);
+ assertMyStatelessBean(bean);
+ }
+
+ @SuppressWarnings("unchecked")
+ @ScanPackage("org.jboss.test.metadata.annotation.ejb3.multiview")
+ public void testMultiview() throws Exception
+ {
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+
+ Collection<Class<?>> classes = PackageScanner.loadClasses();
+ //System.out.println("Processing classes: " + classes);
+
+ //enableTrace("org.jboss.metadata.annotation.creator");
+ EjbJar30Creator creator = new EjbJar30Creator(finder);
+
+ EjbJar30MetaData metaData = creator.create(classes);
+
+ assertTrue(metaData.isEJB3x());
+ assertEquals(EjbJarMetaData.LATEST_EJB_JAR_XSD_VERSION, metaData.getVersion());
+
+ assertNotNull("no beans defined", metaData.getEnterpriseBeans());
+ //assertNotNull("no assembly descriptor defined", metaData.getAssemblyDescriptor());
+ SessionBeanMetaData bean = (SessionBeanMetaData) metaData.getEnterpriseBean("MultiviewBean");
+ assertNotNull(bean);
+ assertEquals(MultiviewHome.class.getName(), bean.getHome());
+ assertEquals(Multiview21Remote.class.getName(), bean.getRemote());
+ assertEquals(SetHelper.createSet(Multiview3Remote.class.getName()), bean.getBusinessRemotes());
+ InitMethodsMetaData initMethods = bean.getInitMethods();
+ assertNotNull(initMethods);
+ assertEquals(1, initMethods.size());
+ InitMethodMetaData initMethod = initMethods.get(0);
+ assertEquals("create", initMethod.getBeanMethod().getMethodName());
+ }
+
+ /**
+ * Test merging annotation and xml based metadata
+ * @throws Exception
+ */
+ public void testPostConstruct() throws Exception
+ {
+ Class<?>[] beanClasses =
+ {MetaDataStatelessBean.class};
+ List<Class<?>> classes = Arrays.asList(beanClasses);
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ EjbJar30Creator creator = new EjbJar30Creator(finder);
+ EjbJar30MetaData metaData = creator.create(classes);
+ EjbJar3xMetaData specMetaData = unmarshal(EjbJar3xMetaData.class);
+ EjbJar3xMetaData merged = new EjbJar30MetaData();
+ AnnotationMergedView.merge(merged, specMetaData, metaData);
+
+ SessionBeanMetaData sessionBean = (SessionBeanMetaData) merged.getEnterpriseBean("MetaDataStatelessBean");
+ assertNotNull(sessionBean);
+ LifecycleCallbacksMetaData lifecycleCallbacks = sessionBean.getPostConstructs();
+ assertNotNull(lifecycleCallbacks);
+ assertEquals(1, lifecycleCallbacks.size());
+ LifecycleCallbackMetaData lifecycleCallback = lifecycleCallbacks.get(0);
+ assertEquals("postConstruct", lifecycleCallback.getMethodName());
+ }
+
+ /**
+ * Test that we don't lose anything because of an annotation merge.
+ *
+ * @throws Exception
+ */
+ public void testEjbJar3xEverything() throws Exception
+ {
+ EjbJar3xEverythingUnitTestCase ejbJar = new EjbJar3xEverythingUnitTestCase("ejb-jar");
+ EjbJar3xMetaData specMetaData = unmarshal("/org/jboss/test/metadata/ejb/EjbJar3xEverything_testEverything.xml",
+ EjbJar30MetaData.class);
+ //ejbJar.assertEverythingWithAppMetaData(specMetaData, Mode.SPEC);
+
+ EjbJar3xMetaData metaData = new EjbJar30MetaData();
+ EjbJar3xMetaData merged = new EjbJar30MetaData();
+ AnnotationMergedView.merge(merged, specMetaData, metaData);
+ ejbJar.assertEverythingWithAppMetaData(merged, Mode.SPEC);
+ }
+
+ /**
+ * Test the merge of a MessageDrivenBeanMetaData.
+ *
+ * @throws Exception
+ */
+ @ScanPackage("org.jboss.test.metadata.annotation.ejb3.messagelistenerinterface")
+ public void testMessageDrivenBeanMerge() throws Exception
+ {
+ // annotations define a MDB
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+
+ Collection<Class<?>> classes = PackageScanner.loadClasses();
+ //System.out.println("Processing classes: " + classes);
+
+ EjbJar30Creator creator = new EjbJar30Creator(finder);
+
+ EjbJar30MetaData metaData = creator.create(classes);
+
+ // xml augments it with a messaging-interface
+ EjbJar3xMetaData specMetaData = unmarshal(EjbJar3xMetaData.class);
+
+ EjbJar3xMetaData merged = new EjbJar30MetaData();
+ AnnotationMergedView.merge(merged, specMetaData, metaData);
+
+ MessageDrivenBeanMetaData result = (MessageDrivenBeanMetaData) merged
+ .getEnterpriseBean("UnknownMessageListenerInterfaceMDB");
+ assertEquals("javax.jms.MessageListener", result.getMessagingType());
+ ActivationConfigPropertiesMetaData activationConfigProperties = result.getActivationConfig()
+ .getActivationConfigProperties();
+ assertEquals(3, activationConfigProperties.size());
+ assertEquals("none", activationConfigProperties.get("dummy").getValue());
+ assertEquals("Auto-acknowledge", activationConfigProperties.get("acknowledgeMode").getValue());
+ assertEquals("javax.jms.Queue", activationConfigProperties.get("destinationType").getValue());
+ assertEquals("two_ejb.jar#MsgBeanInQueue", result.getMessageDestinationLink());
+ MessageDestinationReferencesMetaData mdRefs = result.getMessageDestinationReferences();
+ assertEquals(1, mdRefs.size());
+ MessageDestinationReferenceMetaData replyQueue = mdRefs.get("replyQueue");
+ assertNotNull(replyQueue);
+ assertEquals("javax.jms.Queue", replyQueue.getType());
+ assertEquals("two_ejb.jar#MsgBeanOutQueue", replyQueue.getLink());
+ assertEquals(MessageDestinationUsageType.Produces, replyQueue.getMessageDestinationUsage());
+ }
+
+ /**
+ * EJB 3 4.6.6:
+ * If bean class implements a single interface, that interface is assumed to be the busi-
+ * ness interface of the bean. This business interface will be a local interface unless the
+ * interface is designated as a remote business interface by use of the Remote annota-
+ * tion on the bean class or interface or by means of the deployment descriptor.
+ * @throws Exception
+ */
+ @ScanPackage("org.jboss.test.metadata.annotation.ejb3.defaultinterface")
+ public void testDefaultInterface() throws Exception
+ {
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+
+ Collection<Class<?>> classes = PackageScanner.loadClasses();
+ //System.out.println("Processing classes: " + classes);
+
+ EjbJar30Creator creator = new EjbJar30Creator(finder);
+
+ EjbJar30MetaData metaData = creator.create(classes);
+
+ SessionBeanMetaData bean = (SessionBeanMetaData) metaData.getEnterpriseBean("DefaultRemoteInterfaceBean");
+
+ assertEquals(1, bean.getBusinessRemotes().size());
+ assertTrue(bean.getBusinessRemotes().contains(DefaultInterface.class.getName()));
+
+ bean = (SessionBeanMetaData) metaData.getEnterpriseBean("DefaultLocalInterfaceBean");
+
+ assertEquals(1, bean.getBusinessLocals().size());
+ assertTrue(bean.getBusinessLocals().contains(DefaultInterface.class.getName()));
+ }
+
+ @ScanPackage("org.jboss.test.metadata.annotation.ejb3.jbmeta30")
+ public void testMergeGenericMDBMetaData() throws Exception
+ {
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+
+ Collection<Class<?>> classes = PackageScanner.loadClasses();
+ //System.out.println("Processing classes: " + classes);
+
+ EjbJar30Creator creator = new EjbJar30Creator(finder);
+
+ EjbJar30MetaData specMetaData = creator.create(classes);
+
+ JBossMetaData mergedMetaData = new JBossMetaData();
+ JBossMetaData metaData = unmarshal(JBossMetaData.class);
+ mergedMetaData.merge(metaData, specMetaData);
+
+ JBossMessageDrivenBeanMetaData mdb = (JBossMessageDrivenBeanMetaData) mergedMetaData
+ .getEnterpriseBean("MessageDrivenBean");
+ assertEquals("MDB_QUEUE", mdb.getDestinationJndiName());
+ }
+
+ @ScanPackage("org.jboss.test.metadata.annotation.ejb3.jbas5124")
+ public void testMergeGenericMetaData() throws Exception
+ {
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+
+ Collection<Class<?>> classes = PackageScanner.loadClasses();
+ //System.out.println("Processing classes: " + classes);
+
+ EjbJar30Creator creator = new EjbJar30Creator(finder);
+
+ EjbJar30MetaData specMetaData = creator.create(classes);
+
+ JBossMetaData mergedMetaData = new JBossMetaData();
+ JBossMetaData metaData = unmarshal(JBossMetaData.class);
+ mergedMetaData.merge(metaData, specMetaData);
+
+ JBossSessionBeanMetaData ssbean = (JBossSessionBeanMetaData) mergedMetaData.getEnterpriseBean("StatelessBean");
+ assertNotNull(ssbean);
+ assertEquals("StatelessBean-jndi-name", ssbean.getJndiName());
+ assertEquals("StatelessBean-home-jndi-name", ssbean.getHomeJndiName());
+ assertTrue(ssbean.isStateless());
+ JBossSessionBeanMetaData sfbean = (JBossSessionBeanMetaData) mergedMetaData.getEnterpriseBean("StatefulBean");
+ assertNotNull(sfbean);
+ assertEquals("StatefulBean-jndi-name", sfbean.getJndiName());
+ assertEquals("StatefulBean-home-jndi-name", sfbean.getHomeJndiName());
+ assertTrue(sfbean.isStateful());
+ }
+
+ private void assertInterMediateBean(EnterpriseBeanMetaData interMediateBean)
+ {
+ // Validate the merged InterMediateBean
+ assertNotNull(interMediateBean);
+ assertEquals("org.jboss.test.metadata.annotation.ejb3.runas.InterMediate", interMediateBean.getEjbClass());
+ assertTrue(interMediateBean instanceof SessionBeanMetaData);
+ SessionBeanMetaData sInterMediateBean = (SessionBeanMetaData) interMediateBean;
+ assertEquals(SessionType.Stateless, sInterMediateBean.getSessionType());
+ SecurityIdentityMetaData identity = sInterMediateBean.getSecurityIdentity();
+ assertNotNull(identity);
+ RunAsMetaData runAs = identity.getRunAs();
+ assertNotNull(runAs);
+ assertEquals("InternalUser", runAs.getRoleName());
+ }
+
+ public void testEjbJar30CreatorAnnotationContext()
+ {
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ EjbJar30Creator creator = new EjbJar30Creator(finder);
+
+ assertNotNull(creator);
+ assertNotNull(creator.getAnnotationContext());
+
+ Collection<Class<? extends Annotation>> expected = new HashSet<Class<? extends Annotation>>();
+ expected.add(Stateless.class);
+ expected.add(Stateful.class);
+ expected.add(MessageDriven.class);
+ expected.add(ApplicationException.class);
+
+ // Check Type annotations, others must be empty
+ assertEquals(expected.size(), creator.getAnnotationContext().getTypeAnnotations().size());
+ assertTrue(creator.getAnnotationContext().getTypeAnnotations().containsAll(expected));
+
+ assertTrue(creator.getAnnotationContext().getFieldAnnotations().isEmpty());
+ assertTrue(creator.getAnnotationContext().getMethodAnnotations().isEmpty());
+ }
+}
Deleted: projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/test/metadata/annotation/ejb3/JBossAnnotationEjb3UnitTestCase.java
===================================================================
--- projects/metadata/ejb/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/JBossAnnotationEjb3UnitTestCase.java 2010-06-29 12:27:11 UTC (rev 106305)
+++ projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/test/metadata/annotation/ejb3/JBossAnnotationEjb3UnitTestCase.java 2010-07-01 21:21:45 UTC (rev 106390)
@@ -1,1031 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, 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.test.metadata.annotation.ejb3;
-
-import java.io.File;
-import java.io.FilenameFilter;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.AnnotatedElement;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-
-import javax.ejb.ApplicationException;
-import javax.ejb.MessageDriven;
-import javax.ejb.Singleton;
-import javax.ejb.Stateful;
-import javax.ejb.Stateless;
-import javax.ejb.Timer;
-import javax.ejb.TransactionAttributeType;
-
-import org.jboss.ejb3.annotation.Consumer;
-import org.jboss.ejb3.annotation.Service;
-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.common.ejb.IEnterpriseBeanMetaData;
-import org.jboss.metadata.ejb.jboss.CacheConfigMetaData;
-import org.jboss.metadata.ejb.jboss.ClusterConfigMetaData;
-import org.jboss.metadata.ejb.jboss.JBoss50MetaData;
-import org.jboss.metadata.ejb.jboss.JBossAssemblyDescriptorMetaData;
-import org.jboss.metadata.ejb.jboss.JBossConsumerBeanMetaData;
-import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
-import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeansMetaData;
-import org.jboss.metadata.ejb.jboss.JBossMessageDrivenBeanMetaData;
-import org.jboss.metadata.ejb.jboss.JBossMetaData;
-import org.jboss.metadata.ejb.jboss.JBossServiceBeanMetaData;
-import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
-import org.jboss.metadata.ejb.jboss.LocalBindingMetaData;
-import org.jboss.metadata.ejb.jboss.ProducerMetaData;
-import org.jboss.metadata.ejb.jboss.RemoteBindingMetaData;
-import org.jboss.metadata.ejb.spec.ActivationConfigMetaData;
-import org.jboss.metadata.ejb.spec.ActivationConfigPropertiesMetaData;
-import org.jboss.metadata.ejb.spec.ActivationConfigPropertyMetaData;
-import org.jboss.metadata.ejb.spec.AroundInvokeMetaData;
-import org.jboss.metadata.ejb.spec.AroundInvokesMetaData;
-import org.jboss.metadata.ejb.spec.ContainerTransactionMetaData;
-import org.jboss.metadata.ejb.spec.EjbJar3xMetaData;
-import org.jboss.metadata.ejb.spec.EjbJarMetaData;
-import org.jboss.metadata.ejb.spec.ExcludeListMetaData;
-import org.jboss.metadata.ejb.spec.InitMethodMetaData;
-import org.jboss.metadata.ejb.spec.InitMethodsMetaData;
-import org.jboss.metadata.ejb.spec.InterceptorBindingMetaData;
-import org.jboss.metadata.ejb.spec.InterceptorBindingsMetaData;
-import org.jboss.metadata.ejb.spec.MethodMetaData;
-import org.jboss.metadata.ejb.spec.MethodParametersMetaData;
-import org.jboss.metadata.ejb.spec.MethodPermissionMetaData;
-import org.jboss.metadata.ejb.spec.MethodPermissionsMetaData;
-import org.jboss.metadata.ejb.spec.MethodsMetaData;
-import org.jboss.metadata.ejb.spec.NamedMethodMetaData;
-import org.jboss.metadata.ejb.spec.RemoveMethodMetaData;
-import org.jboss.metadata.ejb.spec.RemoveMethodsMetaData;
-import org.jboss.metadata.ejb.spec.SecurityIdentityMetaData;
-import org.jboss.metadata.ejb.spec.SessionType;
-import org.jboss.metadata.javaee.spec.AnnotatedEJBReferenceMetaData;
-import org.jboss.metadata.javaee.spec.AnnotatedEJBReferencesMetaData;
-import org.jboss.metadata.javaee.spec.EJBLocalReferenceMetaData;
-import org.jboss.metadata.javaee.spec.EJBReferenceMetaData;
-import org.jboss.metadata.javaee.spec.LifecycleCallbackMetaData;
-import org.jboss.metadata.javaee.spec.LifecycleCallbacksMetaData;
-import org.jboss.metadata.javaee.spec.MessageDestinationReferenceMetaData;
-import org.jboss.metadata.javaee.spec.MessageDestinationReferencesMetaData;
-import org.jboss.metadata.javaee.spec.MessageDestinationUsageType;
-import org.jboss.metadata.javaee.spec.PersistenceContextReferenceMetaData;
-import org.jboss.metadata.javaee.spec.ResourceEnvironmentReferenceMetaData;
-import org.jboss.metadata.javaee.spec.ResourceEnvironmentReferencesMetaData;
-import org.jboss.metadata.javaee.spec.RunAsMetaData;
-import org.jboss.metadata.javaee.spec.SecurityRoleMetaData;
-import org.jboss.metadata.javaee.spec.SecurityRolesMetaData;
-import org.jboss.metadata.javaee.spec.ServiceReferenceMetaData;
-import org.jboss.metadata.javaee.spec.ServiceReferencesMetaData;
-import org.jboss.test.metadata.annotation.ejb3.defaultinterface.DefaultInterface;
-import org.jboss.test.metadata.annotation.ejb3.defaultinterface.ParentInterface;
-import org.jboss.test.metadata.annotation.ejb3.multiview.Multiview21Remote;
-import org.jboss.test.metadata.annotation.ejb3.multiview.Multiview3Remote;
-import org.jboss.test.metadata.annotation.ejb3.multiview.MultiviewHome;
-import org.jboss.test.metadata.annotation.ejb3.partialxml.EjbLink2Bean;
-import org.jboss.test.metadata.annotation.ejb3.partialxml.EjbLink3Bean;
-import org.jboss.test.metadata.annotation.ejb3.runas.InterMediateBean;
-import org.jboss.test.metadata.annotation.ejb3.runas.TargetBean;
-import org.jboss.test.metadata.common.PackageScanner;
-import org.jboss.test.metadata.common.ScanPackage;
-import org.jboss.test.metadata.common.SetHelper;
-import org.jboss.test.metadata.javaee.AbstractJavaEEMetaDataTest;
-
-
-/**
- * A JBossAnnotationEjb3UnitTestCase.
- *
- * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
- * @author Scott.Stark at jboss.org
- * @author <a href="alex at jboss.com">Alexey Loubyansky</a>
- * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
- * @version $Revision: 1.1 $
- */
-public class JBossAnnotationEjb3UnitTestCase extends AbstractJavaEEMetaDataTest
-{
- public JBossAnnotationEjb3UnitTestCase(String name)
- {
- super(name);
- }
-
- public void testBeans() throws Exception
- {
- AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
-
- Collection<Class<?>> classes = loadClassesFromCurrentClassDir();
- // Do not test MyServiceBean/MyConsumer in here
- classes.remove(MyServiceBean.class);
- classes.remove(MyConsumer.class);
-
- //enableTrace("org.jboss.metadata.annotation.creator");
- JBoss50Creator creator = new JBoss50Creator(finder);
-
- JBoss50MetaData metaData = creator.create(classes);
-
- assertTrue(metaData.isEJB3x());
- assertEquals(EjbJarMetaData.LATEST_EJB_JAR_XSD_VERSION, metaData.getEjbVersion());
- assertEquals("5.0", metaData.getVersion());
-
- assertNotNull("no beans defined", metaData.getEnterpriseBeans());
- assertNotNull("no assembly descriptor defined", metaData.getAssemblyDescriptor());
-
- assertNotNull("no container transactions", metaData.getAssemblyDescriptor().getContainerTransactions());
- // There is a bug in IdMetaDataImpl.hashCode which isn't unique when id is not set.
-/* for(ContainerTransactionMetaData transaction : metaData.getAssemblyDescriptor().getContainerTransactions())
- {
- System.out.println(transaction);
- }
-*/
- assertEquals(6, metaData.getEnterpriseBeans().size());
-
- assertMyStatefulBean(metaData.getEnterpriseBean("AnotherName")); // MyStatefulBean
- assertMyStateless21Bean(metaData.getEnterpriseBean("MyStateless21Bean"));
- assertMyStatelessBean(metaData.getEnterpriseBean("MyStatelessBean"));
- assertMyMDB(metaData.getEnterpriseBean("MailMDB"));
-
- JBossAssemblyDescriptorMetaData assembly = metaData.getAssemblyDescriptor();
- assertNotNull("no application exceptions defined", assembly.getApplicationExceptions());
- assertEquals(1, assembly.getApplicationExceptions().size());
- System.out.println(assembly.getContainerTransactionsByEjbName("MyStatelessBean"));
-
- // @DeclareRoles
- SecurityRolesMetaData securityRoles = assembly.getSecurityRoles();
- assertNotNull(securityRoles);
- assertEquals(2, securityRoles.size());
- SecurityRoleMetaData role1 = securityRoles.get("Role1");
- assertNotNull(role1);
- assertEquals("Role1", role1.getRoleName());
- SecurityRoleMetaData role2 = securityRoles.get("Role2");
- assertNotNull(role2);
- assertEquals("Role2", role2.getRoleName());
-
- // @DenyAll
- // cls.getDeclaredMethods is un-ordered, so we must use bestMatch
- ExcludeListMetaData excludes = assembly.getExcludeList();
- assertNotNull(excludes);
- MethodsMetaData excludedMethods = excludes.getMethods();
- assertEquals(2, excludedMethods.size());
- MethodMetaData m0 = excludedMethods.bestMatch("denyAll", (Class[]) null, null, null);
- assertEquals("MyStatelessBean", m0.getEjbName());
- assertEquals("denyAll", m0.getMethodName());
- MethodParametersMetaData noargs = new MethodParametersMetaData();
- assertEquals(noargs, m0.getMethodParams());
- MethodMetaData m1 = excludedMethods.bestMatch("excluded", (Class[]) null, null, null);;
- assertEquals("MyStatelessBean", m1.getEjbName());
- assertEquals("excluded", m1.getMethodName());
- assertEquals(noargs, m1.getMethodParams());
-
- // @PermitAll, @RolesAllowed({"AccessRole1", "AccessRole2"})
- MethodPermissionsMetaData allPerms = assembly.getMethodPermissions();
- assertEquals(8, allPerms.size());
- MethodPermissionsMetaData perms = assembly.getMethodPermissionsByEjbName("MyStatelessBean");
- assertEquals(2, perms.size());
- MethodPermissionMetaData permitAll = null;
- MethodPermissionMetaData rolesAllowed = null;
- for(MethodPermissionMetaData mp : perms)
- {
- if(mp.matches("permitAll", null, null))
- permitAll = mp;
- if(mp.matches("rolesAllowed", null, null))
- rolesAllowed = mp;
- }
- assertNotNull(permitAll);
- assertTrue(permitAll.isNotChecked());
- assertTrue(permitAll.isNotChecked("permitAll", null, null));
- assertNotNull(rolesAllowed);
- HashSet<String> roles = new HashSet<String>();
- roles.add("AccessRole1");
- roles.add("AccessRole2");
- assertEquals(roles, rolesAllowed.getRoles());
-
- // Validate the MyStateless @Interceptors
- InterceptorBindingsMetaData interceptorBindings = assembly.getInterceptorBindings();
- assertEquals(2, interceptorBindings.size());
- InterceptorBindingMetaData ib0 = interceptorBindings.get(0);
- InterceptorBindingMetaData ib1 = interceptorBindings.get(1);
- assertEquals("MyStatelessBean", ib0.getEjbName());
- NamedMethodMetaData ib0Method = ib0.getMethod();
- if(ib0Method == null)
- {
- // The class level @Interceptors
- assertFalse(ib0.isExcludeClassInterceptors());
- assertTrue(ib0.isExcludeDefaultInterceptors());
- assertEquals(TestClassInterceptor.class.getName(),
- ib0.getInterceptorClasses().iterator().next());
- }
- else
- {
- // The method level @Interceptors
- assertTrue(ib0.isExcludeClassInterceptors());
- assertTrue(ib0.isExcludeDefaultInterceptors());
- assertEquals(TestMethodInterceptor.class.getName(),
- ib0.getInterceptorClasses().iterator().next());
- assertEquals("intercept2", ib0Method.getMethodName());
- }
- assertEquals("MyStatelessBean", ib1.getEjbName());
- NamedMethodMetaData ib1Method = ib1.getMethod();
- if(ib1Method == null)
- {
- // The class level @Interceptors
- assertFalse(ib1.isExcludeClassInterceptors());
- assertTrue(ib1.isExcludeDefaultInterceptors());
- assertEquals(TestClassInterceptor.class.getName(),
- ib1.getInterceptorClasses().iterator().next());
- }
- else
- {
- // The method level @Interceptors
- assertTrue(ib1.isExcludeClassInterceptors());
- assertTrue(ib1.isExcludeDefaultInterceptors());
- assertEquals(TestMethodInterceptor.class.getName(),
- ib1.getInterceptorClasses().iterator().next());
- assertEquals("intercept2", ib1Method.getMethodName());
- }
- }
-
- /**
- * Test merging annotation and xml based metadata
- * @throws Exception
- */
- public void testXmlMerge()
- throws Exception
- {
- Class<?>[] beanClasses = {
- InterMediateBean.class,
- TargetBean.class
- };
- List<Class<?>> classes = Arrays.asList(beanClasses);
- AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
- JBoss50Creator creator = new JBoss50Creator(finder);
- JBoss50MetaData annotations = creator.create(classes);
- EjbJar3xMetaData ejbJarMetaData = unmarshal("AnnotationEjb3_testXmlMerge.xml", EjbJar3xMetaData.class, null);
- JBoss50MetaData specMetaData = new JBoss50MetaData();
- specMetaData.merge(null, ejbJarMetaData);
- JBossEnterpriseBeanMetaData eb = specMetaData.getEnterpriseBean("InterMediateBean");
- assertNotNull(eb);
-
- JBoss50MetaData specMerged = new JBoss50MetaData();
- specMerged.merge(specMetaData, annotations);
-
- JBossEnterpriseBeanMetaData enterpriseBean = specMerged.getEnterpriseBean("InterMediateBean");
- assertNotNull(enterpriseBean);
- assertInterMediateBean(enterpriseBean);
- JBossSessionBeanMetaData sb = (JBossSessionBeanMetaData) specMerged.getEnterpriseBean("TargetBean");
- assertNotNull(sb);
- RemoveMethodsMetaData removeMethods = sb.getRemoveMethods();
- assertNotNull(removeMethods);
- assertEquals(1, removeMethods.size());
- RemoveMethodMetaData removeMethod = removeMethods.get(0);
- assertTrue(removeMethod.isRetainIfException());
- }
-
- public void testAnnotationMergedViewWithPartialXml() throws Exception
- {
- Class<?>[] beanClasses =
- {EjbLink2Bean.class, EjbLink3Bean.class};
- List<Class<?>> classes = Arrays.asList(beanClasses);
- AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
- JBoss50Creator creator = new JBoss50Creator(finder);
- JBoss50MetaData metaData = creator.create(classes);
- EjbJar3xMetaData specMetaData = unmarshal("AnnotationEjb3_testAnnotationMergedViewWithPartialXml.xml", EjbJar3xMetaData.class, null);
- JBoss50MetaData dd = new JBoss50MetaData();
- dd.merge(null, specMetaData);
-
- JBoss50MetaData merged = new JBoss50MetaData();
- merged.merge(dd, metaData);
- //AnnotationMergedView.merge(merged, specMetaData, metaData);
-
- JBoss50MetaData jbossMetaData = unmarshal("AnnotationEjb3_testAnnotationMergedViewWithPartialXml-jboss.xml",
- JBoss50MetaData.class, null);
- // Create a merged view
- JBossMetaData jbossMergedMetaData = new JBossMetaData();
- jbossMergedMetaData.merge(jbossMetaData, merged);
-
- JBossEnterpriseBeanMetaData bean2 = merged.getEnterpriseBean("EjbLink2Bean");
- assertNotNull(bean2);
- EJBReferenceMetaData ref1 = bean2.getEjbReferenceByName("ejb/EjbLink1Bean");
- assertNotNull(ref1);
- EJBLocalReferenceMetaData ref3 = bean2.getEjbLocalReferenceByName("ejb/EjbLink3Bean");
- assertNotNull(ref3);
-
- JBossEnterpriseBeanMetaData bean3 = merged.getEnterpriseBean("EjbLink3Bean");
- assertNotNull(bean3);
-
- JBossEnterpriseBeanMetaData jbean2 = jbossMergedMetaData.getEnterpriseBean("EjbLink2Bean");
- assertNotNull(jbean2);
- JBossEnterpriseBeanMetaData jbean3 = jbossMergedMetaData.getEnterpriseBean("EjbLink3Bean");
- assertNotNull(jbean3);
- }
-
- /**
- * Test merging annotation based metadata without xml
- * @throws Exception
- */
- public void testAnnotationMergedViewWithNoXml()
- throws Exception
- {
- Class<?>[] beanClasses = {
- MyStatelessBean.class
- };
- List<Class<?>> classes = Arrays.asList(beanClasses);
- AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
- JBoss50Creator creator = new JBoss50Creator(finder);
- JBoss50MetaData metaData = creator.create(classes);
- JBoss50MetaData specMetaData = new JBoss50MetaData();
- JBoss50MetaData merged = new JBoss50MetaData();
- //AnnotationMergedView.merge(merged, specMetaData, metaData);
- merged.merge(specMetaData, metaData);
-
- JBossEnterpriseBeansMetaData beans = merged.getEnterpriseBeans();
- assertNotNull(beans);
- assertEquals(1, beans.size());
- JBossEnterpriseBeanMetaData bean = beans.get("MyStatelessBean");
- assertNotNull(bean);
- assertMyStatelessBean(bean);
- }
-
- @SuppressWarnings("unchecked")
- @ScanPackage("org.jboss.test.metadata.annotation.ejb3.multiview")
- public void testMultiview() throws Exception
- {
- AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
-
- Collection<Class<?>> classes = PackageScanner.loadClasses();
-
- //enableTrace("org.jboss.metadata.annotation.creator");
- JBoss50Creator creator = new JBoss50Creator(finder);
-
- JBoss50MetaData metaData = creator.create(classes);
-
- assertTrue(metaData.isEJB3x());
- assertEquals(EjbJarMetaData.LATEST_EJB_JAR_XSD_VERSION, metaData.getEjbVersion());
- assertEquals("5.0", metaData.getVersion());
-
- assertNotNull("no beans defined", metaData.getEnterpriseBeans());
- //assertNotNull("no assembly descriptor defined", metaData.getAssemblyDescriptor());
- JBossSessionBeanMetaData bean = (JBossSessionBeanMetaData) metaData.getEnterpriseBean("MultiviewBean");
- assertNotNull(bean);
- assertEquals(MultiviewHome.class.getName(), bean.getHome());
- assertEquals(Multiview21Remote.class.getName(), bean.getRemote());
- assertEquals(SetHelper.createSet(Multiview3Remote.class.getName()), bean.getBusinessRemotes());
- InitMethodsMetaData initMethods = bean.getInitMethods();
- assertNotNull(initMethods);
- assertEquals(1, initMethods.size());
- InitMethodMetaData initMethod = initMethods.get(0);
- assertEquals("create", initMethod.getBeanMethod().getMethodName());
- }
-
- /**
- * Test merging annotation and xml based metadata
- * @throws Exception
- */
- public void testPostConstruct()
- throws Exception
- {
- Class<?>[] beanClasses = {
- MetaDataStatelessBean.class
- };
- List<Class<?>> classes = Arrays.asList(beanClasses);
- AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
- JBoss50Creator creator = new JBoss50Creator(finder);
- JBoss50MetaData metaData = creator.create(classes);
- EjbJar3xMetaData specMetaData = unmarshal("AnnotationEjb3_testPostConstruct.xml", EjbJar3xMetaData.class, null);
- JBoss50MetaData dd = new JBoss50MetaData();
- dd.merge(null, specMetaData);
- JBoss50MetaData merged = new JBoss50MetaData();
- merged.merge(dd, metaData);
- //AnnotationMergedView.merge(merged, specMetaData, metaData);
-
- JBossSessionBeanMetaData sessionBean = (JBossSessionBeanMetaData) merged.getEnterpriseBean("MetaDataStatelessBean");
- assertNotNull(sessionBean);
- LifecycleCallbacksMetaData lifecycleCallbacks = sessionBean.getPostConstructs();
- assertNotNull(lifecycleCallbacks);
- assertEquals(1, lifecycleCallbacks.size());
- LifecycleCallbackMetaData lifecycleCallback = lifecycleCallbacks.get(0);
- assertEquals("postConstruct", lifecycleCallback.getMethodName());
- }
-
- /**
- * Test the merge of a MessageDrivenBeanMetaData.
- *
- * @throws Exception
- */
- @ScanPackage("org.jboss.test.metadata.annotation.ejb3.messagelistenerinterface")
- public void testMessageDrivenBeanMerge() throws Exception
- {
- // annotations define a MDB
- AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
-
- Collection<Class<?>> classes = PackageScanner.loadClasses();
-
- JBoss50Creator creator = new JBoss50Creator(finder);
- JBoss50MetaData metaData = creator.create(classes);
-
- // xml augments it with a messaging-interface
- EjbJar3xMetaData specMetaData = unmarshal("AnnotationEjb3_testMessageDrivenBeanMerge.xml", EjbJar3xMetaData.class, null);
- JBoss50MetaData dd = new JBoss50MetaData();
- dd.merge(null, specMetaData);
-
- JBoss50MetaData merged = new JBoss50MetaData();
- merged.merge(dd, metaData);
- //AnnotationMergedView.merge(merged, specMetaData, metaData);
-
- JBossMessageDrivenBeanMetaData result = (JBossMessageDrivenBeanMetaData) merged.getEnterpriseBean("UnknownMessageListenerInterfaceMDB");
- assertEquals("javax.jms.MessageListener", result.getMessagingType());
- ActivationConfigPropertiesMetaData activationConfigProperties = result.getActivationConfig().getActivationConfigProperties();
- assertEquals(3, activationConfigProperties.size());
- assertEquals("none", activationConfigProperties.get("dummy").getValue());
- assertEquals("Auto-acknowledge", activationConfigProperties.get("acknowledgeMode").getValue());
- assertEquals("javax.jms.Queue", activationConfigProperties.get("destinationType").getValue());
- assertEquals("two_ejb.jar#MsgBeanInQueue", result.getMessageDestinationLink());
- MessageDestinationReferencesMetaData mdRefs = result.getMessageDestinationReferences();
- assertEquals(1, mdRefs.size());
- MessageDestinationReferenceMetaData replyQueue = mdRefs.get("replyQueue");
- assertNotNull(replyQueue);
- assertEquals("javax.jms.Queue", replyQueue.getType());
- assertEquals("two_ejb.jar#MsgBeanOutQueue", replyQueue.getLink());
- assertEquals(MessageDestinationUsageType.Produces, replyQueue.getMessageDestinationUsage());
- }
-
- /**
- * EJB 3 4.6.6:
- * If bean class implements a single interface, that interface is assumed to be the busi-
- * ness interface of the bean. This business interface will be a local interface unless the
- * interface is designated as a remote business interface by use of the Remote annota-
- * tion on the bean class or interface or by means of the deployment descriptor.
- * @throws Exception
- */
- @ScanPackage("org.jboss.test.metadata.annotation.ejb3.defaultinterface")
- public void testDefaultInterface() throws Exception
- {
- AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
- Collection<Class<?>> classes = PackageScanner.loadClasses();
- JBoss50Creator creator = new JBoss50Creator(finder);
-
- JBoss50MetaData metaData = creator.create(classes);
-
- JBossSessionBeanMetaData bean = (JBossSessionBeanMetaData) metaData.getEnterpriseBean("DefaultRemoteInterfaceBean");
-
- assertEquals(1, bean.getBusinessRemotes().size());
- assertTrue(bean.getBusinessRemotes().contains(DefaultInterface.class.getName()));
-
- bean = (JBossSessionBeanMetaData) metaData.getEnterpriseBean("DefaultLocalInterfaceBean");
-
- assertEquals(1, bean.getBusinessLocals().size());
- assertTrue(bean.getBusinessLocals().contains(DefaultInterface.class.getName()));
-
- bean = (JBossSessionBeanMetaData) metaData.getEnterpriseBean("SerializableBean");
- assertTrue(bean.getBusinessLocals().contains(ParentInterface.class.getName()));
- }
-
- @ScanPackage("org.jboss.test.metadata.annotation.ejb3.jbmeta30")
- public void testMergeGenericMDBMetaData()
- throws Exception
- {
- AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
- Collection<Class<?>> classes = PackageScanner.loadClasses();
- JBoss50Creator creator = new JBoss50Creator(finder);
- JBoss50MetaData specMetaData = creator.create(classes);
-
- JBossMetaData mergedMetaData = new JBossMetaData();
- JBossMetaData metaData = unmarshal("AnnotationEjb3_testMergeGenericMDBMetaData.xml", JBossMetaData.class, null);
- mergedMetaData.merge(metaData, specMetaData);
-
- JBossMessageDrivenBeanMetaData mdb = (JBossMessageDrivenBeanMetaData) mergedMetaData.getEnterpriseBean("MessageDrivenBean");
- assertEquals("MDB_QUEUE", mdb.getDestinationJndiName());
- }
-
- @ScanPackage("org.jboss.test.metadata.annotation.ejb3.jbas5124")
- public void testMergeGenericMetaData()
- throws Exception
- {
- AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
- Collection<Class<?>> classes = PackageScanner.loadClasses();
- JBoss50Creator creator = new JBoss50Creator(finder);
- JBoss50MetaData specMetaData = creator.create(classes);
-
- JBossMetaData mergedMetaData = new JBossMetaData();
- JBossMetaData metaData = unmarshal("AnnotationEjb3_testMergeGenericMetaData.xml", JBossMetaData.class);
- mergedMetaData.merge(metaData, specMetaData);
-
- JBossSessionBeanMetaData ssbean = (JBossSessionBeanMetaData) mergedMetaData.getEnterpriseBean("StatelessBean");
- assertNotNull(ssbean);
- assertEquals("StatelessBean-jndi-name", ssbean.getJndiName());
- assertEquals("StatelessBean-home-jndi-name", ssbean.getHomeJndiName());
- assertTrue(ssbean.isStateless());
- JBossSessionBeanMetaData sfbean = (JBossSessionBeanMetaData) mergedMetaData.getEnterpriseBean("StatefulBean");
- assertNotNull(sfbean);
- assertEquals("StatefulBean-jndi-name", sfbean.getJndiName());
- assertEquals("StatefulBean-home-jndi-name", sfbean.getHomeJndiName());
- assertTrue(sfbean.isStateful());
- }
-
- private void assertMyStatefulBean(IEnterpriseBeanMetaData enterpriseBean)
- {
- assertTrue(enterpriseBean instanceof JBossSessionBeanMetaData);
-
- JBossSessionBeanMetaData bean = (JBossSessionBeanMetaData) enterpriseBean;
- assertEquals(SessionType.Stateful, bean.getSessionType());
- assertEquals(MyStatefulBean.class.getName(), bean.getEjbClass());
- assertEquals("AnotherName", bean.getEjbName());
-
- assertNotNull("bean has no business remotes", bean.getBusinessRemotes());
- assertEquals(1, bean.getBusinessRemotes().size());
- assertTrue(bean.getBusinessRemotes().contains(MyStateful.class.getName()));
- assertEquals(MyStatefulHome.class.getName(), bean.getHome());
-
- // @EJBs
- AnnotatedEJBReferencesMetaData ejbRefs = bean.getAnnotatedEjbReferences();
- assertEquals(2, ejbRefs.size());
- AnnotatedEJBReferenceMetaData local1 = ejbRefs.get("ejb/local1");
- assertNotNull(local1);
- assertEquals("java:/MyLocalSession1", local1.getMappedName());
- assertEquals("ejb/local1", local1.getEjbRefName());
- assertEquals("MyLocalSession1", local1.getLink());
- assertEquals("A reference to MyLocalSession1", local1.getDescriptions().value()[0].value());
- assertEquals(MyStatelessLocal.class, local1.getBeanInterface());
- AnnotatedEJBReferenceMetaData local2 = ejbRefs.get("ejb/local2");
- assertNotNull(local2);
- assertEquals("java:/MyLocalSession2", local2.getMappedName());
- assertEquals("ejb/local2", local2.getEjbRefName());
- assertEquals("local.jar#MyLocalSession1", local2.getLink());
- assertEquals("A reference to MyLocalSession2", local2.getDescriptions().value()[0].value());
- assertEquals(MyStatelessLocal.class, local2.getBeanInterface());
- // @PostConstruct
- LifecycleCallbacksMetaData postConstructs = bean.getPostConstructs();
- assertNotNull(postConstructs);
- assertEquals(1, postConstructs.size());
- LifecycleCallbackMetaData postConstruct = postConstructs.get(0);
- assertEquals("setUp", postConstruct.getMethodName());
- assertEquals(MyStatefulBean.class.getName(), postConstruct.getClassName());
- // @PreDestroy
- LifecycleCallbacksMetaData preDestroys = bean.getPreDestroys();
- assertNotNull(preDestroys);
- assertEquals(1, preDestroys.size());
- LifecycleCallbackMetaData preDestroy = preDestroys.get(0);
- assertEquals("tearDown", preDestroy.getMethodName());
- assertEquals(MyStatefulBean.class.getName(), preDestroy.getClassName());
- // @Init
- InitMethodsMetaData initMethods = bean.getInitMethods();
- assertNotNull(initMethods);
- assertEquals(1, initMethods.size());
- InitMethodMetaData initMethod = initMethods.get(0);
- assertEquals("init", initMethod.getBeanMethod().getMethodName());
- // @PostActivate
- LifecycleCallbacksMetaData postActivates = bean.getPostActivates();
- assertNotNull(postActivates);
- assertEquals(1, postActivates.size());
- LifecycleCallbackMetaData postActivate = postActivates.get(0);
- assertEquals("activate", postActivate.getMethodName());
- assertEquals(MyStatefulBean.class.getName(), postActivate.getClassName());
- // @PrePassivate
- LifecycleCallbacksMetaData prePassivates = bean.getPrePassivates();
- assertNotNull(prePassivates);
- assertEquals(1, prePassivates.size());
- LifecycleCallbackMetaData prePassivate = prePassivates.get(0);
- assertEquals("passivate", prePassivate.getMethodName());
- assertEquals(MyStatefulBean.class.getName(), prePassivate.getClassName());
- // @Remove
- RemoveMethodsMetaData removeMethods = bean.getRemoveMethods();
- assertNotNull(removeMethods);
- assertEquals(1, removeMethods.size());
- RemoveMethodMetaData removeMethod = removeMethods.get(0);
- assertEquals("remove", removeMethod.getBeanMethod().getMethodName());
- // @Resource
- ResourceEnvironmentReferencesMetaData resource = bean.getResourceEnvironmentReferences();
- assertNotNull(resource);
- assertEquals(1, resource.size());
- ResourceEnvironmentReferenceMetaData ref = resource.get(bean.getEjbClass() + "/context");
- assertNotNull(ref);
- assertNotNull(ref.getInjectionTargets());
- // @PersistenceContext
- PersistenceContextReferenceMetaData persistence = bean.getPersistenceContextReferenceByName("string");
- assertNotNull(persistence);
- assertNotNull(persistence.getInjectionTargets());
- // @WebServiceRef
- ServiceReferencesMetaData serviceRefs = bean.getServiceReferences();
- assertNotNull(serviceRefs);
- assertEquals(1, serviceRefs.size());
- ServiceReferenceMetaData serviceRef = serviceRefs.get(bean.getEjbClass() + "/webserviceRef");
- assertNotNull(serviceRef);
- assertNotNull(serviceRef.getInjectionTargets());
-
- // @RemoteBindings
- assertNotNull(bean.getRemoteBindings());
- assertEquals(4, bean.getRemoteBindings().size());
- RemoteBindingMetaData remoteBinding = bean.getRemoteBindings().get(0);
- assertNotNull(remoteBinding);
- assertEquals("jndiBind3", remoteBinding.getJndiName());
- remoteBinding = bean.getRemoteBindings().get(1);
- assertNotNull(remoteBinding);
- assertEquals("clientBind1", remoteBinding.getClientBindUrl());
- assertEquals("stack1", remoteBinding.getInterceptorStack());
- assertEquals("RemoteBinding1", remoteBinding.getJndiName());
- remoteBinding = bean.getRemoteBindings().get(2);
- assertNotNull(remoteBinding);
- assertEquals("clientBind2", remoteBinding.getClientBindUrl());
- assertEquals("stack2", remoteBinding.getInterceptorStack());
- assertEquals("RemoteBinding2", remoteBinding.getJndiName());
- remoteBinding = bean.getRemoteBindings().get(3);
- assertEquals("invokerName1", remoteBinding.getInvokerName());
-
- // @LocalHomeBinding
- assertEquals("localHome", bean.getLocalHomeJndiName());
-
- // @RemoteHomeBinding
- assertEquals("remoteHomeBinding", bean.getHomeJndiName());
-
- // @CacheConfig
- assertNotNull(bean.getCacheConfig());
- CacheConfigMetaData cacheConfig = bean.getCacheConfig();
- assertEquals("test", cacheConfig.getName());
- assertEquals(Integer.valueOf(123), cacheConfig.getIdleTimeoutSeconds());
- assertEquals(Integer.valueOf(234), cacheConfig.getMaxSize());
- assertEquals(Integer.valueOf(345), cacheConfig.getRemoveTimeoutSeconds());
- assertEquals("true", cacheConfig.getReplicationIsPassivation());
-
- // @Clustered
- assertNotNull(bean.getClusterConfig());
- assertTrue(bean.isClustered());
- ClusterConfigMetaData clusterConfig = bean.getClusterConfig();
- assertEquals("home", clusterConfig.getHomeLoadBalancePolicy());
- assertEquals("bean", clusterConfig.getBeanLoadBalancePolicy());
- assertEquals("partition", clusterConfig.getPartitionName());
- }
-
- private void assertMyStateless21Bean(IEnterpriseBeanMetaData enterpriseBean)
- {
- assertTrue(enterpriseBean instanceof JBossSessionBeanMetaData);
- JBossSessionBeanMetaData bean = (JBossSessionBeanMetaData) enterpriseBean;
- assertEquals(SessionType.Stateless, bean.getSessionType());
- assertEquals(MyStateless21Bean.class.getName(), bean.getEjbClass());
- assertEquals("MyStateless21Bean", bean.getEjbName());
-
- assertNull("bean has business locals (instead of local interface)", bean.getBusinessLocals());
-
- assertEquals(MyStateless21Local.class.getName(), bean.getLocal());
- assertEquals(MyStateless21Home.class.getName(), bean.getLocalHome());
- }
-
- private void assertMyStatelessBean(IEnterpriseBeanMetaData enterpriseBean)
- {
- assertTrue(enterpriseBean instanceof JBossSessionBeanMetaData);
- JBossSessionBeanMetaData bean = (JBossSessionBeanMetaData) enterpriseBean;
- assertEquals(SessionType.Stateless, bean.getSessionType());
- assertEquals(MyStatelessBean.class.getName(), bean.getEjbClass());
- assertEquals("MyStatelessBean", bean.getEjbName());
-
- assertNotNull("bean has no business locals", bean.getBusinessLocals());
- assertEquals(1, bean.getBusinessLocals().size());
- assertTrue(bean.getBusinessLocals().contains(MyStatelessLocal.class.getName()));
-
- assertNotNull("bean has no container transactions", bean.getContainerTransactions());
- Iterator<ContainerTransactionMetaData> it = bean.getContainerTransactions().iterator();
- ContainerTransactionMetaData tx1 = it.next();
- assertEquals(TransactionAttributeType.NEVER, tx1.getTransAttribute());
- // TODO: methods
- ContainerTransactionMetaData tx2 = it.next();
- assertEquals(TransactionAttributeType.MANDATORY, tx2.getTransAttribute());
- MethodsMetaData tx2Methods = tx2.getMethods();
- String[] params = {};
- tx2Methods.matches("transactionAttributeMandatory", params, null);
-
- // @EJB
- AnnotatedEJBReferencesMetaData ejbRefs = bean.getAnnotatedEjbReferences();
- assertEquals(2, ejbRefs.size());
- AnnotatedEJBReferenceMetaData injectedField = ejbRefs.get("injectedField");
- assertNotNull(injectedField);
- assertEquals(MyStatelessLocal.class, injectedField.getBeanInterface());
- AnnotatedEJBReferenceMetaData injectedFieldWithOverridenName = ejbRefs.get("overrideName");
- assertNotNull(injectedFieldWithOverridenName);
- assertEquals(MyStatelessLocal.class, injectedFieldWithOverridenName.getBeanInterface());
- // @PostConstruct
- LifecycleCallbacksMetaData postConstructs = bean.getPostConstructs();
- assertNotNull(postConstructs);
- assertEquals(1, postConstructs.size());
- LifecycleCallbackMetaData postConstruct = postConstructs.get(0);
- assertEquals("setUp", postConstruct.getMethodName());
- assertEquals(MyStatelessBean.class.getName(), postConstruct.getClassName());
- // @PreDestroy
- LifecycleCallbacksMetaData preDestroys = bean.getPreDestroys();
- assertNotNull(preDestroys);
- assertEquals(1, preDestroys.size());
- LifecycleCallbackMetaData preDestroy = preDestroys.get(0);
- assertEquals("tearDown", preDestroy.getMethodName());
- assertEquals(MyStatelessBean.class.getName(), preDestroy.getClassName());
-
- // @RunAs
- SecurityIdentityMetaData identity = bean.getSecurityIdentity();
- assertNotNull(identity);
- RunAsMetaData runAs = identity.getRunAs();
- assertNotNull(runAs);
- assertEquals("InternalUser", runAs.getRoleName());
-
- // @AroundInvoke
- AroundInvokesMetaData invokes = bean.getAroundInvokes();
- assertNotNull(invokes);
- assertEquals(1, invokes.size());
- AroundInvokeMetaData aroundInvoke = invokes.get(0);
- assertEquals(MyStatelessBean.class.getName(), aroundInvoke.getClassName());
- assertEquals("intercept", aroundInvoke.getMethodName());
-
- // @Timeout
- NamedMethodMetaData timeoutMethod = bean.getTimeoutMethod();
- assertNotNull(timeoutMethod);
- assertEquals("timeout", timeoutMethod.getMethodName());
- MethodParametersMetaData parameters = timeoutMethod.getMethodParams();
- assertEquals(1, parameters.size());
- assertEquals(Timer.class.getName(), parameters.get(0));
-
- // @LocalBinding
- assertNotNull(bean.getLocalBindings());
- LocalBindingMetaData localBinding = bean.getLocalBindings().get(0);
- assertEquals("LocalJndiBinding", localBinding.getJndiName());
-
- // @RemoteBinding
- assertNotNull(bean.getRemoteBindings());
- assertEquals(1, bean.getRemoteBindings().size());
- RemoteBindingMetaData remoteBinding = bean.getRemoteBindings().get(0);
- assertNotNull(remoteBinding);
- assertEquals("clientBind", remoteBinding.getClientBindUrl());
- assertEquals("stack", remoteBinding.getInterceptorStack());
- assertEquals("RemoteBinding", remoteBinding.getJndiName());
- assertEquals("invokerName", remoteBinding.getInvokerName());
- }
-
- private void assertMyMDB(IEnterpriseBeanMetaData enterpriseBean)
- {
- assertTrue(enterpriseBean instanceof JBossMessageDrivenBeanMetaData);
- JBossMessageDrivenBeanMetaData bean = (JBossMessageDrivenBeanMetaData) enterpriseBean;
- assertEquals(MyMDB.class.getName(), bean.getEjbClass());
- assertEquals("MailMDB", bean.getEjbName());
- assertEquals(false, bean.isJMS());
- assertEquals(IMailListener.class.getName(), bean.getMessagingType());
- ActivationConfigMetaData config = bean.getActivationConfig();
- ActivationConfigMetaData expected = new ActivationConfigMetaData();
- ActivationConfigPropertiesMetaData props = new ActivationConfigPropertiesMetaData();
- ActivationConfigPropertyMetaData p1 = new ActivationConfigPropertyMetaData();
- p1.setName("p1");
- p1.setValue("v1");
- props.add(p1);
- ActivationConfigPropertyMetaData p2 = new ActivationConfigPropertyMetaData();
- p2.setName("p2");
- p2.setValue("v2");
- props.add(p2);
- expected.setActivationConfigProperties(props);
- assertEquals(expected, config);
- assertEquals("java:/mdbs/MailMDB", bean.getMappedName());
- // @ResourceAdapter
- assertEquals("MDBResourceAdapter", bean.getResourceAdapterName());
- }
-
- public void assertMyServiceBean(IEnterpriseBeanMetaData enterpriseBean)
- {
- assertTrue(enterpriseBean instanceof JBossServiceBeanMetaData);
-
- //TODO test the different values. This bean is based on MyStatelessSessionBean
- JBossServiceBeanMetaData bean = (JBossServiceBeanMetaData) enterpriseBean;
- assertTrue(bean.isService());
- assertFalse(bean.isSession());
- assertEquals(MyServiceBean.class.getName(), bean.getEjbClass());
- assertEquals("MyService", bean.getEjbName());
-
- assertNotNull("bean has no business locals", bean.getBusinessLocals());
- assertEquals(1, bean.getBusinessLocals().size());
- assertTrue(bean.getBusinessLocals().contains(MyStatelessLocal.class.getName()));
-
- assertNotNull("bean has no container transactions", bean.getContainerTransactions());
- Iterator<ContainerTransactionMetaData> it = bean.getContainerTransactions().iterator();
- ContainerTransactionMetaData tx1 = it.next();
- assertEquals(TransactionAttributeType.NEVER, tx1.getTransAttribute());
- // TODO: methods
- ContainerTransactionMetaData tx2 = it.next();
- assertEquals(TransactionAttributeType.MANDATORY, tx2.getTransAttribute());
- MethodsMetaData tx2Methods = tx2.getMethods();
- String[] params = {};
- tx2Methods.matches("transactionAttributeMandatory", params, null);
-
- // @EJB
- AnnotatedEJBReferencesMetaData ejbRefs = bean.getAnnotatedEjbReferences();
- assertEquals(2, ejbRefs.size());
- AnnotatedEJBReferenceMetaData injectedField = ejbRefs.get("injectedField");
- assertNotNull(injectedField);
- assertEquals(MyStatelessLocal.class, injectedField.getBeanInterface());
- AnnotatedEJBReferenceMetaData injectedFieldWithOverridenName = ejbRefs.get("overrideName");
- assertNotNull(injectedFieldWithOverridenName);
- assertEquals(MyStatelessLocal.class, injectedFieldWithOverridenName.getBeanInterface());
- // @PostConstruct
- LifecycleCallbacksMetaData postConstructs = bean.getPostConstructs();
- assertNotNull(postConstructs);
- assertEquals(1, postConstructs.size());
- LifecycleCallbackMetaData postConstruct = postConstructs.get(0);
- assertEquals("setUp", postConstruct.getMethodName());
- assertEquals(MyServiceBean.class.getName(), postConstruct.getClassName());
- // @PreDestroy
- LifecycleCallbacksMetaData preDestroys = bean.getPreDestroys();
- assertNotNull(preDestroys);
- assertEquals(1, preDestroys.size());
- LifecycleCallbackMetaData preDestroy = preDestroys.get(0);
- assertEquals("tearDown", preDestroy.getMethodName());
- assertEquals(MyServiceBean.class.getName(), preDestroy.getClassName());
-
- // @RunAs
- SecurityIdentityMetaData identity = bean.getSecurityIdentity();
- assertNotNull(identity);
- RunAsMetaData runAs = identity.getRunAs();
- assertNotNull(runAs);
- assertEquals("InternalUser", runAs.getRoleName());
-
- // @AroundInvoke
- AroundInvokesMetaData invokes = bean.getAroundInvokes();
- assertNotNull(invokes);
- assertEquals(1, invokes.size());
- AroundInvokeMetaData aroundInvoke = invokes.get(0);
- assertEquals(MyServiceBean.class.getName(), aroundInvoke.getClassName());
- assertEquals("intercept", aroundInvoke.getMethodName());
-
- // @AspectDomain
- assertEquals("myAspectDomain", bean.getAopDomainName());
-
- // @Management
- assertEquals(MyServiceManagement.class.getName(), bean.getManagement());
- }
-
- private void assertInterMediateBean(JBossEnterpriseBeanMetaData interMediateBean)
- {
- // Validate the merged InterMediateBean
- assertNotNull(interMediateBean);
- assertEquals("org.jboss.test.metadata.annotation.ejb3.runas.InterMediate", interMediateBean.getEjbClass());
- assertTrue(interMediateBean instanceof JBossSessionBeanMetaData);
- JBossSessionBeanMetaData sInterMediateBean = (JBossSessionBeanMetaData) interMediateBean;
- assertEquals(SessionType.Stateless, sInterMediateBean.getSessionType());
- SecurityIdentityMetaData identity = sInterMediateBean.getSecurityIdentity();
- assertNotNull(identity);
- RunAsMetaData runAs = identity.getRunAs();
- assertNotNull(runAs);
- assertEquals("InternalUser", runAs.getRoleName());
- }
-
- private void assertMyConsumer(IEnterpriseBeanMetaData enterpriseBean)
- {
- assertTrue(enterpriseBean instanceof JBossConsumerBeanMetaData);
- JBossConsumerBeanMetaData bean = (JBossConsumerBeanMetaData) enterpriseBean;
- //TODO test the different values. This bean is based on MyMDB
- assertNotNull(bean);
- assertEquals(MyConsumer.class.getName(), bean.getEjbClass());
- assertEquals("MyConsumer", bean.getEjbName());
- //assertEquals(false, bean.isJMS());
- //assertEquals(IMailListener.class.getName(), bean.getMessagingType());
- ActivationConfigMetaData config = bean.getActivationConfig();
- ActivationConfigMetaData expected = new ActivationConfigMetaData();
- ActivationConfigPropertiesMetaData props = new ActivationConfigPropertiesMetaData();
- ActivationConfigPropertyMetaData p1 = new ActivationConfigPropertyMetaData();
- p1.setName("p1");
- p1.setValue("v1");
- props.add(p1);
- ActivationConfigPropertyMetaData p2 = new ActivationConfigPropertyMetaData();
- p2.setName("p2");
- p2.setValue("v2");
- props.add(p2);
- expected.setActivationConfigProperties(props);
- assertEquals(expected, config);
- //assertEquals("java:/mdbs/MailMDB", bean.getMappedName());
-
- // @Producer
- assertNotNull(bean.getProducers());
- assertNull(bean.getLocalProducers());
- assertEquals(1, bean.getProducers().size());
- ProducerMetaData producer = bean.getProducers().get(0);
- assertNotNull(producer);
- assertEquals(MyProducer.class.getName(), producer.getClassName());
- }
-
- public void testEjb3ExtApiAnnotations()
- {
- AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
-
- Collection<Class<?>> classes = new HashSet<Class<?>>();
- // Add MyConsumer and MyService
- classes.add(MyConsumer.class);
- classes.add(MyServiceBean.class);
-
- JBoss50Creator creator = new JBoss50Creator(finder);
-
- JBoss50MetaData metaData = creator.create(classes);
-
- assertTrue(metaData.isEJB3x());
- assertEquals(EjbJarMetaData.LATEST_EJB_JAR_XSD_VERSION, metaData.getEjbVersion());
- assertEquals("5.0", metaData.getVersion());
-
- assertNotNull("no beans defined", metaData.getEnterpriseBeans());
- assertNotNull("no assembly descriptor defined", metaData.getAssemblyDescriptor());
-
- IEnterpriseBeanMetaData consumer = metaData.getEnterpriseBean("MyConsumer");
- assertNotNull("consumer is null", consumer);
- assertMyConsumer(consumer);
-
- IEnterpriseBeanMetaData service = metaData.getEnterpriseBean("MyService");
- assertNotNull("service is null", service);
- assertMyServiceBean(service);
- }
-
- private Collection<Class<?>> loadClassesFromCurrentClassDir()
- {
- return loadClassesFromRelativeClassDir(".");
- }
-
- private Collection<Class<?>> loadClassesFromRelativeClassDir(String dir)
- {
- // In real life the deployer will pass probably pass a class scanner
- Collection<Class<?>> classes = new ArrayList<Class<?>>();
- URL currentClassDirURL = getClass().getResource(dir);
- File currentDir;
- try
- {
- currentDir = new File(currentClassDirURL.toURI());
- }
- catch (URISyntaxException e)
- {
- throw new RuntimeException(e);
- }
- String classFileNames[] = currentDir.list(new FilenameFilter() {
- public boolean accept(File dir, String name)
- {
- return name.endsWith(".class");
- }
- });
- if(classFileNames == null)
- throw new RuntimeException("list failed");
-
- Arrays.sort(classFileNames);
-
- String packageName;
- if(dir.indexOf('/') != -1)
- packageName = dir.replaceAll("\\/", "") + ".";
- else
- packageName = ".";
-
- for(String classFileName : classFileNames)
- {
- String className = getClass().getPackage().getName() + packageName + classFileName.substring(0, classFileName.length() - 6);
- try
- {
- classes.add(Class.forName(className));
- }
- catch (ClassNotFoundException e)
- {
- throw new RuntimeException(e);
- }
- }
- return classes;
- }
-
- public void testJBoss50CreatorAnnotationContext()
- {
- AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
- JBoss50Creator creator = new JBoss50Creator(finder);
-
- assertNotNull(creator);
- assertNotNull(creator.getAnnotationContext());
-
- Collection<Class<? extends Annotation>> expected = new HashSet<Class<? extends Annotation>>();
- expected.add(Stateless.class);
- expected.add(Stateful.class);
- expected.add(Singleton.class);
- expected.add(MessageDriven.class);
- expected.add(ApplicationException.class);
- expected.add(Consumer.class);
- expected.add(Service.class);
-
- // Check Type annotations, others must be empty
- assertTrue(creator.getAnnotationContext().getTypeAnnotations().containsAll(expected));
-
- assertTrue(creator.getAnnotationContext().getFieldAnnotations().isEmpty());
- assertTrue(creator.getAnnotationContext().getMethodAnnotations().isEmpty());
- }
-}
Copied: projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/test/metadata/annotation/ejb3/JBossAnnotationEjb3UnitTestCase.java (from rev 106310, projects/metadata/ejb/trunk/src/test/java/org/jboss/test/metadata/annotation/ejb3/JBossAnnotationEjb3UnitTestCase.java)
===================================================================
--- projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/test/metadata/annotation/ejb3/JBossAnnotationEjb3UnitTestCase.java (rev 0)
+++ projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/test/metadata/annotation/ejb3/JBossAnnotationEjb3UnitTestCase.java 2010-07-01 21:21:45 UTC (rev 106390)
@@ -0,0 +1,971 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, 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.test.metadata.annotation.ejb3;
+
+import org.jboss.ejb3.annotation.Consumer;
+import org.jboss.ejb3.annotation.Service;
+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.common.ejb.IEnterpriseBeanMetaData;
+import org.jboss.metadata.ejb.jboss.*;
+import org.jboss.metadata.ejb.spec.*;
+import org.jboss.metadata.javaee.spec.*;
+import org.jboss.test.metadata.annotation.ejb3.defaultinterface.DefaultInterface;
+import org.jboss.test.metadata.annotation.ejb3.defaultinterface.ParentInterface;
+import org.jboss.test.metadata.annotation.ejb3.multiview.Multiview21Remote;
+import org.jboss.test.metadata.annotation.ejb3.multiview.Multiview3Remote;
+import org.jboss.test.metadata.annotation.ejb3.multiview.MultiviewHome;
+import org.jboss.test.metadata.annotation.ejb3.partialxml.EjbLink2Bean;
+import org.jboss.test.metadata.annotation.ejb3.partialxml.EjbLink3Bean;
+import org.jboss.test.metadata.annotation.ejb3.runas.InterMediateBean;
+import org.jboss.test.metadata.annotation.ejb3.runas.TargetBean;
+import org.jboss.test.metadata.common.PackageScanner;
+import org.jboss.test.metadata.common.ScanPackage;
+import org.jboss.test.metadata.common.SetHelper;
+import org.jboss.test.metadata.javaee.AbstractJavaEEMetaDataTest;
+
+import javax.ejb.*;
+import javax.ejb.Timer;
+import java.io.File;
+import java.io.FilenameFilter;
+import java.lang.annotation.Annotation;
+import java.lang.reflect.AnnotatedElement;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.util.*;
+
+
+/**
+ * A JBossAnnotationEjb3UnitTestCase.
+ *
+ * @author <a href="mailto:carlo.dewolf at jboss.com">Carlo de Wolf</a>
+ * @author Scott.Stark at jboss.org
+ * @author <a href="alex at jboss.com">Alexey Loubyansky</a>
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision: 1.1 $
+ */
+public class JBossAnnotationEjb3UnitTestCase extends AbstractJavaEEMetaDataTest
+{
+ public JBossAnnotationEjb3UnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testBeans() throws Exception
+ {
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+
+ Collection<Class<?>> classes = loadClassesFromCurrentClassDir();
+ // Do not test MyServiceBean/MyConsumer in here
+ classes.remove(MyServiceBean.class);
+ classes.remove(MyConsumer.class);
+
+ //enableTrace("org.jboss.metadata.annotation.creator");
+ JBoss50Creator creator = new JBoss50Creator(finder);
+
+ JBoss50MetaData metaData = creator.create(classes);
+
+ assertTrue(metaData.isEJB3x());
+ assertEquals(EjbJarMetaData.LATEST_EJB_JAR_XSD_VERSION, metaData.getEjbVersion());
+ assertEquals("5.0", metaData.getVersion());
+
+ assertNotNull("no beans defined", metaData.getEnterpriseBeans());
+ assertNotNull("no assembly descriptor defined", metaData.getAssemblyDescriptor());
+
+// assertNotNull("no container transactions", metaData.getAssemblyDescriptor().getContainerTransactions());
+ // There is a bug in IdMetaDataImpl.hashCode which isn't unique when id is not set.
+/* for(ContainerTransactionMetaData transaction : metaData.getAssemblyDescriptor().getContainerTransactions())
+ {
+ System.out.println(transaction);
+ }
+*/
+ assertEquals(6, metaData.getEnterpriseBeans().size());
+
+ assertMyStatefulBean(metaData.getEnterpriseBean("AnotherName")); // MyStatefulBean
+ assertMyStateless21Bean(metaData.getEnterpriseBean("MyStateless21Bean"));
+ assertMyStatelessBean(metaData.getEnterpriseBean("MyStatelessBean"));
+ assertMyMDB(metaData.getEnterpriseBean("MailMDB"));
+
+ JBossAssemblyDescriptorMetaData assembly = metaData.getAssemblyDescriptor();
+ assertNotNull("no application exceptions defined", assembly.getApplicationExceptions());
+ assertEquals(1, assembly.getApplicationExceptions().size());
+ System.out.println(assembly.getContainerTransactionsByEjbName("MyStatelessBean"));
+
+ // @DeclareRoles
+ SecurityRolesMetaData securityRoles = assembly.getSecurityRoles();
+ assertNotNull(securityRoles);
+ assertEquals(2, securityRoles.size());
+ SecurityRoleMetaData role1 = securityRoles.get("Role1");
+ assertNotNull(role1);
+ assertEquals("Role1", role1.getRoleName());
+ SecurityRoleMetaData role2 = securityRoles.get("Role2");
+ assertNotNull(role2);
+ assertEquals("Role2", role2.getRoleName());
+
+ // @DenyAll
+ // cls.getDeclaredMethods is un-ordered, so we must use bestMatch
+ ExcludeListMetaData excludes = assembly.getExcludeList();
+ assertNotNull(excludes);
+ MethodsMetaData excludedMethods = excludes.getMethods();
+ assertEquals(2, excludedMethods.size());
+ MethodMetaData m0 = excludedMethods.bestMatch("denyAll", (Class[]) null, null, null);
+ assertEquals("MyStatelessBean", m0.getEjbName());
+ assertEquals("denyAll", m0.getMethodName());
+ MethodParametersMetaData noargs = new MethodParametersMetaData();
+ assertEquals(noargs, m0.getMethodParams());
+ MethodMetaData m1 = excludedMethods.bestMatch("excluded", (Class[]) null, null, null);;
+ assertEquals("MyStatelessBean", m1.getEjbName());
+ assertEquals("excluded", m1.getMethodName());
+ assertEquals(noargs, m1.getMethodParams());
+
+ // @PermitAll, @RolesAllowed({"AccessRole1", "AccessRole2"})
+ MethodPermissionsMetaData allPerms = assembly.getMethodPermissions();
+ assertEquals(8, allPerms.size());
+ MethodPermissionsMetaData perms = assembly.getMethodPermissionsByEjbName("MyStatelessBean");
+ assertEquals(2, perms.size());
+ MethodPermissionMetaData permitAll = null;
+ MethodPermissionMetaData rolesAllowed = null;
+ for(MethodPermissionMetaData mp : perms)
+ {
+ if(mp.matches("permitAll", null, null))
+ permitAll = mp;
+ if(mp.matches("rolesAllowed", null, null))
+ rolesAllowed = mp;
+ }
+ assertNotNull(permitAll);
+ assertTrue(permitAll.isNotChecked());
+ assertTrue(permitAll.isNotChecked("permitAll", null, null));
+ assertNotNull(rolesAllowed);
+ HashSet<String> roles = new HashSet<String>();
+ roles.add("AccessRole1");
+ roles.add("AccessRole2");
+ assertEquals(roles, rolesAllowed.getRoles());
+
+ // Validate the MyStateless @Interceptors
+ InterceptorBindingsMetaData interceptorBindings = assembly.getInterceptorBindings();
+ assertEquals(2, interceptorBindings.size());
+ InterceptorBindingMetaData ib0 = interceptorBindings.get(0);
+ InterceptorBindingMetaData ib1 = interceptorBindings.get(1);
+ assertEquals("MyStatelessBean", ib0.getEjbName());
+ NamedMethodMetaData ib0Method = ib0.getMethod();
+ if(ib0Method == null)
+ {
+ // The class level @Interceptors
+ assertFalse(ib0.isExcludeClassInterceptors());
+ assertTrue(ib0.isExcludeDefaultInterceptors());
+ assertEquals(TestClassInterceptor.class.getName(),
+ ib0.getInterceptorClasses().iterator().next());
+ }
+ else
+ {
+ // The method level @Interceptors
+ assertTrue(ib0.isExcludeClassInterceptors());
+ assertTrue(ib0.isExcludeDefaultInterceptors());
+ assertEquals(TestMethodInterceptor.class.getName(),
+ ib0.getInterceptorClasses().iterator().next());
+ assertEquals("intercept2", ib0Method.getMethodName());
+ }
+ assertEquals("MyStatelessBean", ib1.getEjbName());
+ NamedMethodMetaData ib1Method = ib1.getMethod();
+ if(ib1Method == null)
+ {
+ // The class level @Interceptors
+ assertFalse(ib1.isExcludeClassInterceptors());
+ assertTrue(ib1.isExcludeDefaultInterceptors());
+ assertEquals(TestClassInterceptor.class.getName(),
+ ib1.getInterceptorClasses().iterator().next());
+ }
+ else
+ {
+ // The method level @Interceptors
+ assertTrue(ib1.isExcludeClassInterceptors());
+ assertTrue(ib1.isExcludeDefaultInterceptors());
+ assertEquals(TestMethodInterceptor.class.getName(),
+ ib1.getInterceptorClasses().iterator().next());
+ assertEquals("intercept2", ib1Method.getMethodName());
+ }
+ }
+
+ /**
+ * Test merging annotation and xml based metadata
+ * @throws Exception
+ */
+ public void testXmlMerge()
+ throws Exception
+ {
+ Class<?>[] beanClasses = {
+ InterMediateBean.class,
+ TargetBean.class
+ };
+ List<Class<?>> classes = Arrays.asList(beanClasses);
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ JBoss50Creator creator = new JBoss50Creator(finder);
+ JBoss50MetaData annotations = creator.create(classes);
+ EjbJar3xMetaData ejbJarMetaData = unmarshal("AnnotationEjb3_testXmlMerge.xml", EjbJar3xMetaData.class, null);
+ JBoss50MetaData specMetaData = new JBoss50MetaData();
+ specMetaData.merge(null, ejbJarMetaData);
+ JBossEnterpriseBeanMetaData eb = specMetaData.getEnterpriseBean("InterMediateBean");
+ assertNotNull(eb);
+
+ JBoss50MetaData specMerged = new JBoss50MetaData();
+ specMerged.merge(specMetaData, annotations);
+
+ JBossEnterpriseBeanMetaData enterpriseBean = specMerged.getEnterpriseBean("InterMediateBean");
+ assertNotNull(enterpriseBean);
+ assertInterMediateBean(enterpriseBean);
+ JBossSessionBeanMetaData sb = (JBossSessionBeanMetaData) specMerged.getEnterpriseBean("TargetBean");
+ assertNotNull(sb);
+ RemoveMethodsMetaData removeMethods = sb.getRemoveMethods();
+ assertNotNull(removeMethods);
+ assertEquals(1, removeMethods.size());
+ RemoveMethodMetaData removeMethod = removeMethods.get(0);
+ assertTrue(removeMethod.isRetainIfException());
+ }
+
+ public void testAnnotationMergedViewWithPartialXml() throws Exception
+ {
+ Class<?>[] beanClasses =
+ {EjbLink2Bean.class, EjbLink3Bean.class};
+ List<Class<?>> classes = Arrays.asList(beanClasses);
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ JBoss50Creator creator = new JBoss50Creator(finder);
+ JBoss50MetaData metaData = creator.create(classes);
+ EjbJar3xMetaData specMetaData = unmarshal("AnnotationEjb3_testAnnotationMergedViewWithPartialXml.xml", EjbJar3xMetaData.class, null);
+ JBoss50MetaData dd = new JBoss50MetaData();
+ dd.merge(null, specMetaData);
+
+ JBoss50MetaData merged = new JBoss50MetaData();
+ merged.merge(dd, metaData);
+ //AnnotationMergedView.merge(merged, specMetaData, metaData);
+
+ JBoss50MetaData jbossMetaData = unmarshal("AnnotationEjb3_testAnnotationMergedViewWithPartialXml-jboss.xml",
+ JBoss50MetaData.class, null);
+ // Create a merged view
+ JBossMetaData jbossMergedMetaData = new JBossMetaData();
+ jbossMergedMetaData.merge(jbossMetaData, merged);
+
+ JBossEnterpriseBeanMetaData bean2 = merged.getEnterpriseBean("EjbLink2Bean");
+ assertNotNull(bean2);
+ EJBReferenceMetaData ref1 = bean2.getEjbReferenceByName("ejb/EjbLink1Bean");
+ assertNotNull(ref1);
+ EJBLocalReferenceMetaData ref3 = bean2.getEjbLocalReferenceByName("ejb/EjbLink3Bean");
+ assertNotNull(ref3);
+
+ JBossEnterpriseBeanMetaData bean3 = merged.getEnterpriseBean("EjbLink3Bean");
+ assertNotNull(bean3);
+
+ JBossEnterpriseBeanMetaData jbean2 = jbossMergedMetaData.getEnterpriseBean("EjbLink2Bean");
+ assertNotNull(jbean2);
+ JBossEnterpriseBeanMetaData jbean3 = jbossMergedMetaData.getEnterpriseBean("EjbLink3Bean");
+ assertNotNull(jbean3);
+ }
+
+ /**
+ * Test merging annotation based metadata without xml
+ * @throws Exception
+ */
+ public void testAnnotationMergedViewWithNoXml()
+ throws Exception
+ {
+ Class<?>[] beanClasses = {
+ MyStatelessBean.class
+ };
+ List<Class<?>> classes = Arrays.asList(beanClasses);
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ JBoss50Creator creator = new JBoss50Creator(finder);
+ JBoss50MetaData metaData = creator.create(classes);
+ JBoss50MetaData specMetaData = new JBoss50MetaData();
+ JBoss50MetaData merged = new JBoss50MetaData();
+ //AnnotationMergedView.merge(merged, specMetaData, metaData);
+ merged.merge(specMetaData, metaData);
+
+ JBossEnterpriseBeansMetaData beans = merged.getEnterpriseBeans();
+ assertNotNull(beans);
+ assertEquals(1, beans.size());
+ JBossEnterpriseBeanMetaData bean = beans.get("MyStatelessBean");
+ assertNotNull(bean);
+ assertMyStatelessBean(bean);
+ }
+
+ @SuppressWarnings("unchecked")
+ @ScanPackage("org.jboss.test.metadata.annotation.ejb3.multiview")
+ public void testMultiview() throws Exception
+ {
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+
+ Collection<Class<?>> classes = PackageScanner.loadClasses();
+
+ //enableTrace("org.jboss.metadata.annotation.creator");
+ JBoss50Creator creator = new JBoss50Creator(finder);
+
+ JBoss50MetaData metaData = creator.create(classes);
+
+ assertTrue(metaData.isEJB3x());
+ assertEquals(EjbJarMetaData.LATEST_EJB_JAR_XSD_VERSION, metaData.getEjbVersion());
+ assertEquals("5.0", metaData.getVersion());
+
+ assertNotNull("no beans defined", metaData.getEnterpriseBeans());
+ //assertNotNull("no assembly descriptor defined", metaData.getAssemblyDescriptor());
+ JBossSessionBeanMetaData bean = (JBossSessionBeanMetaData) metaData.getEnterpriseBean("MultiviewBean");
+ assertNotNull(bean);
+ assertEquals(MultiviewHome.class.getName(), bean.getHome());
+ assertEquals(Multiview21Remote.class.getName(), bean.getRemote());
+ assertEquals(SetHelper.createSet(Multiview3Remote.class.getName()), bean.getBusinessRemotes());
+ InitMethodsMetaData initMethods = bean.getInitMethods();
+ assertNotNull(initMethods);
+ assertEquals(1, initMethods.size());
+ InitMethodMetaData initMethod = initMethods.get(0);
+ assertEquals("create", initMethod.getBeanMethod().getMethodName());
+ }
+
+ /**
+ * Test merging annotation and xml based metadata
+ * @throws Exception
+ */
+ public void testPostConstruct()
+ throws Exception
+ {
+ Class<?>[] beanClasses = {
+ MetaDataStatelessBean.class
+ };
+ List<Class<?>> classes = Arrays.asList(beanClasses);
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ JBoss50Creator creator = new JBoss50Creator(finder);
+ JBoss50MetaData metaData = creator.create(classes);
+ EjbJar3xMetaData specMetaData = unmarshal("AnnotationEjb3_testPostConstruct.xml", EjbJar3xMetaData.class, null);
+ JBoss50MetaData dd = new JBoss50MetaData();
+ dd.merge(null, specMetaData);
+ JBoss50MetaData merged = new JBoss50MetaData();
+ merged.merge(dd, metaData);
+ //AnnotationMergedView.merge(merged, specMetaData, metaData);
+
+ JBossSessionBeanMetaData sessionBean = (JBossSessionBeanMetaData) merged.getEnterpriseBean("MetaDataStatelessBean");
+ assertNotNull(sessionBean);
+ LifecycleCallbacksMetaData lifecycleCallbacks = sessionBean.getPostConstructs();
+ assertNotNull(lifecycleCallbacks);
+ assertEquals(1, lifecycleCallbacks.size());
+ LifecycleCallbackMetaData lifecycleCallback = lifecycleCallbacks.get(0);
+ assertEquals("postConstruct", lifecycleCallback.getMethodName());
+ }
+
+ /**
+ * Test the merge of a MessageDrivenBeanMetaData.
+ *
+ * @throws Exception
+ */
+ @ScanPackage("org.jboss.test.metadata.annotation.ejb3.messagelistenerinterface")
+ public void testMessageDrivenBeanMerge() throws Exception
+ {
+ // annotations define a MDB
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+
+ Collection<Class<?>> classes = PackageScanner.loadClasses();
+
+ JBoss50Creator creator = new JBoss50Creator(finder);
+ JBoss50MetaData metaData = creator.create(classes);
+
+ // xml augments it with a messaging-interface
+ EjbJar3xMetaData specMetaData = unmarshal("AnnotationEjb3_testMessageDrivenBeanMerge.xml", EjbJar3xMetaData.class, null);
+ JBoss50MetaData dd = new JBoss50MetaData();
+ dd.merge(null, specMetaData);
+
+ JBoss50MetaData merged = new JBoss50MetaData();
+ merged.merge(dd, metaData);
+ //AnnotationMergedView.merge(merged, specMetaData, metaData);
+
+ JBossMessageDrivenBeanMetaData result = (JBossMessageDrivenBeanMetaData) merged.getEnterpriseBean("UnknownMessageListenerInterfaceMDB");
+ assertEquals("javax.jms.MessageListener", result.getMessagingType());
+ ActivationConfigPropertiesMetaData activationConfigProperties = result.getActivationConfig().getActivationConfigProperties();
+ assertEquals(3, activationConfigProperties.size());
+ assertEquals("none", activationConfigProperties.get("dummy").getValue());
+ assertEquals("Auto-acknowledge", activationConfigProperties.get("acknowledgeMode").getValue());
+ assertEquals("javax.jms.Queue", activationConfigProperties.get("destinationType").getValue());
+ assertEquals("two_ejb.jar#MsgBeanInQueue", result.getMessageDestinationLink());
+ MessageDestinationReferencesMetaData mdRefs = result.getMessageDestinationReferences();
+ assertEquals(1, mdRefs.size());
+ MessageDestinationReferenceMetaData replyQueue = mdRefs.get("replyQueue");
+ assertNotNull(replyQueue);
+ assertEquals("javax.jms.Queue", replyQueue.getType());
+ assertEquals("two_ejb.jar#MsgBeanOutQueue", replyQueue.getLink());
+ assertEquals(MessageDestinationUsageType.Produces, replyQueue.getMessageDestinationUsage());
+ }
+
+ /**
+ * EJB 3 4.6.6:
+ * If bean class implements a single interface, that interface is assumed to be the busi-
+ * ness interface of the bean. This business interface will be a local interface unless the
+ * interface is designated as a remote business interface by use of the Remote annota-
+ * tion on the bean class or interface or by means of the deployment descriptor.
+ * @throws Exception
+ */
+ @ScanPackage("org.jboss.test.metadata.annotation.ejb3.defaultinterface")
+ public void testDefaultInterface() throws Exception
+ {
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ Collection<Class<?>> classes = PackageScanner.loadClasses();
+ JBoss50Creator creator = new JBoss50Creator(finder);
+
+ JBoss50MetaData metaData = creator.create(classes);
+
+ JBossSessionBeanMetaData bean = (JBossSessionBeanMetaData) metaData.getEnterpriseBean("DefaultRemoteInterfaceBean");
+
+ assertEquals(1, bean.getBusinessRemotes().size());
+ assertTrue(bean.getBusinessRemotes().contains(DefaultInterface.class.getName()));
+
+ bean = (JBossSessionBeanMetaData) metaData.getEnterpriseBean("DefaultLocalInterfaceBean");
+
+ assertEquals(1, bean.getBusinessLocals().size());
+ assertTrue(bean.getBusinessLocals().contains(DefaultInterface.class.getName()));
+
+ bean = (JBossSessionBeanMetaData) metaData.getEnterpriseBean("SerializableBean");
+ assertTrue(bean.getBusinessLocals().contains(ParentInterface.class.getName()));
+ }
+
+ @ScanPackage("org.jboss.test.metadata.annotation.ejb3.jbmeta30")
+ public void testMergeGenericMDBMetaData()
+ throws Exception
+ {
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ Collection<Class<?>> classes = PackageScanner.loadClasses();
+ JBoss50Creator creator = new JBoss50Creator(finder);
+ JBoss50MetaData specMetaData = creator.create(classes);
+
+ JBossMetaData mergedMetaData = new JBossMetaData();
+ JBossMetaData metaData = unmarshal("AnnotationEjb3_testMergeGenericMDBMetaData.xml", JBossMetaData.class, null);
+ mergedMetaData.merge(metaData, specMetaData);
+
+ JBossMessageDrivenBeanMetaData mdb = (JBossMessageDrivenBeanMetaData) mergedMetaData.getEnterpriseBean("MessageDrivenBean");
+ assertEquals("MDB_QUEUE", mdb.getDestinationJndiName());
+ }
+
+ @ScanPackage("org.jboss.test.metadata.annotation.ejb3.jbas5124")
+ public void testMergeGenericMetaData()
+ throws Exception
+ {
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ Collection<Class<?>> classes = PackageScanner.loadClasses();
+ JBoss50Creator creator = new JBoss50Creator(finder);
+ JBoss50MetaData specMetaData = creator.create(classes);
+
+ JBossMetaData mergedMetaData = new JBossMetaData();
+ JBossMetaData metaData = unmarshal("AnnotationEjb3_testMergeGenericMetaData.xml", JBossMetaData.class);
+ mergedMetaData.merge(metaData, specMetaData);
+
+ JBossSessionBeanMetaData ssbean = (JBossSessionBeanMetaData) mergedMetaData.getEnterpriseBean("StatelessBean");
+ assertNotNull(ssbean);
+ assertEquals("StatelessBean-jndi-name", ssbean.getJndiName());
+ assertEquals("StatelessBean-home-jndi-name", ssbean.getHomeJndiName());
+ assertTrue(ssbean.isStateless());
+ JBossSessionBeanMetaData sfbean = (JBossSessionBeanMetaData) mergedMetaData.getEnterpriseBean("StatefulBean");
+ assertNotNull(sfbean);
+ assertEquals("StatefulBean-jndi-name", sfbean.getJndiName());
+ assertEquals("StatefulBean-home-jndi-name", sfbean.getHomeJndiName());
+ assertTrue(sfbean.isStateful());
+ }
+
+ private void assertMyStatefulBean(IEnterpriseBeanMetaData enterpriseBean)
+ {
+ assertTrue(enterpriseBean instanceof JBossSessionBeanMetaData);
+
+ JBossSessionBeanMetaData bean = (JBossSessionBeanMetaData) enterpriseBean;
+ assertEquals(SessionType.Stateful, bean.getSessionType());
+ assertEquals(MyStatefulBean.class.getName(), bean.getEjbClass());
+ assertEquals("AnotherName", bean.getEjbName());
+
+ assertNotNull("bean has no business remotes", bean.getBusinessRemotes());
+ assertEquals(1, bean.getBusinessRemotes().size());
+ assertTrue(bean.getBusinessRemotes().contains(MyStateful.class.getName()));
+ assertEquals(MyStatefulHome.class.getName(), bean.getHome());
+
+ // @EJBs
+ AnnotatedEJBReferencesMetaData ejbRefs = bean.getAnnotatedEjbReferences();
+ assertEquals(2, ejbRefs.size());
+ AnnotatedEJBReferenceMetaData local1 = ejbRefs.get("ejb/local1");
+ assertNotNull(local1);
+ assertEquals("java:/MyLocalSession1", local1.getMappedName());
+ assertEquals("ejb/local1", local1.getEjbRefName());
+ assertEquals("MyLocalSession1", local1.getLink());
+ assertEquals("A reference to MyLocalSession1", local1.getDescriptions().value()[0].value());
+ assertEquals(MyStatelessLocal.class, local1.getBeanInterface());
+ AnnotatedEJBReferenceMetaData local2 = ejbRefs.get("ejb/local2");
+ assertNotNull(local2);
+ assertEquals("java:/MyLocalSession2", local2.getMappedName());
+ assertEquals("ejb/local2", local2.getEjbRefName());
+ assertEquals("local.jar#MyLocalSession1", local2.getLink());
+ assertEquals("A reference to MyLocalSession2", local2.getDescriptions().value()[0].value());
+ assertEquals(MyStatelessLocal.class, local2.getBeanInterface());
+ // @PostConstruct
+ LifecycleCallbacksMetaData postConstructs = bean.getPostConstructs();
+ assertNotNull(postConstructs);
+ assertEquals(1, postConstructs.size());
+ LifecycleCallbackMetaData postConstruct = postConstructs.get(0);
+ assertEquals("setUp", postConstruct.getMethodName());
+ assertEquals(MyStatefulBean.class.getName(), postConstruct.getClassName());
+ // @PreDestroy
+ LifecycleCallbacksMetaData preDestroys = bean.getPreDestroys();
+ assertNotNull(preDestroys);
+ assertEquals(1, preDestroys.size());
+ LifecycleCallbackMetaData preDestroy = preDestroys.get(0);
+ assertEquals("tearDown", preDestroy.getMethodName());
+ assertEquals(MyStatefulBean.class.getName(), preDestroy.getClassName());
+ // @Init
+ InitMethodsMetaData initMethods = bean.getInitMethods();
+ assertNotNull(initMethods);
+ assertEquals(1, initMethods.size());
+ InitMethodMetaData initMethod = initMethods.get(0);
+ assertEquals("init", initMethod.getBeanMethod().getMethodName());
+ // @PostActivate
+ LifecycleCallbacksMetaData postActivates = bean.getPostActivates();
+ assertNotNull(postActivates);
+ assertEquals(1, postActivates.size());
+ LifecycleCallbackMetaData postActivate = postActivates.get(0);
+ assertEquals("activate", postActivate.getMethodName());
+ assertEquals(MyStatefulBean.class.getName(), postActivate.getClassName());
+ // @PrePassivate
+ LifecycleCallbacksMetaData prePassivates = bean.getPrePassivates();
+ assertNotNull(prePassivates);
+ assertEquals(1, prePassivates.size());
+ LifecycleCallbackMetaData prePassivate = prePassivates.get(0);
+ assertEquals("passivate", prePassivate.getMethodName());
+ assertEquals(MyStatefulBean.class.getName(), prePassivate.getClassName());
+ // @Remove
+ RemoveMethodsMetaData removeMethods = bean.getRemoveMethods();
+ assertNotNull(removeMethods);
+ assertEquals(1, removeMethods.size());
+ RemoveMethodMetaData removeMethod = removeMethods.get(0);
+ assertEquals("remove", removeMethod.getBeanMethod().getMethodName());
+ // @Resource
+ ResourceEnvironmentReferencesMetaData resource = bean.getResourceEnvironmentReferences();
+ assertNotNull(resource);
+ assertEquals(1, resource.size());
+ ResourceEnvironmentReferenceMetaData ref = resource.get(bean.getEjbClass() + "/context");
+ assertNotNull(ref);
+ assertNotNull(ref.getInjectionTargets());
+ // @PersistenceContext
+ PersistenceContextReferenceMetaData persistence = bean.getPersistenceContextReferenceByName("string");
+ assertNotNull(persistence);
+ assertNotNull(persistence.getInjectionTargets());
+ // @WebServiceRef
+ ServiceReferencesMetaData serviceRefs = bean.getServiceReferences();
+ assertNotNull(serviceRefs);
+ assertEquals(1, serviceRefs.size());
+ ServiceReferenceMetaData serviceRef = serviceRefs.get(bean.getEjbClass() + "/webserviceRef");
+ assertNotNull(serviceRef);
+ assertNotNull(serviceRef.getInjectionTargets());
+
+ // @RemoteBindings
+ assertNotNull(bean.getRemoteBindings());
+ assertEquals(4, bean.getRemoteBindings().size());
+ RemoteBindingMetaData remoteBinding = bean.getRemoteBindings().get(0);
+ assertNotNull(remoteBinding);
+ assertEquals("jndiBind3", remoteBinding.getJndiName());
+ remoteBinding = bean.getRemoteBindings().get(1);
+ assertNotNull(remoteBinding);
+ assertEquals("clientBind1", remoteBinding.getClientBindUrl());
+ assertEquals("stack1", remoteBinding.getInterceptorStack());
+ assertEquals("RemoteBinding1", remoteBinding.getJndiName());
+ remoteBinding = bean.getRemoteBindings().get(2);
+ assertNotNull(remoteBinding);
+ assertEquals("clientBind2", remoteBinding.getClientBindUrl());
+ assertEquals("stack2", remoteBinding.getInterceptorStack());
+ assertEquals("RemoteBinding2", remoteBinding.getJndiName());
+ remoteBinding = bean.getRemoteBindings().get(3);
+ assertEquals("invokerName1", remoteBinding.getInvokerName());
+
+ // @LocalHomeBinding
+ assertEquals("localHome", bean.getLocalHomeJndiName());
+
+ // @RemoteHomeBinding
+ assertEquals("remoteHomeBinding", bean.getHomeJndiName());
+
+ // @CacheConfig
+ assertNotNull(bean.getCacheConfig());
+ CacheConfigMetaData cacheConfig = bean.getCacheConfig();
+ assertEquals("test", cacheConfig.getName());
+ assertEquals(Integer.valueOf(123), cacheConfig.getIdleTimeoutSeconds());
+ assertEquals(Integer.valueOf(234), cacheConfig.getMaxSize());
+ assertEquals(Integer.valueOf(345), cacheConfig.getRemoveTimeoutSeconds());
+ assertEquals("true", cacheConfig.getReplicationIsPassivation());
+
+ // @Clustered
+ assertNotNull(bean.getClusterConfig());
+ assertTrue(bean.isClustered());
+ ClusterConfigMetaData clusterConfig = bean.getClusterConfig();
+ assertEquals("home", clusterConfig.getHomeLoadBalancePolicy());
+ assertEquals("bean", clusterConfig.getBeanLoadBalancePolicy());
+ assertEquals("partition", clusterConfig.getPartitionName());
+ }
+
+ private void assertMyStateless21Bean(IEnterpriseBeanMetaData enterpriseBean)
+ {
+ assertTrue(enterpriseBean instanceof JBossSessionBeanMetaData);
+ JBossSessionBeanMetaData bean = (JBossSessionBeanMetaData) enterpriseBean;
+ assertEquals(SessionType.Stateless, bean.getSessionType());
+ assertEquals(MyStateless21Bean.class.getName(), bean.getEjbClass());
+ assertEquals("MyStateless21Bean", bean.getEjbName());
+
+ assertNull("bean has business locals (instead of local interface)", bean.getBusinessLocals());
+
+ assertEquals(MyStateless21Local.class.getName(), bean.getLocal());
+ assertEquals(MyStateless21Home.class.getName(), bean.getLocalHome());
+ }
+
+ private void assertMyStatelessBean(IEnterpriseBeanMetaData enterpriseBean)
+ {
+ assertTrue(enterpriseBean instanceof JBossSessionBeanMetaData);
+ JBossSessionBeanMetaData bean = (JBossSessionBeanMetaData) enterpriseBean;
+ assertEquals(SessionType.Stateless, bean.getSessionType());
+ assertEquals(MyStatelessBean.class.getName(), bean.getEjbClass());
+ assertEquals("MyStatelessBean", bean.getEjbName());
+
+ assertNotNull("bean has no business locals", bean.getBusinessLocals());
+ assertEquals(1, bean.getBusinessLocals().size());
+ assertTrue(bean.getBusinessLocals().contains(MyStatelessLocal.class.getName()));
+
+ // @TransactionAttribute
+// assertNotNull("bean has no container transactions", bean.getContainerTransactions());
+// Iterator<ContainerTransactionMetaData> it = bean.getContainerTransactions().iterator();
+// ContainerTransactionMetaData tx1 = it.next();
+// assertEquals(TransactionAttributeType.NEVER, tx1.getTransAttribute());
+// // TODO: methods
+// ContainerTransactionMetaData tx2 = it.next();
+// assertEquals(TransactionAttributeType.MANDATORY, tx2.getTransAttribute());
+// MethodsMetaData tx2Methods = tx2.getMethods();
+// String[] params = {};
+// tx2Methods.matches("transactionAttributeMandatory", params, null);
+
+ // @EJB
+ AnnotatedEJBReferencesMetaData ejbRefs = bean.getAnnotatedEjbReferences();
+ assertEquals(2, ejbRefs.size());
+ AnnotatedEJBReferenceMetaData injectedField = ejbRefs.get("injectedField");
+ assertNotNull(injectedField);
+ assertEquals(MyStatelessLocal.class, injectedField.getBeanInterface());
+ AnnotatedEJBReferenceMetaData injectedFieldWithOverridenName = ejbRefs.get("overrideName");
+ assertNotNull(injectedFieldWithOverridenName);
+ assertEquals(MyStatelessLocal.class, injectedFieldWithOverridenName.getBeanInterface());
+ // @PostConstruct
+ LifecycleCallbacksMetaData postConstructs = bean.getPostConstructs();
+ assertNotNull(postConstructs);
+ assertEquals(1, postConstructs.size());
+ LifecycleCallbackMetaData postConstruct = postConstructs.get(0);
+ assertEquals("setUp", postConstruct.getMethodName());
+ assertEquals(MyStatelessBean.class.getName(), postConstruct.getClassName());
+ // @PreDestroy
+ LifecycleCallbacksMetaData preDestroys = bean.getPreDestroys();
+ assertNotNull(preDestroys);
+ assertEquals(1, preDestroys.size());
+ LifecycleCallbackMetaData preDestroy = preDestroys.get(0);
+ assertEquals("tearDown", preDestroy.getMethodName());
+ assertEquals(MyStatelessBean.class.getName(), preDestroy.getClassName());
+
+ // @RunAs
+ SecurityIdentityMetaData identity = bean.getSecurityIdentity();
+ assertNotNull(identity);
+ RunAsMetaData runAs = identity.getRunAs();
+ assertNotNull(runAs);
+ assertEquals("InternalUser", runAs.getRoleName());
+
+ // @AroundInvoke
+ AroundInvokesMetaData invokes = bean.getAroundInvokes();
+ assertNotNull(invokes);
+ assertEquals(1, invokes.size());
+ AroundInvokeMetaData aroundInvoke = invokes.get(0);
+ assertEquals(MyStatelessBean.class.getName(), aroundInvoke.getClassName());
+ assertEquals("intercept", aroundInvoke.getMethodName());
+
+ // @Timeout
+ NamedMethodMetaData timeoutMethod = bean.getTimeoutMethod();
+ assertNotNull(timeoutMethod);
+ assertEquals("timeout", timeoutMethod.getMethodName());
+ MethodParametersMetaData parameters = timeoutMethod.getMethodParams();
+ assertEquals(1, parameters.size());
+ assertEquals(Timer.class.getName(), parameters.get(0));
+
+ // @LocalBinding
+ assertNotNull(bean.getLocalBindings());
+ LocalBindingMetaData localBinding = bean.getLocalBindings().get(0);
+ assertEquals("LocalJndiBinding", localBinding.getJndiName());
+
+ // @RemoteBinding
+ assertNotNull(bean.getRemoteBindings());
+ assertEquals(1, bean.getRemoteBindings().size());
+ RemoteBindingMetaData remoteBinding = bean.getRemoteBindings().get(0);
+ assertNotNull(remoteBinding);
+ assertEquals("clientBind", remoteBinding.getClientBindUrl());
+ assertEquals("stack", remoteBinding.getInterceptorStack());
+ assertEquals("RemoteBinding", remoteBinding.getJndiName());
+ assertEquals("invokerName", remoteBinding.getInvokerName());
+ }
+
+ private void assertMyMDB(IEnterpriseBeanMetaData enterpriseBean)
+ {
+ assertTrue(enterpriseBean instanceof JBossMessageDrivenBeanMetaData);
+ JBossMessageDrivenBeanMetaData bean = (JBossMessageDrivenBeanMetaData) enterpriseBean;
+ assertEquals(MyMDB.class.getName(), bean.getEjbClass());
+ assertEquals("MailMDB", bean.getEjbName());
+ assertEquals(false, bean.isJMS());
+ assertEquals(IMailListener.class.getName(), bean.getMessagingType());
+ ActivationConfigMetaData config = bean.getActivationConfig();
+ ActivationConfigMetaData expected = new ActivationConfigMetaData();
+ ActivationConfigPropertiesMetaData props = new ActivationConfigPropertiesMetaData();
+ ActivationConfigPropertyMetaData p1 = new ActivationConfigPropertyMetaData();
+ p1.setName("p1");
+ p1.setValue("v1");
+ props.add(p1);
+ ActivationConfigPropertyMetaData p2 = new ActivationConfigPropertyMetaData();
+ p2.setName("p2");
+ p2.setValue("v2");
+ props.add(p2);
+ expected.setActivationConfigProperties(props);
+ assertEquals(expected, config);
+ assertEquals("java:/mdbs/MailMDB", bean.getMappedName());
+ // @ResourceAdapter
+ assertEquals("MDBResourceAdapter", bean.getResourceAdapterName());
+ }
+
+ public void assertMyServiceBean(IEnterpriseBeanMetaData enterpriseBean)
+ {
+ assertTrue(enterpriseBean instanceof JBossServiceBeanMetaData);
+
+ //TODO test the different values. This bean is based on MyStatelessSessionBean
+ JBossServiceBeanMetaData bean = (JBossServiceBeanMetaData) enterpriseBean;
+ assertTrue(bean.isService());
+ assertFalse(bean.isSession());
+ assertEquals(MyServiceBean.class.getName(), bean.getEjbClass());
+ assertEquals("MyService", bean.getEjbName());
+
+ assertNotNull("bean has no business locals", bean.getBusinessLocals());
+ assertEquals(1, bean.getBusinessLocals().size());
+ assertTrue(bean.getBusinessLocals().contains(MyStatelessLocal.class.getName()));
+
+ // @TransactionAttribute
+// assertNotNull("bean has no container transactions", bean.getContainerTransactions());
+// Iterator<ContainerTransactionMetaData> it = bean.getContainerTransactions().iterator();
+// ContainerTransactionMetaData tx1 = it.next();
+// assertEquals(TransactionAttributeType.NEVER, tx1.getTransAttribute());
+// // TODO: methods
+// ContainerTransactionMetaData tx2 = it.next();
+// assertEquals(TransactionAttributeType.MANDATORY, tx2.getTransAttribute());
+// MethodsMetaData tx2Methods = tx2.getMethods();
+// String[] params = {};
+// tx2Methods.matches("transactionAttributeMandatory", params, null);
+
+ // @EJB
+ AnnotatedEJBReferencesMetaData ejbRefs = bean.getAnnotatedEjbReferences();
+ assertEquals(2, ejbRefs.size());
+ AnnotatedEJBReferenceMetaData injectedField = ejbRefs.get("injectedField");
+ assertNotNull(injectedField);
+ assertEquals(MyStatelessLocal.class, injectedField.getBeanInterface());
+ AnnotatedEJBReferenceMetaData injectedFieldWithOverridenName = ejbRefs.get("overrideName");
+ assertNotNull(injectedFieldWithOverridenName);
+ assertEquals(MyStatelessLocal.class, injectedFieldWithOverridenName.getBeanInterface());
+ // @PostConstruct
+ LifecycleCallbacksMetaData postConstructs = bean.getPostConstructs();
+ assertNotNull(postConstructs);
+ assertEquals(1, postConstructs.size());
+ LifecycleCallbackMetaData postConstruct = postConstructs.get(0);
+ assertEquals("setUp", postConstruct.getMethodName());
+ assertEquals(MyServiceBean.class.getName(), postConstruct.getClassName());
+ // @PreDestroy
+ LifecycleCallbacksMetaData preDestroys = bean.getPreDestroys();
+ assertNotNull(preDestroys);
+ assertEquals(1, preDestroys.size());
+ LifecycleCallbackMetaData preDestroy = preDestroys.get(0);
+ assertEquals("tearDown", preDestroy.getMethodName());
+ assertEquals(MyServiceBean.class.getName(), preDestroy.getClassName());
+
+ // @RunAs
+ SecurityIdentityMetaData identity = bean.getSecurityIdentity();
+ assertNotNull(identity);
+ RunAsMetaData runAs = identity.getRunAs();
+ assertNotNull(runAs);
+ assertEquals("InternalUser", runAs.getRoleName());
+
+ // @AroundInvoke
+ AroundInvokesMetaData invokes = bean.getAroundInvokes();
+ assertNotNull(invokes);
+ assertEquals(1, invokes.size());
+ AroundInvokeMetaData aroundInvoke = invokes.get(0);
+ assertEquals(MyServiceBean.class.getName(), aroundInvoke.getClassName());
+ assertEquals("intercept", aroundInvoke.getMethodName());
+
+ // @AspectDomain
+ assertEquals("myAspectDomain", bean.getAopDomainName());
+
+ // @Management
+ assertEquals(MyServiceManagement.class.getName(), bean.getManagement());
+ }
+
+ private void assertInterMediateBean(JBossEnterpriseBeanMetaData interMediateBean)
+ {
+ // Validate the merged InterMediateBean
+ assertNotNull(interMediateBean);
+ assertEquals("org.jboss.test.metadata.annotation.ejb3.runas.InterMediate", interMediateBean.getEjbClass());
+ assertTrue(interMediateBean instanceof JBossSessionBeanMetaData);
+ JBossSessionBeanMetaData sInterMediateBean = (JBossSessionBeanMetaData) interMediateBean;
+ assertEquals(SessionType.Stateless, sInterMediateBean.getSessionType());
+ SecurityIdentityMetaData identity = sInterMediateBean.getSecurityIdentity();
+ assertNotNull(identity);
+ RunAsMetaData runAs = identity.getRunAs();
+ assertNotNull(runAs);
+ assertEquals("InternalUser", runAs.getRoleName());
+ }
+
+ private void assertMyConsumer(IEnterpriseBeanMetaData enterpriseBean)
+ {
+ assertTrue(enterpriseBean instanceof JBossConsumerBeanMetaData);
+ JBossConsumerBeanMetaData bean = (JBossConsumerBeanMetaData) enterpriseBean;
+ //TODO test the different values. This bean is based on MyMDB
+ assertNotNull(bean);
+ assertEquals(MyConsumer.class.getName(), bean.getEjbClass());
+ assertEquals("MyConsumer", bean.getEjbName());
+ //assertEquals(false, bean.isJMS());
+ //assertEquals(IMailListener.class.getName(), bean.getMessagingType());
+ ActivationConfigMetaData config = bean.getActivationConfig();
+ ActivationConfigMetaData expected = new ActivationConfigMetaData();
+ ActivationConfigPropertiesMetaData props = new ActivationConfigPropertiesMetaData();
+ ActivationConfigPropertyMetaData p1 = new ActivationConfigPropertyMetaData();
+ p1.setName("p1");
+ p1.setValue("v1");
+ props.add(p1);
+ ActivationConfigPropertyMetaData p2 = new ActivationConfigPropertyMetaData();
+ p2.setName("p2");
+ p2.setValue("v2");
+ props.add(p2);
+ expected.setActivationConfigProperties(props);
+ assertEquals(expected, config);
+ //assertEquals("java:/mdbs/MailMDB", bean.getMappedName());
+
+ // @Producer
+ assertNotNull(bean.getProducers());
+ assertNull(bean.getLocalProducers());
+ assertEquals(1, bean.getProducers().size());
+ ProducerMetaData producer = bean.getProducers().get(0);
+ assertNotNull(producer);
+ assertEquals(MyProducer.class.getName(), producer.getClassName());
+ }
+
+ public void testEjb3ExtApiAnnotations()
+ {
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+
+ Collection<Class<?>> classes = new HashSet<Class<?>>();
+ // Add MyConsumer and MyService
+ classes.add(MyConsumer.class);
+ classes.add(MyServiceBean.class);
+
+ JBoss50Creator creator = new JBoss50Creator(finder);
+
+ JBoss50MetaData metaData = creator.create(classes);
+
+ assertTrue(metaData.isEJB3x());
+ assertEquals(EjbJarMetaData.LATEST_EJB_JAR_XSD_VERSION, metaData.getEjbVersion());
+ assertEquals("5.0", metaData.getVersion());
+
+ assertNotNull("no beans defined", metaData.getEnterpriseBeans());
+ assertNotNull("no assembly descriptor defined", metaData.getAssemblyDescriptor());
+
+ IEnterpriseBeanMetaData consumer = metaData.getEnterpriseBean("MyConsumer");
+ assertNotNull("consumer is null", consumer);
+ assertMyConsumer(consumer);
+
+ IEnterpriseBeanMetaData service = metaData.getEnterpriseBean("MyService");
+ assertNotNull("service is null", service);
+ assertMyServiceBean(service);
+ }
+
+ private Collection<Class<?>> loadClassesFromCurrentClassDir()
+ {
+ return loadClassesFromRelativeClassDir(".");
+ }
+
+ private Collection<Class<?>> loadClassesFromRelativeClassDir(String dir)
+ {
+ // In real life the deployer will pass probably pass a class scanner
+ Collection<Class<?>> classes = new ArrayList<Class<?>>();
+ URL currentClassDirURL = getClass().getResource(dir);
+ File currentDir;
+ try
+ {
+ currentDir = new File(currentClassDirURL.toURI());
+ }
+ catch (URISyntaxException e)
+ {
+ throw new RuntimeException(e);
+ }
+ String classFileNames[] = currentDir.list(new FilenameFilter() {
+ public boolean accept(File dir, String name)
+ {
+ return name.endsWith(".class");
+ }
+ });
+ if(classFileNames == null)
+ throw new RuntimeException("list failed");
+
+ Arrays.sort(classFileNames);
+
+ String packageName;
+ if(dir.indexOf('/') != -1)
+ packageName = dir.replaceAll("\\/", "") + ".";
+ else
+ packageName = ".";
+
+ for(String classFileName : classFileNames)
+ {
+ String className = getClass().getPackage().getName() + packageName + classFileName.substring(0, classFileName.length() - 6);
+ try
+ {
+ classes.add(Class.forName(className));
+ }
+ catch (ClassNotFoundException e)
+ {
+ throw new RuntimeException(e);
+ }
+ }
+ return classes;
+ }
+
+ public void testJBoss50CreatorAnnotationContext()
+ {
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ JBoss50Creator creator = new JBoss50Creator(finder);
+
+ assertNotNull(creator);
+ assertNotNull(creator.getAnnotationContext());
+
+ Collection<Class<? extends Annotation>> expected = new HashSet<Class<? extends Annotation>>();
+ expected.add(Stateless.class);
+ expected.add(Stateful.class);
+ expected.add(Singleton.class);
+ expected.add(MessageDriven.class);
+ expected.add(ApplicationException.class);
+ expected.add(Consumer.class);
+ expected.add(Service.class);
+
+ // Check Type annotations, others must be empty
+ assertTrue(creator.getAnnotationContext().getTypeAnnotations().containsAll(expected));
+
+ assertTrue(creator.getAnnotationContext().getFieldAnnotations().isEmpty());
+ assertTrue(creator.getAnnotationContext().getMethodAnnotations().isEmpty());
+ }
+}
Deleted: projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/test/metadata/annotation/jbmeta99/PostXmlProcessingUnitTestCase.java
===================================================================
--- projects/metadata/ejb/trunk/src/test/java/org/jboss/test/metadata/annotation/jbmeta99/PostXmlProcessingUnitTestCase.java 2010-06-29 12:27:11 UTC (rev 106305)
+++ projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/test/metadata/annotation/jbmeta99/PostXmlProcessingUnitTestCase.java 2010-07-01 21:21:45 UTC (rev 106390)
@@ -1,504 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2006, 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.test.metadata.annotation.jbmeta99;
-
-import java.lang.reflect.AnnotatedElement;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-
-import javax.ejb.Timer;
-import javax.ejb.TransactionAttributeType;
-
-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.common.ejb.IEnterpriseBeanMetaData;
-import org.jboss.metadata.ejb.jboss.CacheConfigMetaData;
-import org.jboss.metadata.ejb.jboss.ClusterConfigMetaData;
-import org.jboss.metadata.ejb.jboss.JBoss50MetaData;
-import org.jboss.metadata.ejb.jboss.JBossAssemblyDescriptorMetaData;
-import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
-import org.jboss.metadata.ejb.jboss.JBossMessageDrivenBeanMetaData;
-import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
-import org.jboss.metadata.ejb.jboss.LocalBindingMetaData;
-import org.jboss.metadata.ejb.jboss.RemoteBindingMetaData;
-import org.jboss.metadata.ejb.spec.ActivationConfigMetaData;
-import org.jboss.metadata.ejb.spec.ActivationConfigPropertiesMetaData;
-import org.jboss.metadata.ejb.spec.ActivationConfigPropertyMetaData;
-import org.jboss.metadata.ejb.spec.AroundInvokeMetaData;
-import org.jboss.metadata.ejb.spec.AroundInvokesMetaData;
-import org.jboss.metadata.ejb.spec.ContainerTransactionMetaData;
-import org.jboss.metadata.ejb.spec.EjbJar3xMetaData;
-import org.jboss.metadata.ejb.spec.ExcludeListMetaData;
-import org.jboss.metadata.ejb.spec.InitMethodMetaData;
-import org.jboss.metadata.ejb.spec.InitMethodsMetaData;
-import org.jboss.metadata.ejb.spec.InterceptorBindingMetaData;
-import org.jboss.metadata.ejb.spec.InterceptorBindingsMetaData;
-import org.jboss.metadata.ejb.spec.MethodMetaData;
-import org.jboss.metadata.ejb.spec.MethodParametersMetaData;
-import org.jboss.metadata.ejb.spec.MethodPermissionMetaData;
-import org.jboss.metadata.ejb.spec.MethodPermissionsMetaData;
-import org.jboss.metadata.ejb.spec.MethodsMetaData;
-import org.jboss.metadata.ejb.spec.NamedMethodMetaData;
-import org.jboss.metadata.ejb.spec.RemoveMethodMetaData;
-import org.jboss.metadata.ejb.spec.RemoveMethodsMetaData;
-import org.jboss.metadata.ejb.spec.SecurityIdentityMetaData;
-import org.jboss.metadata.ejb.spec.SessionType;
-import org.jboss.metadata.javaee.spec.AnnotatedEJBReferenceMetaData;
-import org.jboss.metadata.javaee.spec.AnnotatedEJBReferencesMetaData;
-import org.jboss.metadata.javaee.spec.LifecycleCallbackMetaData;
-import org.jboss.metadata.javaee.spec.LifecycleCallbacksMetaData;
-import org.jboss.metadata.javaee.spec.PersistenceContextReferenceMetaData;
-import org.jboss.metadata.javaee.spec.ResourceEnvironmentReferenceMetaData;
-import org.jboss.metadata.javaee.spec.ResourceEnvironmentReferencesMetaData;
-import org.jboss.metadata.javaee.spec.RunAsMetaData;
-import org.jboss.metadata.javaee.spec.SecurityRoleMetaData;
-import org.jboss.metadata.javaee.spec.SecurityRolesMetaData;
-import org.jboss.metadata.javaee.spec.ServiceReferenceMetaData;
-import org.jboss.metadata.javaee.spec.ServiceReferencesMetaData;
-import org.jboss.test.metadata.javaee.AbstractJavaEEMetaDataTest;
-
-
-/**
- * Process xml beans without top-level annotation
- *
- * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
- * @version $Revision: 1.1 $
- */
-public class PostXmlProcessingUnitTestCase extends AbstractJavaEEMetaDataTest
-{
- public PostXmlProcessingUnitTestCase(String name)
- {
- super(name);
- }
-
- public void testBeans() throws Exception
- {
- AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
- Collection<Class<?>> classes = new ArrayList<Class<?>>();
-
- EjbJar3xMetaData ejbJarMetaData = unmarshal("ejb-jar.xml", EjbJar3xMetaData.class, null);
-
- JBoss50Creator creator = new JBoss50Creator(ejbJarMetaData, this.getClass().getClassLoader(), finder);
- JBoss50MetaData annotations = creator.create(classes);
-
- JBoss50MetaData specMetaData = new JBoss50MetaData();
- specMetaData.merge(null, ejbJarMetaData);
-
- JBoss50MetaData metaData = new JBoss50MetaData();
- metaData.merge(specMetaData, annotations);
-
- assertTrue(metaData.isEJB3x());
- assertEquals("3.0", metaData.getVersion());
-
- assertNotNull("no beans defined", metaData.getEnterpriseBeans());
- assertNotNull("no assembly descriptor defined", metaData.getAssemblyDescriptor());
-
- assertNotNull("no container transactions", metaData.getAssemblyDescriptor().getContainerTransactions());
- // There is a bug in IdMetaDataImpl.hashCode which isn't unique when id is not set.
- //for(ContainerTransactionMetaData transaction : metaData.getAssemblyDescriptor().getContainerTransactions())
- //{
- // System.out.println(transaction);
- //}
-
- assertEquals(6, metaData.getEnterpriseBeans().size());
-
- assertMyStatefulBean(metaData.getEnterpriseBean("AnotherName")); // MyStatefulBean
- assertMyStateless21Bean(metaData.getEnterpriseBean("MyStateless21Bean"));
- assertMyStatelessBean(metaData.getEnterpriseBean("MyStatelessBean"));
- assertMyMDB(metaData.getEnterpriseBean("MailMDB"));
-
- JBossAssemblyDescriptorMetaData assembly = metaData.getAssemblyDescriptor();
-
- // @DeclareRoles
- SecurityRolesMetaData securityRoles = assembly.getSecurityRoles();
- assertNotNull(securityRoles);
- assertEquals(2, securityRoles.size());
- SecurityRoleMetaData role1 = securityRoles.get("Role1");
- assertNotNull(role1);
- assertEquals("Role1", role1.getRoleName());
- SecurityRoleMetaData role2 = securityRoles.get("Role2");
- assertNotNull(role2);
- assertEquals("Role2", role2.getRoleName());
-
- // @DenyAll
- // cls.getDeclaredMethods is un-ordered, so we must use bestMatch
- ExcludeListMetaData excludes = assembly.getExcludeList();
- assertNotNull(excludes);
- MethodsMetaData excludedMethods = excludes.getMethods();
- assertEquals(2, excludedMethods.size());
- MethodMetaData m0 = excludedMethods.bestMatch("denyAll", (Class[]) null, null, null);
- assertEquals("MyStatelessBean", m0.getEjbName());
- assertEquals("denyAll", m0.getMethodName());
- MethodParametersMetaData noargs = new MethodParametersMetaData();
- assertEquals(noargs, m0.getMethodParams());
- MethodMetaData m1 = excludedMethods.bestMatch("excluded", (Class[]) null, null, null);;
- assertEquals("MyStatelessBean", m1.getEjbName());
- assertEquals("excluded", m1.getMethodName());
- assertEquals(noargs, m1.getMethodParams());
-
- // @PermitAll, @RolesAllowed({"AccessRole1", "AccessRole2"})
- MethodPermissionsMetaData allPerms = assembly.getMethodPermissions();
- assertEquals(8, allPerms.size());
- MethodPermissionsMetaData perms = assembly.getMethodPermissionsByEjbName("MyStatelessBean");
- assertEquals(2, perms.size());
- MethodPermissionMetaData permitAll = null;
- MethodPermissionMetaData rolesAllowed = null;
- for(MethodPermissionMetaData mp : perms)
- {
- if(mp.matches("permitAll", null, null))
- permitAll = mp;
- if(mp.matches("rolesAllowed", null, null))
- rolesAllowed = mp;
- }
- assertNotNull(permitAll);
- assertTrue(permitAll.isNotChecked());
- assertTrue(permitAll.isNotChecked("permitAll", null, null));
- assertNotNull(rolesAllowed);
- HashSet<String> roles = new HashSet<String>();
- roles.add("AccessRole1");
- roles.add("AccessRole2");
- assertEquals(roles, rolesAllowed.getRoles());
-
- // Validate the MyStateless @Interceptors
- InterceptorBindingsMetaData interceptorBindings = assembly.getInterceptorBindings();
- assertEquals(2, interceptorBindings.size());
- InterceptorBindingMetaData ib0 = interceptorBindings.get(0);
- InterceptorBindingMetaData ib1 = interceptorBindings.get(1);
- assertEquals("MyStatelessBean", ib0.getEjbName());
- NamedMethodMetaData ib0Method = ib0.getMethod();
- if(ib0Method == null)
- {
- // The class level @Interceptors
- assertFalse(ib0.isExcludeClassInterceptors());
- assertTrue(ib0.isExcludeDefaultInterceptors());
- assertEquals(TestClassInterceptor.class.getName(),
- ib0.getInterceptorClasses().iterator().next());
- }
- else
- {
- // The method level @Interceptors
- assertTrue(ib0.isExcludeClassInterceptors());
- assertTrue(ib0.isExcludeDefaultInterceptors());
- assertEquals(TestMethodInterceptor.class.getName(),
- ib0.getInterceptorClasses().iterator().next());
- assertEquals("intercept2", ib0Method.getMethodName());
- }
- assertEquals("MyStatelessBean", ib1.getEjbName());
- NamedMethodMetaData ib1Method = ib1.getMethod();
- if(ib1Method == null)
- {
- // The class level @Interceptors
- assertFalse(ib1.isExcludeClassInterceptors());
- assertTrue(ib1.isExcludeDefaultInterceptors());
- assertEquals(TestClassInterceptor.class.getName(),
- ib1.getInterceptorClasses().iterator().next());
- }
- else
- {
- // The method level @Interceptors
- assertTrue(ib1.isExcludeClassInterceptors());
- assertTrue(ib1.isExcludeDefaultInterceptors());
- assertEquals(TestMethodInterceptor.class.getName(),
- ib1.getInterceptorClasses().iterator().next());
- assertEquals("intercept2", ib1Method.getMethodName());
- }
-
- JBossSessionBeanMetaData secureBean = (JBossSessionBeanMetaData)metaData.getEnterpriseBean("SecureBean");
- assertNotNull(secureBean);
- assertNull(secureBean.getBusinessLocals());
- assertNotNull(secureBean.getBusinessRemotes());
-
- }
-
- private void assertMyStatefulBean(IEnterpriseBeanMetaData enterpriseBean)
- {
- assertTrue(enterpriseBean instanceof JBossSessionBeanMetaData);
-
- JBossSessionBeanMetaData bean = (JBossSessionBeanMetaData) enterpriseBean;
- assertEquals(SessionType.Stateful, bean.getSessionType());
- assertEquals(MyStatefulBean.class.getName(), bean.getEjbClass());
- assertEquals("AnotherName", bean.getEjbName());
-
- assertNotNull("bean has no business remotes", bean.getBusinessRemotes());
- assertEquals(1, bean.getBusinessRemotes().size());
- assertTrue(bean.getBusinessRemotes().contains(MyStateful.class.getName()));
- assertEquals(MyStatefulHome.class.getName(), bean.getHome());
-
- // @EJBs
- AnnotatedEJBReferencesMetaData ejbRefs = bean.getAnnotatedEjbReferences();
- assertEquals(2, ejbRefs.size());
- AnnotatedEJBReferenceMetaData local1 = ejbRefs.get("ejb/local1");
- assertNotNull(local1);
- assertEquals("java:/MyLocalSession1", local1.getMappedName());
- assertEquals("ejb/local1", local1.getEjbRefName());
- assertEquals("MyLocalSession1", local1.getLink());
- assertEquals("A reference to MyLocalSession1", local1.getDescriptions().value()[0].value());
- assertEquals(MyStatelessLocal.class, local1.getBeanInterface());
- AnnotatedEJBReferenceMetaData local2 = ejbRefs.get("ejb/local2");
- assertNotNull(local2);
- assertEquals("java:/MyLocalSession2", local2.getMappedName());
- assertEquals("ejb/local2", local2.getEjbRefName());
- assertEquals("local.jar#MyLocalSession1", local2.getLink());
- assertEquals("A reference to MyLocalSession2", local2.getDescriptions().value()[0].value());
- assertEquals(MyStatelessLocal.class, local2.getBeanInterface());
- // @PostConstruct
- LifecycleCallbacksMetaData postConstructs = bean.getPostConstructs();
- assertNotNull(postConstructs);
- assertEquals(1, postConstructs.size());
- LifecycleCallbackMetaData postConstruct = postConstructs.get(0);
- assertEquals("setUp", postConstruct.getMethodName());
- assertEquals(MyStatefulBean.class.getName(), postConstruct.getClassName());
- // @PreDestroy
- LifecycleCallbacksMetaData preDestroys = bean.getPreDestroys();
- assertNotNull(preDestroys);
- assertEquals(1, preDestroys.size());
- LifecycleCallbackMetaData preDestroy = preDestroys.get(0);
- assertEquals("tearDown", preDestroy.getMethodName());
- assertEquals(MyStatefulBean.class.getName(), preDestroy.getClassName());
- // @Init
- InitMethodsMetaData initMethods = bean.getInitMethods();
- assertNotNull(initMethods);
- assertEquals(1, initMethods.size());
- InitMethodMetaData initMethod = initMethods.get(0);
- assertEquals("init", initMethod.getBeanMethod().getMethodName());
- // @PostActivate
- LifecycleCallbacksMetaData postActivates = bean.getPostActivates();
- assertNotNull(postActivates);
- assertEquals(1, postActivates.size());
- LifecycleCallbackMetaData postActivate = postActivates.get(0);
- assertEquals("activate", postActivate.getMethodName());
- assertEquals(MyStatefulBean.class.getName(), postActivate.getClassName());
- // @PrePassivate
- LifecycleCallbacksMetaData prePassivates = bean.getPrePassivates();
- assertNotNull(prePassivates);
- assertEquals(1, prePassivates.size());
- LifecycleCallbackMetaData prePassivate = prePassivates.get(0);
- assertEquals("passivate", prePassivate.getMethodName());
- assertEquals(MyStatefulBean.class.getName(), prePassivate.getClassName());
- // @Remove
- RemoveMethodsMetaData removeMethods = bean.getRemoveMethods();
- assertNotNull(removeMethods);
- assertEquals(1, removeMethods.size());
- RemoveMethodMetaData removeMethod = removeMethods.get(0);
- assertEquals("remove", removeMethod.getBeanMethod().getMethodName());
- // @Resource
- ResourceEnvironmentReferencesMetaData resource = bean.getResourceEnvironmentReferences();
- assertNotNull(resource);
- assertEquals(1, resource.size());
- ResourceEnvironmentReferenceMetaData ref = resource.get(bean.getEjbClass() + "/context");
- assertNotNull(ref);
- assertNotNull(ref.getInjectionTargets());
- // @PersistenceContext
- PersistenceContextReferenceMetaData persistence = bean.getPersistenceContextReferenceByName("string");
- assertNotNull(persistence);
- assertNotNull(persistence.getInjectionTargets());
- // @WebServiceRef
- ServiceReferencesMetaData serviceRefs = bean.getServiceReferences();
- assertNotNull(serviceRefs);
- assertEquals(1, serviceRefs.size());
- ServiceReferenceMetaData serviceRef = serviceRefs.get(bean.getEjbClass() + "/webserviceRef");
- assertNotNull(serviceRef);
- assertNotNull(serviceRef.getInjectionTargets());
-
- // @RemoteBindings
- assertNotNull(bean.getRemoteBindings());
- assertEquals(3, bean.getRemoteBindings().size());
- RemoteBindingMetaData remoteBinding = bean.getRemoteBindings().get(0);
- assertNotNull(remoteBinding);
- assertEquals("jndiBind3", remoteBinding.getJndiName());
- remoteBinding = bean.getRemoteBindings().get(1);
- assertNotNull(remoteBinding);
- assertEquals("clientBind1", remoteBinding.getClientBindUrl());
- assertEquals("stack1", remoteBinding.getInterceptorStack());
- assertEquals("RemoteBinding1", remoteBinding.getJndiName());
- remoteBinding = bean.getRemoteBindings().get(2);
- assertNotNull(remoteBinding);
- assertEquals("clientBind2", remoteBinding.getClientBindUrl());
- assertEquals("stack2", remoteBinding.getInterceptorStack());
- assertEquals("RemoteBinding2", remoteBinding.getJndiName());
-
- // @LocalHomeBinding
- assertEquals("localHome", bean.getLocalHomeJndiName());
-
- // @RemoteHomeBinding
- assertEquals("remoteHomeBinding", bean.getHomeJndiName());
-
- // @CacheConfig
- assertNotNull(bean.getCacheConfig());
- CacheConfigMetaData cacheConfig = bean.getCacheConfig();
- assertEquals("test", cacheConfig.getName());
- assertEquals(Integer.valueOf(123), cacheConfig.getIdleTimeoutSeconds());
- assertEquals(Integer.valueOf(234), cacheConfig.getMaxSize());
- assertEquals(Integer.valueOf(345), cacheConfig.getRemoveTimeoutSeconds());
- assertEquals("true", cacheConfig.getReplicationIsPassivation());
-
- // @Clustered
- assertNotNull(bean.getClusterConfig());
- ClusterConfigMetaData clusterConfig = bean.getClusterConfig();
- assertEquals("home", clusterConfig.getHomeLoadBalancePolicy());
- assertEquals("bean", clusterConfig.getBeanLoadBalancePolicy());
- assertEquals("partition", clusterConfig.getPartitionName());
- }
-
- private void assertMyStateless21Bean(IEnterpriseBeanMetaData enterpriseBean)
- {
- assertTrue(enterpriseBean instanceof JBossSessionBeanMetaData);
- JBossSessionBeanMetaData bean = (JBossSessionBeanMetaData) enterpriseBean;
- assertEquals(SessionType.Stateless, bean.getSessionType());
- assertEquals(MyStateless21Bean.class.getName(), bean.getEjbClass());
- assertEquals("MyStateless21Bean", bean.getEjbName());
-
- assertNull("bean has business locals (instead of local interface)", bean.getBusinessLocals());
-
- assertEquals(MyStateless21Local.class.getName(), bean.getLocal());
- assertEquals(MyStateless21Home.class.getName(), bean.getLocalHome());
- }
-
- private void assertMyStatelessBean(IEnterpriseBeanMetaData enterpriseBean)
- {
- assertTrue(enterpriseBean instanceof JBossSessionBeanMetaData);
- JBossSessionBeanMetaData bean = (JBossSessionBeanMetaData) enterpriseBean;
- assertEquals(SessionType.Stateless, bean.getSessionType());
- assertEquals(MyStatelessBean.class.getName(), bean.getEjbClass());
- assertEquals("MyStatelessBean", bean.getEjbName());
-
- assertNotNull("bean has no business locals", bean.getBusinessLocals());
- assertEquals(1, bean.getBusinessLocals().size());
- assertTrue(bean.getBusinessLocals().contains(MyStatelessLocal.class.getName()));
-
- assertNotNull("bean has no container transactions", bean.getContainerTransactions());
- Iterator<ContainerTransactionMetaData> it = bean.getContainerTransactions().iterator();
- ContainerTransactionMetaData tx1 = it.next();
- assertEquals(TransactionAttributeType.NEVER, tx1.getTransAttribute());
- ContainerTransactionMetaData tx2 = it.next();
- assertEquals(TransactionAttributeType.MANDATORY, tx2.getTransAttribute());
- MethodsMetaData tx2Methods = tx2.getMethods();
- String[] params = {};
- tx2Methods.matches("transactionAttributeMandatory", params, null);
-
- // @EJB
- AnnotatedEJBReferencesMetaData ejbRefs = bean.getAnnotatedEjbReferences();
- assertEquals(2, ejbRefs.size());
- AnnotatedEJBReferenceMetaData injectedField = ejbRefs.get("injectedField");
- assertNotNull(injectedField);
- assertEquals(MyStatelessLocal.class, injectedField.getBeanInterface());
- AnnotatedEJBReferenceMetaData injectedFieldWithOverridenName = ejbRefs.get("overrideName");
- assertNotNull(injectedFieldWithOverridenName);
- assertEquals(MyStatelessLocal.class, injectedFieldWithOverridenName.getBeanInterface());
- // @PostConstruct
- LifecycleCallbacksMetaData postConstructs = bean.getPostConstructs();
- assertNotNull(postConstructs);
- assertEquals(1, postConstructs.size());
- LifecycleCallbackMetaData postConstruct = postConstructs.get(0);
- assertEquals("setUp", postConstruct.getMethodName());
- assertEquals(MyStatelessBean.class.getName(), postConstruct.getClassName());
- // @PreDestroy
- LifecycleCallbacksMetaData preDestroys = bean.getPreDestroys();
- assertNotNull(preDestroys);
- assertEquals(1, preDestroys.size());
- LifecycleCallbackMetaData preDestroy = preDestroys.get(0);
- assertEquals("tearDown", preDestroy.getMethodName());
- assertEquals(MyStatelessBean.class.getName(), preDestroy.getClassName());
-
- // @RunAs
- SecurityIdentityMetaData identity = bean.getSecurityIdentity();
- assertNotNull(identity);
- RunAsMetaData runAs = identity.getRunAs();
- assertNotNull(runAs);
- assertEquals("InternalUser", runAs.getRoleName());
-
- // @AroundInvoke
- AroundInvokesMetaData invokes = bean.getAroundInvokes();
- assertNotNull(invokes);
- assertEquals(1, invokes.size());
- AroundInvokeMetaData aroundInvoke = invokes.get(0);
- assertEquals(MyStatelessBean.class.getName(), aroundInvoke.getClassName());
- assertEquals("intercept", aroundInvoke.getMethodName());
-
- // @Timeout
- NamedMethodMetaData timeoutMethod = bean.getTimeoutMethod();
- assertNotNull(timeoutMethod);
- assertEquals("timeout", timeoutMethod.getMethodName());
- MethodParametersMetaData parameters = timeoutMethod.getMethodParams();
- assertEquals(1, parameters.size());
- assertEquals(Timer.class.getName(), parameters.get(0));
-
- // @LocalBinding
- assertNotNull(bean.getLocalBindings());
- LocalBindingMetaData localBinding = bean.getLocalBindings().get(0);
- assertEquals("LocalJndiBinding", localBinding.getJndiName());
-
- // @RemoteBinding
- assertNotNull(bean.getRemoteBindings());
- assertEquals(1, bean.getRemoteBindings().size());
- RemoteBindingMetaData remoteBinding = bean.getRemoteBindings().get(0);
- assertNotNull(remoteBinding);
- assertEquals("clientBind", remoteBinding.getClientBindUrl());
- assertEquals("stack", remoteBinding.getInterceptorStack());
- assertEquals("RemoteBinding", remoteBinding.getJndiName());
- }
-
- private void assertMyMDB(IEnterpriseBeanMetaData enterpriseBean)
- {
- assertTrue(enterpriseBean instanceof JBossMessageDrivenBeanMetaData);
- JBossMessageDrivenBeanMetaData bean = (JBossMessageDrivenBeanMetaData) enterpriseBean;
- assertEquals(MyMDB.class.getName(), bean.getEjbClass());
- assertEquals("MailMDB", bean.getEjbName());
- assertEquals(false, bean.isJMS());
- assertEquals(IMailListener.class.getName(), bean.getMessagingType());
- ActivationConfigMetaData config = bean.getActivationConfig();
- ActivationConfigMetaData expected = new ActivationConfigMetaData();
- ActivationConfigPropertiesMetaData props = new ActivationConfigPropertiesMetaData();
- ActivationConfigPropertyMetaData p1 = new ActivationConfigPropertyMetaData();
- p1.setName("p1");
- p1.setValue("v1");
- props.add(p1);
- ActivationConfigPropertyMetaData p2 = new ActivationConfigPropertyMetaData();
- p2.setName("p2");
- p2.setValue("v2");
- props.add(p2);
- expected.setActivationConfigProperties(props);
- assertEquals(expected, config);
- assertEquals("java:/mdbs/MailMDB", bean.getMappedName());
- // @ResourceAdapter
- assertEquals("MDBResourceAdapter", bean.getResourceAdapterName());
- }
-
- private void assertInterMediateBean(JBossEnterpriseBeanMetaData interMediateBean)
- {
- // Validate the merged InterMediateBean
- assertNotNull(interMediateBean);
- assertEquals("org.jboss.test.metadata.annotation.ejb3.runas.InterMediate", interMediateBean.getEjbClass());
- assertTrue(interMediateBean instanceof JBossSessionBeanMetaData);
- JBossSessionBeanMetaData sInterMediateBean = (JBossSessionBeanMetaData) interMediateBean;
- assertEquals(SessionType.Stateless, sInterMediateBean.getSessionType());
- SecurityIdentityMetaData identity = sInterMediateBean.getSecurityIdentity();
- assertNotNull(identity);
- RunAsMetaData runAs = identity.getRunAs();
- assertNotNull(runAs);
- assertEquals("InternalUser", runAs.getRoleName());
- }
-
-}
Copied: projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/test/metadata/annotation/jbmeta99/PostXmlProcessingUnitTestCase.java (from rev 106310, projects/metadata/ejb/trunk/src/test/java/org/jboss/test/metadata/annotation/jbmeta99/PostXmlProcessingUnitTestCase.java)
===================================================================
--- projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/test/metadata/annotation/jbmeta99/PostXmlProcessingUnitTestCase.java (rev 0)
+++ projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/java/org/jboss/test/metadata/annotation/jbmeta99/PostXmlProcessingUnitTestCase.java 2010-07-01 21:21:45 UTC (rev 106390)
@@ -0,0 +1,462 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2006, 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.test.metadata.annotation.jbmeta99;
+
+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.common.ejb.IEnterpriseBeanMetaData;
+import org.jboss.metadata.ejb.jboss.*;
+import org.jboss.metadata.ejb.spec.*;
+import org.jboss.metadata.javaee.spec.*;
+import org.jboss.test.metadata.javaee.AbstractJavaEEMetaDataTest;
+
+import javax.ejb.Timer;
+import java.lang.reflect.AnnotatedElement;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+
+
+/**
+ * Process xml beans without top-level annotation
+ *
+ * @author <a href="mailto:emuckenh at redhat.com">Emanuel Muckenhuber</a>
+ * @version $Revision: 1.1 $
+ */
+public class PostXmlProcessingUnitTestCase extends AbstractJavaEEMetaDataTest
+{
+ public PostXmlProcessingUnitTestCase(String name)
+ {
+ super(name);
+ }
+
+ public void testBeans() throws Exception
+ {
+ AnnotationFinder<AnnotatedElement> finder = new DefaultAnnotationFinder<AnnotatedElement>();
+ Collection<Class<?>> classes = new ArrayList<Class<?>>();
+
+ EjbJar3xMetaData ejbJarMetaData = unmarshal("ejb-jar.xml", EjbJar3xMetaData.class, null);
+
+ JBoss50Creator creator = new JBoss50Creator(ejbJarMetaData, this.getClass().getClassLoader(), finder);
+ JBoss50MetaData annotations = creator.create(classes);
+
+ JBoss50MetaData specMetaData = new JBoss50MetaData();
+ specMetaData.merge(null, ejbJarMetaData);
+
+ JBoss50MetaData metaData = new JBoss50MetaData();
+ metaData.merge(specMetaData, annotations);
+
+ assertTrue(metaData.isEJB3x());
+ assertEquals("3.0", metaData.getVersion());
+
+ assertNotNull("no beans defined", metaData.getEnterpriseBeans());
+ assertNotNull("no assembly descriptor defined", metaData.getAssemblyDescriptor());
+
+// assertNotNull("no container transactions", metaData.getAssemblyDescriptor().getContainerTransactions());
+ // There is a bug in IdMetaDataImpl.hashCode which isn't unique when id is not set.
+ //for(ContainerTransactionMetaData transaction : metaData.getAssemblyDescriptor().getContainerTransactions())
+ //{
+ // System.out.println(transaction);
+ //}
+
+ assertEquals(6, metaData.getEnterpriseBeans().size());
+
+ assertMyStatefulBean(metaData.getEnterpriseBean("AnotherName")); // MyStatefulBean
+ assertMyStateless21Bean(metaData.getEnterpriseBean("MyStateless21Bean"));
+ assertMyStatelessBean(metaData.getEnterpriseBean("MyStatelessBean"));
+ assertMyMDB(metaData.getEnterpriseBean("MailMDB"));
+
+ JBossAssemblyDescriptorMetaData assembly = metaData.getAssemblyDescriptor();
+
+ // @DeclareRoles
+ SecurityRolesMetaData securityRoles = assembly.getSecurityRoles();
+ assertNotNull(securityRoles);
+ assertEquals(2, securityRoles.size());
+ SecurityRoleMetaData role1 = securityRoles.get("Role1");
+ assertNotNull(role1);
+ assertEquals("Role1", role1.getRoleName());
+ SecurityRoleMetaData role2 = securityRoles.get("Role2");
+ assertNotNull(role2);
+ assertEquals("Role2", role2.getRoleName());
+
+ // @DenyAll
+ // cls.getDeclaredMethods is un-ordered, so we must use bestMatch
+ ExcludeListMetaData excludes = assembly.getExcludeList();
+ assertNotNull(excludes);
+ MethodsMetaData excludedMethods = excludes.getMethods();
+ assertEquals(2, excludedMethods.size());
+ MethodMetaData m0 = excludedMethods.bestMatch("denyAll", (Class[]) null, null, null);
+ assertEquals("MyStatelessBean", m0.getEjbName());
+ assertEquals("denyAll", m0.getMethodName());
+ MethodParametersMetaData noargs = new MethodParametersMetaData();
+ assertEquals(noargs, m0.getMethodParams());
+ MethodMetaData m1 = excludedMethods.bestMatch("excluded", (Class[]) null, null, null);;
+ assertEquals("MyStatelessBean", m1.getEjbName());
+ assertEquals("excluded", m1.getMethodName());
+ assertEquals(noargs, m1.getMethodParams());
+
+ // @PermitAll, @RolesAllowed({"AccessRole1", "AccessRole2"})
+ MethodPermissionsMetaData allPerms = assembly.getMethodPermissions();
+ assertEquals(8, allPerms.size());
+ MethodPermissionsMetaData perms = assembly.getMethodPermissionsByEjbName("MyStatelessBean");
+ assertEquals(2, perms.size());
+ MethodPermissionMetaData permitAll = null;
+ MethodPermissionMetaData rolesAllowed = null;
+ for(MethodPermissionMetaData mp : perms)
+ {
+ if(mp.matches("permitAll", null, null))
+ permitAll = mp;
+ if(mp.matches("rolesAllowed", null, null))
+ rolesAllowed = mp;
+ }
+ assertNotNull(permitAll);
+ assertTrue(permitAll.isNotChecked());
+ assertTrue(permitAll.isNotChecked("permitAll", null, null));
+ assertNotNull(rolesAllowed);
+ HashSet<String> roles = new HashSet<String>();
+ roles.add("AccessRole1");
+ roles.add("AccessRole2");
+ assertEquals(roles, rolesAllowed.getRoles());
+
+ // Validate the MyStateless @Interceptors
+ InterceptorBindingsMetaData interceptorBindings = assembly.getInterceptorBindings();
+ assertEquals(2, interceptorBindings.size());
+ InterceptorBindingMetaData ib0 = interceptorBindings.get(0);
+ InterceptorBindingMetaData ib1 = interceptorBindings.get(1);
+ assertEquals("MyStatelessBean", ib0.getEjbName());
+ NamedMethodMetaData ib0Method = ib0.getMethod();
+ if(ib0Method == null)
+ {
+ // The class level @Interceptors
+ assertFalse(ib0.isExcludeClassInterceptors());
+ assertTrue(ib0.isExcludeDefaultInterceptors());
+ assertEquals(TestClassInterceptor.class.getName(),
+ ib0.getInterceptorClasses().iterator().next());
+ }
+ else
+ {
+ // The method level @Interceptors
+ assertTrue(ib0.isExcludeClassInterceptors());
+ assertTrue(ib0.isExcludeDefaultInterceptors());
+ assertEquals(TestMethodInterceptor.class.getName(),
+ ib0.getInterceptorClasses().iterator().next());
+ assertEquals("intercept2", ib0Method.getMethodName());
+ }
+ assertEquals("MyStatelessBean", ib1.getEjbName());
+ NamedMethodMetaData ib1Method = ib1.getMethod();
+ if(ib1Method == null)
+ {
+ // The class level @Interceptors
+ assertFalse(ib1.isExcludeClassInterceptors());
+ assertTrue(ib1.isExcludeDefaultInterceptors());
+ assertEquals(TestClassInterceptor.class.getName(),
+ ib1.getInterceptorClasses().iterator().next());
+ }
+ else
+ {
+ // The method level @Interceptors
+ assertTrue(ib1.isExcludeClassInterceptors());
+ assertTrue(ib1.isExcludeDefaultInterceptors());
+ assertEquals(TestMethodInterceptor.class.getName(),
+ ib1.getInterceptorClasses().iterator().next());
+ assertEquals("intercept2", ib1Method.getMethodName());
+ }
+
+ JBossSessionBeanMetaData secureBean = (JBossSessionBeanMetaData)metaData.getEnterpriseBean("SecureBean");
+ assertNotNull(secureBean);
+ assertNull(secureBean.getBusinessLocals());
+ assertNotNull(secureBean.getBusinessRemotes());
+
+ }
+
+ private void assertMyStatefulBean(IEnterpriseBeanMetaData enterpriseBean)
+ {
+ assertTrue(enterpriseBean instanceof JBossSessionBeanMetaData);
+
+ JBossSessionBeanMetaData bean = (JBossSessionBeanMetaData) enterpriseBean;
+ assertEquals(SessionType.Stateful, bean.getSessionType());
+ assertEquals(MyStatefulBean.class.getName(), bean.getEjbClass());
+ assertEquals("AnotherName", bean.getEjbName());
+
+ assertNotNull("bean has no business remotes", bean.getBusinessRemotes());
+ assertEquals(1, bean.getBusinessRemotes().size());
+ assertTrue(bean.getBusinessRemotes().contains(MyStateful.class.getName()));
+ assertEquals(MyStatefulHome.class.getName(), bean.getHome());
+
+ // @EJBs
+ AnnotatedEJBReferencesMetaData ejbRefs = bean.getAnnotatedEjbReferences();
+ assertEquals(2, ejbRefs.size());
+ AnnotatedEJBReferenceMetaData local1 = ejbRefs.get("ejb/local1");
+ assertNotNull(local1);
+ assertEquals("java:/MyLocalSession1", local1.getMappedName());
+ assertEquals("ejb/local1", local1.getEjbRefName());
+ assertEquals("MyLocalSession1", local1.getLink());
+ assertEquals("A reference to MyLocalSession1", local1.getDescriptions().value()[0].value());
+ assertEquals(MyStatelessLocal.class, local1.getBeanInterface());
+ AnnotatedEJBReferenceMetaData local2 = ejbRefs.get("ejb/local2");
+ assertNotNull(local2);
+ assertEquals("java:/MyLocalSession2", local2.getMappedName());
+ assertEquals("ejb/local2", local2.getEjbRefName());
+ assertEquals("local.jar#MyLocalSession1", local2.getLink());
+ assertEquals("A reference to MyLocalSession2", local2.getDescriptions().value()[0].value());
+ assertEquals(MyStatelessLocal.class, local2.getBeanInterface());
+ // @PostConstruct
+ LifecycleCallbacksMetaData postConstructs = bean.getPostConstructs();
+ assertNotNull(postConstructs);
+ assertEquals(1, postConstructs.size());
+ LifecycleCallbackMetaData postConstruct = postConstructs.get(0);
+ assertEquals("setUp", postConstruct.getMethodName());
+ assertEquals(MyStatefulBean.class.getName(), postConstruct.getClassName());
+ // @PreDestroy
+ LifecycleCallbacksMetaData preDestroys = bean.getPreDestroys();
+ assertNotNull(preDestroys);
+ assertEquals(1, preDestroys.size());
+ LifecycleCallbackMetaData preDestroy = preDestroys.get(0);
+ assertEquals("tearDown", preDestroy.getMethodName());
+ assertEquals(MyStatefulBean.class.getName(), preDestroy.getClassName());
+ // @Init
+ InitMethodsMetaData initMethods = bean.getInitMethods();
+ assertNotNull(initMethods);
+ assertEquals(1, initMethods.size());
+ InitMethodMetaData initMethod = initMethods.get(0);
+ assertEquals("init", initMethod.getBeanMethod().getMethodName());
+ // @PostActivate
+ LifecycleCallbacksMetaData postActivates = bean.getPostActivates();
+ assertNotNull(postActivates);
+ assertEquals(1, postActivates.size());
+ LifecycleCallbackMetaData postActivate = postActivates.get(0);
+ assertEquals("activate", postActivate.getMethodName());
+ assertEquals(MyStatefulBean.class.getName(), postActivate.getClassName());
+ // @PrePassivate
+ LifecycleCallbacksMetaData prePassivates = bean.getPrePassivates();
+ assertNotNull(prePassivates);
+ assertEquals(1, prePassivates.size());
+ LifecycleCallbackMetaData prePassivate = prePassivates.get(0);
+ assertEquals("passivate", prePassivate.getMethodName());
+ assertEquals(MyStatefulBean.class.getName(), prePassivate.getClassName());
+ // @Remove
+ RemoveMethodsMetaData removeMethods = bean.getRemoveMethods();
+ assertNotNull(removeMethods);
+ assertEquals(1, removeMethods.size());
+ RemoveMethodMetaData removeMethod = removeMethods.get(0);
+ assertEquals("remove", removeMethod.getBeanMethod().getMethodName());
+ // @Resource
+ ResourceEnvironmentReferencesMetaData resource = bean.getResourceEnvironmentReferences();
+ assertNotNull(resource);
+ assertEquals(1, resource.size());
+ ResourceEnvironmentReferenceMetaData ref = resource.get(bean.getEjbClass() + "/context");
+ assertNotNull(ref);
+ assertNotNull(ref.getInjectionTargets());
+ // @PersistenceContext
+ PersistenceContextReferenceMetaData persistence = bean.getPersistenceContextReferenceByName("string");
+ assertNotNull(persistence);
+ assertNotNull(persistence.getInjectionTargets());
+ // @WebServiceRef
+ ServiceReferencesMetaData serviceRefs = bean.getServiceReferences();
+ assertNotNull(serviceRefs);
+ assertEquals(1, serviceRefs.size());
+ ServiceReferenceMetaData serviceRef = serviceRefs.get(bean.getEjbClass() + "/webserviceRef");
+ assertNotNull(serviceRef);
+ assertNotNull(serviceRef.getInjectionTargets());
+
+ // @RemoteBindings
+ assertNotNull(bean.getRemoteBindings());
+ assertEquals(3, bean.getRemoteBindings().size());
+ RemoteBindingMetaData remoteBinding = bean.getRemoteBindings().get(0);
+ assertNotNull(remoteBinding);
+ assertEquals("jndiBind3", remoteBinding.getJndiName());
+ remoteBinding = bean.getRemoteBindings().get(1);
+ assertNotNull(remoteBinding);
+ assertEquals("clientBind1", remoteBinding.getClientBindUrl());
+ assertEquals("stack1", remoteBinding.getInterceptorStack());
+ assertEquals("RemoteBinding1", remoteBinding.getJndiName());
+ remoteBinding = bean.getRemoteBindings().get(2);
+ assertNotNull(remoteBinding);
+ assertEquals("clientBind2", remoteBinding.getClientBindUrl());
+ assertEquals("stack2", remoteBinding.getInterceptorStack());
+ assertEquals("RemoteBinding2", remoteBinding.getJndiName());
+
+ // @LocalHomeBinding
+ assertEquals("localHome", bean.getLocalHomeJndiName());
+
+ // @RemoteHomeBinding
+ assertEquals("remoteHomeBinding", bean.getHomeJndiName());
+
+ // @CacheConfig
+ assertNotNull(bean.getCacheConfig());
+ CacheConfigMetaData cacheConfig = bean.getCacheConfig();
+ assertEquals("test", cacheConfig.getName());
+ assertEquals(Integer.valueOf(123), cacheConfig.getIdleTimeoutSeconds());
+ assertEquals(Integer.valueOf(234), cacheConfig.getMaxSize());
+ assertEquals(Integer.valueOf(345), cacheConfig.getRemoveTimeoutSeconds());
+ assertEquals("true", cacheConfig.getReplicationIsPassivation());
+
+ // @Clustered
+ assertNotNull(bean.getClusterConfig());
+ ClusterConfigMetaData clusterConfig = bean.getClusterConfig();
+ assertEquals("home", clusterConfig.getHomeLoadBalancePolicy());
+ assertEquals("bean", clusterConfig.getBeanLoadBalancePolicy());
+ assertEquals("partition", clusterConfig.getPartitionName());
+ }
+
+ private void assertMyStateless21Bean(IEnterpriseBeanMetaData enterpriseBean)
+ {
+ assertTrue(enterpriseBean instanceof JBossSessionBeanMetaData);
+ JBossSessionBeanMetaData bean = (JBossSessionBeanMetaData) enterpriseBean;
+ assertEquals(SessionType.Stateless, bean.getSessionType());
+ assertEquals(MyStateless21Bean.class.getName(), bean.getEjbClass());
+ assertEquals("MyStateless21Bean", bean.getEjbName());
+
+ assertNull("bean has business locals (instead of local interface)", bean.getBusinessLocals());
+
+ assertEquals(MyStateless21Local.class.getName(), bean.getLocal());
+ assertEquals(MyStateless21Home.class.getName(), bean.getLocalHome());
+ }
+
+ private void assertMyStatelessBean(IEnterpriseBeanMetaData enterpriseBean)
+ {
+ assertTrue(enterpriseBean instanceof JBossSessionBeanMetaData);
+ JBossSessionBeanMetaData bean = (JBossSessionBeanMetaData) enterpriseBean;
+ assertEquals(SessionType.Stateless, bean.getSessionType());
+ assertEquals(MyStatelessBean.class.getName(), bean.getEjbClass());
+ assertEquals("MyStatelessBean", bean.getEjbName());
+
+ assertNotNull("bean has no business locals", bean.getBusinessLocals());
+ assertEquals(1, bean.getBusinessLocals().size());
+ assertTrue(bean.getBusinessLocals().contains(MyStatelessLocal.class.getName()));
+
+ // @TransactionAttribute
+// assertNotNull("bean has no container transactions", bean.getContainerTransactions());
+// Iterator<ContainerTransactionMetaData> it = bean.getContainerTransactions().iterator();
+// ContainerTransactionMetaData tx1 = it.next();
+// assertEquals(TransactionAttributeType.NEVER, tx1.getTransAttribute());
+// ContainerTransactionMetaData tx2 = it.next();
+// assertEquals(TransactionAttributeType.MANDATORY, tx2.getTransAttribute());
+// MethodsMetaData tx2Methods = tx2.getMethods();
+// String[] params = {};
+// tx2Methods.matches("transactionAttributeMandatory", params, null);
+
+ // @EJB
+ AnnotatedEJBReferencesMetaData ejbRefs = bean.getAnnotatedEjbReferences();
+ assertEquals(2, ejbRefs.size());
+ AnnotatedEJBReferenceMetaData injectedField = ejbRefs.get("injectedField");
+ assertNotNull(injectedField);
+ assertEquals(MyStatelessLocal.class, injectedField.getBeanInterface());
+ AnnotatedEJBReferenceMetaData injectedFieldWithOverridenName = ejbRefs.get("overrideName");
+ assertNotNull(injectedFieldWithOverridenName);
+ assertEquals(MyStatelessLocal.class, injectedFieldWithOverridenName.getBeanInterface());
+ // @PostConstruct
+ LifecycleCallbacksMetaData postConstructs = bean.getPostConstructs();
+ assertNotNull(postConstructs);
+ assertEquals(1, postConstructs.size());
+ LifecycleCallbackMetaData postConstruct = postConstructs.get(0);
+ assertEquals("setUp", postConstruct.getMethodName());
+ assertEquals(MyStatelessBean.class.getName(), postConstruct.getClassName());
+ // @PreDestroy
+ LifecycleCallbacksMetaData preDestroys = bean.getPreDestroys();
+ assertNotNull(preDestroys);
+ assertEquals(1, preDestroys.size());
+ LifecycleCallbackMetaData preDestroy = preDestroys.get(0);
+ assertEquals("tearDown", preDestroy.getMethodName());
+ assertEquals(MyStatelessBean.class.getName(), preDestroy.getClassName());
+
+ // @RunAs
+ SecurityIdentityMetaData identity = bean.getSecurityIdentity();
+ assertNotNull(identity);
+ RunAsMetaData runAs = identity.getRunAs();
+ assertNotNull(runAs);
+ assertEquals("InternalUser", runAs.getRoleName());
+
+ // @AroundInvoke
+ AroundInvokesMetaData invokes = bean.getAroundInvokes();
+ assertNotNull(invokes);
+ assertEquals(1, invokes.size());
+ AroundInvokeMetaData aroundInvoke = invokes.get(0);
+ assertEquals(MyStatelessBean.class.getName(), aroundInvoke.getClassName());
+ assertEquals("intercept", aroundInvoke.getMethodName());
+
+ // @Timeout
+ NamedMethodMetaData timeoutMethod = bean.getTimeoutMethod();
+ assertNotNull(timeoutMethod);
+ assertEquals("timeout", timeoutMethod.getMethodName());
+ MethodParametersMetaData parameters = timeoutMethod.getMethodParams();
+ assertEquals(1, parameters.size());
+ assertEquals(Timer.class.getName(), parameters.get(0));
+
+ // @LocalBinding
+ assertNotNull(bean.getLocalBindings());
+ LocalBindingMetaData localBinding = bean.getLocalBindings().get(0);
+ assertEquals("LocalJndiBinding", localBinding.getJndiName());
+
+ // @RemoteBinding
+ assertNotNull(bean.getRemoteBindings());
+ assertEquals(1, bean.getRemoteBindings().size());
+ RemoteBindingMetaData remoteBinding = bean.getRemoteBindings().get(0);
+ assertNotNull(remoteBinding);
+ assertEquals("clientBind", remoteBinding.getClientBindUrl());
+ assertEquals("stack", remoteBinding.getInterceptorStack());
+ assertEquals("RemoteBinding", remoteBinding.getJndiName());
+ }
+
+ private void assertMyMDB(IEnterpriseBeanMetaData enterpriseBean)
+ {
+ assertTrue(enterpriseBean instanceof JBossMessageDrivenBeanMetaData);
+ JBossMessageDrivenBeanMetaData bean = (JBossMessageDrivenBeanMetaData) enterpriseBean;
+ assertEquals(MyMDB.class.getName(), bean.getEjbClass());
+ assertEquals("MailMDB", bean.getEjbName());
+ assertEquals(false, bean.isJMS());
+ assertEquals(IMailListener.class.getName(), bean.getMessagingType());
+ ActivationConfigMetaData config = bean.getActivationConfig();
+ ActivationConfigMetaData expected = new ActivationConfigMetaData();
+ ActivationConfigPropertiesMetaData props = new ActivationConfigPropertiesMetaData();
+ ActivationConfigPropertyMetaData p1 = new ActivationConfigPropertyMetaData();
+ p1.setName("p1");
+ p1.setValue("v1");
+ props.add(p1);
+ ActivationConfigPropertyMetaData p2 = new ActivationConfigPropertyMetaData();
+ p2.setName("p2");
+ p2.setValue("v2");
+ props.add(p2);
+ expected.setActivationConfigProperties(props);
+ assertEquals(expected, config);
+ assertEquals("java:/mdbs/MailMDB", bean.getMappedName());
+ // @ResourceAdapter
+ assertEquals("MDBResourceAdapter", bean.getResourceAdapterName());
+ }
+
+ private void assertInterMediateBean(JBossEnterpriseBeanMetaData interMediateBean)
+ {
+ // Validate the merged InterMediateBean
+ assertNotNull(interMediateBean);
+ assertEquals("org.jboss.test.metadata.annotation.ejb3.runas.InterMediate", interMediateBean.getEjbClass());
+ assertTrue(interMediateBean instanceof JBossSessionBeanMetaData);
+ JBossSessionBeanMetaData sInterMediateBean = (JBossSessionBeanMetaData) interMediateBean;
+ assertEquals(SessionType.Stateless, sInterMediateBean.getSessionType());
+ SecurityIdentityMetaData identity = sInterMediateBean.getSecurityIdentity();
+ assertNotNull(identity);
+ RunAsMetaData runAs = identity.getRunAs();
+ assertNotNull(runAs);
+ assertEquals("InternalUser", runAs.getRoleName());
+ }
+
+}
Modified: projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/resources/log4j.xml
===================================================================
--- projects/metadata/ejb/trunk/src/test/resources/log4j.xml 2010-06-29 12:27:11 UTC (rev 106305)
+++ projects/metadata/ejb/tags/jboss-metadata-ejb-2.0.0-alpha-17/src/test/resources/log4j.xml 2010-07-01 21:21:45 UTC (rev 106390)
@@ -61,7 +61,7 @@
<!-- ============================== -->
<appender name="CONSOLE" class="org.apache.log4j.ConsoleAppender">
- <param name="Threshold" value="TRACE"/>
+ <param name="Threshold" value="INFO"/>
<param name="Target" value="System.out"/>
<layout class="org.apache.log4j.PatternLayout">
More information about the jboss-cvs-commits
mailing list