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