Author: rmannibucau
Date: Sun Jul 1 18:22:29 2012
New Revision: 1355970
URL: http://svn.apache.org/viewvc?rev=1355970&view=rev
Log:
TOMEE-259 TOMEE-261 basic mojarra integration and some more way to enrich a
webapp (from prefix)
Added:
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEContainerListener.java
openejb/trunk/openejb/tomee/tomee-mojarra/
openejb/trunk/openejb/tomee/tomee-mojarra/pom.xml
openejb/trunk/openejb/tomee/tomee-mojarra/src/
openejb/trunk/openejb/tomee/tomee-mojarra/src/main/
openejb/trunk/openejb/tomee/tomee-mojarra/src/main/java/
openejb/trunk/openejb/tomee/tomee-mojarra/src/main/java/org/
openejb/trunk/openejb/tomee/tomee-mojarra/src/main/java/org/apache/
openejb/trunk/openejb/tomee/tomee-mojarra/src/main/java/org/apache/tomee/
openejb/trunk/openejb/tomee/tomee-mojarra/src/main/java/org/apache/tomee/mojarra/
openejb/trunk/openejb/tomee/tomee-mojarra/src/main/java/org/apache/tomee/mojarra/TomEEInjectionProvider.java
openejb/trunk/openejb/tomee/tomee-mojarra/src/main/resources/
openejb/trunk/openejb/tomee/tomee-mojarra/src/main/resources/META-INF/
openejb/trunk/openejb/tomee/tomee-mojarra/src/main/resources/META-INF/services/
openejb/trunk/openejb/tomee/tomee-mojarra/src/main/resources/META-INF/services/com.sun.faces.spi.injectionprovider
Modified:
openejb/trunk/openejb/tomee/pom.xml
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/JavaeeInstanceManager.java
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEClassLoaderHelper.java
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
openejb/trunk/openejb/tomee/tomee-webapp/pom.xml
Modified: openejb/trunk/openejb/tomee/pom.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/pom.xml?rev=1355970&r1=1355969&r2=1355970&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/pom.xml (original)
+++ openejb/trunk/openejb/tomee/pom.xml Sun Jul 1 18:22:29 2012
@@ -43,6 +43,7 @@
<module>tomee-jaxrs-webapp</module>
<module>apache-tomee</module>
<module>apache-tomcat</module>
+ <module>tomee-mojarra</module>
</modules>
<repositories>
Modified:
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/JavaeeInstanceManager.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/JavaeeInstanceManager.java?rev=1355970&r1=1355969&r2=1355970&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/JavaeeInstanceManager.java
(original)
+++
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/JavaeeInstanceManager.java
Sun Jul 1 18:22:29 2012
@@ -79,6 +79,14 @@ public class JavaeeInstanceManager imple
webContext.destroy(o);
}
+ public void inject(final Object o) {
+ try {
+ webContext.inject(o);
+ } catch (OpenEJBException e) {
+ throw new InjectionFailedException(e);
+ }
+ }
+
/**
* Call postConstruct method on the specified instance recursively from
deepest superclass to actual class.
*
@@ -88,7 +96,7 @@ public class JavaeeInstanceManager imple
* @throws java.lang.reflect.InvocationTargetException
* if call fails
*/
- protected void postConstruct(Object instance, final Class<?> clazz)
+ public void postConstruct(Object instance, final Class<?> clazz)
throws IllegalAccessException, InvocationTargetException {
Class<?> superClass = clazz.getSuperclass();
if (superClass != Object.class) {
Modified:
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEClassLoaderHelper.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEClassLoaderHelper.java?rev=1355970&r1=1355969&r2=1355970&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEClassLoaderHelper.java
(original)
+++
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEClassLoaderHelper.java
Sun Jul 1 18:22:29 2012
@@ -18,7 +18,10 @@ package org.apache.tomee.catalina;
import org.apache.openejb.OpenEJB;
import org.apache.openejb.loader.SystemInstance;
+import org.apache.tomee.installer.Paths;
+import java.io.File;
+import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Arrays;
@@ -26,7 +29,9 @@ import java.util.Collection;
public final class TomEEClassLoaderHelper {
public static final String TOMEE_WEBAPP_CLASSLOADER_ENRICHMENT_SKIP =
"tomee.webapp.classloader.enrichment.skip";
- public static final String TOMEE_WEBAPP_CLASSLOADER_ENRICHMENT =
"tomee.webapp.classloader.enrichment";
+
+ public static final String TOMEE_WEBAPP_CLASSLOADER_ENRICHMENT_CLASSES =
"tomee.webapp.classloader.enrichment.classes";
+ public static final String TOMEE_WEBAPP_CLASSLOADER_ENRICHMENT_PREFIXES =
"tomee.webapp.classloader.enrichment.prefixes";
private static final String[] DEFAULT_JAR_TO_ADD_CLASS_HELPERS = new
String[] {
// openejb-jsf and openwebbeans-jsf to be able to embedded the jsf
impl keeping CDI features
@@ -34,23 +39,37 @@ public final class TomEEClassLoaderHelpe
"org.apache.webbeans.jsf.OwbApplicationFactory",
// JPA integration: mainly JTA integration
- "org.apache.openejb.jpa.integration.MakeTxLookup"
+ "org.apache.openejb.jpa.integration.MakeTxLookup",
};
private static final String[] JAR_TO_ADD_CLASS_HELPERS;
+ private static final String[] DEFAULT_PREFIXES_TO_ADD = new String[] {
+ "tomee-mojarra"
+ };
+ private static final String[] PREFIXES_TO_ADD;
+
static {
final Collection<String> classes = new ArrayList<String>();
+ final Collection<String> prefixes = new ArrayList<String>();
if
(!SystemInstance.get().getOptions().get(TOMEE_WEBAPP_CLASSLOADER_ENRICHMENT_SKIP,
false)) {
+ final String additionalEnrichments =
SystemInstance.get().getOptions().get(TOMEE_WEBAPP_CLASSLOADER_ENRICHMENT_CLASSES,
"");
classes.addAll(Arrays.asList(DEFAULT_JAR_TO_ADD_CLASS_HELPERS));
-
- final String additionalEnrichments =
SystemInstance.get().getOptions().get(TOMEE_WEBAPP_CLASSLOADER_ENRICHMENT, "");
if (additionalEnrichments != null &&
!additionalEnrichments.isEmpty()) {
for (String name : additionalEnrichments.split(",")) {
classes.add(name.trim());
}
}
+
+ final String additionalPrefixes =
SystemInstance.get().getOptions().get(TOMEE_WEBAPP_CLASSLOADER_ENRICHMENT_PREFIXES,
"");
+ prefixes.addAll(Arrays.asList(DEFAULT_PREFIXES_TO_ADD));
+ if (additionalPrefixes != null && !additionalPrefixes.isEmpty()) {
+ for (String name : additionalPrefixes.split(",")) {
+ prefixes.add(name.trim());
+ }
+ }
}
JAR_TO_ADD_CLASS_HELPERS = classes.toArray(new String[classes.size()]);
+ PREFIXES_TO_ADD = prefixes.toArray(new String[prefixes.size()]);
}
private TomEEClassLoaderHelper() {
@@ -58,8 +77,10 @@ public final class TomEEClassLoaderHelpe
}
public static URL[] tomEEWebappIntegrationLibraries() {
- final ClassLoader cl = TomEEClassLoaderHelper.class.getClassLoader();
// reference classloader = standardclassloader
final Collection<URL> urls = new ArrayList<URL>();
+
+ // from class
+ final ClassLoader cl = TomEEClassLoaderHelper.class.getClassLoader();
// reference classloader = standardclassloader
for (String name : JAR_TO_ADD_CLASS_HELPERS) {
try {
final Class<?> clazz = cl.loadClass(name);
@@ -77,6 +98,20 @@ public final class TomEEClassLoaderHelpe
// ignore
}
}
+
+ // from prefix
+ final Paths paths = new Paths(new
File(System.getProperty("openejb.home"))); // parameter is useless
+ for (String prefix : PREFIXES_TO_ADD) {
+ final File file = paths.findTomEELibJar(prefix);
+ if (file != null) {
+ try {
+ urls.add(file.toURI().toURL());
+ } catch (MalformedURLException e) {
+ // ignored
+ }
+ }
+ }
+
return urls.toArray(new URL[urls.size()]);
}
}
Added:
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEContainerListener.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEContainerListener.java?rev=1355970&view=auto
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEContainerListener.java
(added)
+++
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomEEContainerListener.java
Sun Jul 1 18:22:29 2012
@@ -0,0 +1,22 @@
+package org.apache.tomee.catalina;
+
+import org.apache.catalina.ContainerEvent;
+import org.apache.catalina.ContainerListener;
+import org.apache.catalina.core.StandardContext;
+
+public class TomEEContainerListener implements ContainerListener {
+ private static final ThreadLocal<StandardContext> context = new
ThreadLocal<StandardContext>();
+
+ @Override
+ public void containerEvent(final ContainerEvent event) {
+ if ("beforeContextInitialized".equals(event.getType())) {
+ context.set((StandardContext) event.getContainer());
+ } else if ("afterContextInitialized".equals(event.getType())) {
+ context.remove();
+ }
+ }
+
+ public static StandardContext get() {
+ return context.get();
+ }
+}
Modified:
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java?rev=1355970&r1=1355969&r2=1355970&view=diff
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
(original)
+++
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
Sun Jul 1 18:22:29 2012
@@ -558,6 +558,9 @@ public class TomcatWebAppBuilder impleme
standardContext.setNamingContextListener(ncl);
standardContext.addLifecycleListener(ncl);
standardContext.addLifecycleListener(new TomcatJavaJndiBinder());
+
+ // listen some events
+ standardContext.addContainerListener(new TomEEContainerListener());
}
public class StandardContextInfo {
Added: openejb/trunk/openejb/tomee/tomee-mojarra/pom.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-mojarra/pom.xml?rev=1355970&view=auto
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-mojarra/pom.xml (added)
+++ openejb/trunk/openejb/tomee/tomee-mojarra/pom.xml Sun Jul 1 18:22:29 2012
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You 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.
+-->
+<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/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>tomee</artifactId>
+ <groupId>org.apache.openejb</groupId>
+ <version>1.1.0-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>tomee-mojarra</artifactId>
+ <name>OpenEJB :: TomEE :: Mojarra</name>
+
+ <dependencies>
+ <!--
+ provided = in the webapp
+ since MyFaces is our default implementation
+ -->
+ <dependency>
+ <groupId>org.glassfish</groupId>
+ <artifactId>javax.faces</artifactId>
+ <version>2.1.9</version>
+ <scope>provided</scope>
+ </dependency>
+ <dependency>
+ <groupId>javax.faces</groupId>
+ <artifactId>javax.faces-api</artifactId>
+ <version>2.1</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
+ <artifactId>tomee-catalina</artifactId>
+ <version>${tomee.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+</project>
Added:
openejb/trunk/openejb/tomee/tomee-mojarra/src/main/java/org/apache/tomee/mojarra/TomEEInjectionProvider.java
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-mojarra/src/main/java/org/apache/tomee/mojarra/TomEEInjectionProvider.java?rev=1355970&view=auto
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-mojarra/src/main/java/org/apache/tomee/mojarra/TomEEInjectionProvider.java
(added)
+++
openejb/trunk/openejb/tomee/tomee-mojarra/src/main/java/org/apache/tomee/mojarra/TomEEInjectionProvider.java
Sun Jul 1 18:22:29 2012
@@ -0,0 +1,46 @@
+package org.apache.tomee.mojarra;
+
+import com.sun.faces.spi.DiscoverableInjectionProvider;
+import com.sun.faces.spi.InjectionProviderException;
+import org.apache.catalina.core.StandardContext;
+import org.apache.tomee.catalina.JavaeeInstanceManager;
+import org.apache.tomee.catalina.TomEEContainerListener;
+
+public class TomEEInjectionProvider extends DiscoverableInjectionProvider {
+ private JavaeeInstanceManager instanceManager;
+
+ public TomEEInjectionProvider() {
+ final StandardContext context = TomEEContainerListener.get();
+ if (context == null) {
+ throw new IllegalArgumentException("standard context cannot be
found");
+ }
+ instanceManager = (JavaeeInstanceManager) context.getInstanceManager();
+ }
+
+ @Override
+ public void inject(final Object managedBean) throws
InjectionProviderException {
+ try {
+ instanceManager.inject(managedBean);
+ } catch (Exception e) {
+ throw new InjectionProviderException(e);
+ }
+ }
+
+ @Override
+ public void invokePreDestroy(final Object managedBean) throws
InjectionProviderException {
+ try {
+ instanceManager.destroyInstance(managedBean);
+ } catch (Exception e) {
+ throw new InjectionProviderException(e);
+ }
+ }
+
+ @Override
+ public void invokePostConstruct(final Object managedBean) throws
InjectionProviderException {
+ try {
+ instanceManager.postConstruct(managedBean, managedBean.getClass());
+ } catch (Exception e) {
+ throw new InjectionProviderException(e);
+ }
+ }
+}
Added:
openejb/trunk/openejb/tomee/tomee-mojarra/src/main/resources/META-INF/services/com.sun.faces.spi.injectionprovider
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-mojarra/src/main/resources/META-INF/services/com.sun.faces.spi.injectionprovider?rev=1355970&view=auto
==============================================================================
---
openejb/trunk/openejb/tomee/tomee-mojarra/src/main/resources/META-INF/services/com.sun.faces.spi.injectionprovider
(added)
+++
openejb/trunk/openejb/tomee/tomee-mojarra/src/main/resources/META-INF/services/com.sun.faces.spi.injectionprovider
Sun Jul 1 18:22:29 2012
@@ -0,0 +1 @@
+org.apache.tomee.mojarra.TomEEInjectionProvider:org.apache.tomee.catalina.JavaeeInstanceManager
Modified: openejb/trunk/openejb/tomee/tomee-webapp/pom.xml
URL:
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/pom.xml?rev=1355970&r1=1355969&r2=1355970&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/pom.xml (original)
+++ openejb/trunk/openejb/tomee/tomee-webapp/pom.xml Sun Jul 1 18:22:29 2012
@@ -194,6 +194,12 @@
</dependency>
<dependency>
<groupId>org.apache.openejb</groupId>
+ <artifactId>tomee-mojarra</artifactId>
+ <version>${tomee.version}</version>
+ <scope>runtime</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.openejb</groupId>
<artifactId>tomee-common</artifactId>
<version>${tomee.version}</version>
<scope>runtime</scope>