[webbeans-commits] Webbeans SVN: r333 - in ri/trunk/webbeans-ri/src: main/java/org/jboss/webbeans/servlet and 2 other directories.

webbeans-commits at lists.jboss.org webbeans-commits at lists.jboss.org
Thu Nov 20 00:46:31 EST 2008


Author: pete.muir at jboss.org
Date: 2008-11-20 00:46:31 -0500 (Thu, 20 Nov 2008)
New Revision: 333

Modified:
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/Bootstrap.java
   ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/BoostrapTest.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockBootstrap.java
   ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockWebBeanDiscovery.java
Log:
Changes to bootstrap for keeping servlet bootstrap inside ServletLifecycle

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/Bootstrap.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/Bootstrap.java	2008-11-20 03:20:08 UTC (rev 332)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/bootstrap/Bootstrap.java	2008-11-20 05:46:31 UTC (rev 333)
@@ -6,7 +6,6 @@
 
 import java.util.Arrays;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Set;
 
 import org.jboss.webbeans.ManagerImpl;
@@ -21,12 +20,11 @@
 public class Bootstrap
 {
    
-   private LogProvider log = Logging.getLogProvider(Bootstrap.class);
+   public static String WEB_BEAN_DISCOVERY_PROPERTY_NAME = "org.jboss.webbeans.bootstrap.webBeanDiscovery";
    
-   private static String WEB_BEAN_DISCOVERY_PROPERTY_NAME = "org.jboss.webbeans.bootstrap.webBeanDiscovery";
+   private static LogProvider log = Logging.getLogProvider(Bootstrap.class);
    
    private ManagerImpl manager;
-   private DeploymentProperties deploymentProperties;
    
    public Bootstrap()
    {
@@ -36,53 +34,8 @@
    protected Bootstrap(ManagerImpl manager)
    {
       this.manager = manager;
-      this.deploymentProperties = new DeploymentProperties(Thread.currentThread().getContextClassLoader());
    }
    
-   protected List<String> getWebBeanDiscoveryClassNames()
-   {
-      return deploymentProperties.getPropertyValues(WEB_BEAN_DISCOVERY_PROPERTY_NAME);
-   }
-   
-   public void discoverBeans()
-   {
-      WebBeanDiscovery webBeanDiscovery = null;
-      for (String className : getWebBeanDiscoveryClassNames())
-      {
-         Class<WebBeanDiscovery> webBeanDiscoveryClass = null;
-         try
-         {
-            webBeanDiscoveryClass = (Class<WebBeanDiscovery>) Class.forName(className);
-         }
-         catch (ClassNotFoundException e) 
-         {
-            log.debug("Unable to load WebBeanDiscovery provider " + className, e);
-         }
-         catch (NoClassDefFoundError e) {
-            log.warn("Unable to load WebBeanDiscovery provider " + className + " due classDependencyProblem", e);
-         }
-         
-         try
-         {
-            webBeanDiscovery = webBeanDiscoveryClass.newInstance();
-            break;
-         }
-         catch (InstantiationException e)
-         {
-            log.warn("Error creating WebBeanDiscovery provider" + className, e);
-         }
-         catch (IllegalAccessException e)
-         {
-            log.warn("Error creating WebBeanDiscovery provider" + className, e);
-         }
-      }
-      if (webBeanDiscovery == null)
-      {
-         throw new IllegalStateException("No WebBeanDiscovery provider found, you need to implement the org.jboss.webbeans.bootstrap.spi.WebBeanDiscovery interface, and tell the RI to use it by specifying -D" + WEB_BEAN_DISCOVERY_PROPERTY_NAME + "=<classname>");
-      }
-      registerBeans(webBeanDiscovery.discoverWebBeanClasses());
-   }
-   
    /**
     * Register any beans defined by the provided classes with the manager
     */
@@ -130,9 +83,49 @@
             beans.add(producerMethodBean);
             manager.getResolver().addInjectionPoints(producerMethodBean.getInjectionPoints());
          }
-         
+         log.info("Web Bean: " + bean);
       }
       return beans;
    }
+
+   public void boot(WebBeanDiscovery webBeanDiscovery)
+   {
+      log.info("Starting Web Beans RI " + getVersion());
+      if (webBeanDiscovery == null)
+      {
+         throw new IllegalStateException("No WebBeanDiscovery provider found, you need to implement the org.jboss.webbeans.bootstrap.spi.WebBeanDiscovery interface, and tell the RI to use it by specifying -D" + Bootstrap.WEB_BEAN_DISCOVERY_PROPERTY_NAME + "=<classname>");
+      }
+      registerBeans(webBeanDiscovery.discoverWebBeanClasses());
+   }
    
+   public static String getVersion()
+   {
+      Package pkg = Bootstrap.class.getPackage();
+      return pkg != null ? pkg.getImplementationVersion() : null;      
+   }
+   
+   
+   public static Set<Class<? extends WebBeanDiscovery>> getWebBeanDiscoveryClasses()
+   {
+      Set<Class<? extends WebBeanDiscovery>> webBeanDiscoveryClasses = new HashSet<Class<? extends WebBeanDiscovery>>();
+      for (String className : new DeploymentProperties(Thread.currentThread().getContextClassLoader()).getPropertyValues(WEB_BEAN_DISCOVERY_PROPERTY_NAME))
+      {
+         Class<WebBeanDiscovery> webBeanDiscoveryClass = null;
+         try
+         {
+            webBeanDiscoveryClasses.add((Class<WebBeanDiscovery>) Class.forName(className));
+         }
+         catch (ClassNotFoundException e) 
+         {
+            log.debug("Unable to load WebBeanDiscovery provider " + className, e);
+         }
+         catch (NoClassDefFoundError e) {
+            log.warn("Unable to load WebBeanDiscovery provider " + className + " due classDependencyProblem", e);
+         }
+      }
+      return webBeanDiscoveryClasses;
+   }
+   
+   
+   
 }

Modified: ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java
===================================================================
--- ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java	2008-11-20 03:20:08 UTC (rev 332)
+++ ri/trunk/webbeans-ri/src/main/java/org/jboss/webbeans/servlet/ServletLifecycle.java	2008-11-20 05:46:31 UTC (rev 333)
@@ -1,23 +1,36 @@
 package org.jboss.webbeans.servlet;
 
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+
 import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpSession;
 import javax.webbeans.SessionScoped;
 
 import org.jboss.webbeans.ManagerImpl;
+import org.jboss.webbeans.bootstrap.Bootstrap;
+import org.jboss.webbeans.bootstrap.spi.WebBeanDiscovery;
 import org.jboss.webbeans.contexts.SessionContext;
+import org.jboss.webbeans.log.LogProvider;
+import org.jboss.webbeans.log.Logging;
 import org.jboss.webbeans.util.JNDI;
+import org.jboss.webbeans.util.Reflections;
 
 public class ServletLifecycle
 {
+   
+   private static LogProvider log = Logging.getLogProvider(ServletLifecycle.class);
+   
    private static final String MANAGER_JNDI_KEY = "java:comp/Manager";
    
    private static ServletContext servletContext;
    
    public static void beginApplication(ServletContext context)
    {
-      servletContext = context;  
+      servletContext = context;
+      Bootstrap bootstrap = new Bootstrap();
+      bootstrap.boot(getWebBeanDiscovery());
    }
    
    public static void endApplication() {
@@ -45,4 +58,40 @@
       return servletContext;
    }
    
+   // TODO move some of this bootstrap for reuse outside Servlet
+   private static WebBeanDiscovery getWebBeanDiscovery()
+   {
+      WebBeanDiscovery webBeanDiscovery = null;
+
+      for (Class<? extends WebBeanDiscovery> clazz : Bootstrap.getWebBeanDiscoveryClasses())
+      {
+         Constructor<? extends WebBeanDiscovery> constructor = Reflections.getConstructor(clazz, ServletContext.class);
+         if (constructor != null)
+         {
+            try
+            {
+               webBeanDiscovery = constructor.newInstance(servletContext);
+               break;
+            }
+            catch (InstantiationException e)
+            {
+               log.warn("Error creating WebBeanDiscovery provider" + clazz.getName(), e);
+            }
+            catch (IllegalAccessException e)
+            {
+               log.warn("Error creating WebBeanDiscovery provider" + clazz.getName(), e);
+            }
+            catch (IllegalArgumentException e)
+            {
+               log.warn("Error creating WebBeanDiscovery provider" + clazz.getName(), e);
+            }
+            catch (InvocationTargetException e)
+            {
+               log.warn("Error creating WebBeanDiscovery provider" + clazz.getName(), e);
+            }
+         }
+      }
+      return webBeanDiscovery;
+   }
+   
 }

Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/BoostrapTest.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/BoostrapTest.java	2008-11-20 03:20:08 UTC (rev 332)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/BoostrapTest.java	2008-11-20 05:46:31 UTC (rev 333)
@@ -1,10 +1,8 @@
 package org.jboss.webbeans.test;
 
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -25,7 +23,6 @@
 import org.jboss.webbeans.test.beans.Tiger;
 import org.jboss.webbeans.test.beans.Tuna;
 import org.jboss.webbeans.test.ejb.model.valid.Hound;
-import org.jboss.webbeans.test.mock.MockBootstrap;
 import org.jboss.webbeans.test.mock.MockWebBeanDiscovery;
 import org.testng.annotations.Test;
 
@@ -187,24 +184,13 @@
    @Test(groups="bootstrap", expectedExceptions=IllegalStateException.class)
    public void testDiscoverFails()
    {
-      bootstrap = new MockBootstrap(manager)
-      {
-         
-         @Override
-         protected List<String> getWebBeanDiscoveryClassNames()
-         {
-            return new ArrayList<String>();
-         }
-         
-      };
-      bootstrap.discoverBeans();
+      bootstrap.boot(null);
    }
    
    @Test(groups="bootstrap")
    public void testDiscover()
    {
-      MockWebBeanDiscovery.webBeanClasses = new HashSet<Class<?>>(Arrays.asList(Hound.class, Elephant.class, Panther.class, Tiger.class, Tuna.class, Salmon.class, SeaBass.class, Sole.class));
-      bootstrap.discoverBeans();
+      bootstrap.boot(new MockWebBeanDiscovery(new HashSet<Class<?>>(Arrays.asList(Hound.class, Elephant.class, Panther.class, Tiger.class, Tuna.class, Salmon.class, SeaBass.class, Sole.class)), null, null));
       
       assert manager.getBeans().size() == 9;
       Map<Class<?>, Bean<?>> classes = new HashMap<Class<?>, Bean<?>>();

Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockBootstrap.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockBootstrap.java	2008-11-20 03:20:08 UTC (rev 332)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockBootstrap.java	2008-11-20 05:46:31 UTC (rev 333)
@@ -1,22 +1,11 @@
 package org.jboss.webbeans.test.mock;
 
-import java.util.Arrays;
-import java.util.List;
-
 import org.jboss.webbeans.ManagerImpl;
 import org.jboss.webbeans.bootstrap.Bootstrap;
 
 public class MockBootstrap extends Bootstrap
-{
-
-   private static final List<String> MOCK_WEB_BEAN_DISCOVERY_CLASS_NAMES = Arrays.asList(MockWebBeanDiscovery.class.getName()); 
+{ 
    
-   @Override
-   protected List<String> getWebBeanDiscoveryClassNames()
-   {
-      return MOCK_WEB_BEAN_DISCOVERY_CLASS_NAMES;
-   }
-   
    public MockBootstrap(ManagerImpl manager)
    {
       super(manager);

Modified: ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockWebBeanDiscovery.java
===================================================================
--- ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockWebBeanDiscovery.java	2008-11-20 03:20:08 UTC (rev 332)
+++ ri/trunk/webbeans-ri/src/test/java/org/jboss/webbeans/test/mock/MockWebBeanDiscovery.java	2008-11-20 05:46:31 UTC (rev 333)
@@ -12,12 +12,20 @@
 public class MockWebBeanDiscovery implements WebBeanDiscovery
 {
    
-   public static Set<Class<?>> webBeanClasses = new HashSet<Class<?>>();
+   private Set<Class<?>> webBeanClasses = new HashSet<Class<?>>();
 
-   public static Set<URL> webBeansXmlFiles = new HashSet<URL>();
+   private Set<URL> webBeansXmlFiles = new HashSet<URL>();
    
-   public static Map<Class<?>, EjbDescriptor<?>> ejbs = new HashMap<Class<?>, EjbDescriptor<?>>();
+   private Map<Class<?>, EjbDescriptor<?>> ejbs = new HashMap<Class<?>, EjbDescriptor<?>>();
    
+   public MockWebBeanDiscovery(Set<Class<?>> webBeanClasses, Set<URL> webBeansXmlFiles, Map<Class<?>, EjbDescriptor<?>> ejbs)
+   {
+      super();
+      this.webBeanClasses = webBeanClasses;
+      this.webBeansXmlFiles = webBeansXmlFiles;
+      this.ejbs = ejbs;
+   }
+
    public Iterable<Class<?>> discoverWebBeanClasses()
    {
       return webBeanClasses;




More information about the weld-commits mailing list