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 2011/09/14 20:43:30 UTC

svn commit: r1170764 - in /openejb/trunk/openejb3: assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/ tck/cdi-tomee-embedded/src/main/java/org/apache/openejb/tck/cdi/tomee/embedded/ tck/cdi-tomee/ tck/cdi-...

Author: rmannibucau
Date: Wed Sep 14 18:43:29 2011
New Revision: 1170764

URL: http://svn.apache.org/viewvc?rev=1170764&view=rev
Log:
implementing ELImpl for cdi tcks and refactoring a bit elresolver for tomcat

Modified:
    openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java
    openejb/trunk/openejb3/tck/cdi-tomee-embedded/src/main/java/org/apache/openejb/tck/cdi/tomee/embedded/ELImpl.java
    openejb/trunk/openejb3/tck/cdi-tomee/pom.xml
    openejb/trunk/openejb3/tck/cdi-tomee/src/main/java/org/apache/openejb/tck/cdi/tomee/ELImpl.java

Modified: openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java?rev=1170764&r1=1170763&r2=1170764&view=diff
==============================================================================
--- openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java (original)
+++ openejb/trunk/openejb3/assembly/openejb-tomcat/openejb-tomcat-catalina/src/main/java/org/apache/openejb/tomcat/catalina/TomcatWebAppBuilder.java Wed Sep 14 18:43:29 2011
@@ -73,6 +73,7 @@ import org.omg.CORBA.ORB;
 
 import javax.ejb.spi.HandleDelegate;
 import javax.el.ELResolver;
+import javax.el.ExpressionFactory;
 import javax.naming.Context;
 import javax.naming.NamingException;
 import javax.persistence.EntityManagerFactory;
@@ -484,18 +485,15 @@ public class TomcatWebAppBuilder impleme
                 logger.error("Error merging OpenEJB JNDI entries in to war " + standardContext.getPath() + ": Exception: " + e.getMessage(), e);
             }
 
-            // CDI
-            if (Thread.currentThread().getContextClassLoader().getResource("WEB-INF/beans.xml") != null) {
+            JspFactory factory = JspFactory.getDefaultFactory();
+            if (factory != null && Thread.currentThread().getContextClassLoader().getResource("WEB-INF/beans.xml") != null) {
+                JspApplicationContext applicationCtx = factory.getJspApplicationContext(standardContext.getServletContext());
                 WebBeansContext context = appContext.getWebBeansContext();
                 if (context != null) {
                     // Registering ELResolver with JSP container
                     ELAdaptor elAdaptor = context.getService(ELAdaptor.class);
                     ELResolver resolver = elAdaptor.getOwbELResolver();
-                    JspFactory factory = JspFactory.getDefaultFactory();
-                    if (factory != null)  {
-                        JspApplicationContext applicationCtx = factory.getJspApplicationContext(standardContext.getServletContext());
-                        applicationCtx.addELResolver(resolver);
-                    }
+                    applicationCtx.addELResolver(resolver);
                 }
             }
         }

Modified: openejb/trunk/openejb3/tck/cdi-tomee-embedded/src/main/java/org/apache/openejb/tck/cdi/tomee/embedded/ELImpl.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/tck/cdi-tomee-embedded/src/main/java/org/apache/openejb/tck/cdi/tomee/embedded/ELImpl.java?rev=1170764&r1=1170763&r2=1170764&view=diff
==============================================================================
--- openejb/trunk/openejb3/tck/cdi-tomee-embedded/src/main/java/org/apache/openejb/tck/cdi/tomee/embedded/ELImpl.java (original)
+++ openejb/trunk/openejb3/tck/cdi-tomee-embedded/src/main/java/org/apache/openejb/tck/cdi/tomee/embedded/ELImpl.java Wed Sep 14 18:43:29 2011
@@ -16,25 +16,86 @@
  */
 package org.apache.openejb.tck.cdi.tomee.embedded;
 
+import org.apache.el.ExpressionFactoryImpl;
+import org.apache.el.lang.FunctionMapperImpl;
+import org.apache.el.lang.VariableMapperImpl;
+import org.apache.webbeans.el.WebBeansELResolver;
+import org.apache.webbeans.el.WrappedExpressionFactory;
+
+import javax.el.ArrayELResolver;
+import javax.el.BeanELResolver;
+import javax.el.CompositeELResolver;
 import javax.el.ELContext;
+import javax.el.ELContextEvent;
+import javax.el.ELResolver;
+import javax.el.ExpressionFactory;
+import javax.el.FunctionMapper;
+import javax.el.ListELResolver;
+import javax.el.MapELResolver;
+import javax.el.ResourceBundleELResolver;
+import javax.el.VariableMapper;
 
 /**
  * @version $Rev$ $Date$
  */
 public class ELImpl implements org.jboss.jsr299.tck.spi.EL {
 
-    @Override
-    public <T> T evaluateValueExpression(String expression, Class<T> expectedType) {
-        return null;
+    private static final ExpressionFactory EXPRESSION_FACTORY = new WrappedExpressionFactory(new ExpressionFactoryImpl());
+
+    public ELImpl() {
     }
 
-    @Override
+    public static ELResolver getELResolver() {
+        CompositeELResolver composite = new CompositeELResolver();
+        composite.add(new BeanELResolver());
+        composite.add(new ArrayELResolver());
+        composite.add(new MapELResolver());
+        composite.add(new ListELResolver());
+        composite.add(new ResourceBundleELResolver());
+        composite.add(new WebBeansELResolver());
+
+        return composite;
+    }
+
+    public static class ELContextImpl extends ELContext {
+        @Override
+        public ELResolver getELResolver() {
+            return ELImpl.getELResolver();
+        }
+
+        @Override
+        public FunctionMapper getFunctionMapper() {
+            return new FunctionMapperImpl();
+        }
+
+        @Override
+        public VariableMapper getVariableMapper() {
+            return new VariableMapperImpl();
+        }
+
+    }
+
+    @SuppressWarnings("unchecked")
     public <T> T evaluateMethodExpression(String expression, Class<T> expectedType, Class<?>[] expectedParamTypes, Object[] expectedParams) {
-        return null;
+        ELContext context = createELContext();
+        Object object = EXPRESSION_FACTORY.createMethodExpression(context, expression, expectedType, expectedParamTypes).invoke(context, expectedParams);
+
+        return (T) object;
+    }
+
+    @SuppressWarnings("unchecked")
+    public <T> T evaluateValueExpression(String expression, Class<T> expectedType) {
+        ELContext context = createELContext();
+        Object object = EXPRESSION_FACTORY.createValueExpression(context, expression, expectedType).getValue(context);
+
+        return (T) object;
     }
 
     @Override
     public ELContext createELContext() {
-        return null;
+        ELContext context = new ELContextImpl();
+        ELContextEvent event = new ELContextEvent(context);
+
+        return context;
     }
 }

Modified: openejb/trunk/openejb3/tck/cdi-tomee/pom.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/tck/cdi-tomee/pom.xml?rev=1170764&r1=1170763&r2=1170764&view=diff
==============================================================================
--- openejb/trunk/openejb3/tck/cdi-tomee/pom.xml (original)
+++ openejb/trunk/openejb3/tck/cdi-tomee/pom.xml Wed Sep 14 18:43:29 2011
@@ -48,6 +48,12 @@
       <version>${project.version}</version>
     </dependency>
     <dependency>
+      <groupId>org.apache.tomcat</groupId>
+      <artifactId>tomcat-jasper-el</artifactId>
+      <version>7.0.16</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
       <groupId>org.apache.openejb</groupId>
       <artifactId>tck-common</artifactId>
       <version>${project.version}</version>

Modified: openejb/trunk/openejb3/tck/cdi-tomee/src/main/java/org/apache/openejb/tck/cdi/tomee/ELImpl.java
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb3/tck/cdi-tomee/src/main/java/org/apache/openejb/tck/cdi/tomee/ELImpl.java?rev=1170764&r1=1170763&r2=1170764&view=diff
==============================================================================
--- openejb/trunk/openejb3/tck/cdi-tomee/src/main/java/org/apache/openejb/tck/cdi/tomee/ELImpl.java (original)
+++ openejb/trunk/openejb3/tck/cdi-tomee/src/main/java/org/apache/openejb/tck/cdi/tomee/ELImpl.java Wed Sep 14 18:43:29 2011
@@ -16,25 +16,82 @@
  */
 package org.apache.openejb.tck.cdi.tomee;
 
+import org.apache.el.ExpressionFactoryImpl;
+import org.apache.el.lang.FunctionMapperImpl;
+import org.apache.el.lang.VariableMapperImpl;
+import org.apache.webbeans.el.WebBeansELResolver;
+import org.apache.webbeans.el.WrappedExpressionFactory;
+
+import javax.el.ArrayELResolver;
+import javax.el.BeanELResolver;
+import javax.el.CompositeELResolver;
 import javax.el.ELContext;
+import javax.el.ELResolver;
+import javax.el.ExpressionFactory;
+import javax.el.FunctionMapper;
+import javax.el.ListELResolver;
+import javax.el.MapELResolver;
+import javax.el.ResourceBundleELResolver;
+import javax.el.VariableMapper;
 
 /**
  * @version $Rev$ $Date$
  */
 public class ELImpl implements org.jboss.jsr299.tck.spi.EL {
 
-    @Override
-    public <T> T evaluateValueExpression(String expression, Class<T> expectedType) {
-        return null;
+    private static final ExpressionFactory EXPRESSION_FACTORY = new WrappedExpressionFactory(new ExpressionFactoryImpl());
+
+    public ELImpl() {
     }
 
-    @Override
+    public static ELResolver getELResolver() {
+        CompositeELResolver composite = new CompositeELResolver();
+        composite.add(new BeanELResolver());
+        composite.add(new ArrayELResolver());
+        composite.add(new MapELResolver());
+        composite.add(new ListELResolver());
+        composite.add(new ResourceBundleELResolver());
+        composite.add(new WebBeansELResolver());
+
+        return composite;
+    }
+
+    public static class ELContextImpl extends ELContext {
+        @Override
+        public ELResolver getELResolver() {
+            return ELImpl.getELResolver();
+        }
+
+        @Override
+        public FunctionMapper getFunctionMapper() {
+            return new FunctionMapperImpl();
+        }
+
+        @Override
+        public VariableMapper getVariableMapper() {
+            return new VariableMapperImpl();
+        }
+
+    }
+
+    @SuppressWarnings("unchecked")
     public <T> T evaluateMethodExpression(String expression, Class<T> expectedType, Class<?>[] expectedParamTypes, Object[] expectedParams) {
-        return null;
+        ELContext context = createELContext();
+        Object object = EXPRESSION_FACTORY.createMethodExpression(context, expression, expectedType, expectedParamTypes).invoke(context, expectedParams);
+
+        return (T) object;
+    }
+
+    @SuppressWarnings("unchecked")
+    public <T> T evaluateValueExpression(String expression, Class<T> expectedType) {
+        ELContext context = createELContext();
+        Object object = EXPRESSION_FACTORY.createValueExpression(context, expression, expectedType).getValue(context);
+
+        return (T) object;
     }
 
     @Override
     public ELContext createELContext() {
-        return null;
+        return new ELContextImpl();
     }
 }