[webbeans-commits] Webbeans SVN: r2326 - in extensions/trunk/tomcat: build and 14 other directories.
webbeans-commits at lists.jboss.org
webbeans-commits at lists.jboss.org
Mon Apr 6 20:03:19 EDT 2009
Author: pete.muir at jboss.org
Date: 2009-04-06 20:03:19 -0400 (Mon, 06 Apr 2009)
New Revision: 2326
Added:
extensions/trunk/tomcat/extras/
extensions/trunk/tomcat/extras/pom.xml
extensions/trunk/tomcat/extras/src/
extensions/trunk/tomcat/extras/src/etc/
extensions/trunk/tomcat/extras/src/etc/header.txt
extensions/trunk/tomcat/extras/src/main/
extensions/trunk/tomcat/extras/src/main/java/
extensions/trunk/tomcat/extras/src/main/java/org/
extensions/trunk/tomcat/extras/src/main/java/org/jboss/
extensions/trunk/tomcat/extras/src/main/java/org/jboss/webbeans/
extensions/trunk/tomcat/extras/src/main/java/org/jboss/webbeans/environment/
extensions/trunk/tomcat/extras/src/main/java/org/jboss/webbeans/environment/servlet/
extensions/trunk/tomcat/extras/src/main/java/org/jboss/webbeans/environment/tomcat/
extensions/trunk/tomcat/extras/src/main/java/org/jboss/webbeans/environment/tomcat/ForwardingAnnotationProcessor.java
extensions/trunk/tomcat/extras/src/main/java/org/jboss/webbeans/environment/tomcat/WebBeansLifecycleListener.java
extensions/trunk/tomcat/extras/src/main/resources/
extensions/trunk/tomcat/extras/src/test/
extensions/trunk/tomcat/extras/src/test/java/
extensions/trunk/tomcat/extras/src/test/resources/
Removed:
extensions/trunk/tomcat/build/target/
Modified:
extensions/trunk/tomcat/build/.classpath
extensions/trunk/tomcat/build/.settings/org.eclipse.jdt.core.prefs
extensions/trunk/tomcat/build/pom.xml
extensions/trunk/tomcat/int/pom.xml
extensions/trunk/tomcat/int/src/main/java/org/jboss/webbeans/environment/servlet/Listener.java
Log:
POC for servlet injection in Tomcat
Modified: extensions/trunk/tomcat/build/.classpath
===================================================================
--- extensions/trunk/tomcat/build/.classpath 2009-04-06 21:54:22 UTC (rev 2325)
+++ extensions/trunk/tomcat/build/.classpath 2009-04-07 00:03:19 UTC (rev 2326)
@@ -1,6 +1,8 @@
<classpath>
<classpathentry kind="output" path="target/classes"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/tomcat/annotations-api/6.0.18/annotations-api-6.0.18.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/tomcat/catalina/6.0.18/catalina-6.0.18.jar"/>
<classpathentry kind="var" path="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1.jar" sourcepath="M2_REPO/dom4j/dom4j/1.6.1/dom4j-1.6.1-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/javassist/javassist/3.8.1.GA/javassist-3.8.1.GA.jar" sourcepath="M2_REPO/javassist/javassist/3.8.1.GA/javassist-3.8.1.GA-sources.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jboss/webbeans/jsr299-api/1.0.0-SNAPSHOT/jsr299-api-1.0.0-SNAPSHOT.jar" sourcepath="M2_REPO/org/jboss/webbeans/jsr299-api/1.0.0-SNAPSHOT/jsr299-api-1.0.0-SNAPSHOT-sources.jar">
@@ -8,6 +10,8 @@
<attribute value="jar:file:/Users/pmuir/.m2/repository/org/jboss/webbeans/jsr299-api/1.0.0-SNAPSHOT/jsr299-api-1.0.0-SNAPSHOT-javadoc.jar!/" name="javadoc_location"/>
</attributes>
</classpathentry>
+ <classpathentry kind="var" path="M2_REPO/org/apache/tomcat/juli/6.0.18/juli-6.0.18.jar"/>
+ <classpathentry kind="var" path="M2_REPO/org/apache/tomcat/servlet-api/6.0.18/servlet-api-6.0.18.jar"/>
<classpathentry kind="var" path="M2_REPO/org/jboss/webbeans/webbeans-api/1.0.0-SNAPSHOT/webbeans-api-1.0.0-SNAPSHOT.jar" sourcepath="M2_REPO/org/jboss/webbeans/webbeans-api/1.0.0-SNAPSHOT/webbeans-api-1.0.0-SNAPSHOT-sources.jar">
<attributes>
<attribute value="jar:file:/Users/pmuir/.m2/repository/org/jboss/webbeans/webbeans-api/1.0.0-SNAPSHOT/webbeans-api-1.0.0-SNAPSHOT-javadoc.jar!/" name="javadoc_location"/>
Modified: extensions/trunk/tomcat/build/.settings/org.eclipse.jdt.core.prefs
===================================================================
--- extensions/trunk/tomcat/build/.settings/org.eclipse.jdt.core.prefs 2009-04-06 21:54:22 UTC (rev 2325)
+++ extensions/trunk/tomcat/build/.settings/org.eclipse.jdt.core.prefs 2009-04-07 00:03:19 UTC (rev 2326)
@@ -1,4 +1,4 @@
-#Mon Apr 06 17:56:29 BST 2009
+#Tue Apr 07 00:46:08 BST 2009
org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.source=1.5
Modified: extensions/trunk/tomcat/build/pom.xml
===================================================================
--- extensions/trunk/tomcat/build/pom.xml 2009-04-06 21:54:22 UTC (rev 2325)
+++ extensions/trunk/tomcat/build/pom.xml 2009-04-07 00:03:19 UTC (rev 2326)
@@ -54,6 +54,10 @@
<artifactSet>
<excludes>
<exclude>xml-apis:xml-apis</exclude>
+ <exclude>org.apache.tomcat:catalina</exclude>
+ <exclude>org.apache.tomcat:servlet-api</exclude>
+ <exclude>org.apache.tomcat:juli</exclude>
+ <exclude>org.apache.tomcat:annotations-api</exclude>
</excludes>
</artifactSet>
</configuration>
Added: extensions/trunk/tomcat/extras/pom.xml
===================================================================
--- extensions/trunk/tomcat/extras/pom.xml (rev 0)
+++ extensions/trunk/tomcat/extras/pom.xml 2009-04-07 00:03:19 UTC (rev 2326)
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <parent>
+ <artifactId>webbeans-tomcat-parent</artifactId>
+ <groupId>org.jboss.webbeans.tomcat</groupId>
+ <version>1.0.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.jboss.webbeans.tomcat</groupId>
+ <artifactId>webbeans-tomcat-extras</artifactId>
+ <version>1.0.0-SNAPSHOT</version>
+ <packaging>jar</packaging>
+ <name>Web Beans Tomcat Integration</name>
+ <url>http://www.seamframework.org/WebBeans</url>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.testng</groupId>
+ <artifactId>testng</artifactId>
+ <scope>test</scope>
+ <classifier>jdk15</classifier>
+ <exclusions>
+ <exclusion>
+ <artifactId>junit</artifactId>
+ <groupId>junit</groupId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.webbeans</groupId>
+ <artifactId>webbeans-spi</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.webbeans</groupId>
+ <artifactId>webbeans-logging</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>catalina</artifactId>
+ <version>6.0.18</version>
+ </dependency>
+
+
+ </dependencies>
+
+</project>
Added: extensions/trunk/tomcat/extras/src/etc/header.txt
===================================================================
--- extensions/trunk/tomcat/extras/src/etc/header.txt (rev 0)
+++ extensions/trunk/tomcat/extras/src/etc/header.txt 2009-04-07 00:03:19 UTC (rev 2326)
@@ -0,0 +1,14 @@
+JBoss, Home of Professional Open Source
+Copyright 2008, Red Hat Middleware LLC, and individual contributors
+by the @authors tag. See the copyright.txt in the distribution for a
+full listing of individual contributors.
+
+Licensed under the Apache License, Version 2.0 (the "License");
+you may not use this file except in compliance with the License.
+You may obtain a copy of the License at
+http://www.apache.org/licenses/LICENSE-2.0
+Unless required by applicable law or agreed to in writing, software
+distributed under the License is distributed on an "AS IS" BASIS,
+WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+See the License for the specific language governing permissions and
+limitations under the License.
Added: extensions/trunk/tomcat/extras/src/main/java/org/jboss/webbeans/environment/tomcat/ForwardingAnnotationProcessor.java
===================================================================
--- extensions/trunk/tomcat/extras/src/main/java/org/jboss/webbeans/environment/tomcat/ForwardingAnnotationProcessor.java (rev 0)
+++ extensions/trunk/tomcat/extras/src/main/java/org/jboss/webbeans/environment/tomcat/ForwardingAnnotationProcessor.java 2009-04-07 00:03:19 UTC (rev 2326)
@@ -0,0 +1,29 @@
+package org.jboss.webbeans.environment.tomcat;
+
+import java.lang.reflect.InvocationTargetException;
+
+import javax.naming.NamingException;
+
+import org.apache.AnnotationProcessor;
+
+public abstract class ForwardingAnnotationProcessor implements AnnotationProcessor
+{
+
+ protected abstract AnnotationProcessor delegate();
+
+ public void postConstruct(Object instance) throws IllegalAccessException, InvocationTargetException
+ {
+ delegate().postConstruct(instance);
+ }
+
+ public void preDestroy(Object instance) throws IllegalAccessException, InvocationTargetException
+ {
+ delegate().preDestroy(instance);
+ }
+
+ public void processAnnotations(Object instance) throws IllegalAccessException, InvocationTargetException, NamingException
+ {
+ delegate().processAnnotations(instance);
+ }
+
+}
Added: extensions/trunk/tomcat/extras/src/main/java/org/jboss/webbeans/environment/tomcat/WebBeansLifecycleListener.java
===================================================================
--- extensions/trunk/tomcat/extras/src/main/java/org/jboss/webbeans/environment/tomcat/WebBeansLifecycleListener.java (rev 0)
+++ extensions/trunk/tomcat/extras/src/main/java/org/jboss/webbeans/environment/tomcat/WebBeansLifecycleListener.java 2009-04-07 00:03:19 UTC (rev 2326)
@@ -0,0 +1,48 @@
+package org.jboss.webbeans.environment.tomcat;
+
+import java.lang.reflect.InvocationTargetException;
+
+import javax.naming.NamingException;
+import javax.servlet.ServletContext;
+
+import org.apache.AnnotationProcessor;
+import org.apache.catalina.LifecycleEvent;
+import org.apache.catalina.LifecycleListener;
+import org.apache.catalina.core.StandardContext;
+
+public class WebBeansLifecycleListener implements LifecycleListener
+{
+
+ public void lifecycleEvent(LifecycleEvent event)
+ {
+ if (event.getType().equals("after_start") && event.getLifecycle() instanceof StandardContext)
+ {
+ StandardContext context = (StandardContext) event.getLifecycle();
+ final ServletContext servletContext = context.getServletContext();
+ final AnnotationProcessor annotationProcessor = context.getAnnotationProcessor();
+ context.setAnnotationProcessor(new ForwardingAnnotationProcessor()
+ {
+
+ @Override
+ protected AnnotationProcessor delegate()
+ {
+ return annotationProcessor;
+ }
+
+ @Override
+ public void processAnnotations(Object instance) throws IllegalAccessException, InvocationTargetException, NamingException
+ {
+ super.processAnnotations(instance);
+ Object o = servletContext.getAttribute("org.jboss.webbeans.environment.tomcat.WebBeansAnnotationProcessor");
+ if (o != null)
+ {
+ AnnotationProcessor processor = (AnnotationProcessor) o;
+ processor.processAnnotations(instance);
+ }
+ }
+
+ });
+ }
+ }
+
+}
Modified: extensions/trunk/tomcat/int/pom.xml
===================================================================
--- extensions/trunk/tomcat/int/pom.xml 2009-04-06 21:54:22 UTC (rev 2325)
+++ extensions/trunk/tomcat/int/pom.xml 2009-04-07 00:03:19 UTC (rev 2326)
@@ -42,6 +42,13 @@
<groupId>org.jboss.webbeans</groupId>
<artifactId>webbeans-logging</artifactId>
</dependency>
+
+ <dependency>
+ <groupId>org.apache.tomcat</groupId>
+ <artifactId>catalina</artifactId>
+ <version>6.0.18</version>
+ <scope>provided</scope>
+ </dependency>
</dependencies>
Modified: extensions/trunk/tomcat/int/src/main/java/org/jboss/webbeans/environment/servlet/Listener.java
===================================================================
--- extensions/trunk/tomcat/int/src/main/java/org/jboss/webbeans/environment/servlet/Listener.java 2009-04-06 21:54:22 UTC (rev 2325)
+++ extensions/trunk/tomcat/int/src/main/java/org/jboss/webbeans/environment/servlet/Listener.java 2009-04-07 00:03:19 UTC (rev 2326)
@@ -29,6 +29,9 @@
import org.jboss.webbeans.environment.servlet.discovery.TomcatWebBeanDiscovery;
import org.jboss.webbeans.environment.servlet.resources.ReadOnlyNamingContext;
import org.jboss.webbeans.environment.servlet.util.Reflections;
+import org.jboss.webbeans.environment.tomcat.WebBeansAnnotationProcessor;
+import org.jboss.webbeans.log.Log;
+import org.jboss.webbeans.log.Logging;
import org.jboss.webbeans.manager.api.WebBeansManager;
import org.jboss.webbeans.resources.spi.NamingContext;
import org.jboss.webbeans.resources.spi.ResourceServices;
@@ -42,6 +45,8 @@
public class Listener extends ForwardingServletListener
{
+ private static final Log log = Logging.getLog(Listener.class);
+
private static final String BOOTSTRAP_IMPL_CLASS_NAME = "org.jboss.webbeans.bootstrap.WebBeansBootstrap";
private static final String WEB_BEANS_LISTENER_CLASS_NAME = "org.jboss.webbeans.servlet.WebBeansListener";
private static final String APPLICATION_BEAN_STORE_ATTRIBUTE_NAME = Listener.class.getName() + ".applicationBeanStore";
@@ -105,9 +110,44 @@
bootstrap.setApplicationContext(applicationBeanStore);
bootstrap.initialize();
manager = bootstrap.getManager();
+
+ boolean tomcat = true;
+ try
+ {
+ Reflections.loadClass("org.apache.AnnotationProcessor", Object.class);
+ }
+ catch (ClassNotFoundException e)
+ {
+ log.info("JSR-299 injection will not be available in Servlets, Filters etc. This facility is only available in Tomcat");
+ tomcat = false;
+ }
+ catch (NoClassDefFoundError e)
+ {
+ log.info("JSR-299 injection will not be available in Servlets, Filters etc. This facility is only available in Tomcat");
+ tomcat = false;
+ }
+
+ if (tomcat)
+ {
+ // Try pushing a Tomcat AnnotationProcessor into the servlet context
+ try
+ {
+ Class<?> clazz = Reflections.loadClass(WebBeansAnnotationProcessor.class.getName(), Object.class);
+ Object annotationProcessor = clazz.getConstructor(WebBeansManager.class).newInstance(manager);
+ sce.getServletContext().setAttribute(WebBeansAnnotationProcessor.class.getName(), annotationProcessor);
+ }
+ catch (Exception e)
+ {
+ log.error("Unable to create Tomcat AnnotationProcessor. JSR-299 injection will not be available in Servlets, Filters etc.", e);
+ }
+ }
+
+
bootstrap.boot();
super.contextInitialized(sce);
}
+
+
@Override
protected ServletListener delegate()
More information about the weld-commits
mailing list