You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2012/03/20 11:12:50 UTC
svn commit: r1302813 - in /openejb/trunk/openejb/tomee: ./
tomee-catalina/src/main/java/org/apache/tomee/catalina/ tomee-myfaces/
tomee-myfaces/src/ tomee-myfaces/src/main/ tomee-myfaces/src/main/java/
tomee-myfaces/src/main/java/org/ tomee-myfaces/src...
Author: rmannibucau
Date: Tue Mar 20 09:39:39 2012
New Revision: 1302813
URL: http://svn.apache.org/viewvc?rev=1302813&view=rev
Log:
adding tomee-myfaces mdoule - impl still to do but it will be activated simply adding the jar in tomee
Added:
openejb/trunk/openejb/tomee/tomee-myfaces/
openejb/trunk/openejb/tomee/tomee-myfaces/pom.xml
openejb/trunk/openejb/tomee/tomee-myfaces/src/
openejb/trunk/openejb/tomee/tomee-myfaces/src/main/
openejb/trunk/openejb/tomee/tomee-myfaces/src/main/java/
openejb/trunk/openejb/tomee/tomee-myfaces/src/main/java/org/
openejb/trunk/openejb/tomee/tomee-myfaces/src/main/java/org/apache/
openejb/trunk/openejb/tomee/tomee-myfaces/src/main/java/org/apache/tomee/
openejb/trunk/openejb/tomee/tomee-myfaces/src/main/java/org/apache/tomee/myfaces/
openejb/trunk/openejb/tomee/tomee-myfaces/src/main/java/org/apache/tomee/myfaces/TomEEAnnotationProvider.java
openejb/trunk/openejb/tomee/tomee-myfaces/src/main/java/org/apache/tomee/myfaces/TomEEAnnotationProviderFactory.java
openejb/trunk/openejb/tomee/tomee-myfaces/src/main/resources/
openejb/trunk/openejb/tomee/tomee-myfaces/src/main/resources/META-INF/
openejb/trunk/openejb/tomee/tomee-myfaces/src/main/resources/META-INF/services/
openejb/trunk/openejb/tomee/tomee-myfaces/src/main/resources/META-INF/services/org.apache.myfaces.spi.AnnotationProviderFactory
Modified:
openejb/trunk/openejb/tomee/pom.xml
openejb/trunk/openejb/tomee/tomee-catalina/src/main/java/org/apache/tomee/catalina/TomcatWebAppBuilder.java
Modified: openejb/trunk/openejb/tomee/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/pom.xml?rev=1302813&r1=1302812&r2=1302813&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/pom.xml (original)
+++ openejb/trunk/openejb/tomee/pom.xml Tue Mar 20 09:39:39 2012
@@ -33,6 +33,7 @@
<module>tomee-loader</module>
<module>tomee-catalina</module>
<module>tomee-common</module>
+ <module>tomee-myfaces</module>
<module>tomee-webapp</module>
<module>tomee-plus-webapp</module>
<module>tomee-webservices</module>
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=1302813&r1=1302812&r2=1302813&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 Tue Mar 20 09:39:39 2012
@@ -128,6 +128,7 @@ public class TomcatWebAppBuilder impleme
private static final Digester CONTEXT_DIGESTER = createDigester();
public static final String OPENEJB_WEBAPP_MODULE_ID = "openejb.webapp.moduleId";
public static final String TOMEE_EAT_EXCEPTION_PROP = "tomee.eat-exception";
+ public static final String MYFACES_TOMEE_ANNOTATION_FINDER = "org.apache.tomee.myfaces.TomEEAnnotationProvider";
/**
* Context information for web applications
Added: openejb/trunk/openejb/tomee/tomee-myfaces/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-myfaces/pom.xml?rev=1302813&view=auto
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-myfaces/pom.xml (added)
+++ openejb/trunk/openejb/tomee/tomee-myfaces/pom.xml Tue Mar 20 09:39:39 2012
@@ -0,0 +1,23 @@
+<?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/xsd/maven-4.0.0.xsd">
+ <parent>
+ <artifactId>tomee</artifactId>
+ <groupId>org.apache.openejb</groupId>
+ <version>4.0.0-beta-3-SNAPSHOT</version>
+ </parent>
+ <modelVersion>4.0.0</modelVersion>
+
+ <artifactId>tomee-myfaces</artifactId>
+ <name>OpenEJB :: TomEE :: MyFaces</name>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.myfaces.core</groupId>
+ <artifactId>myfaces-impl</artifactId>
+ <version>${myfaces.version}</version>
+ <scope>provided</scope>
+ </dependency>
+ </dependencies>
+</project>
Added: openejb/trunk/openejb/tomee/tomee-myfaces/src/main/java/org/apache/tomee/myfaces/TomEEAnnotationProvider.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-myfaces/src/main/java/org/apache/tomee/myfaces/TomEEAnnotationProvider.java?rev=1302813&view=auto
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-myfaces/src/main/java/org/apache/tomee/myfaces/TomEEAnnotationProvider.java (added)
+++ openejb/trunk/openejb/tomee/tomee-myfaces/src/main/java/org/apache/tomee/myfaces/TomEEAnnotationProvider.java Tue Mar 20 09:39:39 2012
@@ -0,0 +1,77 @@
+package org.apache.tomee.myfaces;
+
+import org.apache.myfaces.shared.util.ClassUtils;
+import org.apache.myfaces.spi.AnnotationProvider;
+import org.apache.myfaces.view.facelets.util.Classpath;
+
+import javax.faces.bean.ManagedBean;
+import javax.faces.component.FacesComponent;
+import javax.faces.component.behavior.FacesBehavior;
+import javax.faces.context.ExternalContext;
+import javax.faces.convert.FacesConverter;
+import javax.faces.event.NamedEvent;
+import javax.faces.render.FacesBehaviorRenderer;
+import javax.faces.render.FacesRenderer;
+import javax.faces.validator.FacesValidator;
+import java.io.IOException;
+import java.lang.annotation.Annotation;
+import java.net.URL;
+import java.util.Enumeration;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+public class TomEEAnnotationProvider extends AnnotationProvider {
+ private static final Class<?>[] JSF_CLASSES = new Class<?>[] {
+ FacesComponent.class, FacesBehavior.class, FacesConverter.class,
+ FacesValidator.class, FacesRenderer.class, ManagedBean.class,
+ NamedEvent.class, FacesBehaviorRenderer.class
+ };
+
+ @Override
+ public Map<Class<? extends Annotation>, Set<Class<?>>> getAnnotatedClasses(final ExternalContext ctx) {
+ final Map<Class<? extends Annotation>,Set<Class<?>>> map = new HashMap<Class<? extends Annotation>, Set<Class<?>>>();
+ for (Class<?> clazz : JSF_CLASSES) {
+ map.put((Class<? extends Annotation>) clazz, scannedClasses(clazz));
+ }
+ return map;
+ }
+
+ private Set<Class<?>> scannedClasses(final Class<?> clazz) {
+ // TODO: get scanned classes from xbean finders
+ return null;
+ }
+
+ @Override
+ public Set<URL> getBaseUrls() throws IOException {
+ final Set<URL> urlSet = new HashSet<URL>();
+ final ClassLoader loader = getClassLoader();
+
+ // TODO: use xbean to find resources
+
+ //This usually happens when maven-jetty-plugin is used
+ //Scan jars looking for paths including META-INF/faces-config.xml
+ final Enumeration<URL> resources = loader.getResources("META-INF/faces-config.xml");
+ while (resources.hasMoreElements())
+ {
+ urlSet.add(resources.nextElement());
+ }
+
+ //Scan files inside META-INF ending with .faces-config.xml
+ final URL[] urls = Classpath.search(loader, "META-INF/", ".faces-config.xml");
+ for (int i = 0; i < urls.length; i++) {
+ urlSet.add(urls[i]);
+ }
+
+ return urlSet;
+ }
+
+ private ClassLoader getClassLoader() {
+ final ClassLoader loader = ClassUtils.getContextClassLoader();
+ if (loader == null) {
+ return getClass().getClassLoader();
+ }
+ return loader;
+ }
+}
Added: openejb/trunk/openejb/tomee/tomee-myfaces/src/main/java/org/apache/tomee/myfaces/TomEEAnnotationProviderFactory.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-myfaces/src/main/java/org/apache/tomee/myfaces/TomEEAnnotationProviderFactory.java?rev=1302813&view=auto
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-myfaces/src/main/java/org/apache/tomee/myfaces/TomEEAnnotationProviderFactory.java (added)
+++ openejb/trunk/openejb/tomee/tomee-myfaces/src/main/java/org/apache/tomee/myfaces/TomEEAnnotationProviderFactory.java Tue Mar 20 09:39:39 2012
@@ -0,0 +1,19 @@
+package org.apache.tomee.myfaces;
+
+import org.apache.myfaces.spi.AnnotationProvider;
+import org.apache.myfaces.spi.AnnotationProviderFactory;
+import org.apache.myfaces.spi.impl.DefaultAnnotationProviderFactory;
+
+import javax.faces.context.ExternalContext;
+
+public class TomEEAnnotationProviderFactory extends AnnotationProviderFactory {
+ @Override
+ public AnnotationProvider createAnnotationProvider(final ExternalContext externalContext) {
+ AnnotationProvider annotationProvider = (AnnotationProvider) externalContext.getApplicationMap().get(DefaultAnnotationProviderFactory.ANNOTATION_PROVIDER_INSTANCE);
+ if (annotationProvider == null) {
+ annotationProvider = new TomEEAnnotationProvider();
+ externalContext.getApplicationMap().put(DefaultAnnotationProviderFactory.ANNOTATION_PROVIDER_INSTANCE, annotationProvider);
+ }
+ return annotationProvider;
+ }
+}
Added: openejb/trunk/openejb/tomee/tomee-myfaces/src/main/resources/META-INF/services/org.apache.myfaces.spi.AnnotationProviderFactory
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-myfaces/src/main/resources/META-INF/services/org.apache.myfaces.spi.AnnotationProviderFactory?rev=1302813&view=auto
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-myfaces/src/main/resources/META-INF/services/org.apache.myfaces.spi.AnnotationProviderFactory (added)
+++ openejb/trunk/openejb/tomee/tomee-myfaces/src/main/resources/META-INF/services/org.apache.myfaces.spi.AnnotationProviderFactory Tue Mar 20 09:39:39 2012
@@ -0,0 +1 @@
+org.apache.tomee.myfaces.TomEEAnnotationProviderFactory