You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2020/04/05 05:46:08 UTC

[struts] 03/06: Correction for previous commit message. There was a typo which should have read: "copies one interface from org.springframework.mock.web.portlet.multipart" (not "org.apache.struts2.mock.web.portlet" which was incorrect).

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

lukaszlenart pushed a commit to branch action-context-boost
in repository https://gitbox.apache.org/repos/asf/struts.git

commit b7520d2ea011b4d90742f99348562df653ed71bd
Author: JCgH4164838Gh792C124B5 <43...@users.noreply.github.com>
AuthorDate: Sat Mar 28 11:48:06 2020 -0400

    Correction for previous commit message.  There was a typo which should have
      read: "copies one interface from
      org.springframework.mock.web.portlet.multipart" (not
      "org.apache.struts2.mock.web.portlet" which was incorrect).
    
    Refactor (rename) junit-portlet plugin to portlet-mocks plugin.
    - Moved StrutsPortletTestCase from the portlet plugin into the junit plugin
     (same package name).
    - Added optional dependencies to the junit plugin for the portlet plugin
      and mocks plugin.
    - Duplicated StrutsTestCase from the junit plugin with a new name
      StrutsTestCasePortletTests that exists within a test scope only.
      This was done to eliminate a dendency cycle between junit and portlet
      plugins during refactoring.
    - Updated the portlet plugin unit tests to use StrutsTestCasePortletTests
      internally instead of StrutsTestCase from the junit plugin.
    - Removed junit plugin dependency for portlets plugin, added test scope
      dependency for portlet-mocks plugin.
    - Made StrutsSpringPortletMockObjectsTest depend only on TestCase.
    - Removed unneeded dependencies from portlet-mocks pom.
    
    Amended commit multiple times: Missed plugins pom.xml change, forgot to
    drop StrutsPortletTestCase from portlet plugin (local repository).
---
 plugins/junit/pom.xml                              |  15 +-
 .../org/apache/struts2/StrutsPortletTestCase.java  |  20 +-
 plugins/pom.xml                                    |   2 +-
 plugins/{junit-portlet => portlet-mocks}/pom.xml   |  27 +--
 .../mock/web/portlet/MockActionRequest.java        |   0
 .../mock/web/portlet/MockActionResponse.java       |   0
 .../struts2/mock/web/portlet/MockBaseURL.java      |   0
 .../struts2/mock/web/portlet/MockCacheControl.java |   0
 .../mock/web/portlet/MockClientDataRequest.java    |   0
 .../apache/struts2/mock/web/portlet/MockEvent.java |   0
 .../struts2/mock/web/portlet/MockEventRequest.java |   0
 .../mock/web/portlet/MockEventResponse.java        |   0
 .../struts2/mock/web/portlet/MockMimeResponse.java |   0
 .../web/portlet/MockMultipartActionRequest.java    |   0
 .../mock/web/portlet/MockPortalContext.java        |   0
 .../mock/web/portlet/MockPortletConfig.java        |   0
 .../mock/web/portlet/MockPortletContext.java       |   0
 .../mock/web/portlet/MockPortletPreferences.java   |   0
 .../mock/web/portlet/MockPortletRequest.java       |   0
 .../web/portlet/MockPortletRequestDispatcher.java  |   0
 .../mock/web/portlet/MockPortletResponse.java      |   0
 .../mock/web/portlet/MockPortletSession.java       |   0
 .../struts2/mock/web/portlet/MockPortletURL.java   |   0
 .../mock/web/portlet/MockRenderRequest.java        |   0
 .../mock/web/portlet/MockRenderResponse.java       |   0
 .../mock/web/portlet/MockResourceRequest.java      |   0
 .../mock/web/portlet/MockResourceResponse.java     |   0
 .../struts2/mock/web/portlet/MockResourceURL.java  |   0
 .../mock/web/portlet/MockStateAwareResponse.java   |   0
 .../web/portlet/ServletWrappingPortletContext.java |   0
 .../portlet/multipart/MultipartActionRequest.java  |   0
 .../mock/web/portlet/multipart/package-info.java   |   0
 .../struts2/mock/web/portlet/package-info.java     |   0
 .../src/site/site.xml                              |   0
 .../StrutsSpringPortletMockObjectsTest.java        |  11 +-
 .../src/test/resources/applicationContext.xml      |   0
 plugins/portlet/pom.xml                            |   9 +-
 .../apache/struts2/StrutsTestCasePortletTests.java | 224 +++++++++++++++++++++
 .../struts2/components/PortletUrlRendererTest.java |   4 +-
 .../interceptor/PortletStateInterceptorTest.java   |   4 +-
 pom.xml                                            |   4 +-
 41 files changed, 267 insertions(+), 53 deletions(-)

diff --git a/plugins/junit/pom.xml b/plugins/junit/pom.xml
index f41e243..b978c8d 100644
--- a/plugins/junit/pom.xml
+++ b/plugins/junit/pom.xml
@@ -70,7 +70,20 @@
         <dependency>
             <groupId>javax.portlet</groupId>
             <artifactId>portlet-api</artifactId>
-            <scope>test</scope>
+            <scope>compile</scope>
+            <optional>true</optional>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.struts</groupId>
+            <artifactId>struts2-portlet-plugin</artifactId>
+            <optional>true</optional>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.struts</groupId>
+            <artifactId>struts2-portlet-mocks-plugin</artifactId>
+            <optional>true</optional>
         </dependency>
 
         <!-- The Servlet API mocks in Spring Framework 4.x only supports Servlet 3.0 and higher.
diff --git a/plugins/portlet/src/main/java/org/apache/struts2/StrutsPortletTestCase.java b/plugins/junit/src/main/java/org/apache/struts2/StrutsPortletTestCase.java
similarity index 86%
rename from plugins/portlet/src/main/java/org/apache/struts2/StrutsPortletTestCase.java
rename to plugins/junit/src/main/java/org/apache/struts2/StrutsPortletTestCase.java
index 0f07ea9..624a186 100644
--- a/plugins/portlet/src/main/java/org/apache/struts2/StrutsPortletTestCase.java
+++ b/plugins/junit/src/main/java/org/apache/struts2/StrutsPortletTestCase.java
@@ -18,20 +18,30 @@
  */
 package org.apache.struts2;
 
+
 import com.opensymphony.xwork2.ActionContext;
+import java.util.HashMap;
+import java.util.Map;
+import javax.portlet.PortletMode;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.LogManager;
-import org.apache.struts2.portlet.PortletConstants;
-import org.apache.struts2.portlet.PortletPhase;
 import org.apache.struts2.mock.web.portlet.MockPortletContext;
 import org.apache.struts2.mock.web.portlet.MockPortletRequest;
 import org.apache.struts2.mock.web.portlet.MockPortletResponse;
 import org.apache.struts2.mock.web.portlet.MockPortletSession;
 import org.apache.struts2.mock.web.portlet.MockStateAwareResponse;
+import org.apache.struts2.portlet.PortletConstants;
+import org.apache.struts2.portlet.PortletPhase;
 
-import javax.portlet.PortletMode;
-import java.util.HashMap;
-import java.util.Map;
+/*
+ * Changes:  This is a copy of org.apache.struts2.StrutsPortletTestCase from the Struts 2 portlet-plugin, moved
+ *           into the junit-plugin (same package org.apache.struts2).
+ *           The import order above was changed to alphabetical.
+ *
+ * Note:     The assumption is that anyone utilizing StrutsPortletTestCase currently from the portlet-plugin will almost
+ *           certainly be using the junit-plugin.  Under that assumption, the refactored-move of StrutsPortletTestCase
+ *           should not cause issues for pre-existing usage of StrutsPortletTestCase.
+ */
 
 /**
  * Base class used to test action in portlet environment
diff --git a/plugins/pom.xml b/plugins/pom.xml
index fdee6ed..b9f6254 100644
--- a/plugins/pom.xml
+++ b/plugins/pom.xml
@@ -45,12 +45,12 @@
         <module>jfreechart</module>
         <module>json</module>
         <module>junit</module>
-        <module>junit-portlet</module>
         <module>osgi</module>
         <module>oval</module>
         <module>pell-multipart</module>
         <module>plexus</module>
         <module>portlet</module>
+        <module>portlet-mocks</module>
         <module>portlet-tiles</module>
         <module>rest</module>
         <module>sitemesh</module>
diff --git a/plugins/junit-portlet/pom.xml b/plugins/portlet-mocks/pom.xml
similarity index 72%
rename from plugins/junit-portlet/pom.xml
rename to plugins/portlet-mocks/pom.xml
index adfab00..afc9a8f 100644
--- a/plugins/junit-portlet/pom.xml
+++ b/plugins/portlet-mocks/pom.xml
@@ -27,9 +27,9 @@
         <version>2.6-SNAPSHOT</version>
     </parent>
 
-    <artifactId>struts2-junit-portlet-plugin</artifactId>
+    <artifactId>struts2-portlet-mocks-plugin</artifactId>
     <packaging>jar</packaging>
-    <name>Struts 2 JUnit Portlet Plugin</name>
+    <name>Struts 2 Portlet Mocks Plugin</name>
 
     <dependencies>
         <dependency>
@@ -38,33 +38,12 @@
         </dependency>
         <dependency>
             <groupId>org.springframework</groupId>
-            <artifactId>spring-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-context</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
             <artifactId>spring-web</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.struts</groupId>
-            <artifactId>struts2-junit-plugin</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.struts</groupId>
-            <artifactId>struts2-spring-plugin</artifactId>
-            <optional>true</optional>
-        </dependency>
-        <dependency>
-            <groupId>javax.servlet.jsp</groupId>
-            <artifactId>jsp-api</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <dependency>
             <groupId>junit</groupId>
             <artifactId>junit</artifactId>
+            <scope>test</scope>
         </dependency>
 
         <!-- Portlet -->
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockActionRequest.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockActionRequest.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockActionRequest.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockActionRequest.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockActionResponse.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockActionResponse.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockActionResponse.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockActionResponse.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockBaseURL.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockBaseURL.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockBaseURL.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockBaseURL.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockCacheControl.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockCacheControl.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockCacheControl.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockCacheControl.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockClientDataRequest.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockClientDataRequest.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockClientDataRequest.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockClientDataRequest.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockEvent.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockEvent.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockEvent.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockEvent.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockEventRequest.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockEventRequest.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockEventRequest.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockEventRequest.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockEventResponse.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockEventResponse.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockEventResponse.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockEventResponse.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockMimeResponse.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockMimeResponse.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockMimeResponse.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockMimeResponse.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockMultipartActionRequest.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockMultipartActionRequest.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockMultipartActionRequest.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockMultipartActionRequest.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockPortalContext.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockPortalContext.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockPortalContext.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockPortalContext.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletConfig.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletConfig.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletConfig.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletConfig.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletContext.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletContext.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletContext.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletContext.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletPreferences.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletPreferences.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletPreferences.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletPreferences.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletRequest.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletRequest.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletRequest.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletRequest.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletRequestDispatcher.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletRequestDispatcher.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletRequestDispatcher.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletRequestDispatcher.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletResponse.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletResponse.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletResponse.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletResponse.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletSession.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletSession.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletSession.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletSession.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletURL.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletURL.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletURL.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockPortletURL.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockRenderRequest.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockRenderRequest.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockRenderRequest.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockRenderRequest.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockRenderResponse.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockRenderResponse.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockRenderResponse.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockRenderResponse.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockResourceRequest.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockResourceRequest.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockResourceRequest.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockResourceRequest.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockResourceResponse.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockResourceResponse.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockResourceResponse.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockResourceResponse.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockResourceURL.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockResourceURL.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockResourceURL.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockResourceURL.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockStateAwareResponse.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockStateAwareResponse.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/MockStateAwareResponse.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/MockStateAwareResponse.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/ServletWrappingPortletContext.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/ServletWrappingPortletContext.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/ServletWrappingPortletContext.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/ServletWrappingPortletContext.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/multipart/MultipartActionRequest.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/multipart/MultipartActionRequest.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/multipart/MultipartActionRequest.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/multipart/MultipartActionRequest.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/multipart/package-info.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/multipart/package-info.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/multipart/package-info.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/multipart/package-info.java
diff --git a/plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/package-info.java b/plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/package-info.java
similarity index 100%
rename from plugins/junit-portlet/src/main/java/org/apache/struts2/mock/web/portlet/package-info.java
rename to plugins/portlet-mocks/src/main/java/org/apache/struts2/mock/web/portlet/package-info.java
diff --git a/plugins/junit-portlet/src/site/site.xml b/plugins/portlet-mocks/src/site/site.xml
similarity index 100%
rename from plugins/junit-portlet/src/site/site.xml
rename to plugins/portlet-mocks/src/site/site.xml
diff --git a/plugins/junit-portlet/src/test/java/org/apache/struts2/StrutsSpringPortletMockObjectsTest.java b/plugins/portlet-mocks/src/test/java/org/apache/struts2/StrutsSpringPortletMockObjectsTest.java
similarity index 99%
rename from plugins/junit-portlet/src/test/java/org/apache/struts2/StrutsSpringPortletMockObjectsTest.java
rename to plugins/portlet-mocks/src/test/java/org/apache/struts2/StrutsSpringPortletMockObjectsTest.java
index e802dc6..821868f 100644
--- a/plugins/junit-portlet/src/test/java/org/apache/struts2/StrutsSpringPortletMockObjectsTest.java
+++ b/plugins/portlet-mocks/src/test/java/org/apache/struts2/StrutsSpringPortletMockObjectsTest.java
@@ -49,6 +49,7 @@ import javax.portlet.WindowState;
 import javax.security.auth.Subject;
 import javax.servlet.http.Cookie;
 import javax.xml.namespace.QName;
+import junit.framework.TestCase;
 import org.apache.struts2.mock.web.portlet.MockActionRequest;
 import org.apache.struts2.mock.web.portlet.MockActionResponse;
 import org.apache.struts2.mock.web.portlet.MockCacheControl;
@@ -84,7 +85,7 @@ import org.w3c.dom.Element;
  * Basic test class for Portlet Mock Object testing
  * 
  */
-public class StrutsSpringPortletMockObjectsTest extends StrutsSpringTestCase {
+public class StrutsSpringPortletMockObjectsTest extends TestCase {
 
     /**
      * An empty preferences validator for code coverage only
@@ -98,14 +99,6 @@ public class StrutsSpringPortletMockObjectsTest extends StrutsSpringTestCase {
 
     }
 
-    public void testApplicationContext() {
-        assertNotNull(applicationContext);
-    }
-
-    public void testContextLocations() {
-        assertNotNull(getContextLocations());
-    }
-
     public void testMockActionRequest() {
         final String TEST_ACTIONNAME = "TEST_ACTIONNAME";
 
diff --git a/plugins/junit-portlet/src/test/resources/applicationContext.xml b/plugins/portlet-mocks/src/test/resources/applicationContext.xml
similarity index 100%
rename from plugins/junit-portlet/src/test/resources/applicationContext.xml
rename to plugins/portlet-mocks/src/test/resources/applicationContext.xml
diff --git a/plugins/portlet/pom.xml b/plugins/portlet/pom.xml
index 5fc6480..31d35c5 100644
--- a/plugins/portlet/pom.xml
+++ b/plugins/portlet/pom.xml
@@ -33,16 +33,11 @@
 
     <dependencies>
         <!-- junit and related JARs are needed for 'compile'! -->
-        <!-- Due to StrutsPortletTestCase shall be distributed to applications. -->
-        <dependency>
-            <groupId>org.apache.struts</groupId>
-            <artifactId>struts2-junit-plugin</artifactId>
-            <optional>true</optional>
-        </dependency>
 
         <dependency>
             <groupId>org.apache.struts</groupId>
-            <artifactId>struts2-junit-portlet-plugin</artifactId>
+            <artifactId>struts2-portlet-mocks-plugin</artifactId>
+            <scope>test</scope>
             <optional>true</optional>
         </dependency>
 
diff --git a/plugins/portlet/src/test/java/org/apache/struts2/StrutsTestCasePortletTests.java b/plugins/portlet/src/test/java/org/apache/struts2/StrutsTestCasePortletTests.java
new file mode 100644
index 0000000..1e7ea61
--- /dev/null
+++ b/plugins/portlet/src/test/java/org/apache/struts2/StrutsTestCasePortletTests.java
@@ -0,0 +1,224 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.struts2;
+
+import com.opensymphony.xwork2.ActionContext;
+import com.opensymphony.xwork2.ActionProxy;
+import com.opensymphony.xwork2.ActionProxyFactory;
+import com.opensymphony.xwork2.XWorkTestCase;
+import com.opensymphony.xwork2.config.Configuration;
+import java.io.UnsupportedEncodingException;
+import java.util.HashMap;
+import java.util.Map;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import org.apache.struts2.dispatcher.Dispatcher;
+import org.apache.struts2.dispatcher.HttpParameters;
+import org.apache.struts2.dispatcher.mapper.ActionMapper;
+import org.apache.struts2.dispatcher.mapper.ActionMapping;
+import org.apache.struts2.util.StrutsTestCaseHelper;
+import org.springframework.core.io.DefaultResourceLoader;
+import org.springframework.mock.web.MockHttpServletRequest;
+import org.springframework.mock.web.MockHttpServletResponse;
+import org.springframework.mock.web.MockHttpSession;
+import org.springframework.mock.web.MockPageContext;
+import org.springframework.mock.web.MockServletContext;
+
+/*
+ * Changes:  This is a copy of org.apache.struts2.StrutsTestCase from the Struts 2 junit-plugin, kept in
+ *           in the same package org.apache.struts2 and renamed.  Removed some unused imports, made
+ *           imports alphabetical and made some whitespace changes and modified a comment.
+ *           The StrutsTestCasePortletTests is needed in order to break a dependency-cycle between the 
+ *           portlet-plugin and junit-plugin with respect to StrutsTestCase.
+ *
+ * Note:     If the junit-plugin StrutsTestCase is updated/modified, it may be appropriate to update
+ *           this version as well, for consistency (but they may diverge in the future).
+ *           The StrutsTestCasePortletTests is intentionally kept at the test scope of the portlet-plugin
+ *           as it only exists due to the dependency-cycle issue.  The junit-plugin StrutsTestCase should
+ *           be used elswehere.
+ */
+
+/**
+ * Base test case for JUnit testing Struts within the portlet-plugin unit tests.
+ */
+public abstract class StrutsTestCasePortletTests extends XWorkTestCase {
+    protected MockHttpServletResponse response;
+    protected MockHttpServletRequest request;
+    protected MockPageContext pageContext;
+    protected MockServletContext servletContext;
+    protected Map<String, String> dispatcherInitParams;
+    protected Dispatcher dispatcher;
+    protected DefaultResourceLoader resourceLoader = new DefaultResourceLoader();
+
+    /**
+     * gets an object from the stack after an action is executed
+     */
+    protected Object findValueAfterExecute(String key) {
+        return ServletActionContext.getValueStack(request).findValue(key);
+    }
+
+    /**
+     * Executes an action and returns it's output (not the result returned from
+     * execute()), but the actual output that would be written to the response.
+     * For this to work the configured result for the action needs to be
+     * FreeMarker, or Velocity (JSPs can be used with the Embedded JSP plugin)
+     */
+    protected String executeAction(String uri) throws ServletException, UnsupportedEncodingException {
+        request.setRequestURI(uri);
+        ActionMapping mapping = getActionMapping(request);
+
+        assertNotNull(mapping);
+        Dispatcher.getInstance().serviceAction(request, response, mapping);
+
+        if (response.getStatus() != HttpServletResponse.SC_OK) {
+            throw new ServletException("Error code [" + response.getStatus() + "], Error: [" + response.getErrorMessage() + "]");
+        }
+        return response.getContentAsString();
+    }
+
+    /**
+     * Creates an action proxy for a request, and sets parameters of the ActionInvocation to the passed
+     * parameters. Make sure to set the request parameters in the protected "request" object before calling this method.
+     */
+    protected ActionProxy getActionProxy(String uri) {
+        request.setRequestURI(uri);
+        ActionMapping mapping = getActionMapping(request);
+        String namespace = mapping.getNamespace();
+        String name = mapping.getName();
+        String method = mapping.getMethod();
+
+        Configuration config = configurationManager.getConfiguration();
+        ActionProxy proxy = config.getContainer().getInstance(ActionProxyFactory.class).createActionProxy(
+                namespace, name, method, new HashMap<String, Object>(), true, false);
+
+        initActionContext(proxy.getInvocation().getInvocationContext());
+
+        // this is normally done in onSetUp(), but we are using Struts internal
+        // objects (proxy and action invocation)
+        // so we have to hack around so it works
+        ServletActionContext.setServletContext(servletContext);
+        ServletActionContext.setRequest(request);
+        ServletActionContext.setResponse(response);
+
+        return proxy;
+    }
+
+    /**
+     * A helper method which allows instantiate an action if this action extends
+     * {@link com.opensymphony.xwork2.ActionSupport} or any other action class
+     * that requires framework's dependencies injection.
+     */
+    protected <T> T createAction(Class<T> clazz) {
+        return container.inject(clazz);
+    }
+
+    protected void initActionContext(ActionContext actionContext) {
+        actionContext.setParameters(HttpParameters.create(request.getParameterMap()).build());
+        initSession(actionContext);
+        applyAdditionalParams(actionContext);
+        // set the action context to the one used by the proxy
+        ActionContext.setContext(actionContext);
+    }
+
+    protected void initSession(ActionContext actionContext) {
+        if (actionContext.getSession() == null) {
+            actionContext.setSession(new HashMap<String, Object>());
+            request.setSession(new MockHttpSession(servletContext));
+        }
+    }
+
+    /**
+     * Can be overwritten in subclass to provide additional context's params and settings used during action invocation
+     *
+     * @param context current {@link ActionContext}
+     */
+    protected void applyAdditionalParams(ActionContext context) {
+        // empty be default
+    }
+
+    /**
+     * Finds an ActionMapping for a given request
+     */
+    protected ActionMapping getActionMapping(HttpServletRequest request) {
+        return container.getInstance(ActionMapper.class).getMapping(request, configurationManager);
+    }
+
+    /**
+     * Finds an ActionMapping for a given url
+     */
+    protected ActionMapping getActionMapping(String url) {
+        MockHttpServletRequest req = new MockHttpServletRequest();
+        req.setRequestURI(url);
+        return getActionMapping(req);
+    }
+
+    /**
+     * Injects dependencies on an Object using Struts internal IoC container
+     */
+    protected void injectStrutsDependencies(Object object) {
+        container.inject(object);
+    }
+
+    /**
+     * Sets up the configuration settings, XWork configuration, and
+     * message resources
+     */
+    protected void setUp() throws Exception {
+        super.setUp();
+        initServletMockObjects();
+        setupBeforeInitDispatcher();
+        dispatcher = initDispatcher(dispatcherInitParams);
+        setupAfterInitDispatcher(dispatcher);
+    }
+
+    protected void setupBeforeInitDispatcher() throws Exception {
+        // empty by default
+    }
+
+    protected void setupAfterInitDispatcher(Dispatcher dispatcher) {
+        // empty by default
+    }
+
+    protected void initServletMockObjects() {
+        servletContext = new MockServletContext(resourceLoader);
+        response = new MockHttpServletResponse();
+        request = new MockHttpServletRequest();
+        pageContext = new MockPageContext(servletContext, request, response);
+    }
+
+    protected Dispatcher initDispatcher(Map<String, String> params) {
+        Dispatcher du = StrutsTestCaseHelper.initDispatcher(servletContext, params);
+        configurationManager = du.getConfigurationManager();
+        configuration = configurationManager.getConfiguration();
+        container = configuration.getContainer();
+        return du;
+    }
+
+    protected void tearDown() throws Exception {
+        super.tearDown();
+        // maybe someone else already destroyed Dispatcher
+        if (dispatcher != null && dispatcher.getConfigurationManager() != null) {
+            dispatcher.cleanup();
+            dispatcher = null;
+        }
+        StrutsTestCaseHelper.tearDown();
+    }
+
+}
diff --git a/plugins/portlet/src/test/java/org/apache/struts2/components/PortletUrlRendererTest.java b/plugins/portlet/src/test/java/org/apache/struts2/components/PortletUrlRendererTest.java
index 0272043..fbc87db 100644
--- a/plugins/portlet/src/test/java/org/apache/struts2/components/PortletUrlRendererTest.java
+++ b/plugins/portlet/src/test/java/org/apache/struts2/components/PortletUrlRendererTest.java
@@ -22,7 +22,7 @@ import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionProxy;
 import com.opensymphony.xwork2.util.ValueStack;
 import org.apache.struts2.StrutsStatics;
-import org.apache.struts2.StrutsTestCase;
+import org.apache.struts2.StrutsTestCasePortletTests;
 import org.apache.struts2.portlet.PortletConstants;
 import org.apache.struts2.mock.web.portlet.MockMimeResponse;
 import org.apache.struts2.mock.web.portlet.MockPortletContext;
@@ -35,7 +35,7 @@ import java.io.StringWriter;
 import java.io.Writer;
 import java.util.Collections;
 
-public class PortletUrlRendererTest extends StrutsTestCase {
+public class PortletUrlRendererTest extends StrutsTestCasePortletTests {
 
     private ValueStack stack;
 
diff --git a/plugins/portlet/src/test/java/org/apache/struts2/portlet/interceptor/PortletStateInterceptorTest.java b/plugins/portlet/src/test/java/org/apache/struts2/portlet/interceptor/PortletStateInterceptorTest.java
index 533b2ea..f324cf2 100644
--- a/plugins/portlet/src/test/java/org/apache/struts2/portlet/interceptor/PortletStateInterceptorTest.java
+++ b/plugins/portlet/src/test/java/org/apache/struts2/portlet/interceptor/PortletStateInterceptorTest.java
@@ -22,7 +22,7 @@ import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.ActionInvocation;
 import com.opensymphony.xwork2.util.ValueStack;
 import com.opensymphony.xwork2.util.ValueStackFactory;
-import org.apache.struts2.StrutsTestCase;
+import org.apache.struts2.StrutsTestCasePortletTests;
 import org.apache.struts2.dispatcher.DefaultActionSupport;
 import org.apache.struts2.portlet.PortletPhase;
 import org.apache.struts2.portlet.dispatcher.DirectRenderFromEventAction;
@@ -39,7 +39,7 @@ import static org.apache.struts2.portlet.PortletConstants.REQUEST;
 import static org.apache.struts2.portlet.PortletConstants.RESPONSE;
 import static org.apache.struts2.portlet.PortletConstants.STACK_FROM_EVENT_PHASE;
 
-public class PortletStateInterceptorTest extends StrutsTestCase {
+public class PortletStateInterceptorTest extends StrutsTestCasePortletTests {
 
     private PortletStateInterceptor interceptor;
 
diff --git a/pom.xml b/pom.xml
index 2c83f31..bfbb5d4 100644
--- a/pom.xml
+++ b/pom.xml
@@ -566,12 +566,12 @@
             </dependency>
             <dependency>
                 <groupId>org.apache.struts</groupId>
-                <artifactId>struts2-junit-plugin</artifactId>
+                <artifactId>struts2-portlet-mocks-plugin</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>
                 <groupId>org.apache.struts</groupId>
-                <artifactId>struts2-junit-portlet-plugin</artifactId>
+                <artifactId>struts2-junit-plugin</artifactId>
                 <version>${project.version}</version>
             </dependency>
             <dependency>