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

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Mon Jun 21 08:15:04 EDT 2010


Author: jaikiran
Date: 2010-06-21 08:15:03 -0400 (Mon, 21 Jun 2010)
New Revision: 106197

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

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

Deleted: projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-2/pom.xml
===================================================================
--- projects/ejb3/trunk/timerservice-deployer/pom.xml	2010-06-14 06:35:03 UTC (rev 106024)
+++ projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-2/pom.xml	2010-06-21 12:15:03 UTC (rev 106197)
@@ -1,164 +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">
-
-	<parent>
-		<groupId>org.jboss</groupId>
-		<artifactId>jboss-parent</artifactId>
-		<version>5</version>
-	</parent>
-    
-    
-    <!-- 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>
-    
-    
-    <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.1</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-1</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-2/pom.xml (from rev 106196, projects/ejb3/trunk/timerservice-deployer/pom.xml)
===================================================================
--- projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-2/pom.xml	                        (rev 0)
+++ projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-2/pom.xml	2010-06-21 12:15:03 UTC (rev 106197)
@@ -0,0 +1,172 @@
+<?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-2</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-2</connection>
+		<developerConnection>scm:svn:https://svn.jboss.org/repos/jbossas/projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-2</developerConnection>
+		<url>http://anonsvn.jboss.org/repos/jbossas/projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-2</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>	

Deleted: projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-2/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-06-14 06:35:03 UTC (rev 106024)
+++ projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-2/src/main/java/org/jboss/ejb3/timerservice/deployer/AutoTimerInitializer.java	2010-06-21 12:15:03 UTC (rev 106197)
@@ -1,127 +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.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.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.TimerMetaData;
-
-/**
- * TimerServiceBootstrap
- *
- * @author Jaikiran Pai
- * @version $Revision: $
- */
-public class AutoTimerInitializer
-{
-   private EJBContainer container;
-
-   public AutoTimerInitializer()
-   {
-
-   }
-
-   public AutoTimerInitializer(EJBContainer container)
-   {
-      this.container = container;
-   }
-
-   public void setContainer(EJBContainer container)
-   {
-      this.container = container;
-   }
-
-   public EJBContainer getContainer()
-   {
-      return this.container;
-   }
-
-   @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();
-      if (enterpriseBeanMetaData.getJBossMetaData().isEJB31() == false)
-      {
-         return;
-      }
-      List<TimerMetaData> autoTimersMetaData = null;
-      if (enterpriseBeanMetaData.isSession())
-      {
-         JBossSessionBean31MetaData sessionBean = (JBossSessionBean31MetaData) enterpriseBeanMetaData;
-         if (sessionBean.isStateful())
-         {
-            return;
-         }
-         autoTimersMetaData = sessionBean.getTimers();
-      }
-      else if (enterpriseBeanMetaData.isMessageDriven())
-      {
-         JBossMessageDrivenBean31MetaData mdb = (JBossMessageDrivenBean31MetaData) enterpriseBeanMetaData;
-         autoTimersMetaData = mdb.getTimers();
-      }
-
-      if (autoTimersMetaData == null)
-      {
-         return;
-      }
-      TimerService timerService = this.container.getTimerService();
-
-      if (timerService instanceof org.jboss.ejb3.timerservice.extension.TimerService == false)
-      {
-         // can't do anything about this
-         return;
-      }
-      org.jboss.ejb3.timerservice.extension.TimerService ejb31TimerService = (org.jboss.ejb3.timerservice.extension.TimerService) timerService;
-      for (TimerMetaData autoTimerMetaData : autoTimersMetaData)
-      {
-         TimerConfig timerConfig = new TimerConfig();
-         timerConfig.setPersistent(autoTimerMetaData.isPersistent());
-         timerConfig.setInfo(autoTimerMetaData.getInfo());
-
-         String timeoutMethodName = autoTimerMetaData.getTimeoutMethod().getMethodName();
-         MethodParametersMetaData methodParams = autoTimerMetaData.getTimeoutMethod().getMethodParams();
-         String[] timeoutMethodParams = null;
-         if (methodParams != null)
-         {
-            timeoutMethodParams = methodParams.toArray(new String[methodParams.size()]);
-         }
-         ejb31TimerService.getAutoTimer(autoTimerMetaData.getScheduleExpression(), timerConfig, timeoutMethodName,
-               timeoutMethodParams);
-      }
-
-   }
-
-}

Copied: projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-2/src/main/java/org/jboss/ejb3/timerservice/deployer/AutoTimerInitializer.java (from rev 106195, 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-2/src/main/java/org/jboss/ejb3/timerservice/deployer/AutoTimerInitializer.java	                        (rev 0)
+++ projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-2/src/main/java/org/jboss/ejb3/timerservice/deployer/AutoTimerInitializer.java	2010-06-21 12:15:03 UTC (rev 106197)
@@ -0,0 +1,234 @@
+/*
+ * 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.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.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())
+      {
+         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())
+      {
+         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());
+         // get hold of the timeout method for this auto-timer
+         Method timeoutMethod = this.getTimeoutMethod(autoTimerMetaData.getTimeoutMethod(), this.container
+               .getBeanClass());
+         // 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();
+      // load the method param classes
+      Class<?>[] timeoutMethodParamTypes = new Class<?>[]
+      {};
+      if (timeoutMethodParams != null)
+      {
+         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;
+         }
+      }
+      // now start looking for the method
+      Method[] methods = beanClass.getMethods();
+      for (Method method : methods)
+      {
+         if (method.getName().equals(timeoutMethodName))
+         {
+            Class<?>[] methodParamTypes = method.getParameterTypes();
+            // param length doesn't match
+            if (timeoutMethodParamTypes.length != methodParamTypes.length)
+            {
+               continue;
+            }
+            for (int i = 0; i < methodParamTypes.length; i++)
+            {
+               // param type doesn't match
+               if (timeoutMethodParamTypes[i].equals(methodParamTypes[i]) == false)
+               {
+                  continue;
+               }
+            }
+            // match found
+            return method;
+         }
+      }
+      // no match found
+      return null;
+   }
+
+}

Deleted: projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-2/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-06-14 06:35:03 UTC (rev 106024)
+++ projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-2/src/main/java/org/jboss/ejb3/timerservice/deployer/TimerServiceDeployer.java	2010-06-21 12:15:03 UTC (rev 106197)
@@ -1,124 +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.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;
-
-/**
- * TimerServiceDeployer
- *
- * @author Jaikiran Pai
- * @version $Revision: $
- */
-public class TimerServiceDeployer extends AbstractDeployer
-{
-
-   /**
-    * Logger
-    */
-   private Logger logger = Logger.getLogger(TimerServiceDeployer.class);
-   
-   private static final String MC_BEAN_PREFIX = "auto-timer-initializer:";
-   
-   public TimerServiceDeployer()
-   {
-      setStage(DeploymentStages.REAL);
-      setInput(JBossMetaData.class);
-      addInput(AttachmentNames.PROCESSED_METADATA);
-      // we deploy MC beans
-      addOutput(BeanMetaData.class);
-   }
-
-   @Override
-   public void deploy(DeploymentUnit unit) throws DeploymentException
-   {
-      if (logger.isTraceEnabled())
-      {
-         logger.trace("Deploying unit " + unit.getName());
-      }
-      // get processed metadata
-      JBossMetaData metaData = unit.getAttachment(AttachmentNames.PROCESSED_METADATA, JBossMetaData.class);
-      if (metaData == null)
-      {
-         if (logger.isTraceEnabled())
-            logger.trace("No JBossMetadata for unit : " + unit.getName());
-         return;
-      }
-      if (metaData.isEJB3x() == false)
-      {
-         return;
-      }
-      // work on the ejbs
-      JBossEnterpriseBeansMetaData beans = metaData.getEnterpriseBeans();
-      for (JBossEnterpriseBeanMetaData bean : beans)
-      {
-         if (bean.isSession())
-         {
-            JBossSessionBeanMetaData sessionBean = (JBossSessionBeanMetaData) bean;
-            if (sessionBean.isStateful())
-            {
-               continue;
-            }
-         }
-         else if (bean.isEntity() || bean.isService())
-         {
-            continue;
-         }
-         // process
-         String mcBeanName = MC_BEAN_PREFIX + unit.getName() + "$" + bean.getEjbName();
-         BeanMetaData bmd = this.createAutoTimerInitializer(mcBeanName, bean);
-         unit.addAttachment(BeanMetaData.class + ":" + mcBeanName, bmd);
-      }
-   }
-
-   private BeanMetaData createAutoTimerInitializer(String mcBeanName, JBossEnterpriseBeanMetaData bean)
-   {
-      AutoTimerInitializer autoTimerInitializer = new AutoTimerInitializer();
-      
-      BeanMetaDataBuilder builder = BeanMetaDataBuilder.createBuilder(mcBeanName, autoTimerInitializer.getClass().getName());
-      builder.setConstructorValue(autoTimerInitializer);
-
-      // add dependency
-      AbstractInjectionValueMetaData injectMetaData = new AbstractInjectionValueMetaData(bean.getContainerName());
-      injectMetaData.setDependentState(ControllerState.INSTALLED);
-
-      // 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.
-      builder.addPropertyMetaData("container", injectMetaData);
-
-      return builder.getBeanMetaData();
-   }
-}

Copied: projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-2/src/main/java/org/jboss/ejb3/timerservice/deployer/TimerServiceDeployer.java (from rev 106195, projects/ejb3/trunk/timerservice-deployer/src/main/java/org/jboss/ejb3/timerservice/deployer/TimerServiceDeployer.java)
===================================================================
--- projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-2/src/main/java/org/jboss/ejb3/timerservice/deployer/TimerServiceDeployer.java	                        (rev 0)
+++ projects/ejb3/tags/jboss-ejb3-timerservice-deployer-1.0.0-alpha-2/src/main/java/org/jboss/ejb3/timerservice/deployer/TimerServiceDeployer.java	2010-06-21 12:15:03 UTC (rev 106197)
@@ -0,0 +1,162 @@
+/*
+ * 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();
+   }
+}



More information about the jboss-cvs-commits mailing list