[jboss-svn-commits] JBL Code SVN: r19744 - in labs/jbosslabs/labs-3.0-build/integration/seam-guice: src/main/java/org/jboss/labs/injection/seam and 1 other directory.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Apr 28 12:34:29 EDT 2008


Author: wrzep
Date: 2008-04-28 12:34:29 -0400 (Mon, 28 Apr 2008)
New Revision: 19744

Removed:
   labs/jbosslabs/labs-3.0-build/integration/seam-guice/src/main/java/org/jboss/labs/injection/seam/EmptyGuiceModule.java
Modified:
   labs/jbosslabs/labs-3.0-build/integration/seam-guice/pom.xml
   labs/jbosslabs/labs-3.0-build/integration/seam-guice/src/main/java/org/jboss/labs/injection/seam/Guice.java
   labs/jbosslabs/labs-3.0-build/integration/seam-guice/src/main/java/org/jboss/labs/injection/seam/LabsGuiceInterceptor.java
Log:
JBLAB-928, Guice&Seam integration ctnd

Modified: labs/jbosslabs/labs-3.0-build/integration/seam-guice/pom.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/seam-guice/pom.xml	2008-04-28 12:51:24 UTC (rev 19743)
+++ labs/jbosslabs/labs-3.0-build/integration/seam-guice/pom.xml	2008-04-28 16:34:29 UTC (rev 19744)
@@ -16,12 +16,6 @@
     <finalName>seam-guice</finalName>
   </build>
   <dependencies>
-     <dependency>
-	  <groupId>org.jboss.labs</groupId>
-	  <artifactId>api</artifactId>
-      <version>1.0</version>
-      <scope>provided</scope>
-    </dependency>
     <dependency>
 	  <groupId>org.jboss.seam</groupId>
 	  <artifactId>jboss-seam</artifactId>

Deleted: labs/jbosslabs/labs-3.0-build/integration/seam-guice/src/main/java/org/jboss/labs/injection/seam/EmptyGuiceModule.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/seam-guice/src/main/java/org/jboss/labs/injection/seam/EmptyGuiceModule.java	2008-04-28 12:51:24 UTC (rev 19743)
+++ labs/jbosslabs/labs-3.0-build/integration/seam-guice/src/main/java/org/jboss/labs/injection/seam/EmptyGuiceModule.java	2008-04-28 16:34:29 UTC (rev 19744)
@@ -1,36 +0,0 @@
-/*
-* JBoss Labs. http://labs.jboss.com/jbosslabs
-*
-* Copyright © 2008  Red Hat Middleware, LLC. All rights reserved.
-*
-* This copyrighted material is made available to anyone wishing to use,
-* modify, copy, or redistribute it subject to the terms and conditions
-* of the GNU Lesser General Public License, v. 2.1.
-*
-* This program is distributed in the hope that it will be useful,
-* but WITHOUT A 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, v.2.1 along with this distribution; if not, write to the Free
-* Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-* 02110-1301, USA.
-*
-* Red Hat Author(s): Bob McWhirter, Przemyslaw Dej, Ryszard Kozmik,
-*     Tomasz Szymanski, Adam Warski, Pawel Wrzeszcz
-*/
-
-package org.jboss.labs.injection.seam;
-
-import com.google.inject.Module;
-import com.google.inject.Binder;
-
-/**
- * @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
- */
-
-public class EmptyGuiceModule implements Module
-{
-    public void configure(Binder binder) {}
-}
\ No newline at end of file

Modified: labs/jbosslabs/labs-3.0-build/integration/seam-guice/src/main/java/org/jboss/labs/injection/seam/Guice.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/seam-guice/src/main/java/org/jboss/labs/injection/seam/Guice.java	2008-04-28 12:51:24 UTC (rev 19743)
+++ labs/jbosslabs/labs-3.0-build/integration/seam-guice/src/main/java/org/jboss/labs/injection/seam/Guice.java	2008-04-28 16:34:29 UTC (rev 19744)
@@ -31,6 +31,8 @@
 import java.lang.annotation.Target;
 
 /**
+ * Google Guice support. Allows use of Guice injection inside Seam component.
+ *
  * @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
  */
 @Target(TYPE)
@@ -38,6 +40,8 @@
 @Interceptors(LabsGuiceInterceptor.class)
 public @interface Guice
 {
-    String value() default "";
-    Class module() default EmptyGuiceModule.class;
+    /**
+     * Name of the Guice module component.
+     */
+    String value() default "org.jboss.labs.injection.seam.guiceModule";
 }

Modified: labs/jbosslabs/labs-3.0-build/integration/seam-guice/src/main/java/org/jboss/labs/injection/seam/LabsGuiceInterceptor.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/integration/seam-guice/src/main/java/org/jboss/labs/injection/seam/LabsGuiceInterceptor.java	2008-04-28 12:51:24 UTC (rev 19743)
+++ labs/jbosslabs/labs-3.0-build/integration/seam-guice/src/main/java/org/jboss/labs/injection/seam/LabsGuiceInterceptor.java	2008-04-28 16:34:29 UTC (rev 19744)
@@ -26,6 +26,7 @@
 import com.google.inject.Injector;
 import com.google.inject.Module;
 import org.jboss.seam.Component;
+import org.jboss.seam.core.Expressions;
 import org.jboss.seam.annotations.intercept.AroundInvoke;
 import org.jboss.seam.annotations.intercept.Interceptor;
 import org.jboss.seam.intercept.AbstractInterceptor;
@@ -36,25 +37,24 @@
 import java.util.concurrent.ConcurrentHashMap;
 
 /**
+ * Triggers Guice injection on a Seam component.
+ *
  * @author Pawel Wrzeszcz (pwrzeszcz [at] jboss . org)
  */
 @Interceptor
 public class LabsGuiceInterceptor extends AbstractInterceptor
 {
-    private final static Log log = Logging.getLog(LabsGuiceInterceptor.class);
+    private static final Log log = Logging.getLog(LabsGuiceInterceptor.class);
     
     private static final long serialVersionUID = -6716553117162905303L;
 
     private static final ConcurrentHashMap<Class, Injector> INJECTOR_CACHE
-                                 = new ConcurrentHashMap<Class, Injector>();
+                                    = new ConcurrentHashMap<Class, Injector>();
 
-    private static final String DEFAULT_GUICE_MODULE_COMPONENT
-                                 = "org.jboss.labs.injection.seam.guiceModule";
-
     @AroundInvoke
     public Object aroundInvoke(InvocationContext invocationContext) throws Exception
     {
-        Module module = getGuiceModule(invocationContext.getMethod().getDeclaringClass());
+        Module module = getGuiceModuleForClass(invocationContext.getMethod().getDeclaringClass());
 
         if (module == null)
         {
@@ -86,31 +86,40 @@
         return injector;
     }
 
-    private static Module getGuiceModule(final Class<?> declaringClass)
-                        throws IllegalAccessException, InstantiationException
+    private static Module getGuiceModuleForClass(final Class<?> declaringClass)
     {
-        Module module;
+        Module module = null;
 
-        final String moduleComponentName = declaringClass.getAnnotation(Guice.class).value();
+        final String expr = declaringClass.getAnnotation(Guice.class).value();
 
-        if (moduleComponentName.length() > 0)
+        if (expr.length() > 0)
         {
-            module = (Module) Component.getInstance(moduleComponentName);
+            module = getGuiceModuleByName(expr);
         }
+
+        return module;
+    }
+
+    private static Module getGuiceModuleByName(String expr)
+    {
+
+        Object result;
+
+        if (expr.startsWith("#"))
+        {
+            result = Expressions.instance().createValueExpression(expr).getValue();
+        }
         else
         {
-            final Class moduleClass
-                        = declaringClass.getAnnotation(Guice.class).module();
-            if (!moduleClass.equals(EmptyGuiceModule.class))
-            {
-                module = (Module) moduleClass.newInstance();
-            }
-            else
-            {
-                module = (Module) Component.getInstance(DEFAULT_GUICE_MODULE_COMPONENT);
-            }
+            result = Component.getInstance(expr);
         }
 
-        return module;
+        if (!(result instanceof com.google.inject.Module))
+        {
+             throw new IllegalArgumentException("Expression '" + expr +
+                            "' does not evaluate to a Guice module.");
+        }
+
+        return (Module) result;
     }
 }




More information about the jboss-svn-commits mailing list