This is an automated email from the ASF dual-hosted git repository.

kusal pushed a commit to branch WW-5378-no-context-fallback
in repository https://gitbox.apache.org/repos/asf/struts.git

commit 6eb1b6467b16c2e4a9c87aac5be0d6e2d2ce07bd
Author: Kusal Kithul-Godage <g...@kusal.io>
AuthorDate: Thu Dec 28 00:29:09 2023 +1100

    WW-5378 Assorted refactor and clean up
---
 .../opensymphony/xwork2/ognl/OgnlValueStack.java   | 35 +++++-----------------
 .../xwork2/ognl/OgnlValueStackFactory.java         | 20 +++++++------
 2 files changed, 18 insertions(+), 37 deletions(-)

diff --git 
a/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java 
b/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java
index ddcd4429a..349d4dbb2 100644
--- a/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java
+++ b/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStack.java
@@ -337,34 +337,16 @@ public class OgnlValueStack implements Serializable, 
ValueStack, ClearableValueS
     }
 
     private Object tryFindValue(String expr) throws OgnlException {
-        Object value;
-        expr = lookupForOverrides(expr);
-        if (defaultType != null) {
-            value = findValue(expr, defaultType);
-        } else {
-            value = getValueUsingOgnl(expr);
-            if (value == null) {
-                value = findInContext(expr);
-            }
-        }
-        return value;
+        return tryFindValue(expr, defaultType);
     }
 
     private String lookupForOverrides(String expr) {
-        if ((overrides != null) && overrides.containsKey(expr)) {
+        if (overrides != null && overrides.containsKey(expr)) {
             expr = (String) overrides.get(expr);
         }
         return expr;
     }
 
-    private Object getValueUsingOgnl(String expr) throws OgnlException {
-        try {
-            return ognlUtil.getValue(expr, context, root);
-        } finally {
-            context.remove(THROW_EXCEPTION_ON_FAILURE);
-        }
-    }
-
     public Object findValue(String expr) {
         return findValue(expr, false);
     }
@@ -419,22 +401,19 @@ public class OgnlValueStack implements Serializable, 
ValueStack, ClearableValueS
     }
 
     private Object tryFindValue(String expr, Class asType) throws 
OgnlException {
-        Object value = null;
         try {
             expr = lookupForOverrides(expr);
-            value = getValue(expr, asType);
+            Object value = ognlUtil.getValue(expr, context, root, asType);
             if (value == null) {
                 value = findInContext(expr);
-                return converter.convertValue(getContext(), value, asType);
+                if (value != null && asType != null) {
+                    value = converter.convertValue(getContext(), value, 
asType);
+                }
             }
+            return value;
         } finally {
             context.remove(THROW_EXCEPTION_ON_FAILURE);
         }
-        return value;
-    }
-
-    private Object getValue(String expr, Class asType) throws OgnlException {
-        return ognlUtil.getValue(expr, context, root, asType);
     }
 
     protected Object findInContext(String name) {
diff --git 
a/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStackFactory.java 
b/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStackFactory.java
index 66798c034..6564edf68 100644
--- a/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStackFactory.java
+++ b/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlValueStackFactory.java
@@ -59,19 +59,21 @@ public class OgnlValueStackFactory implements 
ValueStackFactory {
     protected void setTextProvider(TextProvider textProvider) {
         this.textProvider = textProvider;
     }
-
+    @Override
     public ValueStack createValueStack() {
-        ValueStack stack = new OgnlValueStack(
-                xworkConverter, compoundRootAccessor, textProvider, 
container.getInstance(SecurityMemberAccess.class));
-        container.inject(stack);
-        return 
stack.getActionContext().withContainer(container).withValueStack(stack).getValueStack();
+        return createValueStack(null, true);
     }
 
+    @Override
     public ValueStack createValueStack(ValueStack stack) {
-        ValueStack result = new OgnlValueStack(
-                stack, xworkConverter, compoundRootAccessor, 
container.getInstance(SecurityMemberAccess.class));
-        container.inject(result);
-        return 
result.getActionContext().withContainer(container).withValueStack(result).getValueStack();
+        return createValueStack(stack, false);
+    }
+
+    protected ValueStack createValueStack(ValueStack stack, boolean 
useTextProvider) {
+        ValueStack newStack = new OgnlValueStack(
+                stack, xworkConverter, compoundRootAccessor, useTextProvider ? 
textProvider : null, container.getInstance(SecurityMemberAccess.class));
+        container.inject(newStack);
+        return 
newStack.getActionContext().withContainer(container).withValueStack(newStack).getValueStack();
     }
 
     @Inject

Reply via email to