[jboss-cvs] JBossAS SVN: r106151 - in projects/ejb3/trunk/timerservice-naming/src: test/java/org/jboss/ejb3/timerservice/naming/test/binder and 1 other directory.

jboss-cvs-commits at lists.jboss.org jboss-cvs-commits at lists.jboss.org
Fri Jun 18 08:03:48 EDT 2010


Author: jaikiran
Date: 2010-06-18 08:03:47 -0400 (Fri, 18 Jun 2010)
New Revision: 106151

Added:
   projects/ejb3/trunk/timerservice-naming/src/test/java/org/jboss/ejb3/timerservice/naming/test/binder/DummyBeanManager.java
Modified:
   projects/ejb3/trunk/timerservice-naming/src/main/java/org/jboss/ejb3/timerservice/naming/TimerServiceObjectFactory.java
   projects/ejb3/trunk/timerservice-naming/src/test/java/org/jboss/ejb3/timerservice/naming/test/binder/DummyEJBContext.java
Log:
EJBTHREE-2113 Use BeanManager to get timerservice, instead of using the EJBContext.getTimerService (which isn't allowed to be used during injection, as per spec)

Modified: projects/ejb3/trunk/timerservice-naming/src/main/java/org/jboss/ejb3/timerservice/naming/TimerServiceObjectFactory.java
===================================================================
--- projects/ejb3/trunk/timerservice-naming/src/main/java/org/jboss/ejb3/timerservice/naming/TimerServiceObjectFactory.java	2010-06-18 11:48:12 UTC (rev 106150)
+++ projects/ejb3/trunk/timerservice-naming/src/main/java/org/jboss/ejb3/timerservice/naming/TimerServiceObjectFactory.java	2010-06-18 12:03:47 UTC (rev 106151)
@@ -23,13 +23,14 @@
 
 import java.util.Hashtable;
 
-import javax.ejb.EJBContext;
 import javax.ejb.TimerService;
 import javax.naming.Context;
 import javax.naming.Name;
 import javax.naming.spi.ObjectFactory;
 
 import org.jboss.ejb3.context.CurrentInvocationContext;
+import org.jboss.ejb3.context.spi.BeanManager;
+import org.jboss.ejb3.context.spi.EJBContext;
 
 
 /**
@@ -51,8 +52,17 @@
    {
       // get hold of EJBContext
       EJBContext currentEJBContext = CurrentInvocationContext.get().getEJBContext();
-      // and return the timerservice of that context
-      return currentEJBContext.getTimerService();
+      // now get hold of the BeanManager from the EJBContext.
+      // Note that we could have directly used EJBContext.getTimerService(), but that
+      // won't work in all cases, because the EJBContext.getTimerService() is an user API
+      // and the spec mandates that this API throw an exception when invoked during injection.
+      // Internal implementation (like injectors) of EJB3 will require to get hold of the
+      // TimerService during injection (to actually do the injection). Hence we bypass the user
+      // API and instead use the BeanManager.getTimerService() which doesn't have a restriction
+      // on using it during injection.
+      BeanManager beanManager =  currentEJBContext.getManager();
+      // now finally get hold of the timerservice
+      return beanManager.getTimerService();
    }
 
 }

Added: projects/ejb3/trunk/timerservice-naming/src/test/java/org/jboss/ejb3/timerservice/naming/test/binder/DummyBeanManager.java
===================================================================
--- projects/ejb3/trunk/timerservice-naming/src/test/java/org/jboss/ejb3/timerservice/naming/test/binder/DummyBeanManager.java	                        (rev 0)
+++ projects/ejb3/trunk/timerservice-naming/src/test/java/org/jboss/ejb3/timerservice/naming/test/binder/DummyBeanManager.java	2010-06-18 12:03:47 UTC (rev 106151)
@@ -0,0 +1,96 @@
+/*
+ * 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.naming.test.binder;
+
+import java.security.Principal;
+
+import javax.ejb.EJBHome;
+import javax.ejb.EJBLocalHome;
+import javax.ejb.TimerService;
+import javax.transaction.UserTransaction;
+
+import org.jboss.ejb3.context.spi.BeanManager;
+
+/**
+ * DummyBeanManager
+ *
+ * @author Jaikiran Pai
+ * @version $Revision: $
+ */
+public class DummyBeanManager implements BeanManager
+{
+
+   @Override
+   public EJBHome getEJBHome() throws IllegalStateException
+   {
+      // TODO Auto-generated method stub
+      throw new RuntimeException("NYI");
+   }
+
+   @Override
+   public EJBLocalHome getEJBLocalHome() throws IllegalStateException
+   {
+      // TODO Auto-generated method stub
+      throw new RuntimeException("NYI");
+   }
+
+   @Override
+   public boolean getRollbackOnly() throws IllegalStateException
+   {
+      // TODO Auto-generated method stub
+      throw new RuntimeException("NYI");
+   }
+
+   @Override
+   public UserTransaction getUserTransaction() throws IllegalStateException
+   {
+      // TODO Auto-generated method stub
+      throw new RuntimeException("NYI");
+   }
+
+   @Override
+   public boolean isCallerInRole(Principal callerPrincipal, String roleName) throws IllegalStateException
+   {
+      // TODO Auto-generated method stub
+      throw new RuntimeException("NYI");
+   }
+
+   @Override
+   public Object lookup(String name) throws IllegalArgumentException
+   {
+      // TODO Auto-generated method stub
+      throw new RuntimeException("NYI");
+   }
+
+   @Override
+   public void setRollbackOnly() throws IllegalStateException
+   {
+      // TODO Auto-generated method stub
+      throw new RuntimeException("NYI");
+   }
+
+   @Override
+   public TimerService getTimerService() throws IllegalStateException
+   {
+      return new DummyTimerService();
+   }
+}

Modified: projects/ejb3/trunk/timerservice-naming/src/test/java/org/jboss/ejb3/timerservice/naming/test/binder/DummyEJBContext.java
===================================================================
--- projects/ejb3/trunk/timerservice-naming/src/test/java/org/jboss/ejb3/timerservice/naming/test/binder/DummyEJBContext.java	2010-06-18 11:48:12 UTC (rev 106150)
+++ projects/ejb3/trunk/timerservice-naming/src/test/java/org/jboss/ejb3/timerservice/naming/test/binder/DummyEJBContext.java	2010-06-18 12:03:47 UTC (rev 106151)
@@ -135,8 +135,7 @@
    @Override
    public BeanManager getManager()
    {
-      // TODO Auto-generated method stub
-      return null;
+      return new DummyBeanManager();
    }
 
    @Override



More information about the jboss-cvs-commits mailing list