Author: tschneider
Date: Sat Nov 10 08:03:06 2007
New Revision: 593789

URL: http://svn.apache.org/viewvc?rev=593789&view=rev
Log:
fixes for showcase

Added:
    
struts/sandbox/trunk/struts2-uel-plugin/src/main/java/org/apache/struts2/uelplugin/ExpressionFactoryHolder.java
Modified:
    
struts/sandbox/trunk/struts2-uel-plugin/src/main/java/org/apache/struts2/uelplugin/UelReflectionProvider.java
    
struts/sandbox/trunk/struts2-uel-plugin/src/main/java/org/apache/struts2/uelplugin/UelValueStack.java
    
struts/sandbox/trunk/struts2-uel-plugin/src/main/java/org/apache/struts2/uelplugin/UelValueStackFactory.java
    
struts/sandbox/trunk/struts2-uel-plugin/src/main/java/org/apache/struts2/uelplugin/contextlistener/UelServletContextListener.java
    
struts/sandbox/trunk/struts2-uel-plugin/src/test/java/org/apache/struts2/uelplugin/UelTest.java

Added: 
struts/sandbox/trunk/struts2-uel-plugin/src/main/java/org/apache/struts2/uelplugin/ExpressionFactoryHolder.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-uel-plugin/src/main/java/org/apache/struts2/uelplugin/ExpressionFactoryHolder.java?rev=593789&view=auto
==============================================================================
--- 
struts/sandbox/trunk/struts2-uel-plugin/src/main/java/org/apache/struts2/uelplugin/ExpressionFactoryHolder.java
 (added)
+++ 
struts/sandbox/trunk/struts2-uel-plugin/src/main/java/org/apache/struts2/uelplugin/ExpressionFactoryHolder.java
 Sat Nov 10 08:03:06 2007
@@ -0,0 +1,23 @@
+package org.apache.struts2.uelplugin;
+
+import javax.el.ExpressionFactory;
+
+public class ExpressionFactoryHolder {
+       private static ThreadLocal<ExpressionFactory> expressionFactoryInstance 
= new ThreadLocal<ExpressionFactory>();
+
+       public static void setExpressionFactory(ExpressionFactory factory) {
+               expressionFactoryInstance.set(factory);
+       }
+
+       public static ExpressionFactory getExpressionFactory() {
+               try {
+                       return ExpressionFactory.newInstance();
+               } catch (Throwable t) {
+                       ExpressionFactory factory = 
expressionFactoryInstance.get();
+                       if (factory == null) {
+                               throw new RuntimeException("Expression Factory 
Not Found!");
+                       }
+                       return factory;
+               }
+       }
+}

Modified: 
struts/sandbox/trunk/struts2-uel-plugin/src/main/java/org/apache/struts2/uelplugin/UelReflectionProvider.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-uel-plugin/src/main/java/org/apache/struts2/uelplugin/UelReflectionProvider.java?rev=593789&r1=593788&r2=593789&view=diff
==============================================================================
--- 
struts/sandbox/trunk/struts2-uel-plugin/src/main/java/org/apache/struts2/uelplugin/UelReflectionProvider.java
 (original)
+++ 
struts/sandbox/trunk/struts2-uel-plugin/src/main/java/org/apache/struts2/uelplugin/UelReflectionProvider.java
 Sat Nov 10 08:03:06 2007
@@ -26,7 +26,7 @@
 
        public void initExpressionFactory() {
                if (factory == null) {
-                       factory = ExpressionFactory.newInstance();
+                       factory = 
ExpressionFactoryHolder.getExpressionFactory();
                }
        }
        

Modified: 
struts/sandbox/trunk/struts2-uel-plugin/src/main/java/org/apache/struts2/uelplugin/UelValueStack.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-uel-plugin/src/main/java/org/apache/struts2/uelplugin/UelValueStack.java?rev=593789&r1=593788&r2=593789&view=diff
==============================================================================
--- 
struts/sandbox/trunk/struts2-uel-plugin/src/main/java/org/apache/struts2/uelplugin/UelValueStack.java
 (original)
+++ 
struts/sandbox/trunk/struts2-uel-plugin/src/main/java/org/apache/struts2/uelplugin/UelValueStack.java
 Sat Nov 10 08:03:06 2007
@@ -56,10 +56,18 @@
                try {
                        if (expr != null && expr.startsWith("#") && 
!expr.startsWith("#{")) {
                                int firstDot = expr.indexOf('.');
-                               String key = expr.substring(1, firstDot);
-                               String value = expr.substring(firstDot + 1);
-                               Map map = (Map) context.get(key);
-                               return map.get(value);
+                               if (firstDot < 0) {
+                                       String key = expr.substring(1);
+                                       return (Object) context.get(key);
+                               } else {
+                                       String key = expr.substring(1, 
firstDot);
+                                       String value = expr.substring(firstDot 
+ 1);
+                                       Map map = (Map) context.get(key);
+                                       return map.get(value);
+                               }
+                       }
+                       if (context.get(expr) != null) {
+                               return context.get(expr);
                        }
                        if ((overrides != null) && overrides.containsKey(expr)) 
{
                                expr = (String) overrides.get(expr);

Modified: 
struts/sandbox/trunk/struts2-uel-plugin/src/main/java/org/apache/struts2/uelplugin/UelValueStackFactory.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-uel-plugin/src/main/java/org/apache/struts2/uelplugin/UelValueStackFactory.java?rev=593789&r1=593788&r2=593789&view=diff
==============================================================================
--- 
struts/sandbox/trunk/struts2-uel-plugin/src/main/java/org/apache/struts2/uelplugin/UelValueStackFactory.java
 (original)
+++ 
struts/sandbox/trunk/struts2-uel-plugin/src/main/java/org/apache/struts2/uelplugin/UelValueStackFactory.java
 Sat Nov 10 08:03:06 2007
@@ -2,7 +2,9 @@
 
 import javax.el.ExpressionFactory;
 
+import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.conversion.impl.XWorkConverter;
+import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.inject.Inject;
 import com.opensymphony.xwork2.util.ValueStack;
 import com.opensymphony.xwork2.util.ValueStackFactory;
@@ -15,24 +17,35 @@
 
        private XWorkConverter xworkConverter;
 
+       private Container container;
+       
        @Inject
        public void setXWorkConverter(XWorkConverter conv) {
                this.xworkConverter = conv;
        }
 
-       public void initExpressionFactory() {
+    @Inject
+    public void setContainer(Container container) throws 
ClassNotFoundException {
+       this.container = container;
+    }
+       
+    public void initExpressionFactory() {
                if (factory == null) {
-                       factory = ExpressionFactory.newInstance();
+                       factory = 
ExpressionFactoryHolder.getExpressionFactory();
                }
        }
 
        public ValueStack createValueStack() {
                initExpressionFactory();
-               return new UelValueStack(factory, xworkConverter);
+               ValueStack results = new UelValueStack(factory, xworkConverter);
+               results.getContext().put(ActionContext.CONTAINER, container);
+               return results;
        }
 
        public ValueStack createValueStack(ValueStack stack) {
                initExpressionFactory();
-               return new UelValueStack(factory, xworkConverter, stack);
+               ValueStack results = new UelValueStack(factory, xworkConverter, 
stack);
+               results.getContext().put(ActionContext.CONTAINER, container);
+               return results;
        }
 }

Modified: 
struts/sandbox/trunk/struts2-uel-plugin/src/main/java/org/apache/struts2/uelplugin/contextlistener/UelServletContextListener.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-uel-plugin/src/main/java/org/apache/struts2/uelplugin/contextlistener/UelServletContextListener.java?rev=593789&r1=593788&r2=593789&view=diff
==============================================================================
--- 
struts/sandbox/trunk/struts2-uel-plugin/src/main/java/org/apache/struts2/uelplugin/contextlistener/UelServletContextListener.java
 (original)
+++ 
struts/sandbox/trunk/struts2-uel-plugin/src/main/java/org/apache/struts2/uelplugin/contextlistener/UelServletContextListener.java
 Sat Nov 10 08:03:06 2007
@@ -6,10 +6,10 @@
 import javax.servlet.jsp.JspApplicationContext;
 import javax.servlet.jsp.JspFactory;
 
+import org.apache.struts2.uelplugin.ExpressionFactoryHolder;
 import org.apache.struts2.uelplugin.elresolvers.CompoundRootELResolver;
 import org.apache.struts2.uelplugin.elresolvers.XWorkBeanELResolver;
 
-
 /**
  * Responsible for registering the ELResolvers.
  */
@@ -23,6 +23,8 @@
                jspApplicationContext.addELResolver(new XWorkBeanELResolver());
                contextEvent.getServletContext().log(
                                "CompoundRootELResolver and XWorkBeanELResolver 
registered");
+               
ExpressionFactoryHolder.setExpressionFactory(jspApplicationContext
+                               .getExpressionFactory());
        }
 
        public void contextDestroyed(ServletContextEvent contextEvent) {

Modified: 
struts/sandbox/trunk/struts2-uel-plugin/src/test/java/org/apache/struts2/uelplugin/UelTest.java
URL: 
http://svn.apache.org/viewvc/struts/sandbox/trunk/struts2-uel-plugin/src/test/java/org/apache/struts2/uelplugin/UelTest.java?rev=593789&r1=593788&r2=593789&view=diff
==============================================================================
--- 
struts/sandbox/trunk/struts2-uel-plugin/src/test/java/org/apache/struts2/uelplugin/UelTest.java
 (original)
+++ 
struts/sandbox/trunk/struts2-uel-plugin/src/test/java/org/apache/struts2/uelplugin/UelTest.java
 Sat Nov 10 08:03:06 2007
@@ -46,7 +46,7 @@
                converter = container.getInstance(XWorkConverter.class);
                converter.registerConverter("java.util.Date", new 
DateConverter());
        }
-
+       
        public void testBasicFind() throws IllegalAccessException,
                        InvocationTargetException, NoSuchMethodException {
                CompoundRoot root = new CompoundRoot();


Reply via email to