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