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