You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by ku...@apache.org on 2024/10/17 02:13:40 UTC

(struts) branch kusal-depr-apis created (now fc009fd54)

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

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


      at fc009fd54 WW-3714 Deprecate and migrate ActionContext

This branch includes the following new commits:

     new bcb66a0e4 WW-3714 Deprecate and migrate Action, Interceptor, Result
     new fc009fd54 WW-3714 Deprecate and migrate ActionContext

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(struts) 02/02: WW-3714 Deprecate and migrate ActionContext

Posted by ku...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit fc009fd5401cdaf22a3de3e402c564cf3b0dd02c
Author: Kusal Kithul-Godage <gi...@kusal.io>
AuthorDate: Thu Oct 17 13:13:28 2024 +1100

    WW-3714 Deprecate and migrate ActionContext
---
 .../com/opensymphony/xwork2/ActionContext.java     | 462 ++++-----------------
 .../apache/struts2}/ActionContext.java             |  12 +-
 2 files changed, 95 insertions(+), 379 deletions(-)

diff --git a/core/src/main/java/com/opensymphony/xwork2/ActionContext.java b/core/src/main/java/com/opensymphony/xwork2/ActionContext.java
index fb7b0abcb..d2f78e87a 100644
--- a/core/src/main/java/com/opensymphony/xwork2/ActionContext.java
+++ b/core/src/main/java/com/opensymphony/xwork2/ActionContext.java
@@ -21,8 +21,6 @@ package com.opensymphony.xwork2;
 import com.opensymphony.xwork2.conversion.impl.ConversionData;
 import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.util.ValueStack;
-import org.apache.struts2.StrutsException;
-import org.apache.struts2.StrutsStatics;
 import org.apache.struts2.dispatcher.HttpParameters;
 import org.apache.struts2.dispatcher.mapper.ActionMapping;
 
@@ -30,515 +28,233 @@ import javax.servlet.ServletContext;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.servlet.jsp.PageContext;
-import java.io.Serializable;
-import java.util.HashMap;
 import java.util.Locale;
 import java.util.Map;
 
 /**
- * <p>
- * The ActionContext is the context in which an {@link Action} is executed. Each context is basically a
- * container of objects an action needs for execution like the session, parameters, locale, etc.
- * </p>
+ * {@inheritDoc}
  *
- * <p>
- * The ActionContext is thread local which means that values stored in the ActionContext are
- * unique per thread. See the {@link ThreadLocal} class for more information. The benefit of
- * this is you don't need to worry about a user specific action context, you just get it:
- * </p>
- *
- * <code>ActionContext context = ActionContext.getContext();</code>
- *
- * <p>
- * Finally, because of the thread local usage you don't need to worry about making your actions thread safe.
- * </p>
- *
- * @author Patrick Lightbody
- * @author Bill Lynch (docs)
+ * @deprecated since 6.7.0, use {@link org.apache.struts2.ActionContext} instead.
  */
-public class ActionContext implements Serializable {
-
-    private static final ThreadLocal<ActionContext> actionContext = new ThreadLocal<>();
-
-    /**
-     * Constant for the name of the action being executed.
-     */
-    private static final String ACTION_NAME = "org.apache.struts2.ActionContext.name";
-
-    /**
-     * Constant for the {@link com.opensymphony.xwork2.util.ValueStack OGNL value stack}.
-     */
-    private static final String VALUE_STACK = ValueStack.VALUE_STACK;
-
-    /**
-     * Constant for the action's session.
-     */
-    private static final String SESSION = "org.apache.struts2.ActionContext.session";
-
-    /**
-     * Constant for the action's application context.
-     */
-    private static final String APPLICATION = "org.apache.struts2.ActionContext.application";
-
-    /**
-     * Constant for the action's parameters.
-     */
-    private static final String PARAMETERS = "org.apache.struts2.ActionContext.parameters";
-
-    /**
-     * Constant for the action's locale.
-     */
-    private static final String LOCALE = "org.apache.struts2.ActionContext.locale";
-
-    /**
-     * Constant for the action's {@link com.opensymphony.xwork2.ActionInvocation invocation} context.
-     */
-    private static final String ACTION_INVOCATION = "org.apache.struts2.ActionContext.actionInvocation";
-
-    /**
-     * Constant for the map of type conversion errors.
-     */
-    private static final String CONVERSION_ERRORS = "org.apache.struts2.ActionContext.conversionErrors";
-
-    /**
-     * Constant for the container
-     */
-    private static final String CONTAINER = "org.apache.struts2.ActionContext.container";
-
-    private final Map<String, Object> context;
-
-    /**
-     * Creates a new ActionContext initialized with another context.
-     *
-     * @param context a context map.
-     */
-    protected ActionContext(Map<String, Object> context) {
-        this.context = context;
-    }
-
-    /**
-     * Creates a new ActionContext based on passed in Map
-     *
-     * @param context a map with context values
-     * @return new ActionContext
-     */
+@Deprecated
+public class ActionContext extends org.apache.struts2.ActionContext {
+
+    private ActionContext(org.apache.struts2.ActionContext actualContext) {
+        super(actualContext.getContextMap());
+    }
+
     public static ActionContext of(Map<String, Object> context) {
-        if (context == null) {
-            throw new IllegalArgumentException("Context cannot be null!");
-        }
-        return new ActionContext(context);
+        return new ActionContext(org.apache.struts2.ActionContext.of(context));
     }
 
-    /**
-     * Creates a new ActionContext based on empty Map
-     *
-     * @return new ActionContext
-     */
     public static ActionContext of() {
-        return of(new HashMap<>());
+        return new ActionContext(org.apache.struts2.ActionContext.of());
     }
 
-    /**
-     * Binds the provided context with the current thread
-     *
-     * @param actionContext context to bind to the thread
-     * @return context which was bound to the thread
-     */
     public static ActionContext bind(ActionContext actionContext) {
-        ActionContext.setContext(actionContext);
-        return ActionContext.getContext();
+        return new ActionContext(org.apache.struts2.ActionContext.bind(actionContext));
     }
 
     public static boolean containsValueStack(Map<String, Object> context) {
-        return context != null && context.containsKey(VALUE_STACK);
-    }
-
-    /**
-     * Binds this context with the current thread
-     *
-     * @return this context which was bound to the thread
-     */
-    public ActionContext bind() {
-        ActionContext.setContext(this);
-        return ActionContext.getContext();
+        return org.apache.struts2.ActionContext.containsValueStack(context);
     }
 
-    /**
-     * Wipes out current ActionContext, use wisely!
-     */
     public static void clear() {
-        actionContext.remove();
+        org.apache.struts2.ActionContext.clear();
     }
 
-    /**
-     * Sets the action context for the current thread.
-     *
-     * @param context the action context.
-     */
-    private static void setContext(ActionContext context) {
-        actionContext.set(context);
+    public static ActionContext getContext() {
+        return new ActionContext(org.apache.struts2.ActionContext.getContext());
     }
 
-    /**
-     * Returns the ActionContext specific to the current thread.
-     *
-     * @return the ActionContext for the current thread, is never <tt>null</tt>.
-     */
-    public static ActionContext getContext() {
-        return actionContext.get();
+    @Override
+    public ActionContext bind() {
+        return new ActionContext(org.apache.struts2.ActionContext.bind(this));
     }
 
-    /**
-     * Sets the action invocation (the execution state).
-     *
-     * @param actionInvocation the action execution state.
-     */
+    @Override
     public ActionContext withActionInvocation(ActionInvocation actionInvocation) {
-        put(ACTION_INVOCATION, actionInvocation);
+        super.withActionInvocation(actionInvocation);
         return this;
     }
 
-    /**
-     * Gets the action invocation (the execution state).
-     *
-     * @return the action invocation (the execution state).
-     */
+    @Override
     public ActionInvocation getActionInvocation() {
-        return (ActionInvocation) get(ACTION_INVOCATION);
+        return super.getActionInvocation();
     }
 
-    /**
-     * Sets the action's application context.
-     *
-     * @param application the action's application context.
-     */
+    @Override
     public ActionContext withApplication(Map<String, Object> application) {
-        put(APPLICATION, application);
+        super.withApplication(application);
         return this;
     }
 
-    /**
-     * Returns a Map of the ServletContext when in a servlet environment or a generic application level Map otherwise.
-     *
-     * @return a Map of ServletContext or generic application level Map
-     */
-    @SuppressWarnings("unchecked")
+    @Override
     public Map<String, Object> getApplication() {
-        return (Map<String, Object>) get(APPLICATION);
+        return super.getApplication();
     }
 
-    /**
-     * Gets the context map.
-     *
-     * @return the context map.
-     */
+    @Override
     public Map<String, Object> getContextMap() {
-        return context;
+        return super.getContextMap();
     }
 
-    /**
-     * Sets conversion errors which occurred when executing the action.
-     *
-     * @param conversionErrors a Map of errors which occurred when executing the action.
-     */
+    @Override
     public ActionContext withConversionErrors(Map<String, ConversionData> conversionErrors) {
-        put(CONVERSION_ERRORS, conversionErrors);
+        super.withConversionErrors(conversionErrors);
         return this;
     }
 
-    /**
-     * Gets the map of conversion errors which occurred when executing the action.
-     *
-     * @return the map of conversion errors which occurred when executing the action or an empty map if
-     * there were no errors.
-     */
-    @SuppressWarnings("unchecked")
+    @Override
     public Map<String, ConversionData> getConversionErrors() {
-        Map<String, ConversionData> errors = (Map<String, ConversionData>) get(CONVERSION_ERRORS);
-
-        if (errors == null) {
-            errors = withConversionErrors(new HashMap<>()).getConversionErrors();
-        }
-
-        return errors;
+        return super.getConversionErrors();
     }
 
-    /**
-     * Sets the Locale for the current action.
-     *
-     * @param locale the Locale for the current action.
-     */
+    @Override
     public ActionContext withLocale(Locale locale) {
-        put(LOCALE, locale);
+        super.withLocale(locale);
         return this;
     }
 
-    /**
-     * Gets the Locale of the current action. If no locale was ever specified the platform's
-     * {@link java.util.Locale#getDefault() default locale} is used.
-     *
-     * @return the Locale of the current action.
-     */
+    @Override
     public Locale getLocale() {
-        Locale locale = (Locale) get(LOCALE);
-
-        if (locale == null) {
-            locale = Locale.getDefault();
-            withLocale(locale);
-        }
-
-        return locale;
+        return super.getLocale();
     }
 
-    /**
-     * Sets the name of the current Action in the ActionContext.
-     *
-     * @param actionName the name of the current action.
-     */
+    @Override
     public ActionContext withActionName(String actionName) {
-        put(ACTION_NAME, actionName);
+        super.withActionName(actionName);
         return this;
     }
 
-    /**
-     * Gets the name of the current Action.
-     *
-     * @return the name of the current action.
-     */
+    @Override
     public String getActionName() {
-        return (String) get(ACTION_NAME);
+        return super.getActionName();
     }
 
-    /**
-     * Sets the action parameters.
-     *
-     * @param parameters the parameters for the current action.
-     */
+    @Override
     public ActionContext withParameters(HttpParameters parameters) {
-        put(PARAMETERS, parameters);
+        super.withParameters(parameters);
         return this;
     }
 
-    /**
-     * Returns a Map of the HttpServletRequest parameters when in a servlet environment or a generic Map of
-     * parameters otherwise.
-     *
-     * @return a Map of HttpServletRequest parameters or a multipart map when in a servlet environment, or a
-     * generic Map of parameters otherwise.
-     */
+    @Override
     public HttpParameters getParameters() {
-        return (HttpParameters) get(PARAMETERS);
+        return super.getParameters();
     }
 
-    /**
-     * Sets a map of action session values.
-     *
-     * @param session the session values.
-     */
+    @Override
     public ActionContext withSession(Map<String, Object> session) {
-        put(SESSION, session);
+        super.withSession(session);
         return this;
     }
 
-    /**
-     * Gets the Map of HttpSession values when in a servlet environment or a generic session map otherwise.
-     *
-     * @return the Map of HttpSession values when in a servlet environment or a generic session map otherwise.
-     */
-    @SuppressWarnings("unchecked")
+    @Override
     public Map<String, Object> getSession() {
-        return (Map<String, Object>) get(SESSION);
+        return super.getSession();
     }
 
-    /**
-     * Sets the OGNL value stack.
-     *
-     * @param valueStack the OGNL value stack.
-     */
+    @Override
     public ActionContext withValueStack(ValueStack valueStack) {
-        put(VALUE_STACK, valueStack);
+        super.withValueStack(valueStack);
         return this;
     }
 
-    /**
-     * Gets the OGNL value stack.
-     *
-     * @return the OGNL value stack.
-     */
+    @Override
     public ValueStack getValueStack() {
-        return (ValueStack) get(VALUE_STACK);
+        return super.getValueStack();
     }
 
-    /**
-     * Gets the container for this request
-     *
-     * @param container The container
-     */
+    @Override
     public ActionContext withContainer(Container container) {
-        put(CONTAINER, container);
+        super.withContainer(container);
         return this;
     }
 
-    /**
-     * Sets the container for this request
-     *
-     * @return The container
-     */
+    @Override
     public Container getContainer() {
-        return (Container) get(CONTAINER);
+        return super.getContainer();
     }
 
+    @Override
     public <T> T getInstance(Class<T> type) {
-        Container cont = getContainer();
-        if (cont != null) {
-            return cont.getInstance(type);
-        } else {
-            throw new StrutsException("Cannot find an initialized container for this request.");
-        }
-    }
-
-    /**
-     * Returns a value that is stored in the current ActionContext by doing a lookup using the value's key.
-     *
-     * @param key the key used to find the value.
-     * @return the value that was found using the key or <tt>null</tt> if the key was not found.
-     */
+        return super.getInstance(type);
+    }
+
+    @Override
     public Object get(String key) {
-        return context.get(key);
+        return super.get(key);
     }
 
-    /**
-     * Stores a value in the current ActionContext. The value can be looked up using the key.
-     *
-     * @param key   the key of the value.
-     * @param value the value to be stored.
-     */
+    @Override
     public void put(String key, Object value) {
-        context.put(key, value);
+        super.put(key, value);
     }
 
-    /**
-     * Gets ServletContext associated with current action
-     *
-     * @return current ServletContext
-     */
+    @Override
     public ServletContext getServletContext() {
-        return (ServletContext) get(StrutsStatics.SERVLET_CONTEXT);
+        return super.getServletContext();
     }
 
-    /**
-     * Assigns ServletContext to action context
-     *
-     * @param servletContext associated with current request
-     * @return ActionContext
-     */
+    @Override
     public ActionContext withServletContext(ServletContext servletContext) {
-        put(StrutsStatics.SERVLET_CONTEXT, servletContext);
+        super.withServletContext(servletContext);
         return this;
     }
 
-    /**
-     * Gets ServletRequest associated with current action
-     *
-     * @return current ServletRequest
-     */
+    @Override
     public HttpServletRequest getServletRequest() {
-        return (HttpServletRequest) get(StrutsStatics.HTTP_REQUEST);
+        return super.getServletRequest();
     }
 
-    /**
-     * Assigns ServletRequest to action context
-     *
-     * @param request associated with current request
-     * @return ActionContext
-     */
+    @Override
     public ActionContext withServletRequest(HttpServletRequest request) {
-        put(StrutsStatics.HTTP_REQUEST, request);
+        super.withServletRequest(request);
         return this;
     }
 
-    /**
-     * Gets ServletResponse associated with current action
-     *
-     * @return current ServletResponse
-     */
+    @Override
     public HttpServletResponse getServletResponse() {
-        return (HttpServletResponse) get(StrutsStatics.HTTP_RESPONSE);
+        return super.getServletResponse();
     }
 
-    /**
-     * Assigns ServletResponse to action context
-     *
-     * @param response associated with current request
-     * @return ActionContext
-     */
+    @Override
     public ActionContext withServletResponse(HttpServletResponse response) {
-        put(StrutsStatics.HTTP_RESPONSE, response);
+        super.withServletResponse(response);
         return this;
     }
 
-    /**
-     * Gets PageContext associated with current action
-     *
-     * @return current PageContext
-     */
+    @Override
     public PageContext getPageContext() {
-        return (PageContext) get(StrutsStatics.PAGE_CONTEXT);
+        return super.getPageContext();
     }
 
-    /**
-     * Assigns PageContext to action context
-     *
-     * @param pageContext associated with current request
-     * @return ActionContext
-     */
+    @Override
     public ActionContext withPageContext(PageContext pageContext) {
-        put(StrutsStatics.PAGE_CONTEXT, pageContext);
+        super.withPageContext(pageContext);
         return this;
     }
 
-    /**
-     * Gets ActionMapping associated with current action
-     *
-     * @return current ActionMapping
-     */
+    @Override
     public ActionMapping getActionMapping() {
-        return (ActionMapping) get(StrutsStatics.ACTION_MAPPING);
+        return super.getActionMapping();
     }
 
-    /**
-     * Assigns ActionMapping to action context
-     *
-     * @param actionMapping associated with current request
-     * @return ActionContext
-     */
+    @Override
     public ActionContext withActionMapping(ActionMapping actionMapping) {
-        put(StrutsStatics.ACTION_MAPPING, actionMapping);
+        super.withActionMapping(actionMapping);
         return this;
     }
 
-    /**
-     * Assigns an extra context map to action context
-     *
-     * @param extraContext to add to the current action context
-     * @return ActionContext
-     */
+    @Override
     public ActionContext withExtraContext(Map<String, Object> extraContext) {
-        if (extraContext != null) {
-            context.putAll(extraContext);
-        }
+        super.withExtraContext(extraContext);
         return this;
     }
 
-    /**
-     * Adds arbitrary key to action context
-     *
-     * @param key   a string
-     * @param value an object
-     * @return ActionContext
-     */
+    @Override
     public ActionContext with(String key, Object value) {
-        put(key, value);
+        super.with(key, value);
         return this;
     }
 }
diff --git a/core/src/main/java/com/opensymphony/xwork2/ActionContext.java b/core/src/main/java/org/apache/struts2/ActionContext.java
similarity index 97%
copy from core/src/main/java/com/opensymphony/xwork2/ActionContext.java
copy to core/src/main/java/org/apache/struts2/ActionContext.java
index fb7b0abcb..33f935e79 100644
--- a/core/src/main/java/com/opensymphony/xwork2/ActionContext.java
+++ b/core/src/main/java/org/apache/struts2/ActionContext.java
@@ -16,13 +16,13 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package com.opensymphony.xwork2;
+package org.apache.struts2;
 
+import com.opensymphony.xwork2.Action;
+import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.conversion.impl.ConversionData;
 import com.opensymphony.xwork2.inject.Container;
 import com.opensymphony.xwork2.util.ValueStack;
-import org.apache.struts2.StrutsException;
-import org.apache.struts2.StrutsStatics;
 import org.apache.struts2.dispatcher.HttpParameters;
 import org.apache.struts2.dispatcher.mapper.ActionMapping;
 
@@ -66,7 +66,7 @@ public class ActionContext implements Serializable {
     private static final String ACTION_NAME = "org.apache.struts2.ActionContext.name";
 
     /**
-     * Constant for the {@link com.opensymphony.xwork2.util.ValueStack OGNL value stack}.
+     * Constant for the {@link ValueStack OGNL value stack}.
      */
     private static final String VALUE_STACK = ValueStack.VALUE_STACK;
 
@@ -91,7 +91,7 @@ public class ActionContext implements Serializable {
     private static final String LOCALE = "org.apache.struts2.ActionContext.locale";
 
     /**
-     * Constant for the action's {@link com.opensymphony.xwork2.ActionInvocation invocation} context.
+     * Constant for the action's {@link ActionInvocation invocation} context.
      */
     private static final String ACTION_INVOCATION = "org.apache.struts2.ActionContext.actionInvocation";
 
@@ -275,7 +275,7 @@ public class ActionContext implements Serializable {
 
     /**
      * Gets the Locale of the current action. If no locale was ever specified the platform's
-     * {@link java.util.Locale#getDefault() default locale} is used.
+     * {@link Locale#getDefault() default locale} is used.
      *
      * @return the Locale of the current action.
      */


(struts) 01/02: WW-3714 Deprecate and migrate Action, Interceptor, Result

Posted by ku...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

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

commit bcb66a0e4cfebc3a43bcde4146fd347118455583
Author: Kusal Kithul-Godage <gi...@kusal.io>
AuthorDate: Thu Oct 17 13:12:57 2024 +1100

    WW-3714 Deprecate and migrate Action, Interceptor, Result
---
 .../main/java/com/opensymphony/xwork2/Action.java  |  70 +------
 .../main/java/com/opensymphony/xwork2/Result.java  |  30 +--
 .../xwork2/interceptor/Interceptor.java            | 202 +--------------------
 .../xwork2 => org/apache/struts2}/Action.java      |  14 +-
 .../xwork2 => org/apache/struts2}/Result.java      |   5 +-
 .../apache/struts2}/interceptor/Interceptor.java   |   4 +-
 6 files changed, 26 insertions(+), 299 deletions(-)

diff --git a/core/src/main/java/com/opensymphony/xwork2/Action.java b/core/src/main/java/com/opensymphony/xwork2/Action.java
index 4c96617c4..57d767834 100644
--- a/core/src/main/java/com/opensymphony/xwork2/Action.java
+++ b/core/src/main/java/com/opensymphony/xwork2/Action.java
@@ -19,70 +19,10 @@
 package com.opensymphony.xwork2;
 
 /**
- * All actions <b>may</b> implement this interface, which exposes the <code>execute()</code> method.
- * <p>
- * However, as of XWork 1.1, this is <b>not</b> required and is only here to assist users. You are free to create POJOs
- * that honor the same contract defined by this interface without actually implementing the interface.
- * </p>
+ * {@inheritDoc}
+ *
+ * @deprecated since 6.7.0, use {@link org.apache.struts2.Action} instead.
  */
-public interface Action {
-
-    /**
-     * The action execution was successful. Show result
-     * view to the end user.
-     */
-    public static final String SUCCESS = "success";
-
-    /**
-     * The action execution was successful but do not
-     * show a view. This is useful for actions that are
-     * handling the view in another fashion like redirect.
-     */
-    public static final String NONE = "none";
-
-    /**
-     * The action execution was a failure.
-     * Show an error view, possibly asking the
-     * user to retry entering data.
-     */
-    public static final String ERROR = "error";
-
-    /**
-     * <p>
-     * The action execution require more input
-     * in order to succeed.
-     * This result is typically used if a form
-     * handling action has been executed so as
-     * to provide defaults for a form. The
-     * form associated with the handler should be
-     * shown to the end user.
-     * </p>
-     *
-     * <p>
-     * This result is also used if the given input
-     * params are invalid, meaning the user
-     * should try providing input again.
-     * </p>
-     */
-    public static final String INPUT = "input";
-
-    /**
-     * The action could not execute, since the
-     * user most was not logged in. The login view
-     * should be shown.
-     */
-    public static final String LOGIN = "login";
-
-
-    /**
-     * Where the logic of the action is executed.
-     *
-     * @return a string representing the logical result of the execution.
-     *         See constants in this interface for a list of standard result values.
-     * @throws Exception thrown if a system level exception occurs.
-     *                   <b>Note:</b> Application level exceptions should be handled by returning
-     *                   an error value, such as <code>Action.ERROR</code>.
-     */
-    public String execute() throws Exception;
-
+@Deprecated
+public interface Action extends org.apache.struts2.Action {
 }
diff --git a/core/src/main/java/com/opensymphony/xwork2/Result.java b/core/src/main/java/com/opensymphony/xwork2/Result.java
index 8c1687e5a..ccd238751 100644
--- a/core/src/main/java/com/opensymphony/xwork2/Result.java
+++ b/core/src/main/java/com/opensymphony/xwork2/Result.java
@@ -18,33 +18,11 @@
  */
 package com.opensymphony.xwork2;
 
-import java.io.Serializable;
-
 /**
- * All results (except for <code>Action.NONE</code>) of an {@link Action} are mapped to a View implementation.
- *
- * <p>
- * Examples of Views might be:
- * </p>
- *
- * <ul>
- * <li>SwingPanelView - pops up a new Swing panel</li>
- * <li>ActionChainView - executes another action</li>
- * <li>SerlvetRedirectView - redirects the HTTP response to a URL</li>
- * <li>ServletDispatcherView - dispatches the HTTP response to a URL</li>
- * </ul>
+ * {@inheritDoc}
  *
- * @author plightbo
+ * @deprecated since 6.7.0, use {@link org.apache.struts2.Result} instead.
  */
-public interface Result extends Serializable {
-
-    /**
-     * Represents a generic interface for all action execution results.
-     * Whether that be displaying a webpage, generating an email, sending a JMS message, etc.
-     *
-     * @param invocation  the invocation context.
-     * @throws Exception can be thrown.
-     */
-    void execute(ActionInvocation invocation) throws Exception;
-
+@Deprecated
+public interface Result extends org.apache.struts2.Result {
 }
diff --git a/core/src/main/java/com/opensymphony/xwork2/interceptor/Interceptor.java b/core/src/main/java/com/opensymphony/xwork2/interceptor/Interceptor.java
index cafa08fc0..87041a269 100644
--- a/core/src/main/java/com/opensymphony/xwork2/interceptor/Interceptor.java
+++ b/core/src/main/java/com/opensymphony/xwork2/interceptor/Interceptor.java
@@ -18,205 +18,11 @@
  */
 package com.opensymphony.xwork2.interceptor;
 
-import com.opensymphony.xwork2.ActionInvocation;
-
-import java.io.Serializable;
-
 /**
- * <!-- START SNIPPET: introduction -->
- *
- * <p>
- * An interceptor is a stateless class that follows the interceptor pattern, as
- * found in {@link  javax.servlet.Filter} and in AOP languages.
- * </p>
- *
- * <p>
- * Interceptors are objects that dynamically intercept Action invocations.
- * They provide the developer with the opportunity to define code that can be executed
- * before and/or after the execution of an action. They also have the ability
- * to prevent an action from executing. Interceptors provide developers a way to
- * encapsulate common functionality in a re-usable form that can be applied to
- * one or more Actions.
- * </p>
- *
- * <p>
- * Interceptors <b>must</b> be stateless and not assume that a new instance will be created for each request or Action.
- * Interceptors may choose to either short-circuit the {@link ActionInvocation} execution and return a return code
- * (such as {@link com.opensymphony.xwork2.Action#SUCCESS}), or it may choose to do some processing before
- * and/or after delegating the rest of the procesing using {@link ActionInvocation#invoke()}.
- * </p>
- * <!-- END SNIPPET: introduction -->
- *
- * <!-- START SNIPPET: parameterOverriding -->
- * <p>
- * Interceptor's parameter could be overridden through the following ways :-
- * </p>
-
- * <b>Method 1:</b>
- * <pre>
- * &lt;action name=&quot;myAction&quot; class=&quot;myActionClass&quot;&gt;
- *     &lt;interceptor-ref name=&quot;exception&quot;/&gt;
- *     &lt;interceptor-ref name=&quot;alias&quot;/&gt;
- *     &lt;interceptor-ref name=&quot;params&quot;/&gt;
- *     &lt;interceptor-ref name=&quot;servletConfig&quot;/&gt;
- *     &lt;interceptor-ref name=&quot;prepare&quot;/&gt;
- *     &lt;interceptor-ref name=&quot;i18n&quot;/&gt;
- *     &lt;interceptor-ref name=&quot;chain&quot;/&gt;
- *     &lt;interceptor-ref name=&quot;modelDriven&quot;/&gt;
- *     &lt;interceptor-ref name=&quot;fileUpload&quot;/&gt;
- *     &lt;interceptor-ref name=&quot;staticParams&quot;/&gt;
- *     &lt;interceptor-ref name=&quot;params&quot;/&gt;
- *     &lt;interceptor-ref name=&quot;conversionError&quot;/&gt;
- *     &lt;interceptor-ref name=&quot;validation&quot;&gt;
- *     &lt;param name=&quot;excludeMethods&quot;&gt;myValidationExcudeMethod&lt;/param&gt;
- *     &lt;/interceptor-ref&gt;
- *     &lt;interceptor-ref name=&quot;workflow&quot;&gt;
- *     &lt;param name=&quot;excludeMethods&quot;&gt;myWorkflowExcludeMethod&lt;/param&gt;
- *     &lt;/interceptor-ref&gt;
- * &lt;/action&gt;
- * </pre>
- *
- * <b>Method 2:</b>
- * <pre>
- * &lt;action name=&quot;myAction&quot; class=&quot;myActionClass&quot;&gt;
- *   &lt;interceptor-ref name=&quot;defaultStack&quot;&gt;
- *     &lt;param name=&quot;validation.excludeMethods&quot;&gt;myValidationExcludeMethod&lt;/param&gt;
- *     &lt;param name=&quot;workflow.excludeMethods&quot;&gt;myWorkflowExcludeMethod&lt;/param&gt;
- *   &lt;/interceptor-ref&gt;
- * &lt;/action&gt;
- * </pre>
- *
- * <p>
- * In the first method, the whole default stack is copied and the parameter then
- * changed accordingly.
- * </p>
- *
- * <p>
- * In the second method, the 'interceptor-ref' refer to an existing
- * interceptor-stack, namely defaultStack in this example, and override the validator
- * and workflow interceptor excludeMethods typically in this case. Note that in the
- * 'param' tag, the name attribute contains a dot (.) the word before the dot(.)
- * specifies the interceptor name whose parameter is to be overridden and the word after
- * the dot (.) specifies the parameter itself. Essetially it is as follows :-
- * </p>
- *
- * <pre>
- *    &lt;interceptor-name&gt;.&lt;parameter-name&gt;
- * </pre>
- * <p>
- * <b>Note</b> also that in this case the 'interceptor-ref' name attribute
- * is used to indicate an interceptor stack which makes sense as if it is referring
- * to the interceptor itself it would be just using Method 1 describe above.
- * </p>
- * <!-- END SNIPPET: parameterOverriding -->
- *
- * <p>
- * <b>Nested Interceptor param overriding</b>
- * </p>
+ * {@inheritDoc}
  *
- * <!-- START SNIPPET: nestedParameterOverriding -->
- * <p>
- * Interceptor stack parameter overriding could be nested into as many level as possible, though it would
- * be advisable not to nest it too deep as to avoid confusion, For example,
- * </p>
- * <pre>
- * &lt;interceptor name=&quot;interceptor1&quot; class=&quot;foo.bar.Interceptor1&quot; /&gt;
- * &lt;interceptor name=&quot;interceptor2&quot; class=&quot;foo.bar.Interceptor2&quot; /&gt;
- * &lt;interceptor name=&quot;interceptor3&quot; class=&quot;foo.bar.Interceptor3&quot; /&gt;
- * &lt;interceptor name=&quot;interceptor4&quot; class=&quot;foo.bar.Interceptor4&quot; /&gt;
- * &lt;interceptor-stack name=&quot;stack1&quot;&gt;
- *     &lt;interceptor-ref name=&quot;interceptor1&quot; /&gt;
- * &lt;/interceptor-stack&gt;
- * &lt;interceptor-stack name=&quot;stack2&quot;&gt;
- *     &lt;interceptor-ref name=&quot;intercetor2&quot; /&gt;
- *     &lt;interceptor-ref name=&quot;stack1&quot; /&gt;
- * &lt;/interceptor-stack&gt;
- * &lt;interceptor-stack name=&quot;stack3&quot;&gt;
- *     &lt;interceptor-ref name=&quot;interceptor3&quot; /&gt;
- *     &lt;interceptor-ref name=&quot;stack2&quot; /&gt;
- * &lt;/interceptor-stack&gt;
- * &lt;interceptor-stack name=&quot;stack4&quot;&gt;
- *     &lt;interceptor-ref name=&quot;interceptor4&quot; /&gt;
- *     &lt;interceptor-ref name=&quot;stack3&quot; /&gt;
- *  &lt;/interceptor-stack&gt;
- * </pre>
- *
- * <p>
- * Assuming the interceptor has the following properties
- * </p>
- *
- * <table border="1" summary="">
- * <tr>
- * <td>Interceptor</td>
- * <td>property</td>
- * </tr>
- * <tr>
- * <td>Interceptor1</td>
- * <td>param1</td>
- * </tr>
- * <tr>
- * <td>Interceptor2</td>
- * <td>param2</td>
- * </tr>
- * <tr>
- * <td>Interceptor3</td>
- * <td>param3</td>
- * </tr>
- * <tr>
- * <td>Interceptor4</td>
- * <td>param4</td>
- * </tr>
- * </table>
- *
- * <p>
- * We could override them as follows :
- * </p>
- *
- * <pre>
- *    &lt;action ... &gt;
- *        &lt;!-- to override parameters of interceptor located directly in the stack  --&gt;
- *        &lt;interceptor-ref name=&quot;stack4&quot;&gt;
- *           &lt;param name=&quot;interceptor4.param4&quot;&gt; ... &lt;/param&gt;
- *        &lt;/interceptor-ref&gt;
- *    &lt;/action&gt;
- *
- *    &lt;action ... &gt;
- *        &lt;!-- to override parameters of interceptor located under nested stack --&gt;
- *        &lt;interceptor-ref name=&quot;stack4&quot;&gt;
- *            &lt;param name=&quot;stack3.interceptor3.param3&quot;&gt; ... &lt;/param&gt;
- *            &lt;param name=&quot;stack3.stack2.interceptor2.param2&quot;&gt; ... &lt;/param&gt;
- *            &lt;param name=&quot;stack3.stack2.stack1.interceptor1.param1&quot;&gt; ... &lt;/param&gt;
- *        &lt;/interceptor-ref&gt;
- *    &lt;/action&gt;
- *  </pre>
- *
- * <!-- END SNIPPET: nestedParameterOverriding -->
- *
- * @author Jason Carreira
- * @author tmjee
+ * @deprecated since 6.7.0, use {@link org.apache.struts2.interceptor.Interceptor} instead.
  */
-public interface Interceptor extends Serializable {
-
-    /**
-     * Called to let an interceptor clean up any resources it has allocated.
-     */
-    void destroy();
-
-    /**
-     * Called after an interceptor is created, but before any requests are processed using
-     * {@link #intercept(com.opensymphony.xwork2.ActionInvocation) intercept} , giving
-     * the Interceptor a chance to initialize any needed resources.
-     */
-    void init();
-
-    /**
-     * Allows the Interceptor to do some processing on the request before and/or after the rest of the processing of the
-     * request by the {@link ActionInvocation} or to short-circuit the processing and just return a String return code.
-     *
-     * @param invocation the action invocation
-     * @return the return code, either returned from {@link ActionInvocation#invoke()}, or from the interceptor itself.
-     * @throws Exception any system-level error, as defined in {@link com.opensymphony.xwork2.Action#execute()}.
-     */
-    String intercept(ActionInvocation invocation) throws Exception;
-
+@Deprecated
+public interface Interceptor extends org.apache.struts2.interceptor.Interceptor {
 }
diff --git a/core/src/main/java/com/opensymphony/xwork2/Action.java b/core/src/main/java/org/apache/struts2/Action.java
similarity index 89%
copy from core/src/main/java/com/opensymphony/xwork2/Action.java
copy to core/src/main/java/org/apache/struts2/Action.java
index 4c96617c4..cc3fb83ac 100644
--- a/core/src/main/java/com/opensymphony/xwork2/Action.java
+++ b/core/src/main/java/org/apache/struts2/Action.java
@@ -16,7 +16,7 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package com.opensymphony.xwork2;
+package org.apache.struts2;
 
 /**
  * All actions <b>may</b> implement this interface, which exposes the <code>execute()</code> method.
@@ -31,21 +31,21 @@ public interface Action {
      * The action execution was successful. Show result
      * view to the end user.
      */
-    public static final String SUCCESS = "success";
+    String SUCCESS = "success";
 
     /**
      * The action execution was successful but do not
      * show a view. This is useful for actions that are
      * handling the view in another fashion like redirect.
      */
-    public static final String NONE = "none";
+    String NONE = "none";
 
     /**
      * The action execution was a failure.
      * Show an error view, possibly asking the
      * user to retry entering data.
      */
-    public static final String ERROR = "error";
+    String ERROR = "error";
 
     /**
      * <p>
@@ -64,14 +64,14 @@ public interface Action {
      * should try providing input again.
      * </p>
      */
-    public static final String INPUT = "input";
+    String INPUT = "input";
 
     /**
      * The action could not execute, since the
      * user most was not logged in. The login view
      * should be shown.
      */
-    public static final String LOGIN = "login";
+    String LOGIN = "login";
 
 
     /**
@@ -83,6 +83,6 @@ public interface Action {
      *                   <b>Note:</b> Application level exceptions should be handled by returning
      *                   an error value, such as <code>Action.ERROR</code>.
      */
-    public String execute() throws Exception;
+    String execute() throws Exception;
 
 }
diff --git a/core/src/main/java/com/opensymphony/xwork2/Result.java b/core/src/main/java/org/apache/struts2/Result.java
similarity index 93%
copy from core/src/main/java/com/opensymphony/xwork2/Result.java
copy to core/src/main/java/org/apache/struts2/Result.java
index 8c1687e5a..4dc912772 100644
--- a/core/src/main/java/com/opensymphony/xwork2/Result.java
+++ b/core/src/main/java/org/apache/struts2/Result.java
@@ -16,7 +16,10 @@
  * specific language governing permissions and limitations
  * under the License.
  */
-package com.opensymphony.xwork2;
+package org.apache.struts2;
+
+import com.opensymphony.xwork2.Action;
+import com.opensymphony.xwork2.ActionInvocation;
 
 import java.io.Serializable;
 
diff --git a/core/src/main/java/com/opensymphony/xwork2/interceptor/Interceptor.java b/core/src/main/java/org/apache/struts2/interceptor/Interceptor.java
similarity index 98%
copy from core/src/main/java/com/opensymphony/xwork2/interceptor/Interceptor.java
copy to core/src/main/java/org/apache/struts2/interceptor/Interceptor.java
index cafa08fc0..9c36bde77 100644
--- a/core/src/main/java/com/opensymphony/xwork2/interceptor/Interceptor.java
+++ b/core/src/main/java/org/apache/struts2/interceptor/Interceptor.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.ActionInvocation;
 
@@ -204,7 +204,7 @@ public interface Interceptor extends Serializable {
 
     /**
      * Called after an interceptor is created, but before any requests are processed using
-     * {@link #intercept(com.opensymphony.xwork2.ActionInvocation) intercept} , giving
+     * {@link #intercept(ActionInvocation) intercept} , giving
      * the Interceptor a chance to initialize any needed resources.
      */
     void init();