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

kusal pushed a commit to branch kusal-depr-apis-6
in repository https://gitbox.apache.org/repos/asf/struts.git

commit 89c093088df03ee66d14d831ede8c3ab15ea44fb
Author: Kusal Kithul-Godage <g...@kusal.io>
AuthorDate: Thu Oct 17 16:26:01 2024 +1100

    WW-3714 Deprecate and migrate AbstractInterceptor and 
MethodFilterInterceptor
---
 .../xwork2/interceptor/AbstractInterceptor.java    |   3 +-
 .../interceptor/MethodFilterInterceptor.java       |  45 ++++----
 .../interceptor/MethodFilterInterceptorUtil.java   | 128 +--------------------
 .../struts2}/interceptor/AbstractInterceptor.java  |   4 +-
 .../interceptor/MethodFilterInterceptor.java       |  50 ++++----
 .../interceptor/MethodFilterInterceptorUtil.java   |  38 +++---
 6 files changed, 75 insertions(+), 193 deletions(-)

diff --git 
a/core/src/main/java/com/opensymphony/xwork2/interceptor/AbstractInterceptor.java
 
b/core/src/main/java/com/opensymphony/xwork2/interceptor/AbstractInterceptor.java
index 21e459c29..27b91e20d 100644
--- 
a/core/src/main/java/com/opensymphony/xwork2/interceptor/AbstractInterceptor.java
+++ 
b/core/src/main/java/com/opensymphony/xwork2/interceptor/AbstractInterceptor.java
@@ -21,8 +21,9 @@ package com.opensymphony.xwork2.interceptor;
 import com.opensymphony.xwork2.ActionInvocation;
 
 /**
- * Provides default implementations of optional lifecycle methods
+ * @deprecated since 6.7.0, use {@link 
org.apache.struts2.interceptor.AbstractInterceptor} instead.
  */
+@Deprecated
 public abstract class AbstractInterceptor implements ConditionalInterceptor {
 
     private boolean disabled;
diff --git 
a/core/src/main/java/com/opensymphony/xwork2/interceptor/MethodFilterInterceptor.java
 
b/core/src/main/java/com/opensymphony/xwork2/interceptor/MethodFilterInterceptor.java
index e96951cfa..bcce3da12 100644
--- 
a/core/src/main/java/com/opensymphony/xwork2/interceptor/MethodFilterInterceptor.java
+++ 
b/core/src/main/java/com/opensymphony/xwork2/interceptor/MethodFilterInterceptor.java
@@ -31,56 +31,59 @@ import java.util.Set;
  *
  * <p>
  * MethodFilterInterceptor is an abstract <code>Interceptor</code> used as
- * a base class for interceptors that will filter execution based on method 
+ * a base class for interceptors that will filter execution based on method
  * names according to specified included/excluded method lists.
- * 
+ *
  * </p>
- * 
+ *
  * Settable parameters are as follows:
- * 
+ *
  * <ul>
  *             <li>excludeMethods - method names to be excluded from 
interceptor processing</li>
  *             <li>includeMethods - method names to be included in interceptor 
processing</li>
  * </ul>
- * 
+ *
  * <p>
- * 
- * <b>NOTE:</b> If method name are available in both includeMethods and 
- * excludeMethods, it will be considered as an included method: 
+ *
+ * <b>NOTE:</b> If method name are available in both includeMethods and
+ * excludeMethods, it will be considered as an included method:
  * includeMethods takes precedence over excludeMethods.
- * 
+ *
  * </p>
- * 
+ *
  * Interceptors that extends this capability include:
- * 
+ *
  * <ul>
  *    <li>TokenInterceptor</li>
  *    <li>TokenSessionStoreInterceptor</li>
  *    <li>DefaultWorkflowInterceptor</li>
  *    <li>ValidationInterceptor</li>
  * </ul>
- * 
+ *
  * <!-- END SNIPPET: javadoc -->
- * 
+ *
  * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru 
Popescu</a>
  * @author Rainer Hermanns
- * 
+ *
  * @see org.apache.struts2.interceptor.TokenInterceptor
  * @see org.apache.struts2.interceptor.TokenSessionStoreInterceptor
  * @see com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor
  * @see com.opensymphony.xwork2.validator.ValidationInterceptor
+ *
+ * @deprecated since 6.7.0, use {@link 
org.apache.struts2.interceptor.MethodFilterInterceptor} instead.
  */
+@Deprecated
 public abstract class MethodFilterInterceptor extends AbstractInterceptor {
 
     private static final Logger LOG = 
LogManager.getLogger(MethodFilterInterceptor.class);
-    
+
     protected Set<String> excludeMethods = Collections.emptySet();
     protected Set<String> includeMethods = Collections.emptySet();
 
     public void setExcludeMethods(String excludeMethods) {
         this.excludeMethods = 
TextParseUtil.commaDelimitedStringToSet(excludeMethods);
     }
-    
+
     public Set<String> getExcludeMethodsSet() {
        return excludeMethods;
     }
@@ -88,7 +91,7 @@ public abstract class MethodFilterInterceptor extends 
AbstractInterceptor {
     public void setIncludeMethods(String includeMethods) {
         this.includeMethods = 
TextParseUtil.commaDelimitedStringToSet(includeMethods);
     }
-    
+
     public Set<String> getIncludeMethodsSet() {
        return includeMethods;
     }
@@ -97,7 +100,7 @@ public abstract class MethodFilterInterceptor extends 
AbstractInterceptor {
     public String intercept(ActionInvocation invocation) throws Exception {
         if (applyInterceptor(invocation)) {
             return doIntercept(invocation);
-        } 
+        }
         return invocation.invoke();
     }
 
@@ -110,14 +113,14 @@ public abstract class MethodFilterInterceptor extends 
AbstractInterceptor {
         }
         return applyMethod;
     }
-    
+
     /**
      * Subclasses must override to implement the interceptor logic.
-     * 
+     *
      * @param invocation the action invocation
      * @return the result of invocation
      * @throws Exception in case of any errors
      */
     protected abstract String doIntercept(ActionInvocation invocation) throws 
Exception;
-    
+
 }
diff --git 
a/core/src/main/java/com/opensymphony/xwork2/interceptor/MethodFilterInterceptorUtil.java
 
b/core/src/main/java/com/opensymphony/xwork2/interceptor/MethodFilterInterceptorUtil.java
index beacb8784..7e1a2c434 100644
--- 
a/core/src/main/java/com/opensymphony/xwork2/interceptor/MethodFilterInterceptorUtil.java
+++ 
b/core/src/main/java/com/opensymphony/xwork2/interceptor/MethodFilterInterceptorUtil.java
@@ -18,131 +18,9 @@
  */
 package com.opensymphony.xwork2.interceptor;
 
-import com.opensymphony.xwork2.util.TextParseUtil;
-import com.opensymphony.xwork2.util.WildcardHelper;
-
-import java.util.HashMap;
-import java.util.Set;
-
 /**
- * Utility class contains common methods used by 
- * {@link com.opensymphony.xwork2.interceptor.MethodFilterInterceptor}.
- * 
- * @author tm_jee
+ * @deprecated since 6.7.0, use {@link 
org.apache.struts2.interceptor.MethodFilterInterceptorUtil} instead.
  */
-public class MethodFilterInterceptorUtil {
-
-       /**
-     * Static method to decide if the specified <code>method</code> should be
-     * apply (not filtered) depending on the set of 
<code>excludeMethods</code> and 
-     * <code>includeMethods</code>. 
-     *
-     * <ul>
-     * <li>
-     *         <code>includeMethods</code> takes precedence over 
<code>excludeMethods</code>
-     * </li>
-     * </ul>
-     * <b>Note:</b> Supports wildcard listings in includeMethods/excludeMethods
-     *
-     * @param excludeMethods  list of methods to exclude.
-     * @param includeMethods  list of methods to include.
-     * @param method the specified method to check
-     * @return <tt>true</tt> if the method should be applied.
-     */
-    public static boolean applyMethod(Set<String> excludeMethods, Set<String> 
includeMethods, String method) {
-        
-        // quick check to see if any actual pattern matching is needed
-        boolean needsPatternMatch = false;
-        for (String includeMethod : includeMethods) {
-            if (!"*".equals(includeMethod) && includeMethod.contains("*")) {
-                needsPatternMatch = true;
-                break;
-            }
-        }
-        
-        for (String excludeMethod : excludeMethods) {
-            if (!"*".equals(excludeMethod) && excludeMethod.contains("*")) {
-                needsPatternMatch = true;
-                break;
-            }
-        }
-
-        // this section will try to honor the original logic, while 
-        // still allowing for wildcards later
-        if (!needsPatternMatch && (includeMethods.contains("*") || 
includeMethods.size() == 0) ) {
-            if (excludeMethods != null 
-                    && excludeMethods.contains(method) 
-                    && !includeMethods.contains(method) ) {
-                return false;
-            }
-        }
-        
-        // test the methods using pattern matching
-        WildcardHelper wildcard = new WildcardHelper();
-        String methodCopy ;
-        if (method == null ) { // no method specified
-            methodCopy = "";
-        }
-        else {
-            methodCopy = new String(method);
-        }
-        for (String pattern : includeMethods) {
-            if (pattern.contains("*")) {
-                int[] compiledPattern = wildcard.compilePattern(pattern);
-                HashMap<String, String> matchedPatterns = new HashMap<>();
-                boolean matches = wildcard.match(matchedPatterns, methodCopy, 
compiledPattern);
-                if (matches) {
-                    return true; // run it, includeMethods takes precedence
-                }
-            }
-            else {
-                if (pattern.equals(methodCopy)) {
-                    return true; // run it, includeMethods takes precedence
-                }
-            }
-        }
-        if (excludeMethods.contains("*") ) {
-            return false;
-        }
-
-        // CHECK ME: Previous implementation used include method 
-        for ( String pattern : excludeMethods) {
-            if (pattern.contains("*")) {
-                int[] compiledPattern = wildcard.compilePattern(pattern);
-                HashMap<String, String> matchedPatterns = new HashMap<>();
-                boolean matches = wildcard.match(matchedPatterns, methodCopy, 
compiledPattern);
-                if (matches) {
-                    // if found, and wasn't included earlier, don't run it
-                    return false; 
-                }
-            }
-            else {
-                if (pattern.equals(methodCopy)) {
-                    // if found, and wasn't included earlier, don't run it
-                    return false; 
-                }
-            }
-        }
-    
-
-        // default fall-back from before changes
-        return includeMethods.size() == 0 || includeMethods.contains(method) 
|| includeMethods.contains("*");
-    }
-    
-    /**
-     * Same as {@link #applyMethod(Set, Set, String)}, except that 
<code>excludeMethods</code>
-     * and <code>includeMethods</code> are supplied as comma separated string.
-     * 
-     * @param excludeMethods  comma seperated string of methods to exclude.
-     * @param includeMethods  comma seperated string of methods to include.
-     * @param method the specified method to check
-     * @return <tt>true</tt> if the method should be applied.
-     */
-    public static boolean applyMethod(String excludeMethods, String 
includeMethods, String method) {
-       Set<String> includeMethodsSet = 
TextParseUtil.commaDelimitedStringToSet(includeMethods == null? "" : 
includeMethods);
-       Set<String> excludeMethodsSet = 
TextParseUtil.commaDelimitedStringToSet(excludeMethods == null? "" : 
excludeMethods);
-       
-       return applyMethod(excludeMethodsSet, includeMethodsSet, method);
-    }
-
+@Deprecated
+public class MethodFilterInterceptorUtil extends 
org.apache.struts2.interceptor.MethodFilterInterceptorUtil {
 }
diff --git 
a/core/src/main/java/com/opensymphony/xwork2/interceptor/AbstractInterceptor.java
 b/core/src/main/java/org/apache/struts2/interceptor/AbstractInterceptor.java
similarity index 95%
copy from 
core/src/main/java/com/opensymphony/xwork2/interceptor/AbstractInterceptor.java
copy to 
core/src/main/java/org/apache/struts2/interceptor/AbstractInterceptor.java
index 21e459c29..ddb48a0d7 100644
--- 
a/core/src/main/java/com/opensymphony/xwork2/interceptor/AbstractInterceptor.java
+++ b/core/src/main/java/org/apache/struts2/interceptor/AbstractInterceptor.java
@@ -16,9 +16,9 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package com.opensymphony.xwork2.interceptor;
+package org.apache.struts2.interceptor;
 
-import com.opensymphony.xwork2.ActionInvocation;
+import org.apache.struts2.ActionInvocation;
 
 /**
  * Provides default implementations of optional lifecycle methods
diff --git 
a/core/src/main/java/com/opensymphony/xwork2/interceptor/MethodFilterInterceptor.java
 
b/core/src/main/java/org/apache/struts2/interceptor/MethodFilterInterceptor.java
similarity index 90%
copy from 
core/src/main/java/com/opensymphony/xwork2/interceptor/MethodFilterInterceptor.java
copy to 
core/src/main/java/org/apache/struts2/interceptor/MethodFilterInterceptor.java
index e96951cfa..1ffe68261 100644
--- 
a/core/src/main/java/com/opensymphony/xwork2/interceptor/MethodFilterInterceptor.java
+++ 
b/core/src/main/java/org/apache/struts2/interceptor/MethodFilterInterceptor.java
@@ -16,12 +16,12 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package com.opensymphony.xwork2.interceptor;
+package org.apache.struts2.interceptor;
 
-import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.util.TextParseUtil;
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
+import org.apache.struts2.ActionInvocation;
 
 import java.util.Collections;
 import java.util.Set;
@@ -31,56 +31,56 @@ import java.util.Set;
  *
  * <p>
  * MethodFilterInterceptor is an abstract <code>Interceptor</code> used as
- * a base class for interceptors that will filter execution based on method 
+ * a base class for interceptors that will filter execution based on method
  * names according to specified included/excluded method lists.
- * 
+ *
  * </p>
- * 
+ *
  * Settable parameters are as follows:
- * 
+ *
  * <ul>
  *             <li>excludeMethods - method names to be excluded from 
interceptor processing</li>
  *             <li>includeMethods - method names to be included in interceptor 
processing</li>
  * </ul>
- * 
+ *
  * <p>
- * 
- * <b>NOTE:</b> If method name are available in both includeMethods and 
- * excludeMethods, it will be considered as an included method: 
+ *
+ * <b>NOTE:</b> If method name are available in both includeMethods and
+ * excludeMethods, it will be considered as an included method:
  * includeMethods takes precedence over excludeMethods.
- * 
+ *
  * </p>
- * 
+ *
  * Interceptors that extends this capability include:
- * 
+ *
  * <ul>
  *    <li>TokenInterceptor</li>
  *    <li>TokenSessionStoreInterceptor</li>
  *    <li>DefaultWorkflowInterceptor</li>
  *    <li>ValidationInterceptor</li>
  * </ul>
- * 
+ *
  * <!-- END SNIPPET: javadoc -->
- * 
+ *
  * @author <a href='mailto:the_mindstorm[at]evolva[dot]ro'>Alexandru 
Popescu</a>
  * @author Rainer Hermanns
- * 
- * @see org.apache.struts2.interceptor.TokenInterceptor
- * @see org.apache.struts2.interceptor.TokenSessionStoreInterceptor
+ *
+ * @see TokenInterceptor
+ * @see TokenSessionStoreInterceptor
  * @see com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor
  * @see com.opensymphony.xwork2.validator.ValidationInterceptor
  */
 public abstract class MethodFilterInterceptor extends AbstractInterceptor {
 
     private static final Logger LOG = 
LogManager.getLogger(MethodFilterInterceptor.class);
-    
+
     protected Set<String> excludeMethods = Collections.emptySet();
     protected Set<String> includeMethods = Collections.emptySet();
 
     public void setExcludeMethods(String excludeMethods) {
         this.excludeMethods = 
TextParseUtil.commaDelimitedStringToSet(excludeMethods);
     }
-    
+
     public Set<String> getExcludeMethodsSet() {
        return excludeMethods;
     }
@@ -88,7 +88,7 @@ public abstract class MethodFilterInterceptor extends 
AbstractInterceptor {
     public void setIncludeMethods(String includeMethods) {
         this.includeMethods = 
TextParseUtil.commaDelimitedStringToSet(includeMethods);
     }
-    
+
     public Set<String> getIncludeMethodsSet() {
        return includeMethods;
     }
@@ -97,7 +97,7 @@ public abstract class MethodFilterInterceptor extends 
AbstractInterceptor {
     public String intercept(ActionInvocation invocation) throws Exception {
         if (applyInterceptor(invocation)) {
             return doIntercept(invocation);
-        } 
+        }
         return invocation.invoke();
     }
 
@@ -110,14 +110,14 @@ public abstract class MethodFilterInterceptor extends 
AbstractInterceptor {
         }
         return applyMethod;
     }
-    
+
     /**
      * Subclasses must override to implement the interceptor logic.
-     * 
+     *
      * @param invocation the action invocation
      * @return the result of invocation
      * @throws Exception in case of any errors
      */
     protected abstract String doIntercept(ActionInvocation invocation) throws 
Exception;
-    
+
 }
diff --git 
a/core/src/main/java/com/opensymphony/xwork2/interceptor/MethodFilterInterceptorUtil.java
 
b/core/src/main/java/org/apache/struts2/interceptor/MethodFilterInterceptorUtil.java
similarity index 92%
copy from 
core/src/main/java/com/opensymphony/xwork2/interceptor/MethodFilterInterceptorUtil.java
copy to 
core/src/main/java/org/apache/struts2/interceptor/MethodFilterInterceptorUtil.java
index beacb8784..2a43ba2ff 100644
--- 
a/core/src/main/java/com/opensymphony/xwork2/interceptor/MethodFilterInterceptorUtil.java
+++ 
b/core/src/main/java/org/apache/struts2/interceptor/MethodFilterInterceptorUtil.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package com.opensymphony.xwork2.interceptor;
+package org.apache.struts2.interceptor;
 
 import com.opensymphony.xwork2.util.TextParseUtil;
 import com.opensymphony.xwork2.util.WildcardHelper;
@@ -25,17 +25,17 @@ import java.util.HashMap;
 import java.util.Set;
 
 /**
- * Utility class contains common methods used by 
- * {@link com.opensymphony.xwork2.interceptor.MethodFilterInterceptor}.
- * 
+ * Utility class contains common methods used by
+ * {@link MethodFilterInterceptor}.
+ *
  * @author tm_jee
  */
 public class MethodFilterInterceptorUtil {
 
        /**
      * Static method to decide if the specified <code>method</code> should be
-     * apply (not filtered) depending on the set of 
<code>excludeMethods</code> and 
-     * <code>includeMethods</code>. 
+     * apply (not filtered) depending on the set of 
<code>excludeMethods</code> and
+     * <code>includeMethods</code>.
      *
      * <ul>
      * <li>
@@ -50,7 +50,7 @@ public class MethodFilterInterceptorUtil {
      * @return <tt>true</tt> if the method should be applied.
      */
     public static boolean applyMethod(Set<String> excludeMethods, Set<String> 
includeMethods, String method) {
-        
+
         // quick check to see if any actual pattern matching is needed
         boolean needsPatternMatch = false;
         for (String includeMethod : includeMethods) {
@@ -59,7 +59,7 @@ public class MethodFilterInterceptorUtil {
                 break;
             }
         }
-        
+
         for (String excludeMethod : excludeMethods) {
             if (!"*".equals(excludeMethod) && excludeMethod.contains("*")) {
                 needsPatternMatch = true;
@@ -67,16 +67,16 @@ public class MethodFilterInterceptorUtil {
             }
         }
 
-        // this section will try to honor the original logic, while 
+        // this section will try to honor the original logic, while
         // still allowing for wildcards later
         if (!needsPatternMatch && (includeMethods.contains("*") || 
includeMethods.size() == 0) ) {
-            if (excludeMethods != null 
-                    && excludeMethods.contains(method) 
+            if (excludeMethods != null
+                    && excludeMethods.contains(method)
                     && !includeMethods.contains(method) ) {
                 return false;
             }
         }
-        
+
         // test the methods using pattern matching
         WildcardHelper wildcard = new WildcardHelper();
         String methodCopy ;
@@ -105,7 +105,7 @@ public class MethodFilterInterceptorUtil {
             return false;
         }
 
-        // CHECK ME: Previous implementation used include method 
+        // CHECK ME: Previous implementation used include method
         for ( String pattern : excludeMethods) {
             if (pattern.contains("*")) {
                 int[] compiledPattern = wildcard.compilePattern(pattern);
@@ -113,26 +113,26 @@ public class MethodFilterInterceptorUtil {
                 boolean matches = wildcard.match(matchedPatterns, methodCopy, 
compiledPattern);
                 if (matches) {
                     // if found, and wasn't included earlier, don't run it
-                    return false; 
+                    return false;
                 }
             }
             else {
                 if (pattern.equals(methodCopy)) {
                     // if found, and wasn't included earlier, don't run it
-                    return false; 
+                    return false;
                 }
             }
         }
-    
+
 
         // default fall-back from before changes
         return includeMethods.size() == 0 || includeMethods.contains(method) 
|| includeMethods.contains("*");
     }
-    
+
     /**
      * Same as {@link #applyMethod(Set, Set, String)}, except that 
<code>excludeMethods</code>
      * and <code>includeMethods</code> are supplied as comma separated string.
-     * 
+     *
      * @param excludeMethods  comma seperated string of methods to exclude.
      * @param includeMethods  comma seperated string of methods to include.
      * @param method the specified method to check
@@ -141,7 +141,7 @@ public class MethodFilterInterceptorUtil {
     public static boolean applyMethod(String excludeMethods, String 
includeMethods, String method) {
        Set<String> includeMethodsSet = 
TextParseUtil.commaDelimitedStringToSet(includeMethods == null? "" : 
includeMethods);
        Set<String> excludeMethodsSet = 
TextParseUtil.commaDelimitedStringToSet(excludeMethods == null? "" : 
excludeMethods);
-       
+
        return applyMethod(excludeMethodsSet, includeMethodsSet, method);
     }
 

Reply via email to