[jboss-svn-commits] JBL Code SVN: r18066 - in labs/jbosslabs/labs-3.0-build: core and 15 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Jan 23 14:24:04 EST 2008


Author: szimano
Date: 2008-01-23 14:24:03 -0500 (Wed, 23 Jan 2008)
New Revision: 18066

Added:
   labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/injection/
   labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/injection/JNDIProvider.java
   labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/injection/LabsGuiceModule.java
   labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/injection/LabsInjection.java
   labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/injection/ejb3/
   labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/injection/ejb3/LabsInjectionInterceptor.java
   labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/injection/faces/
   labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/injection/faces/LabsInjectionResolver.java
   labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/servlet/
   labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/servlet/LabsHttpServlet.java
   labs/jbosslabs/labs-3.0-build/thirdparty/as-libs/resources/guice-1.0.jar
Modified:
   labs/jbosslabs/labs-3.0-build/core/core-api/pom.xml
   labs/jbosslabs/labs-3.0-build/core/core-model/pom.xml
   labs/jbosslabs/labs-3.0-build/core/pom.xml
   labs/jbosslabs/labs-3.0-build/pom.xml
   labs/jbosslabs/labs-3.0-build/services/authorization/pom.xml
   labs/jbosslabs/labs-3.0-build/services/authorization/src/main/java/org/jboss/labs/auth/impl/RoleBinderImpl.java
   labs/jbosslabs/labs-3.0-build/services/documentation-service/pom.xml
   labs/jbosslabs/labs-3.0-build/services/downloads-service/pom.xml
   labs/jbosslabs/labs-3.0-build/services/foo-service/src/main/java/org/jboss/labs/FooServiceImpl.java
   labs/jbosslabs/labs-3.0-build/services/project-service/pom.xml
   labs/jbosslabs/labs-3.0-build/views/foo-view/src/main/java/org/jboss/labs/MyServlet.java
Log:
Injection service JBLAB-911

Modified: labs/jbosslabs/labs-3.0-build/core/core-api/pom.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-api/pom.xml	2008-01-23 18:28:56 UTC (rev 18065)
+++ labs/jbosslabs/labs-3.0-build/core/core-api/pom.xml	2008-01-23 19:24:03 UTC (rev 18066)
@@ -24,23 +24,17 @@
 			<version>1.0</version>
 			<scope>provided</scope>
 		</dependency>
-        <dependency>
-            <groupId>jboss</groupId>
-            <artifactId>jboss-ejb-api</artifactId>
-            <version>4.2.1.GA</version>
-            <scope>provided</scope>
-       </dependency>
-       <dependency>
-            <groupId>jboss</groupId>
-            <artifactId>jboss-jaxws</artifactId>
-            <version>1.2.1.GA</version>
-            <scope>provided</scope>
-       </dependency>
-       <dependency>
-            <groupId>javax.persistence</groupId>
-            <artifactId>persistence-api</artifactId>
-            <version>1.0</version>
-            <scope>provided</scope>
-       </dependency>
-    </dependencies>
+		<dependency>
+			<groupId>javax.servlet</groupId>
+			<artifactId>servlet-api</artifactId>
+			<version>2.3</version>
+			<scope>provided</scope>
+		</dependency>
+		<dependency>
+			<groupId>javax.faces</groupId>
+			<artifactId>jsf-api</artifactId>
+			<version>1.1_02</version>
+			<scope>provided</scope>
+		</dependency>
+	</dependencies>
 </project>

Added: labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/injection/JNDIProvider.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/injection/JNDIProvider.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/injection/JNDIProvider.java	2008-01-23 19:24:03 UTC (rev 18066)
@@ -0,0 +1,28 @@
+package org.jboss.labs.injection;
+
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
+
+import com.google.inject.Provider;
+
+public class JNDIProvider<E> implements Provider<E> {
+
+	private String jndiString;
+
+	public JNDIProvider(String jndiString) {
+		this.jndiString = jndiString;
+	}
+
+	public E get() {
+		try {
+			InitialContext ic;
+
+			ic = new InitialContext();
+
+			return (E) ic.lookup(jndiString);
+		} catch (NamingException e) {
+			throw new RuntimeException("Couldn't access jndi: " + jndiString, e);
+		}
+	}
+
+}

Added: labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/injection/LabsGuiceModule.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/injection/LabsGuiceModule.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/injection/LabsGuiceModule.java	2008-01-23 19:24:03 UTC (rev 18066)
@@ -0,0 +1,17 @@
+package org.jboss.labs.injection;
+
+import org.jboss.labs.auth.RoleBinder;
+import org.jboss.labs.foo.FooService;
+import org.jboss.labs.injection.JNDIProvider;
+
+import com.google.inject.Binder;
+import com.google.inject.Module;
+
+public class LabsGuiceModule implements Module {
+
+	public void configure(Binder binder) {
+		binder.bind(FooService.class).toProvider(new JNDIProvider<FooService>("FooServiceImpl/local"));
+		binder.bind(RoleBinder.class).toProvider(new JNDIProvider<RoleBinder>("RoleBinderImpl/local"));
+	}
+
+}

Added: labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/injection/LabsInjection.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/injection/LabsInjection.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/injection/LabsInjection.java	2008-01-23 19:24:03 UTC (rev 18066)
@@ -0,0 +1,16 @@
+package org.jboss.labs.injection;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+
+public class LabsInjection {
+	private static Injector injector;
+	
+	public synchronized static Injector getInjector() {
+		if (injector == null) {
+			injector = Guice.createInjector(new LabsGuiceModule());
+		}
+		
+		return injector;
+	}
+}

Added: labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/injection/ejb3/LabsInjectionInterceptor.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/injection/ejb3/LabsInjectionInterceptor.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/injection/ejb3/LabsInjectionInterceptor.java	2008-01-23 19:24:03 UTC (rev 18066)
@@ -0,0 +1,25 @@
+package org.jboss.labs.injection.ejb3;
+
+import javax.annotation.PostConstruct;
+import javax.interceptor.InvocationContext;
+
+import org.apache.log4j.Logger;
+import org.jboss.labs.injection.LabsInjection;
+
+public class LabsInjectionInterceptor {
+	Logger log = Logger.getLogger(LabsInjectionInterceptor.class);
+
+	@PostConstruct
+	public void interceptContructor(InvocationContext ctx) {
+		log.debug("Injecting members for: "
+				+ ctx.getTarget().getClass().getName());
+
+		LabsInjection.getInjector().injectMembers(ctx.getTarget());
+
+		try {
+			ctx.proceed();
+		} catch (Exception e) {
+			throw new RuntimeException(e);
+		}
+	}
+}

Added: labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/injection/faces/LabsInjectionResolver.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/injection/faces/LabsInjectionResolver.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/injection/faces/LabsInjectionResolver.java	2008-01-23 19:24:03 UTC (rev 18066)
@@ -0,0 +1,37 @@
+package org.jboss.labs.injection.faces;
+
+import javax.faces.context.FacesContext;
+import javax.faces.el.EvaluationException;
+import javax.faces.el.VariableResolver;
+
+import org.jboss.labs.injection.LabsInjection;
+
+import com.google.inject.Injector;
+
+public class LabsInjectionResolver extends VariableResolver {
+
+	private VariableResolver wrapped;
+
+	public LabsInjectionResolver(VariableResolver wrapped) {
+		if (wrapped == null)
+			throw new NullPointerException("wrapped "
+					+ VariableResolver.class.getName());
+		this.wrapped = wrapped;
+	}
+	
+	@Override
+	public Object resolveVariable(FacesContext fctx, String name)
+			throws EvaluationException {
+		Object resolved = wrapped.resolveVariable(fctx, name);
+		if (resolved != null) {
+			Injector injector = LabsInjection.getInjector();
+			
+			if (injector == null)
+				throw new NullPointerException("Could not locate "
+						+ "Guice Injector");
+			injector.injectMembers(resolved);
+		}
+		return resolved;
+	}
+
+}

Added: labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/servlet/LabsHttpServlet.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/servlet/LabsHttpServlet.java	                        (rev 0)
+++ labs/jbosslabs/labs-3.0-build/core/core-api/src/main/java/org/jboss/labs/servlet/LabsHttpServlet.java	2008-01-23 19:24:03 UTC (rev 18066)
@@ -0,0 +1,22 @@
+package org.jboss.labs.servlet;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+
+import org.jboss.labs.injection.LabsInjection;
+
+public class LabsHttpServlet extends HttpServlet {
+
+	/**
+	 * 
+	 */
+	private static final long serialVersionUID = 1L;
+	
+	@Override
+	public void init() throws ServletException {
+		super.init();
+		
+		LabsInjection.getInjector().injectMembers(this);
+	}
+
+}

Modified: labs/jbosslabs/labs-3.0-build/core/core-model/pom.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/core-model/pom.xml	2008-01-23 18:28:56 UTC (rev 18065)
+++ labs/jbosslabs/labs-3.0-build/core/core-model/pom.xml	2008-01-23 19:24:03 UTC (rev 18066)
@@ -17,11 +17,5 @@
       <version>3.8.1</version>
       <scope>test</scope>
     </dependency>
-    <dependency>
-		<groupId>javax.persistence</groupId>
-		<artifactId>persistence-api</artifactId>
-		<version>1.0</version>
-		<scope>provided</scope>
-    </dependency>
   </dependencies>
 </project>

Modified: labs/jbosslabs/labs-3.0-build/core/pom.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/core/pom.xml	2008-01-23 18:28:56 UTC (rev 18065)
+++ labs/jbosslabs/labs-3.0-build/core/pom.xml	2008-01-23 19:24:03 UTC (rev 18066)
@@ -15,4 +15,24 @@
     <module>core-model</module>
     <module>core-api</module>
   </modules>
+  <dependencies>
+	<dependency>
+            <groupId>jboss</groupId>
+            <artifactId>jboss-ejb-api</artifactId>
+            <version>4.2.1.GA</version>
+            <scope>provided</scope>
+       </dependency>
+       <dependency>
+            <groupId>jboss</groupId>
+            <artifactId>jboss-jaxws</artifactId>
+            <version>1.2.1.GA</version>
+            <scope>provided</scope>
+       </dependency>
+  	<dependency>
+                <groupId>javax.persistence</groupId>
+                <artifactId>persistence-api</artifactId>
+                <version>1.0</version>
+                <scope>provided</scope>
+    </dependency>
+  </dependencies>
 </project>

Modified: labs/jbosslabs/labs-3.0-build/pom.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/pom.xml	2008-01-23 18:28:56 UTC (rev 18065)
+++ labs/jbosslabs/labs-3.0-build/pom.xml	2008-01-23 19:24:03 UTC (rev 18066)
@@ -84,6 +84,12 @@
 			<version>1.2.14</version>
 			<scope>provided</scope>
 		</dependency>
+		<dependency>
+			<artifactId>guice</artifactId>
+			<groupId>com.google.code.guice</groupId>
+			<version>1.0</version>
+			<scope>provided</scope>
+		</dependency>
 	</dependencies>
 	<build>
 		<defaultGoal>install</defaultGoal>

Modified: labs/jbosslabs/labs-3.0-build/services/authorization/pom.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/authorization/pom.xml	2008-01-23 18:28:56 UTC (rev 18065)
+++ labs/jbosslabs/labs-3.0-build/services/authorization/pom.xml	2008-01-23 19:24:03 UTC (rev 18066)
@@ -8,7 +8,7 @@
 	<modelVersion>4.0.0</modelVersion>
 	<groupId>org.jboss.labs</groupId>
 	<artifactId>authorization</artifactId>
-	<name>JBoss Labs service</name>
+	<name>Authorization service</name>
 	<version>1.0-SNAPSHOT</version>
 	<url>http://maven.apache.org</url>
 	<dependencies>

Modified: labs/jbosslabs/labs-3.0-build/services/authorization/src/main/java/org/jboss/labs/auth/impl/RoleBinderImpl.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/authorization/src/main/java/org/jboss/labs/auth/impl/RoleBinderImpl.java	2008-01-23 18:28:56 UTC (rev 18065)
+++ labs/jbosslabs/labs-3.0-build/services/authorization/src/main/java/org/jboss/labs/auth/impl/RoleBinderImpl.java	2008-01-23 19:24:03 UTC (rev 18066)
@@ -2,10 +2,15 @@
 
 import javax.ejb.Local;
 import javax.ejb.Stateless;
+import javax.interceptor.Interceptors;
 
 import org.apache.log4j.Logger;
 import org.jboss.labs.auth.RoleBinder;
+import org.jboss.labs.foo.FooService;
+import org.jboss.labs.injection.ejb3.LabsInjectionInterceptor;
 
+import com.google.inject.Inject;
+
 @Stateless
 @Local
 public class RoleBinderImpl<E extends Enum<E>> implements RoleBinder<E> {
@@ -29,6 +34,5 @@
 		// TODO Auto-generated method stub
 		
 	}
-	
 
 }

Modified: labs/jbosslabs/labs-3.0-build/services/documentation-service/pom.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/documentation-service/pom.xml	2008-01-23 18:28:56 UTC (rev 18065)
+++ labs/jbosslabs/labs-3.0-build/services/documentation-service/pom.xml	2008-01-23 19:24:03 UTC (rev 18066)
@@ -7,7 +7,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.jboss.labs</groupId>
   <artifactId>documentation-service</artifactId>
-  <name>JBoss Labs service</name>
+  <name>documentation service</name>
   <version>1.0-SNAPSHOT</version>
   <url>http://maven.apache.org</url>
   <build>

Modified: labs/jbosslabs/labs-3.0-build/services/downloads-service/pom.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/downloads-service/pom.xml	2008-01-23 18:28:56 UTC (rev 18065)
+++ labs/jbosslabs/labs-3.0-build/services/downloads-service/pom.xml	2008-01-23 19:24:03 UTC (rev 18066)
@@ -7,7 +7,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.jboss.labs</groupId>
   <artifactId>downloads-service</artifactId>
-  <name>JBoss Labs service</name>
+  <name>downloads service</name>
   <version>1.0-SNAPSHOT</version>
   <url>http://maven.apache.org</url>
   <build>

Modified: labs/jbosslabs/labs-3.0-build/services/foo-service/src/main/java/org/jboss/labs/FooServiceImpl.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/foo-service/src/main/java/org/jboss/labs/FooServiceImpl.java	2008-01-23 18:28:56 UTC (rev 18065)
+++ labs/jbosslabs/labs-3.0-build/services/foo-service/src/main/java/org/jboss/labs/FooServiceImpl.java	2008-01-23 19:24:03 UTC (rev 18066)
@@ -1,32 +1,35 @@
 package org.jboss.labs;
 
+import javax.annotation.PostConstruct;
+import javax.ejb.EJB;
 import javax.ejb.Local;
 import javax.ejb.Stateless;
+import javax.interceptor.Interceptors;
 import javax.persistence.EntityManager;
 import javax.persistence.PersistenceContext;
 
+import org.apache.log4j.Logger;
 import org.jboss.labs.auth.RoleBinder;
-import org.jboss.labs.exception.service.LabsServiceResolveException;
 import org.jboss.labs.foo.FooEntity;
 import org.jboss.labs.foo.FooService;
+import org.jboss.labs.injection.ejb3.LabsInjectionInterceptor;
 
 @Stateless
 @Local
+ at Interceptors({LabsInjectionInterceptor.class})
 public class FooServiceImpl implements FooService {
 
 	@PersistenceContext
 	private EntityManager em;
-
+	
+	@EJB
 	private RoleBinder<FooRoleList> roleBinder;
 	
-	public FooServiceImpl() {
-		try {
-			roleBinder = ServiceHelper.getRoleBinder();
-			roleBinder.exposeServiceRoles(FooRoleList.values(), FooServiceImpl.class.getName());
-		} catch (LabsServiceResolveException e) {
-			// TODO Auto-generated catch block
-			e.printStackTrace();
-		}
+	private final static Logger log = Logger.getLogger(FooServiceImpl.class);
+	
+	@PostConstruct
+	public void contructor() {
+		roleBinder.exposeServiceRoles(FooRoleList.values(), FooServiceImpl.class.getName());
 	}
 	
 	public FooEntity sayFoo() {

Modified: labs/jbosslabs/labs-3.0-build/services/project-service/pom.xml
===================================================================
--- labs/jbosslabs/labs-3.0-build/services/project-service/pom.xml	2008-01-23 18:28:56 UTC (rev 18065)
+++ labs/jbosslabs/labs-3.0-build/services/project-service/pom.xml	2008-01-23 19:24:03 UTC (rev 18066)
@@ -7,7 +7,7 @@
   <modelVersion>4.0.0</modelVersion>
   <groupId>org.jboss.labs</groupId>
   <artifactId>project-service</artifactId>
-  <name>JBoss Labs service</name>
+  <name>project service</name>
   <version>1.0-SNAPSHOT</version>
   <url>http://maven.apache.org</url>
   <build>

Added: labs/jbosslabs/labs-3.0-build/thirdparty/as-libs/resources/guice-1.0.jar
===================================================================
(Binary files differ)


Property changes on: labs/jbosslabs/labs-3.0-build/thirdparty/as-libs/resources/guice-1.0.jar
___________________________________________________________________
Name: svn:mime-type
   + application/octet-stream

Modified: labs/jbosslabs/labs-3.0-build/views/foo-view/src/main/java/org/jboss/labs/MyServlet.java
===================================================================
--- labs/jbosslabs/labs-3.0-build/views/foo-view/src/main/java/org/jboss/labs/MyServlet.java	2008-01-23 18:28:56 UTC (rev 18065)
+++ labs/jbosslabs/labs-3.0-build/views/foo-view/src/main/java/org/jboss/labs/MyServlet.java	2008-01-23 19:24:03 UTC (rev 18066)
@@ -2,52 +2,46 @@
 
 import java.io.IOException;
 
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
 import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 
+import org.apache.log4j.Logger;
 import org.jboss.labs.foo.FooService;
+import org.jboss.labs.servlet.LabsHttpServlet;
 
-public class MyServlet extends HttpServlet {
+import com.google.inject.Inject;
 
+public class MyServlet extends LabsHttpServlet {
+
 	/**
 	 * 
 	 */
 	private static final long serialVersionUID = 1L;
 
+	@Inject
 	private FooService fooService;
+	
+	private static final Logger log = Logger.getLogger(MyServlet.class);
 
 	@Override
 	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
 			throws ServletException, IOException {
-		try {
-			fooService = (FooService)new InitialContext().lookup("FooServiceImpl/local");
-			
-			resp
-			.getWriter()
-			.println(
-					"<html><head><title>hello world</title></head><body><h1>Hello World[changed] !</h1>");
-			if (req.getUserPrincipal() != null) {
-				resp
+
+		resp
 				.getWriter()
-				.println("Authenticated as: "+req.getUserPrincipal().getName()+"<br/>");
-			}
-			
-			resp
-			.getWriter()
-			.println("Foo says: "
-							+ "Foo["+ fooService.sayFoo().id + "]<br/></body></html>");
-		} catch (NamingException e) {
-			log(e.getMessage(), e);
-			resp
-			.getWriter()
-			.println(
-					"<html><head><title>hello world</title></head><body><h1>Error!</h1></body></html>");
+				.println(
+						"<html><head><title>hello world</title></head><body><h1>Hello World[changed] !</h1>");
+		if (req.getUserPrincipal() != null) {
+			resp.getWriter().println(
+					"Authenticated as: " + req.getUserPrincipal().getName()
+							+ "<br/>");
 		}
-		
+
+		resp.getWriter().println(
+				"Foo says: " + "Foo[" + fooService.sayFoo().id
+						+ "]<br/></body></html>");
+
 		resp.getWriter().close();
 	}
 }




More information about the jboss-svn-commits mailing list