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();