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

lukaszlenart pushed a commit to branch feature/WW-5544-context-factory
in repository https://gitbox.apache.org/repos/asf/struts.git

commit a422ffa9c05639e13657dc2a8f32c76c6792b163
Author: Lukasz Lenart <lukaszlen...@apache.org>
AuthorDate: Wed Apr 23 08:59:50 2025 +0200

    WW-5544 Marks ReflectionContextFactory as deprecated and uses ActionContext 
instead
---
 .../xwork2/ognl/OgnlReflectionContextFactory.java        |  4 ++++
 .../xwork2/util/reflection/ReflectionContextFactory.java |  4 ++++
 .../validator/validators/RangeValidatorSupport.java      |  2 +-
 .../struts2/config_browser/ShowValidatorAction.java      | 16 +++++-----------
 4 files changed, 14 insertions(+), 12 deletions(-)

diff --git 
a/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlReflectionContextFactory.java
 
b/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlReflectionContextFactory.java
index ec3db9f9a..85a724ede 100644
--- 
a/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlReflectionContextFactory.java
+++ 
b/core/src/main/java/com/opensymphony/xwork2/ognl/OgnlReflectionContextFactory.java
@@ -23,6 +23,10 @@ import ognl.Ognl;
 
 import java.util.Map;
 
+/**
+ * @deprecated since 6.8.0, to be removed, see {@link ReflectionContextFactory}
+ */
+@Deprecated
 public class OgnlReflectionContextFactory implements ReflectionContextFactory {
 
     public Map createDefaultContext(Object root) {
diff --git 
a/core/src/main/java/com/opensymphony/xwork2/util/reflection/ReflectionContextFactory.java
 
b/core/src/main/java/com/opensymphony/xwork2/util/reflection/ReflectionContextFactory.java
index b8792537b..3e5646615 100644
--- 
a/core/src/main/java/com/opensymphony/xwork2/util/reflection/ReflectionContextFactory.java
+++ 
b/core/src/main/java/com/opensymphony/xwork2/util/reflection/ReflectionContextFactory.java
@@ -20,6 +20,10 @@ package com.opensymphony.xwork2.util.reflection;
 
 import java.util.Map;
 
+/**
+ * @deprecated since 6.8.0, avoid using this interface and any of its 
implementation, it's going to be removed soon
+ */
+@Deprecated
 public interface ReflectionContextFactory {
     /**
      * Creates and returns a new standard naming context for evaluating an OGNL
diff --git 
a/core/src/main/java/com/opensymphony/xwork2/validator/validators/RangeValidatorSupport.java
 
b/core/src/main/java/com/opensymphony/xwork2/validator/validators/RangeValidatorSupport.java
index b713262c5..c263c4ff5 100644
--- 
a/core/src/main/java/com/opensymphony/xwork2/validator/validators/RangeValidatorSupport.java
+++ 
b/core/src/main/java/com/opensymphony/xwork2/validator/validators/RangeValidatorSupport.java
@@ -28,7 +28,7 @@ import java.util.Collection;
 /**
  * Base class for range based validators. Use this class to develop any other 
custom range validators.
  */
-public abstract class RangeValidatorSupport<T extends Comparable> extends 
FieldValidatorSupport {
+public abstract class RangeValidatorSupport<T extends Comparable<T>> extends 
FieldValidatorSupport {
 
     private static final Logger LOG = 
LogManager.getLogger(RangeValidatorSupport.class);
 
diff --git 
a/plugins/config-browser/src/main/java/org/apache/struts2/config_browser/ShowValidatorAction.java
 
b/plugins/config-browser/src/main/java/org/apache/struts2/config_browser/ShowValidatorAction.java
index 524cee021..d8358b522 100644
--- 
a/plugins/config-browser/src/main/java/org/apache/struts2/config_browser/ShowValidatorAction.java
+++ 
b/plugins/config-browser/src/main/java/org/apache/struts2/config_browser/ShowValidatorAction.java
@@ -19,12 +19,12 @@
 package org.apache.struts2.config_browser;
 
 import com.opensymphony.xwork2.inject.Inject;
-import com.opensymphony.xwork2.util.reflection.ReflectionContextFactory;
 import com.opensymphony.xwork2.util.reflection.ReflectionException;
 import com.opensymphony.xwork2.util.reflection.ReflectionProvider;
 import com.opensymphony.xwork2.validator.Validator;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
+import org.apache.struts2.ActionContext;
 import org.apache.struts2.interceptor.parameter.StrutsParameter;
 
 import java.beans.BeanInfo;
@@ -49,19 +49,13 @@ public class ShowValidatorAction extends 
ListValidatorsAction {
     private Set<PropertyInfo> properties = Collections.emptySet();
     private int selected = 0;
 
-    ReflectionProvider reflectionProvider;
-    ReflectionContextFactory reflectionContextFactory;
+    private ReflectionProvider reflectionProvider;
 
     @Inject
     public void setReflectionProvider(ReflectionProvider prov) {
         this.reflectionProvider = prov;
     }
 
-    @Inject
-    public void setReflectionContextFactory(ReflectionContextFactory fac) {
-        this.reflectionContextFactory = fac;
-    }
-
     public int getSelected() {
         return selected;
     }
@@ -85,7 +79,6 @@ public class ShowValidatorAction extends ListValidatorsAction 
{
         Validator validator = getSelectedValidator();
         properties = new TreeSet<>();
         try {
-            Map<String, Object> context = 
reflectionContextFactory.createDefaultContext(validator);
             BeanInfo beanInfoFrom;
             try {
                 beanInfoFrom = Introspector.getBeanInfo(validator.getClass(), 
Object.class);
@@ -104,6 +97,7 @@ public class ShowValidatorAction extends 
ListValidatorsAction {
                     value = "No read method for property";
                 } else {
                     try {
+                        Map<String, Object> context = 
ActionContext.getContext().getContextMap();
                         value = reflectionProvider.getValue(name, context, 
validator);
                     } catch (ReflectionException e) {
                         addActionError("Caught exception while getting 
property value for '" + name + "' on validator of type " + 
validator.getClass().getName());
@@ -113,9 +107,9 @@ public class ShowValidatorAction extends 
ListValidatorsAction {
             }
         } catch (Exception e) {
             if (LOG.isWarnEnabled()) {
-               LOG.warn("Unable to retrieve properties.", e);
+                LOG.warn("Unable to retrieve properties.", e);
             }
-            addActionError("Unable to retrieve properties: " + e.toString());
+            addActionError("Unable to retrieve properties: " + e);
         }
 
         if (hasErrors()) {

Reply via email to