[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