You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by ts...@apache.org on 2007/11/10 17:03:07 UTC

svn commit: r593789 - in /struts/sandbox/trunk/struts2-uel-plugin/src: main/java/org/apache/struts2/uelplugin/ main/java/org/apache/struts2/uelplugin/contextlistener/ test/java/org/apache/struts2/uelplugin/

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