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

lukaszlenart pushed a commit to branch feat/ognl-3.5-upgrade
in repository https://gitbox.apache.org/repos/asf/struts.git

commit cda38c79db55595fbe12b5395d4500b9c3a2be86
Author: Lukasz Lenart <[email protected]>
AuthorDate: Mon Apr 6 19:01:25 2026 +0200

    WW-5326 refactor(tiles): parameterize tiles OGNL accessors with 
StrutsContext
    
    Co-Authored-By: Claude Opus 4.6 <[email protected]>
---
 .../apache/tiles/ognl/AnyScopePropertyAccessor.java | 12 ++++++------
 .../apache/tiles/ognl/DelegatePropertyAccessor.java | 12 ++++++------
 .../ognl/NestedObjectDelegatePropertyAccessor.java  | 16 ++++++++--------
 .../tiles/ognl/PropertyAccessorDelegateFactory.java |  3 ++-
 .../apache/tiles/ognl/ScopePropertyAccessor.java    | 12 ++++++------
 ...TilesContextPropertyAccessorDelegateFactory.java | 21 +++++++++++----------
 6 files changed, 39 insertions(+), 37 deletions(-)

diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/ognl/AnyScopePropertyAccessor.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/ognl/AnyScopePropertyAccessor.java
index d3a108ca0..8e8862833 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/ognl/AnyScopePropertyAccessor.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/ognl/AnyScopePropertyAccessor.java
@@ -18,8 +18,8 @@
  */
 package org.apache.tiles.ognl;
 
-import ognl.OgnlContext;
 import ognl.PropertyAccessor;
+import org.apache.struts2.ognl.StrutsContext;
 import org.apache.tiles.request.Request;
 
 import java.util.Map;
@@ -27,10 +27,10 @@ import java.util.Map;
 /**
  * Accesses attributes in any scope.
  */
-public class AnyScopePropertyAccessor implements PropertyAccessor {
+public class AnyScopePropertyAccessor implements 
PropertyAccessor<StrutsContext> {
 
     @Override
-    public Object getProperty(OgnlContext context, Object target, Object name) 
{
+    public Object getProperty(StrutsContext context, Object target, Object 
name) {
         Request request = (Request) target;
         String attributeName = (String) name;
         for (String scopeName : request.getAvailableScopes()) {
@@ -43,7 +43,7 @@ public class AnyScopePropertyAccessor implements 
PropertyAccessor {
     }
 
     @Override
-    public String getSourceAccessor(OgnlContext context, Object target, Object 
index) {
+    public String getSourceAccessor(StrutsContext context, Object target, 
Object index) {
         Request request = (Request) target;
         String attributeName = (String) index;
         for (String scopeName : request.getAvailableScopes()) {
@@ -56,7 +56,7 @@ public class AnyScopePropertyAccessor implements 
PropertyAccessor {
     }
 
     @Override
-    public String getSourceSetter(OgnlContext context, Object target, Object 
index) {
+    public String getSourceSetter(StrutsContext context, Object target, Object 
index) {
         Request request = (Request) target;
         String attributeName = (String) index;
         String[] availableScopes = request.getAvailableScopes().toArray(new 
String[0]);
@@ -70,7 +70,7 @@ public class AnyScopePropertyAccessor implements 
PropertyAccessor {
     }
 
     @Override
-    public void setProperty(OgnlContext context, Object target, Object name, 
Object value) {
+    public void setProperty(StrutsContext context, Object target, Object name, 
Object value) {
         Request request = (Request) target;
         String attributeName = (String) name;
         String[] availableScopes = request.getAvailableScopes().toArray(new 
String[0]);
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/ognl/DelegatePropertyAccessor.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/ognl/DelegatePropertyAccessor.java
index 5567f33b2..dcab113b5 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/ognl/DelegatePropertyAccessor.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/ognl/DelegatePropertyAccessor.java
@@ -18,9 +18,9 @@
  */
 package org.apache.tiles.ognl;
 
-import ognl.OgnlContext;
 import ognl.OgnlException;
 import ognl.PropertyAccessor;
+import org.apache.struts2.ognl.StrutsContext;
 
 /**
  * Uses a {@link PropertyAccessorDelegateFactory} to delegate the methods to
@@ -29,7 +29,7 @@ import ognl.PropertyAccessor;
  * @param <T> The type of the accessed root object.
  * @since 2.2.0
  */
-public class DelegatePropertyAccessor<T> implements PropertyAccessor {
+public class DelegatePropertyAccessor<T> implements 
PropertyAccessor<StrutsContext> {
 
     /**
      * The property accessor factory.
@@ -52,7 +52,7 @@ public class DelegatePropertyAccessor<T> implements 
PropertyAccessor {
      * {@inheritDoc}
      */
     @SuppressWarnings("unchecked")
-    public Object getProperty(OgnlContext context, Object target, Object name) 
throws OgnlException {
+    public Object getProperty(StrutsContext context, Object target, Object 
name) throws OgnlException {
         return factory.getPropertyAccessor((String) name, (T) 
target).getProperty(context, target, name);
     }
 
@@ -60,7 +60,7 @@ public class DelegatePropertyAccessor<T> implements 
PropertyAccessor {
      * {@inheritDoc}
      */
     @SuppressWarnings("unchecked")
-    public void setProperty(OgnlContext context, Object target, Object name, 
Object value) throws OgnlException {
+    public void setProperty(StrutsContext context, Object target, Object name, 
Object value) throws OgnlException {
         factory.getPropertyAccessor((String) name, (T) 
target).setProperty(context, target, name, value);
     }
 
@@ -68,7 +68,7 @@ public class DelegatePropertyAccessor<T> implements 
PropertyAccessor {
      * {@inheritDoc}
      */
     @SuppressWarnings("unchecked")
-    public String getSourceAccessor(OgnlContext context, Object target, Object 
index) {
+    public String getSourceAccessor(StrutsContext context, Object target, 
Object index) {
         return factory.getPropertyAccessor((String) index, (T) 
target).getSourceAccessor(context, target, index);
     }
 
@@ -76,7 +76,7 @@ public class DelegatePropertyAccessor<T> implements 
PropertyAccessor {
      * {@inheritDoc}
      */
     @SuppressWarnings("unchecked")
-    public String getSourceSetter(OgnlContext context, Object target, Object 
index) {
+    public String getSourceSetter(StrutsContext context, Object target, Object 
index) {
         return factory.getPropertyAccessor((String) index, (T) 
target).getSourceSetter(context, target, index);
     }
 }
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/ognl/NestedObjectDelegatePropertyAccessor.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/ognl/NestedObjectDelegatePropertyAccessor.java
index b966a0e11..3a8599a78 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/ognl/NestedObjectDelegatePropertyAccessor.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/ognl/NestedObjectDelegatePropertyAccessor.java
@@ -18,9 +18,9 @@
  */
 package org.apache.tiles.ognl;
 
-import ognl.OgnlContext;
 import ognl.OgnlException;
 import ognl.PropertyAccessor;
+import org.apache.struts2.ognl.StrutsContext;
 
 /**
  * Uses a {@link PropertyAccessor} as a delegate, but passing a nested object 
as
@@ -29,7 +29,7 @@ import ognl.PropertyAccessor;
  * @param <T> The root object type from which the target object will be 
extracted.
  * @since 2.2.0
  */
-public class NestedObjectDelegatePropertyAccessor<T> implements 
PropertyAccessor {
+public class NestedObjectDelegatePropertyAccessor<T> implements 
PropertyAccessor<StrutsContext> {
 
     /**
      * The extractor of the nested object.
@@ -43,7 +43,7 @@ public class NestedObjectDelegatePropertyAccessor<T> 
implements PropertyAccessor
      *
      * @since 2.2.0
      */
-    private final PropertyAccessor propertyAccessor;
+    private final PropertyAccessor<StrutsContext> propertyAccessor;
 
     /**
      * Constructor.
@@ -52,7 +52,7 @@ public class NestedObjectDelegatePropertyAccessor<T> 
implements PropertyAccessor
      * @param propertyAccessor      The delegated property accessor.
      * @since 2.2.0
      */
-    public NestedObjectDelegatePropertyAccessor(NestedObjectExtractor<T> 
nestedObjectExtractor, PropertyAccessor propertyAccessor) {
+    public NestedObjectDelegatePropertyAccessor(NestedObjectExtractor<T> 
nestedObjectExtractor, PropertyAccessor<StrutsContext> propertyAccessor) {
         this.nestedObjectExtractor = nestedObjectExtractor;
         this.propertyAccessor = propertyAccessor;
     }
@@ -61,7 +61,7 @@ public class NestedObjectDelegatePropertyAccessor<T> 
implements PropertyAccessor
      * {@inheritDoc}
      */
     @SuppressWarnings("unchecked")
-    public Object getProperty(OgnlContext context, Object target, Object name) 
throws OgnlException {
+    public Object getProperty(StrutsContext context, Object target, Object 
name) throws OgnlException {
         return propertyAccessor.getProperty(context, 
nestedObjectExtractor.getNestedObject((T) target), name);
     }
 
@@ -69,7 +69,7 @@ public class NestedObjectDelegatePropertyAccessor<T> 
implements PropertyAccessor
      * {@inheritDoc}
      */
     @SuppressWarnings("unchecked")
-    public void setProperty(OgnlContext context, Object target, Object name, 
Object value) throws OgnlException {
+    public void setProperty(StrutsContext context, Object target, Object name, 
Object value) throws OgnlException {
         propertyAccessor.setProperty(context, 
nestedObjectExtractor.getNestedObject((T) target), name, value);
     }
 
@@ -77,7 +77,7 @@ public class NestedObjectDelegatePropertyAccessor<T> 
implements PropertyAccessor
      * {@inheritDoc}
      */
     @SuppressWarnings("unchecked")
-    public String getSourceAccessor(OgnlContext context, Object target, Object 
index) {
+    public String getSourceAccessor(StrutsContext context, Object target, 
Object index) {
         return propertyAccessor.getSourceAccessor(context, 
nestedObjectExtractor.getNestedObject((T) target), index);
     }
 
@@ -85,7 +85,7 @@ public class NestedObjectDelegatePropertyAccessor<T> 
implements PropertyAccessor
      * {@inheritDoc}
      */
     @SuppressWarnings("unchecked")
-    public String getSourceSetter(OgnlContext context, Object target, Object 
index) {
+    public String getSourceSetter(StrutsContext context, Object target, Object 
index) {
         return propertyAccessor.getSourceSetter(context, 
nestedObjectExtractor.getNestedObject((T) target), index);
     }
 }
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/ognl/PropertyAccessorDelegateFactory.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/ognl/PropertyAccessorDelegateFactory.java
index b781b402a..528a4a59e 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/ognl/PropertyAccessorDelegateFactory.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/ognl/PropertyAccessorDelegateFactory.java
@@ -20,6 +20,7 @@
 package org.apache.tiles.ognl;
 
 import ognl.PropertyAccessor;
+import org.apache.struts2.ognl.StrutsContext;
 
 /**
  * Decides a {@link PropertyAccessor} depending on the property name and the
@@ -39,5 +40,5 @@ public interface PropertyAccessorDelegateFactory<T> {
      * @return The appropriate property accessor.
      * @since 2.2.0
      */
-    PropertyAccessor getPropertyAccessor(String propertyName, T obj);
+    PropertyAccessor<StrutsContext> getPropertyAccessor(String propertyName, T 
obj);
 }
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/ognl/ScopePropertyAccessor.java 
b/plugins/tiles/src/main/java/org/apache/tiles/ognl/ScopePropertyAccessor.java
index 39a90eaaa..1fc3495e1 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/ognl/ScopePropertyAccessor.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/ognl/ScopePropertyAccessor.java
@@ -18,14 +18,14 @@
  */
 package org.apache.tiles.ognl;
 
-import ognl.OgnlContext;
 import ognl.PropertyAccessor;
+import org.apache.struts2.ognl.StrutsContext;
 import org.apache.tiles.request.Request;
 
 /**
  * Accesses a scope.
  */
-public class ScopePropertyAccessor implements PropertyAccessor {
+public class ScopePropertyAccessor implements PropertyAccessor<StrutsContext> {
 
     /**
      * The length of the scope suffix: "Scope".
@@ -33,7 +33,7 @@ public class ScopePropertyAccessor implements 
PropertyAccessor {
     static final int SCOPE_SUFFIX_LENGTH = 5;
 
     @Override
-    public Object getProperty(OgnlContext context, Object target, Object name) 
{
+    public Object getProperty(StrutsContext context, Object target, Object 
name) {
         Request request = (Request) target;
         String scope = (String) name;
         if (scope.endsWith("Scope")) {
@@ -44,7 +44,7 @@ public class ScopePropertyAccessor implements 
PropertyAccessor {
     }
 
     @Override
-    public String getSourceAccessor(OgnlContext context, Object target, Object 
index) {
+    public String getSourceAccessor(StrutsContext context, Object target, 
Object index) {
         String scope = (String) index;
         if (scope.endsWith("Scope")) {
             String scopeName = scope.substring(0, scope.length() - 
SCOPE_SUFFIX_LENGTH);
@@ -54,12 +54,12 @@ public class ScopePropertyAccessor implements 
PropertyAccessor {
     }
 
     @Override
-    public String getSourceSetter(OgnlContext context, Object target, Object 
index) {
+    public String getSourceSetter(StrutsContext context, Object target, Object 
index) {
         return null;
     }
 
     @Override
-    public void setProperty(OgnlContext context, Object target, Object name, 
Object value) {
+    public void setProperty(StrutsContext context, Object target, Object name, 
Object value) {
         // Does nothing.
     }
 
diff --git 
a/plugins/tiles/src/main/java/org/apache/tiles/ognl/TilesContextPropertyAccessorDelegateFactory.java
 
b/plugins/tiles/src/main/java/org/apache/tiles/ognl/TilesContextPropertyAccessorDelegateFactory.java
index 5106f656a..6f8820066 100644
--- 
a/plugins/tiles/src/main/java/org/apache/tiles/ognl/TilesContextPropertyAccessorDelegateFactory.java
+++ 
b/plugins/tiles/src/main/java/org/apache/tiles/ognl/TilesContextPropertyAccessorDelegateFactory.java
@@ -19,6 +19,7 @@
 package org.apache.tiles.ognl;
 
 import ognl.PropertyAccessor;
+import org.apache.struts2.ognl.StrutsContext;
 import org.apache.tiles.core.util.CombinedBeanInfo;
 import org.apache.tiles.request.ApplicationContext;
 import org.apache.tiles.request.Request;
@@ -35,22 +36,22 @@ public class TilesContextPropertyAccessorDelegateFactory 
implements PropertyAcce
      * The plain object property accessor, to be used directly for
      * {@link Request}.
      */
-    private final PropertyAccessor objectPropertyAccessor;
+    private final PropertyAccessor<StrutsContext> objectPropertyAccessor;
 
     /**
      * The application context property accessor.
      */
-    private final PropertyAccessor applicationContextPropertyAccessor;
+    private final PropertyAccessor<StrutsContext> 
applicationContextPropertyAccessor;
 
     /**
      * The request scope property accessor.
      */
-    private final PropertyAccessor anyScopePropertyAccessor;
+    private final PropertyAccessor<StrutsContext> anyScopePropertyAccessor;
 
     /**
      * The session scope property accessor.
      */
-    private final PropertyAccessor scopePropertyAccessor;
+    private final PropertyAccessor<StrutsContext> scopePropertyAccessor;
 
     /**
      * The bean info of {@link Request} and
@@ -70,10 +71,10 @@ public class TilesContextPropertyAccessorDelegateFactory 
implements PropertyAcce
      * @since 2.2.0
      */
     public TilesContextPropertyAccessorDelegateFactory(
-            PropertyAccessor objectPropertyAccessor,
-            PropertyAccessor applicationContextPropertyAccessor,
-            PropertyAccessor anyScopePropertyAccessor,
-            PropertyAccessor scopePropertyAccessor
+            PropertyAccessor<StrutsContext> objectPropertyAccessor,
+            PropertyAccessor<StrutsContext> applicationContextPropertyAccessor,
+            PropertyAccessor<StrutsContext> anyScopePropertyAccessor,
+            PropertyAccessor<StrutsContext> scopePropertyAccessor
     ) {
         beanInfo = new CombinedBeanInfo(Request.class, 
ApplicationContext.class);
         this.objectPropertyAccessor = objectPropertyAccessor;
@@ -83,8 +84,8 @@ public class TilesContextPropertyAccessorDelegateFactory 
implements PropertyAcce
     }
 
     /** {@inheritDoc} */
-    public PropertyAccessor getPropertyAccessor(String propertyName, Request 
request) {
-        PropertyAccessor retValue;
+    public PropertyAccessor<StrutsContext> getPropertyAccessor(String 
propertyName, Request request) {
+        PropertyAccessor<StrutsContext> retValue;
         if (propertyName.endsWith("Scope")) {
             String scopeName = propertyName.substring(0, propertyName.length() 
- ScopePropertyAccessor.SCOPE_SUFFIX_LENGTH);
             if (request.getContext(scopeName) != null) {

Reply via email to