You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ja...@apache.org on 2011/02/21 16:47:04 UTC

svn commit: r1073032 - /myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/JndiUtils.java

Author: jakobk
Date: Mon Feb 21 15:47:04 2011
New Revision: 1073032

URL: http://svn.apache.org/viewvc?rev=1073032&view=rev
Log:
EXTCDI-134 unified base-config (check if looked up JNDI String value is a class name and create instance automatically)

Modified:
    myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/JndiUtils.java

Modified: myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/JndiUtils.java
URL: http://svn.apache.org/viewvc/myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/JndiUtils.java?rev=1073032&r1=1073031&r2=1073032&view=diff
==============================================================================
--- myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/JndiUtils.java (original)
+++ myfaces/extensions/cdi/trunk/core/impl/src/main/java/org/apache/myfaces/extensions/cdi/core/impl/util/JndiUtils.java Mon Feb 21 15:47:04 2011
@@ -112,12 +112,46 @@ public final class JndiUtils
                     // we have a value and the type fits
                     return (T) lookedUp;
                 }
+                else if (lookedUp instanceof String)
+                {
+                    // lookedUp might be a class name
+                    try
+                    {
+                        Class<?>lookedUpClass = Class.forName((String) lookedUp);
+                        if (expectedClass.isAssignableFrom(lookedUpClass))
+                        {
+                            try
+                            {
+                                return (T) lookedUpClass.newInstance();
+                            }
+                            catch (Exception e)
+                            {
+                                // could not create instance
+                                log.log(Level.SEVERE, "Class " + lookedUpClass + " from JNDI lookup for name "
+                                        + name + " could not be instantiated", e);
+                            }
+                        }
+                        else
+                        {
+                            // lookedUpClass does not extend/implement expectedClass
+                            log.log(Level.SEVERE, "JNDI lookup for key " + name
+                                    + " returned class " + lookedUpClass.getName()
+                                    + " which does not implement/extend the expected class"
+                                    + expectedClass.getName());
+                        }
+                    }
+                    catch (ClassNotFoundException cnfe)
+                    {
+                        // could not find class
+                        log.log(Level.SEVERE, "Could not find Class " + lookedUp
+                                + " from JNDI lookup for name " + name, cnfe);
+                    }
+                }
                 else
                 {
                     // we have a value, but the value does not fit
-                    log.log(Level.SEVERE,
-                            "JNDI lookup for key " + name
-                            + " should return a value of " + expectedClass);
+                    log.log(Level.SEVERE, "JNDI lookup for key " + name + " should return a value of "
+                            + expectedClass + ", but returned " + lookedUp);
                 }
             }