You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@deltaspike.apache.org by gp...@apache.org on 2012/01/09 05:29:29 UTC

[2/2] git commit: DELTASPIKE-17 improved javadoc

DELTASPIKE-17 improved javadoc


Project: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/commit/d6f18da6
Tree: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/tree/d6f18da6
Diff: http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/diff/d6f18da6

Branch: refs/heads/master
Commit: d6f18da6c01eab0922c69802860049a1a19622ba
Parents: 8ddab0c
Author: gpetracek <gp...@apache.org>
Authored: Mon Jan 9 04:57:20 2012 +0100
Committer: gpetracek <gp...@apache.org>
Committed: Mon Jan 9 04:57:20 2012 +0100

----------------------------------------------------------------------
 .../core/api/provider/BeanManagerProvider.java     |   88 +++++++++------
 1 files changed, 51 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-deltaspike/blob/d6f18da6/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
----------------------------------------------------------------------
diff --git a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
index 587a942..f80faa9 100644
--- a/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
+++ b/deltaspike/core/api/src/main/java/org/apache/deltaspike/core/api/provider/BeanManagerProvider.java
@@ -32,11 +32,14 @@ import org.apache.deltaspike.core.api.util.ClassUtils;
 
 
 /**
- * <p>This class provides access to the BeanManager
- * by registring the current BeanManager in an extension and
- * making it available via a singleton factory</p>
+ * <p>This class provides access to the {@link BeanManager}
+ * by registering the current {@link BeanManager} in an extension and
+ * making it available via a singleton factory for the current application.</p>
  * <p>This is really handy if you like to access CDI functionality
  * from places where no injection is available.</p>
+ * <p>If a simple but manual bean-lookup is needed, it's easier to use the {@link BeanProvider}.</p>
+ *
+ * <p>As soon as an application shuts down, the reference to the {@link BeanManager} will be removed.<p>
  *
  * <p>Usage:<p/>
  * <pre>
@@ -50,7 +53,10 @@ public class BeanManagerProvider implements Extension
     private volatile Map<ClassLoader, BeanManager> bms = new ConcurrentHashMap<ClassLoader, BeanManager>();
 
     /**
-     * Returns if the {@link BeanManagerProvider} has been initialized
+     * Returns if the {@link BeanManagerProvider} has been initialized.
+     * Usually it isn't needed to call this method in application code.
+     * It's e.g. useful for other frameworks to check if DeltaSpike and the CDI container in general have been started.
+     *
      * @return true if the bean-manager-provider is ready to be used
      */
     public static boolean isActive()
@@ -59,33 +65,37 @@ public class BeanManagerProvider implements Extension
     }
 
     /**
-     * Singleton accessor
+     * Allows to get the current provider instance which provides access to the current {@link BeanManager}
+     *
+     * @throws IllegalStateException if the {@link BeanManagerProvider} isn't ready to be used.
+     * That's the case if the environment isn't configured properly and therefore the {@link AfterBeanDiscovery}
+     * hasn't be called before this method gets called.
      * @return the singleton BeanManagerProvider
      */
     public static BeanManagerProvider getInstance()
     {
         if(bmp == null)
         {
-            //X TODO
-            // workaround for Mojarra (in combination with OWB and a custom WebBeansConfigurationListener and a custom
-            // StartupBroadcaster for bootstrapping CDI)
+            //X TODO Java-EE5 support needs to be discussed
+            // workaround for some Java-EE5 environments in combination with a special
+            // StartupBroadcaster for bootstrapping CDI
+
             // CodiStartupBroadcaster.broadcastStartup();
             // here bmp might not be null (depends on the broadcasters)
         }
         if(bmp == null)
         {
-            throw new IllegalStateException("no " + BeanManagerProvider.class.getName() + " in place! " +
+            throw new IllegalStateException("No " + BeanManagerProvider.class.getName() + " in place! " +
                 "Please ensure that you configured the CDI implementation of your choice properly. " +
-                "If your setup is correct, please clear all caches and compiled artifacts. " +
-                "If there is still a problem, try one of the controlled bootstrapping add-ons for the CDI " +
-                    "implementation you are using.");
+                "If your setup is correct, please clear all caches and compiled artifacts.");
         }
         return bmp;
     }
 
 
     /**
-     * The active {@link BeanManager} for the current {@link ClassLoader}
+     * The active {@link BeanManager} for the current application (/{@link ClassLoader})
+     *
      * @return the current bean-manager
      */
     public BeanManager getBeanManager()
@@ -108,30 +118,10 @@ public class BeanManagerProvider implements Extension
 
 
     /**
-     * Get the BeanManager from the JNDI registry.
+     * It basically doesn't matter which of the system events we use,
+     * but basically we use the {@link AfterBeanDiscovery} event since it allows to use the
+     * {@link BeanManagerProvider} for all events which occur after the {@link AfterBeanDiscovery} event.
      *
-     * Workaround for jboss 6 (EXTCDI-74)
-     * {@link #setBeanManager(javax.enterprise.inject.spi.AfterBeanDiscovery, javax.enterprise.inject.spi.BeanManager)}
-     * is called in context of a different classloader
-     *
-     * @return current {@link javax.enterprise.inject.spi.BeanManager} which is provided via jndi
-     */
-    private BeanManager resolveBeanManagerViaJndi()
-    {
-        try
-        {
-            return (BeanManager) new InitialContext().lookup("java:comp/BeanManager");
-        }
-        catch (NamingException e)
-        {
-            //workaround didn't work -> force NPE
-            return null;
-        }
-    }
-
-    /**
-     * It basiscally doesn't matter which of the system events we use,
-     * but basically we
      * @param afterBeanDiscovery event which we don't actually use ;)
      * @param beanManager the BeanManager we store and make available.
      */
@@ -142,7 +132,8 @@ public class BeanManagerProvider implements Extension
         ClassLoader cl = ClassUtils.getClassLoader(null);
         bmpFirst.bms.put(cl, beanManager);
 
-        //X TODO os890: CodiStartupBroadcaster.broadcastStartup();
+        //X TODO Java-EE5 support needs to be discussed
+        //CodiStartupBroadcaster.broadcastStartup();
     }
 
     /**
@@ -155,8 +146,31 @@ public class BeanManagerProvider implements Extension
     }
 
     /**
+     * Get the BeanManager from the JNDI registry.
+     *
+     * Workaround for JBossAS 6 (see EXTCDI-74)
+     * {@link #setBeanManager(javax.enterprise.inject.spi.AfterBeanDiscovery, javax.enterprise.inject.spi.BeanManager)}
+     * is called in context of a different {@link ClassLoader}
+     *
+     * @return current {@link javax.enterprise.inject.spi.BeanManager} which is provided via JNDI
+     */
+    private BeanManager resolveBeanManagerViaJndi()
+    {
+        try
+        {
+            return (BeanManager) new InitialContext().lookup("java:comp/BeanManager");
+        }
+        catch (NamingException e)
+        {
+            //workaround didn't work -> force NPE
+            return null;
+        }
+    }
+
+    /**
      * This function exists to prevent findbugs to complain about
      * setting a static member from a non-static function.
+     *
      * @param beanManagerProvider the bean-manager-provider which should be used if there isn't an existing provider
      * @return the first BeanManagerProvider
      */