[jboss-cvs] JBossAS SVN: r108160 - in projects/ejb3/tags: jboss-ejb3-timerservice-deployer-1.0.0-alpha-5 and 2 other directories.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Thu Sep 16 04:35:42 EDT 2010


Author: jaikiran
Date: 2010-09-16 04:35:42 -0400 (Thu, 16 Sep 2010)
New Revision: 108160

Added:
   projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5/
   projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5/pom.xml
   projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5/src/main/java/org/jboss/ejb3/timerservice/deployer/AutoTimerInitializer.java
   projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5/src/main/resources/META-INF/jboss-ejb3-timerservice-deployer-jboss-beans.xml
Removed:
   projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5/pom.xml
   projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5/src/main/java/org/jboss/ejb3/timerservice/deployer/AutoTimerInitializer.java
   projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5/src/main/java/org/jboss/ejb3/timerservice/deployer/TimerServiceDeployer.java
   projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5/src/main/resources/META-INF/jboss-ejb3-timerservice-deployer-jboss-beans.xml
Log:
[maven-release-plugin]  copy for tag jboss-ejb3-timerservice-deployer-1.0.0-alpha-5

Copied: projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5 (from rev 108157, projects/ejb3/trunk/timerservice-deployer)

Deleted: projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5/pom.xml
===================================================================
--- projects/ejb3/trunk/timerservice-deployer/pom.xml	2010-09-16 06:06:20 UTC (rev 108157)
+++ projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5/pom.xml	2010-09-16 08:35:42 UTC (rev 108160)
@@ -1,172 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-    <!--
-    vi:ts=2:sw=2:expandtab:
-    -->
-<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">
-
-    <!-- Model Information -->
-    <modelVersion>4.0.0</modelVersion>
-
-    <!-- Artifact Information  -->
-    <groupId>org.jboss.ejb3</groupId>
-    <artifactId>jboss-ejb3-timerservice-deployer</artifactId>
-    <packaging>jar</packaging>
-    <version>1.0.0-SNAPSHOT</version>
-    <name>JBoss EJB3.1+ Timerservice deployer</name>
-    <url>http://www.jboss.org</url>
-    <description>MC based deployer(s) for timerservice functionality for EJB containers</description>
-    
-	<!-- SCM -->
-	<scm>
-		<connection>scm:svn:http://anonsvn.jboss.org/repos/jbossas/projects/ejb3/trunk/timerservice-deployer</connection>
-		<developerConnection>scm:svn:https://svn.jboss.org/repos/jbossas/projects/ejb3/trunk/timerservice-deployer</developerConnection>
-		<url>http://anonsvn.jboss.org/repos/jbossas/projects/ejb3/trunk/timerservice-deployer</url>
-	</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>  
-
-    
-    
-    <properties>
-        <version.org.jboss.deployers>2.2.0.Alpha5</version.org.jboss.deployers>
-        <version.org.jboss.kernel>2.2.0.Alpha10</version.org.jboss.kernel>
-        <version.org.jboss.ejb3.core>1.4.2</version.org.jboss.ejb3.core>
-        <version.org.jboss.ejb.metadata>2.0.0-alpha-16</version.org.jboss.ejb.metadata>
-        <version.org.jboss.ejb3.timerservice_timerservice-extension>1.0.0-alpha-2</version.org.jboss.ejb3.timerservice_timerservice-extension>
-        <version.junit>4.7</version.junit>
-    </properties>
-    
-    <build>
-        <plugins>
-            <!-- Assembly Plugin -->
-            <plugin>
-                <artifactId>maven-assembly-plugin</artifactId>
-                <version>2.2-beta-4</version>
-                <executions>
-                    <!--  Build timerservice deployer "package" -->
-                  <execution>
-                    <id>build-timerservice-deployer-package</id> 
-                    <phase>package</phase>
-                    <goals>
-                      <goal>single</goal>
-                    </goals>
-                  </execution>
-                </executions>
-                <configuration>
-                  <descriptors>
-                    <descriptor>src/assembly/package-assembler.xml</descriptor>
-                  </descriptors>
-                </configuration>
-            </plugin>
-			<plugin>
-				<artifactId>maven-compiler-plugin</artifactId>
-				<configuration>
-					<source>1.6</source>
-					<target>1.6</target>
-				</configuration>
-			</plugin>
-
-			<plugin>
-				<artifactId>maven-enforcer-plugin</artifactId>
-				<executions>
-					<execution>
-						<id>enforce-jdk6</id>
-						<goals>
-							<goal>enforce</goal>
-						</goals>
-						<configuration>
-							<rules>
-								<requireJavaVersion>
-									<version>[1.6,)</version>
-								</requireJavaVersion>
-							</rules>
-						</configuration>
-					</execution>
-				</executions>
-			</plugin>
-			<!-- Maven Release Plugin Configuration -->
-			<plugin>
-				<groupId>org.apache.maven.plugins</groupId>
-				<artifactId>maven-release-plugin</artifactId>
-				<configuration>
-					<tagBase>
-						https://svn.jboss.org/repos/jbossas/projects/ejb3/tags
-			          </tagBase>
-				</configuration>
-			</plugin>
-
-			
-            
-        </plugins>
-    
-    </build>
-    
-    <dependencies>
-
-        <dependency>
-            <groupId>org.jboss.metadata</groupId>
-            <artifactId>jboss-metadata-ejb</artifactId>
-            <version>${version.org.jboss.ejb.metadata}</version>
-        </dependency>
-        <dependency>
-        	<groupId>org.jboss.ejb3</groupId>
-        	<artifactId>jboss-ejb3-common</artifactId>
-        	<version>1.0.0</version>
-        </dependency>
-        <dependency>
-        	<groupId>org.jboss.ejb3</groupId>
-        	<artifactId>jboss-ejb3-core</artifactId>
-        	<version>${version.org.jboss.ejb3.core}</version>
-        </dependency>
-        <dependency>
-        	<groupId>org.jboss.ejb3.timerservice</groupId>
-        	<artifactId>jboss-ejb3-timerservice-extension</artifactId>
-        	<version>${version.org.jboss.ejb3.timerservice_timerservice-extension}</version>
-        </dependency>
-        <!-- JBoss deployers -->
-        <dependency>
-        	<groupId>org.jboss.kernel</groupId>
-        	<artifactId>jboss-kernel</artifactId>
-        	<version>${version.org.jboss.kernel}</version>
-        </dependency>
-        <dependency>
-          <groupId>org.jboss.deployers</groupId>
-          <artifactId>jboss-deployers-spi</artifactId>
-          <version>${version.org.jboss.deployers}</version>
-        </dependency>
-        <dependency>
-          <groupId>org.jboss.deployers</groupId>
-          <artifactId>jboss-deployers-core-spi</artifactId>
-          <version>${version.org.jboss.deployers}</version>
-        </dependency>
-        <dependency>
-          <groupId>org.jboss.deployers</groupId>
-          <artifactId>jboss-deployers-structure-spi</artifactId>
-          <version>${version.org.jboss.deployers}</version>
-        </dependency>
-        
-        <!-- ***************************** -->
-        <!--  Test dependencies -->
-        <!-- ***************************** -->
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>${version.junit}</version>
-            <scope>test</scope>
-        </dependency>
-    
-    </dependencies>
-
-</project>	

Copied: projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5/pom.xml (from rev 108159, projects/ejb3/trunk/timerservice-deployer/pom.xml)
===================================================================
--- projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5/pom.xml	                        (rev 0)
+++ projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5/pom.xml	2010-09-16 08:35:42 UTC (rev 108160)
@@ -0,0 +1,230 @@
+<?xml version="1.0" encoding="UTF-8"?>
+    <!--
+    vi:ts=2:sw=2:expandtab:
+    -->
+<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">
+
+    <!-- Model Information -->
+    <modelVersion>4.0.0</modelVersion>
+
+    <!-- Artifact Information  -->
+    <groupId>org.jboss.ejb3</groupId>
+    <artifactId>jboss-ejb3-timerservice-deployer</artifactId>
+    <packaging>jar</packaging>
+    <version>1.0.0-alpha-5</version>
+    <name>JBoss EJB3.1+ Timerservice deployer</name>
+    <url>http://www.jboss.org</url>
+    <description>MC based deployer(s) for timerservice functionality for EJB containers</description>
+
+    <!-- SCM -->
+    <scm>
+        <connection>scm:svn:http://anonsvn.jboss.org/repos/jbossas/projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5</connection>
+        <developerConnection>scm:svn:https://svn.jboss.org/repos/jbossas/projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5</developerConnection>
+        <url>http://anonsvn.jboss.org/repos/jbossas/projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5</url>
+    </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>
+
+
+
+    <properties>
+        <version.org.jboss.deployers>2.2.0.Alpha5</version.org.jboss.deployers>
+        <version.org.jboss.kernel>2.2.0.Alpha10</version.org.jboss.kernel>
+        <version.org.jboss.ejb3.core>1.4.2</version.org.jboss.ejb3.core>
+        <version.org.jboss.ejb.metadata>2.0.0-alpha-16</version.org.jboss.ejb.metadata>
+        <version.org.jboss.ejb3.timerservice_timerservice-extension>1.0.0-alpha-2</version.org.jboss.ejb3.timerservice_timerservice-extension>
+        <version.junit>4.7</version.junit>
+        <version.mockito>1.8.4</version.mockito>
+        <version.org.jboss.ejb3.timeout>0.2.1</version.org.jboss.ejb3.timeout>
+    </properties>
+
+    <build>
+        <plugins>
+            <!-- Assembly Plugin -->
+            <plugin>
+                <artifactId>maven-assembly-plugin</artifactId>
+                <version>2.2-beta-4</version>
+                <executions>
+                    <!--  Build timerservice deployer "package" -->
+                    <execution>
+                        <id>build-timerservice-deployer-package</id>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>single</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <descriptors>
+                        <descriptor>src/assembly/package-assembler.xml</descriptor>
+                    </descriptors>
+                </configuration>
+            </plugin>
+            <plugin>
+                <artifactId>maven-compiler-plugin</artifactId>
+                <configuration>
+                    <source>1.6</source>
+                    <target>1.6</target>
+                </configuration>
+            </plugin>
+
+            <plugin>
+                <artifactId>maven-enforcer-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <id>enforce-jdk6</id>
+                        <goals>
+                            <goal>enforce</goal>
+                        </goals>
+                        <configuration>
+                            <rules>
+                                <requireJavaVersion>
+                                    <version>[1.6,)</version>
+                                </requireJavaVersion>
+                            </rules>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+            <!-- Maven Release Plugin Configuration -->
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-release-plugin</artifactId>
+                <configuration>
+                    <tagBase>
+                        https://svn.jboss.org/repos/jbossas/projects/ejb3/tags
+			          </tagBase>
+                </configuration>
+            </plugin>
+
+
+
+        </plugins>
+
+    </build>
+
+    <dependencies>
+
+        <dependency>
+            <groupId>org.jboss.metadata</groupId>
+            <artifactId>jboss-metadata-ejb</artifactId>
+            <version>${version.org.jboss.ejb.metadata}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.jboss.ejb3.timeout</groupId>
+            <artifactId>jboss-ejb3-timeout-spi</artifactId>
+            <version>${version.org.jboss.ejb3.timeout}</version>
+        </dependency>
+
+        <dependency>
+            <groupId>org.jboss.ejb3</groupId>
+            <artifactId>jboss-ejb3-common</artifactId>
+            <version>1.0.0</version>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.ejb3</groupId>
+            <artifactId>jboss-ejb3-core</artifactId>
+            <version>${version.org.jboss.ejb3.core}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.ejb3.timerservice</groupId>
+            <artifactId>jboss-ejb3-timerservice-extension</artifactId>
+            <version>${version.org.jboss.ejb3.timerservice_timerservice-extension}</version>
+        </dependency>
+        <!-- JBoss deployers -->
+        <dependency>
+            <groupId>org.jboss.kernel</groupId>
+            <artifactId>jboss-kernel</artifactId>
+            <version>${version.org.jboss.kernel}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.deployers</groupId>
+            <artifactId>jboss-deployers-spi</artifactId>
+            <version>${version.org.jboss.deployers}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.deployers</groupId>
+            <artifactId>jboss-deployers-core-spi</artifactId>
+            <version>${version.org.jboss.deployers}</version>
+        </dependency>
+        <dependency>
+            <groupId>org.jboss.deployers</groupId>
+            <artifactId>jboss-deployers-structure-spi</artifactId>
+            <version>${version.org.jboss.deployers}</version>
+        </dependency>
+
+        <!-- ***************************** -->
+        <!--  Test dependencies -->
+        <!-- ***************************** -->
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <version>${version.junit}</version>
+            <scope>test</scope>
+        </dependency>
+
+        <dependency>
+            <groupId>org.mockito</groupId>
+            <artifactId>mockito-core</artifactId>
+            <version>${version.mockito}</version>
+            <scope>test</scope>
+        </dependency>
+        
+        <dependency>
+            <groupId>org.jboss.ejb3.timeout</groupId>
+            <artifactId>jboss-ejb3-timeout-3.1</artifactId>
+            <version>${version.org.jboss.ejb3.timeout}</version>
+        </dependency>
+
+        <!-- Test runtime -->
+        <dependency>
+            <groupId>org.jboss.jbossas</groupId>
+            <artifactId>jboss-as-server</artifactId>
+            <version>5.1.0.GA</version>
+            <exclusions>
+                <exclusion>
+                    <groupId>jboss</groupId>
+                    <artifactId>jboss-remoting</artifactId>
+                </exclusion>
+                <!-- jboss-as-server must not dictate the JPA API -->
+                <exclusion>
+                    <groupId>org.hibernate</groupId>
+                    <artifactId>ejb3-persistence</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.jboss</groupId>
+                    <artifactId>jboss-metadata</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.jboss.jbossas</groupId>
+                    <artifactId>jboss-as-security</artifactId>
+                </exclusion>
+                <!-- Conflicts with org.jboss.security:jbosssx -->
+                <exclusion>
+                    <groupId>org.jboss.security</groupId>
+                    <artifactId>jbosssx-client</artifactId>
+                </exclusion>
+                <exclusion>
+                    <groupId>org.jboss.ws.native</groupId>
+                    <artifactId>jbossws-native-jaxws</artifactId>
+                </exclusion>
+            </exclusions>
+            <scope>provided</scope>
+        </dependency>
+
+    </dependencies>
+
+</project>	

Deleted: projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5/src/main/java/org/jboss/ejb3/timerservice/deployer/AutoTimerInitializer.java
===================================================================
--- projects/ejb3/trunk/timerservice-deployer/src/main/java/org/jboss/ejb3/timerservice/deployer/AutoTimerInitializer.java	2010-09-16 06:06:20 UTC (rev 108157)
+++ projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5/src/main/java/org/jboss/ejb3/timerservice/deployer/AutoTimerInitializer.java	2010-09-16 08:35:42 UTC (rev 108160)
@@ -1,262 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2009, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.ejb3.timerservice.deployer;
-
-import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.List;
-
-import javax.ejb.TimerConfig;
-import javax.ejb.TimerService;
-
-import org.jboss.beans.metadata.api.annotations.Start;
-import org.jboss.ejb3.EJBContainer;
-import org.jboss.ejb3.common.lang.ClassHelper;
-import org.jboss.logging.Logger;
-import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
-import org.jboss.metadata.ejb.jboss.JBossMessageDrivenBean31MetaData;
-import org.jboss.metadata.ejb.jboss.JBossSessionBean31MetaData;
-import org.jboss.metadata.ejb.spec.MethodParametersMetaData;
-import org.jboss.metadata.ejb.spec.NamedMethodMetaData;
-import org.jboss.metadata.ejb.spec.TimerMetaData;
-
-/**
- * Responsible for creating any necessary auto timers for an EJB
- *
- * @author Jaikiran Pai
- * @version $Revision: $
- */
-public class AutoTimerInitializer
-{
-
-   /**
-    * Logger
-    */
-   private static Logger logger = Logger.getLogger(AutoTimerInitializer.class);
-
-   /**
-    * The EJB container
-    */
-   private EJBContainer container;
-
-   /**
-    * 
-    */
-   public AutoTimerInitializer()
-   {
-
-   }
-
-   /**
-    * Creates a {@link AutoTimerInitializer} for a {@link EJBContainer}
-    * @param container {@link EJBContainer}
-    */
-   public AutoTimerInitializer(EJBContainer container)
-   {
-      this.container = container;
-   }
-
-   /**
-    * Sets the {@link EJBContainer}
-    * @param container {@link EJBContainer}
-    */
-   public void setContainer(EJBContainer container)
-   {
-      this.container = container;
-   }
-
-   /**
-    * Returns the {@link EJBContainer} for which this {@link AutoTimerInitializer} is responsible
-    * for creating auto timers
-    * @return
-    */
-   public EJBContainer getContainer()
-   {
-      return this.container;
-   }
-
-   /**
-    * Creates any auto timers that are required for the {@link EJBContainer}, which this
-    * {@link AutoTimerInitializer} represents.
-    */
-   @Start
-   public void initializeAutoTimers()
-   {
-      if (this.container == null)
-      {
-         throw new IllegalStateException("Cannot initialize auto-timers since container is not present");
-      }
-
-      JBossEnterpriseBeanMetaData enterpriseBeanMetaData = this.container.getXml();
-      // Auto timers are only since EJB3.1
-      // TODO: This check will fail when EJB3.2 or any newer versions are introduced.
-      // A better check would be to look for any version greater than EJB3.1
-      if (enterpriseBeanMetaData.getJBossMetaData().isEJB31() == false)
-      {
-         return;
-      }
-
-      List<TimerMetaData> autoTimersMetaData = null;
-
-      if (enterpriseBeanMetaData.isSession() && enterpriseBeanMetaData instanceof JBossSessionBean31MetaData)
-      {
-         JBossSessionBean31MetaData sessionBean = (JBossSessionBean31MetaData) enterpriseBeanMetaData;
-         // Stateful beans don't have timerservice/timers
-         if (sessionBean.isStateful())
-         {
-            return;
-         }
-         // Get hold of the auto timer metadata
-         autoTimersMetaData = sessionBean.getTimers();
-      }
-      else if (enterpriseBeanMetaData.isMessageDriven()
-            && enterpriseBeanMetaData instanceof JBossMessageDrivenBean31MetaData)
-      {
-         JBossMessageDrivenBean31MetaData mdb = (JBossMessageDrivenBean31MetaData) enterpriseBeanMetaData;
-         // get hold of auto timer metadata
-         autoTimersMetaData = mdb.getTimers();
-      }
-      // If there's no auto timers, then there's nothing to do
-      if (autoTimersMetaData == null)
-      {
-         return;
-      }
-
-      // get hold of the timerservice since we need it to create the autotimers
-      TimerService timerService = this.container.getTimerService();
-
-      if (timerService instanceof org.jboss.ejb3.timerservice.extension.TimerService == false)
-      {
-         // can't do anything about this
-         logger.warn("Cannot create auto timers for EJB: " + enterpriseBeanMetaData.getEjbName()
-               + " since the timerservice isn't of type "
-               + org.jboss.ejb3.timerservice.extension.TimerService.class.getName());
-         return;
-      }
-      org.jboss.ejb3.timerservice.extension.TimerService ejb31TimerService = (org.jboss.ejb3.timerservice.extension.TimerService) timerService;
-      // process each auto timer
-      for (TimerMetaData autoTimerMetaData : autoTimersMetaData)
-      {
-         // create a timer config
-         TimerConfig timerConfig = new TimerConfig();
-         timerConfig.setPersistent(autoTimerMetaData.isPersistent());
-         timerConfig.setInfo(autoTimerMetaData.getInfo());
-         NamedMethodMetaData timeoutMethodMetaData = autoTimerMetaData.getTimeoutMethod();
-         // get hold of the timeout method for this auto-timer
-         Method timeoutMethod = this.getTimeoutMethod(timeoutMethodMetaData, this.container.getBeanClass());
-         if (timeoutMethod == null)
-         {
-            StringBuilder methodStringBuilder = new StringBuilder();
-            methodStringBuilder.append(timeoutMethodMetaData.getMethodName());
-            if (timeoutMethodMetaData.getMethodParams() != null)
-            {
-               methodStringBuilder.append(Arrays.toString(timeoutMethodMetaData.getMethodParams().toArray()));
-            }
-            throw new IllegalStateException("Timeout method: " + methodStringBuilder.toString()
-                  + " not found for bean class: " + enterpriseBeanMetaData.getEjbClass());
-         }
-         // finally create/get the auto timer
-         ejb31TimerService.getAutoTimer(autoTimerMetaData.getScheduleExpression(), timerConfig, timeoutMethod);
-      }
-
-   }
-
-   /**
-    * Returns the {@link Method}, represented by the {@link NamedMethodMetaData}, from the <code>beanClass</code>
-    * <p>
-    *   This method looks for private, protected, package and public methods on the <code>beanClass</code>
-    *   and its superclass(es). If no matching method is found, then this method returns null.
-    * </p>
-    * @param timeoutMethodMetaData The method metadata
-    * @param beanClass The class on which the method has to be looked for
-    * @return
-    * @throws NullPointerException If either of the passed parameters is null
-    */
-   private Method getTimeoutMethod(NamedMethodMetaData timeoutMethodMetaData, Class<?> beanClass)
-   {
-
-      String timeoutMethodName = timeoutMethodMetaData.getMethodName();
-      MethodParametersMetaData timeoutMethodParams = timeoutMethodMetaData.getMethodParams();
-
-      List<Method> probableTimeoutMethods = ClassHelper.getAllMethodsByName(beanClass, timeoutMethodName);
-      if (probableTimeoutMethods == null || probableTimeoutMethods.isEmpty())
-      {
-         return null;
-      }
-      if (timeoutMethodParams == null)
-      {
-         if (probableTimeoutMethods.size() > 1)
-         {
-            throw new IllegalStateException("Found more than one timeout method with name: " + timeoutMethodName
-                  + " on bean " + beanClass);
-         }
-         // match found
-         return probableTimeoutMethods.get(0);
-      }
-
-      // load the method param classes
-      Class<?>[] timeoutMethodParamTypes = new Class<?>[timeoutMethodParams.size()];
-      int i = 0;
-      for (String paramClassName : timeoutMethodParams)
-      {
-         Class<?> methodParamClass = null;
-         try
-         {
-            methodParamClass = Class.forName(paramClassName, false, beanClass.getClassLoader());
-         }
-         catch (ClassNotFoundException cnfe)
-         {
-            throw new RuntimeException("Could not load method param class: " + paramClassName + " of timeout method");
-         }
-         timeoutMethodParamTypes[i++] = methodParamClass;
-      }
-      for (Method method : probableTimeoutMethods)
-      {
-         Class<?>[] methodParamTypes = method.getParameterTypes();
-         if (equals(timeoutMethodParamTypes, methodParamTypes))
-         {
-            // match found
-            return method;
-         }
-      }
-      // no match found
-      return null;
-   }
-
-   private boolean equals(Class<?>[] params, Class<?>[] otherParams)
-   {
-
-      if (params.length != otherParams.length)
-      {
-         return false;
-      }
-      for (int i = 0; i < params.length; i++)
-      {
-         // param type doesn't match
-         if (!params[i].equals(otherParams[i]))
-         {
-            return false;
-         }
-      }
-      return true;
-   }
-}

Copied: projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5/src/main/java/org/jboss/ejb3/timerservice/deployer/AutoTimerInitializer.java (from rev 108158, projects/ejb3/trunk/timerservice-deployer/src/main/java/org/jboss/ejb3/timerservice/deployer/AutoTimerInitializer.java)
===================================================================
--- projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5/src/main/java/org/jboss/ejb3/timerservice/deployer/AutoTimerInitializer.java	                        (rev 0)
+++ projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5/src/main/java/org/jboss/ejb3/timerservice/deployer/AutoTimerInitializer.java	2010-09-16 08:35:42 UTC (rev 108160)
@@ -0,0 +1,199 @@
+/*
+ * JBoss, Home of Professional Open Source.
+ * Copyright 2009, Red Hat Middleware LLC, and individual contributors
+ * as indicated by the @author tags. See the copyright.txt file in the
+ * distribution for a full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jboss.ejb3.timerservice.deployer;
+
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.List;
+
+import javax.ejb.TimerConfig;
+import javax.ejb.TimerService;
+
+import org.jboss.beans.metadata.api.annotations.Install;
+import org.jboss.dependency.spi.ControllerState;
+import org.jboss.ejb3.EJBContainer;
+import org.jboss.ejb3.timeout.spi.TimeoutMethodCallbackRequirements;
+import org.jboss.ejb3.util.Service;
+import org.jboss.logging.Logger;
+import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
+import org.jboss.metadata.ejb.jboss.JBossMessageDrivenBean31MetaData;
+import org.jboss.metadata.ejb.jboss.JBossSessionBean31MetaData;
+import org.jboss.metadata.ejb.spec.MethodParametersMetaData;
+import org.jboss.metadata.ejb.spec.NamedMethodMetaData;
+import org.jboss.metadata.ejb.spec.TimerMetaData;
+
+/**
+ * Responsible for creating any necessary auto timers for an EJB
+ * 
+ * <p>
+ *  The {@link AutoTimerInitializer} "listens" for {@link EJBContainer}s which
+ *  reach {@link ControllerState#START} state. The {@link AutoTimerInitializer} 
+ *  then checks the EJB metadata associated with such containers and decides whether auto-timers
+ *  have to be created for that container. For any such relevant container, this {@link AutoTimerInitializer}
+ *  then creates the auto-timer(s).  
+ * </p>
+ *
+ * @author Jaikiran Pai
+ * @version $Revision: $
+ */
+public class AutoTimerInitializer
+{
+
+   /**
+    * Logger
+    */
+   private static Logger logger = Logger.getLogger(AutoTimerInitializer.class);
+
+   /** timeout method requirements checker */
+   private static TimeoutMethodCallbackRequirements timeoutMethodCallbackRequirements = Service
+         .loadService(TimeoutMethodCallbackRequirements.class);
+
+   
+   /**
+    * Creates auto-timer(s) for the passed {@link EJBContainer} if the corresponding EJB has auto-timers
+    * configured
+    * 
+    * @param container The EJB container
+    */
+   @Install (dependentState = "Start") // we work with containers in "Start" state because that's when the container
+   // is available for invocations (for timeout methods).
+   public void initializeAutoTimers(EJBContainer container)
+   {
+      JBossEnterpriseBeanMetaData enterpriseBeanMetaData = container.getXml();
+      // Auto timers are only since EJB3.1
+      // TODO: This check will fail when EJB3.2 or any newer versions are introduced.
+      // A better check would be to look for any version greater than EJB3.1
+      if (enterpriseBeanMetaData.getJBossMetaData().isEJB31() == false)
+      {
+         return;
+      }
+      List<TimerMetaData> autoTimersMetaData = null;
+      // Session bean
+      if (enterpriseBeanMetaData.isSession() && enterpriseBeanMetaData instanceof JBossSessionBean31MetaData)
+      {
+         JBossSessionBean31MetaData sessionBean = (JBossSessionBean31MetaData) enterpriseBeanMetaData;
+         // Stateful beans don't have timerservice/timers
+         if (sessionBean.isStateful())
+         {
+            return;
+         }
+         // Get hold of the auto timer metadata
+         autoTimersMetaData = sessionBean.getTimers();
+      }
+      // MDB
+      else if (enterpriseBeanMetaData.isMessageDriven()
+            && enterpriseBeanMetaData instanceof JBossMessageDrivenBean31MetaData)
+      {
+         JBossMessageDrivenBean31MetaData mdb = (JBossMessageDrivenBean31MetaData) enterpriseBeanMetaData;
+         // get hold of auto timer metadata
+         autoTimersMetaData = mdb.getTimers();
+      }
+      // If there's no auto timers, then there's nothing to do
+      if (autoTimersMetaData == null)
+      {
+         return;
+      }
+
+      // get hold of the timerservice since we need it to create the autotimers
+      TimerService timerService = container.getTimerService();
+
+      if (timerService instanceof org.jboss.ejb3.timerservice.extension.TimerService == false)
+      {
+         // can't do anything about this
+         logger.warn("Cannot create auto timers for EJB: " + enterpriseBeanMetaData.getEjbName()
+               + " since the timerservice isn't of type "
+               + org.jboss.ejb3.timerservice.extension.TimerService.class.getName());
+         return;
+      }
+      org.jboss.ejb3.timerservice.extension.TimerService ejb31TimerService = (org.jboss.ejb3.timerservice.extension.TimerService) timerService;
+      // process each auto timer
+      for (TimerMetaData autoTimerMetaData : autoTimersMetaData)
+      {
+         // create a timer config
+         TimerConfig timerConfig = new TimerConfig();
+         timerConfig.setPersistent(autoTimerMetaData.isPersistent());
+         String info = autoTimerMetaData.getInfo(); 
+         if (info != null && !info.isEmpty())
+         {
+            timerConfig.setInfo(autoTimerMetaData.getInfo());
+         }
+         NamedMethodMetaData timeoutMethodMetaData = autoTimerMetaData.getTimeoutMethod();
+         // get hold of the timeout method for this auto-timer
+         Method timeoutMethod = this.getTimeoutMethod(timeoutMethodMetaData, container.getBeanClass());
+         if (timeoutMethod == null)
+         {
+            StringBuilder methodStringBuilder = new StringBuilder();
+            methodStringBuilder.append(timeoutMethodMetaData.getMethodName());
+            if (timeoutMethodMetaData.getMethodParams() != null)
+            {
+               methodStringBuilder.append(Arrays.toString(timeoutMethodMetaData.getMethodParams().toArray()));
+            }
+            throw new IllegalStateException("Timeout method: " + methodStringBuilder.toString()
+                  + " not found for bean class: " + enterpriseBeanMetaData.getEjbClass());
+         }
+         // finally create/get the auto timer
+         ejb31TimerService.getAutoTimer(autoTimerMetaData.getScheduleExpression(), timerConfig, timeoutMethod);
+      }
+
+   }
+
+   /**
+    * Returns the {@link Method}, represented by the {@link NamedMethodMetaData}, from the <code>beanClass</code>
+    * <p>
+    *   This method looks for private, protected, package and public methods on the <code>beanClass</code>
+    *   and its superclass(es). If no matching method is found, then this method returns null.
+    * </p>
+    * @param timeoutMethodMetaData The method metadata
+    * @param beanClass The class on which the method has to be looked for
+    * @return
+    * @throws NullPointerException If either of the passed parameters is null
+    */
+   private Method getTimeoutMethod(NamedMethodMetaData timeoutMethodMetaData, Class<?> beanClass)
+   {
+
+      String timeoutMethodName = timeoutMethodMetaData.getMethodName();
+      MethodParametersMetaData timeoutMethodParams = timeoutMethodMetaData.getMethodParams();
+      Class<?>[] timeoutMethodParamTypes = null;
+      if (timeoutMethodParams != null)
+      {
+         // load the method param classes
+         timeoutMethodParamTypes = new Class<?>[timeoutMethodParams.size()];
+         int i = 0;
+         for (String paramClassName : timeoutMethodParams)
+         {
+            Class<?> methodParamClass = null;
+            try
+            {
+               methodParamClass = Class.forName(paramClassName, false, beanClass.getClassLoader());
+            }
+            catch (ClassNotFoundException cnfe)
+            {
+               throw new RuntimeException("Could not load method param class: " + paramClassName + " of timeout method");
+            }
+            timeoutMethodParamTypes[i++] = methodParamClass;
+         }
+      }
+      return timeoutMethodCallbackRequirements.getTimeoutMethod(beanClass, timeoutMethodName, timeoutMethodParamTypes);
+   }
+
+
+}

Deleted: projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5/src/main/java/org/jboss/ejb3/timerservice/deployer/TimerServiceDeployer.java
===================================================================
--- projects/ejb3/trunk/timerservice-deployer/src/main/java/org/jboss/ejb3/timerservice/deployer/TimerServiceDeployer.java	2010-09-16 06:06:20 UTC (rev 108157)
+++ projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5/src/main/java/org/jboss/ejb3/timerservice/deployer/TimerServiceDeployer.java	2010-09-16 08:35:42 UTC (rev 108160)
@@ -1,162 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source.
- * Copyright 2009, Red Hat Middleware LLC, and individual contributors
- * as indicated by the @author tags. See the copyright.txt file in the
- * distribution for a full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jboss.ejb3.timerservice.deployer;
-
-import org.jboss.beans.metadata.plugins.AbstractInjectionValueMetaData;
-import org.jboss.beans.metadata.spi.BeanMetaData;
-import org.jboss.beans.metadata.spi.builder.BeanMetaDataBuilder;
-import org.jboss.dependency.spi.ControllerState;
-import org.jboss.deployers.spi.DeploymentException;
-import org.jboss.deployers.spi.deployer.DeploymentStages;
-import org.jboss.deployers.spi.deployer.helpers.AbstractDeployer;
-import org.jboss.deployers.structure.spi.DeploymentUnit;
-import org.jboss.ejb3.EJBContainer;
-import org.jboss.ejb3.common.deployers.spi.AttachmentNames;
-import org.jboss.logging.Logger;
-import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeanMetaData;
-import org.jboss.metadata.ejb.jboss.JBossEnterpriseBeansMetaData;
-import org.jboss.metadata.ejb.jboss.JBossMetaData;
-import org.jboss.metadata.ejb.jboss.JBossSessionBeanMetaData;
-
-/**
- * A deployer which processing EJB3.1 bean metadata and creating {@link AutoTimerInitializer}
- * for appropriate EJBs.
- * <p>
- *  Each such {@link AutoTimerInitializer} will be attached to the {@link DeploymentUnit} as a
- *  {@link BeanMetaData} so that it's deployed as a MC bean.
- * </p>
- *
- * @author Jaikiran Pai
- * @version $Revision: $
- */
-public class TimerServiceDeployer extends AbstractDeployer
-{
-
-   /**
-    * Logger
-    */
-   private Logger logger = Logger.getLogger(TimerServiceDeployer.class);
-
-   /**
-    * MC bean name prefix
-    */
-   private static final String AUTO_TIMER_MC_BEAN_PREFIX = "auto-timer-initializer:";
-
-   /**
-    * Setup the deployer
-    */
-   public TimerServiceDeployer()
-   {
-      // run in REAL stage
-      setStage(DeploymentStages.REAL);
-      // we need JBossMetaData
-      setInput(JBossMetaData.class);
-      // ordering (i.e. this deployer should run after the deployer which attaches PROCESSED_METADATA to the unit) 
-      addInput(AttachmentNames.PROCESSED_METADATA);
-      // we deploy MC bean(s)
-      addOutput(BeanMetaData.class);
-   }
-
-   /**
-    * For each EJB3.1 bean in this <code>unit</code>, this method creates a {@link AutoTimerInitializer} and attaches it
-    * as {@link BeanMetaData} to the <code>unit</code> 
-    */
-   @Override
-   public void deploy(DeploymentUnit unit) throws DeploymentException
-   {
-      // get processed metadata
-      JBossMetaData metaData = unit.getAttachment(AttachmentNames.PROCESSED_METADATA, JBossMetaData.class);
-      if (metaData == null)
-      {
-         return;
-      }
-      // Auto timers are only since EJB3.1
-      // TODO: This check will fail when EJB3.2 or any newer versions are introduced.
-      // A better check would be to look for any version greater than EJB3.1
-      if (metaData.isEJB31() == false)
-      {
-         return;
-      }
-      // work on the ejbs
-      JBossEnterpriseBeansMetaData beans = metaData.getEnterpriseBeans();
-      for (JBossEnterpriseBeanMetaData bean : beans)
-      {
-         if (bean.isSession())
-         {
-            JBossSessionBeanMetaData sessionBean = (JBossSessionBeanMetaData) bean;
-            // stateful beans don't have timerservice/timers
-            if (sessionBean.isStateful())
-            {
-               continue;
-            }
-         }
-         // ignore entity and (JBoss specific) @Service beans
-         else if (bean.isEntity() || bean.isService())
-         {
-            continue;
-         }
-         // process
-         String mcBeanName = AUTO_TIMER_MC_BEAN_PREFIX + unit.getName() + "$" + bean.getEjbName();
-         // create the BeanMetadata for the AutoTimerInitializer
-         BeanMetaData bmd = this.createAutoTimerInitializer(mcBeanName, bean);
-         // add it as attachment
-         unit.addAttachment(BeanMetaData.class + ":" + mcBeanName, bmd);
-      }
-   }
-
-   /**
-    * Returns {@link BeanMetaData} for a {@link AutoTimerInitializer} instance
-    * <p>
-    *   The MC bean for {@link AutoTimerInitializer} created by this method will be configured
-    *   to depend on the {@link ControllerState#INSTALLED} state of the MC bean corresponding
-    *   to the {@link EJBContainer}. The EJB container MC bean on which the {@link AutoTimerInitializer}
-    *   will depend, is obtained through {@link JBossEnterpriseBeanMetaData#getContainerName()}. 
-    * </p>  
-    * <p>
-    *   Furthermore, the MC bean for {@link AutoTimerInitializer} will be configured to inject
-    *   the {@link EJBContainer} into the {@link AutoTimerInitializer} instance
-    * </p>
-    * @param mcBeanName The name of the MC bean being created
-    * @param bean Bean metadata
-    * @return
-    */
-   private BeanMetaData createAutoTimerInitializer(String mcBeanName, JBossEnterpriseBeanMetaData bean)
-   {
-      AutoTimerInitializer autoTimerInitializer = new AutoTimerInitializer();
-
-      BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(mcBeanName, autoTimerInitializer.getClass()
-            .getName());
-      builder.setConstructorValue(autoTimerInitializer);
-
-      // add dependency - the AutoTimerInitializer will depend on a INSTALLED state of EJBContainer
-      AbstractInjectionValueMetaData injectMetaData = new AbstractInjectionValueMetaData(bean.getContainerName());
-      injectMetaData.setDependentState(ControllerState.INSTALLED);
-
-      // TODO: Too bad we have to know the field name. Need to do more research on MC to see if we can
-      // add property metadata based on type instead of field name.
-      // Add the injection point in AutoTimerInitializer to inject the EJBContainer
-      builder.addPropertyMetaData("container", injectMetaData);
-
-      // return the BeanMetaData
-      return builder.getBeanMetaData();
-   }
-}

Deleted: projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5/src/main/resources/META-INF/jboss-ejb3-timerservice-deployer-jboss-beans.xml
===================================================================
--- projects/ejb3/trunk/timerservice-deployer/src/main/resources/META-INF/jboss-ejb3-timerservice-deployer-jboss-beans.xml	2010-09-16 06:06:20 UTC (rev 108157)
+++ projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5/src/main/resources/META-INF/jboss-ejb3-timerservice-deployer-jboss-beans.xml	2010-09-16 08:35:42 UTC (rev 108160)
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<deployment xmlns="urn:jboss:bean-deployer:2.0">
-
-    
-    <!-- EJB3.1 timerservice deployer -->
-    <bean name="TimerServiceDeployer" class="org.jboss.ejb3.timerservice.deployer.TimerServiceDeployer"/>
-       
-    
-</deployment>
\ No newline at end of file

Copied: projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5/src/main/resources/META-INF/jboss-ejb3-timerservice-deployer-jboss-beans.xml (from rev 108158, projects/ejb3/trunk/timerservice-deployer/src/main/resources/META-INF/jboss-ejb3-timerservice-deployer-jboss-beans.xml)
===================================================================
--- projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5/src/main/resources/META-INF/jboss-ejb3-timerservice-deployer-jboss-beans.xml	                        (rev 0)
+++ projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-5/src/main/resources/META-INF/jboss-ejb3-timerservice-deployer-jboss-beans.xml	2010-09-16 08:35:42 UTC (rev 108160)
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<deployment xmlns="urn:jboss:bean-deployer:2.0">
+
+
+    <!--  Processes EJB3.1 beans and starts the auto-timers (if any) configured for those beans -->
+    <bean name="AutoTimerInitializer"
+        class="org.jboss.ejb3.timerservice.deployer.AutoTimerInitializer" />
+
+
+</deployment>
\ No newline at end of file



More information about the jboss-cvs-commits mailing list