diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 000000000..779f99a12
--- /dev/null
+++ b/.editorconfig
@@ -0,0 +1,12 @@
+root = true
+
+[*]
+indent_style = space
+indent_size = 4
+end_of_line = lf
+charset = utf-8
+trim_trailing_whitespace = true
+insert_final_newline = true
+
+[*.md]
+trim_trailing_whitespace = false
diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
index a786d212a..67d9aba55 100644
--- a/.github/workflows/build.yml
+++ b/.github/workflows/build.yml
@@ -22,3 +22,15 @@ jobs:
java-version: 1.8
- name: Build with Maven
run: mvn -B package --file pom.xml
+ - name: Store JVM Crash and Surefire Logs
+ if: always() # Forces this step to run even if the Maven build fails
+ uses: actions/upload-artifact@v4
+ with:
+ name: maven-crash-logs
+ path: |
+ **/hs_err_pid*.log
+ **/target/surefire-reports/*.dump*
+ **/target/surefire-reports/*.txt
+ - name: Check System Logs for Memory (OOM) Kills
+ if: always()
+ run: dmesg | grep -i -E 'oom[-_]killer|killed process' || echo "No OS-level OOM kills detected."
diff --git a/.gitignore b/.gitignore
index 9533b9311..1f36c6463 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,3 +7,4 @@
/.project
/.settings/
/.DS_Store
+/.metadata/
diff --git a/mockrunner-all/pom.xml b/mockrunner-all/pom.xml
index 4b7793a67..69dd78b36 100644
--- a/mockrunner-all/pom.xml
+++ b/mockrunner-all/pom.xml
@@ -5,8 +5,7 @@
com.mockrunner
mockrunner
- 2.0.7-SNAPSHOT
- ..
+ 2.0.8-SNAPSHOT
mockrunner-all
@@ -17,75 +16,75 @@
com.mockrunner
mockrunner-core
- 2.0.7-SNAPSHOT
+ 2.0.8-SNAPSHOT
com.mockrunner
mockrunner-jms
- 2.0.7-SNAPSHOT
+ 2.0.8-SNAPSHOT
com.mockrunner
mockrunner-jms
- 2.0.7-SNAPSHOT
+ 2.0.8-SNAPSHOT
tests
test
com.mockrunner
mockrunner-ejb
- 2.0.7-SNAPSHOT
+ 2.0.8-SNAPSHOT
com.mockrunner
mockrunner-ejb
- 2.0.7-SNAPSHOT
+ 2.0.8-SNAPSHOT
tests
test
com.mockrunner
mockrunner-jdbc
- 2.0.7-SNAPSHOT
+ 2.0.8-SNAPSHOT
com.mockrunner
mockrunner-jdbc
- 2.0.7-SNAPSHOT
+ 2.0.8-SNAPSHOT
tests
test
com.mockrunner
mockrunner-jca
- 2.0.7-SNAPSHOT
+ 2.0.8-SNAPSHOT
com.mockrunner
mockrunner-servlet
- 2.0.7-SNAPSHOT
+ 2.0.8-SNAPSHOT
com.mockrunner
mockrunner-servlet
- 2.0.7-SNAPSHOT
+ 2.0.8-SNAPSHOT
tests
test
com.mockrunner
mockrunner-tag
- 2.0.7-SNAPSHOT
+ 2.0.8-SNAPSHOT
com.mockrunner
mockrunner-struts
- 2.0.7-SNAPSHOT
+ 2.0.8-SNAPSHOT
com.mockrunner
mockrunner-struts
- 2.0.7-SNAPSHOT
+ 2.0.8-SNAPSHOT
tests
test
@@ -105,6 +104,10 @@
jboss
jboss-j2ee
+
+ org.jboss.spec.javax.rmi
+ jboss-rmi-api_1.0_spec
+
@@ -154,7 +157,7 @@
-
+
release-module-exclusives
diff --git a/mockrunner-all/src/main/java/com/mockrunner/base/HTMLOutputTestCase.java b/mockrunner-all/src/main/java/com/mockrunner/base/HTMLOutputTestCase.java
index 87d61d692..a5987cdad 100644
--- a/mockrunner-all/src/main/java/com/mockrunner/base/HTMLOutputTestCase.java
+++ b/mockrunner-all/src/main/java/com/mockrunner/base/HTMLOutputTestCase.java
@@ -56,7 +56,7 @@ protected org.w3c.dom.Document getOutputAsW3CDocument()
/**
* Delegates to {@link HTMLOutputModule#getOutputAsJDOMDocument}
*/
- protected org.jdom.Document getOutputAsJDOMDocument()
+ protected org.jdom2.Document getOutputAsJDOMDocument()
{
return getHTMLOutputModule().getOutputAsJDOMDocument();
}
diff --git a/mockrunner-all/src/test/java/com/mockrunner/test/web/HTMLOutputModuleTest.java b/mockrunner-all/src/test/java/com/mockrunner/test/web/HTMLOutputModuleTest.java
index 2ae4fdd49..38bfdb578 100644
--- a/mockrunner-all/src/test/java/com/mockrunner/test/web/HTMLOutputModuleTest.java
+++ b/mockrunner-all/src/test/java/com/mockrunner/test/web/HTMLOutputModuleTest.java
@@ -17,7 +17,7 @@
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
-import org.jdom.Element;
+import org.jdom2.Element;
import org.junit.Before;
import org.junit.Test;
diff --git a/mockrunner-core/pom.xml b/mockrunner-core/pom.xml
index 7e7d581b9..b28165348 100644
--- a/mockrunner-core/pom.xml
+++ b/mockrunner-core/pom.xml
@@ -5,8 +5,7 @@
com.mockrunner
mockrunner
- 2.0.7-SNAPSHOT
- ..
+ 2.0.8-SNAPSHOT
mockrunner-core
@@ -31,8 +30,8 @@
- jdom
- jdom
+ org.jdom
+ jdom2
diff --git a/mockrunner-core/src/main/java/com/mockrunner/test/util/XmlUtilTest.java b/mockrunner-core/src/main/java/com/mockrunner/test/util/XmlUtilTest.java
index 5983a0b3f..282198e41 100644
--- a/mockrunner-core/src/main/java/com/mockrunner/test/util/XmlUtilTest.java
+++ b/mockrunner-core/src/main/java/com/mockrunner/test/util/XmlUtilTest.java
@@ -5,8 +5,8 @@
import junit.framework.TestCase;
-import org.jdom.Document;
-import org.jdom.Element;
+import org.jdom2.Document;
+import org.jdom2.Element;
import com.mockrunner.util.web.XmlUtil;
diff --git a/mockrunner-core/src/main/java/com/mockrunner/util/web/XmlUtil.java b/mockrunner-core/src/main/java/com/mockrunner/util/web/XmlUtil.java
index aab42bceb..8ae749abf 100644
--- a/mockrunner-core/src/main/java/com/mockrunner/util/web/XmlUtil.java
+++ b/mockrunner-core/src/main/java/com/mockrunner/util/web/XmlUtil.java
@@ -5,9 +5,9 @@
import org.apache.xerces.parsers.DOMParser;
import org.cyberneko.html.HTMLConfiguration;
-import org.jdom.Element;
-import org.jdom.input.DOMBuilder;
-import org.jdom.output.XMLOutputter;
+import org.jdom2.Element;
+import org.jdom2.input.DOMBuilder;
+import org.jdom2.output.XMLOutputter;
import org.xml.sax.InputSource;
import com.mockrunner.base.NestedApplicationException;
@@ -34,10 +34,10 @@ public class XmlUtil
*
*
* the method returns the h1 tag as Element.
- * @param document the org.jdom.Document
+ * @param document the org.jdom2.Document
* @return the body Element
*/
- public static Element getBodyFragmentFromJDOMDocument(org.jdom.Document document)
+ public static Element getBodyFragmentFromJDOMDocument(org.jdom2.Document document)
{
Element element = document.getRootElement().getChild("BODY");
if(null == element)
@@ -57,17 +57,17 @@ public static Element getBodyFragmentFromJDOMDocument(org.jdom.Document document
* @return the body element
* @deprecated use {@link #getBodyFragmentFromJDOMDocument}
*/
- public static Element getBodyFragmentJDOMDocument(org.jdom.Document document)
+ public static Element getBodyFragmentJDOMDocument(org.jdom2.Document document)
{
return getBodyFragmentFromJDOMDocument(document);
}
/**
* Returns the documents XML content as a string.
- * @param document the org.jdom.Document
+ * @param document the org.jdom2.Document
* @return the output as string
*/
- public static String createStringFromJDOMDocument(org.jdom.Document document)
+ public static String createStringFromJDOMDocument(org.jdom2.Document document)
{
try
{
@@ -83,9 +83,9 @@ public static String createStringFromJDOMDocument(org.jdom.Document document)
* Creates a JDOM Document from a specified
* W3C Document.
* @param document the org.w3c.dom.Document
- * @return the org.jdom.Document
+ * @return the org.jdom2.Document
*/
- public static org.jdom.Document createJDOMDocument(org.w3c.dom.Document document)
+ public static org.jdom2.Document createJDOMDocument(org.w3c.dom.Document document)
{
return new DOMBuilder().build(document);
}
diff --git a/mockrunner-ejb/pom.xml b/mockrunner-ejb/pom.xml
index 20f0dc1a5..1f63ece60 100644
--- a/mockrunner-ejb/pom.xml
+++ b/mockrunner-ejb/pom.xml
@@ -1,116 +1,145 @@
- 4.0.0
-
- com.mockrunner
- mockrunner
- 2.0.7-SNAPSHOT
- ..
-
+ 4.0.0
+
+ com.mockrunner
+ mockrunner
+ 2.0.8-SNAPSHOT
+
- mockrunner-ejb
- MockRunner-EJB
- Mock classes for enterprise java beans
+ mockrunner-ejb
+ MockRunner-EJB
+ Mock classes for enterprise java beans
-
-
- junit
- junit
- provided
-
-
- com.mockrunner
- mockrunner-core
-
-
- commons-beanutils
- commons-beanutils
-
-
- org.mockejb
- mockejb
-
-
- jboss
- jboss-j2ee
- true
-
-
+
+
+ junit
+ junit
+ provided
+
+
+ com.mockrunner
+ mockrunner-core
+
+
+ commons-beanutils
+ commons-beanutils
+
+
+ org.mockejb
+ mockejb
+
+
+ cglib
+ cglib-full
+
+
+
+
+ cglib
+ cglib-nodep
+ 3.3.0
+
+
+ org.jacorb
+ jacorb
+ 3.9
+
+
+ jboss
+ jboss-j2ee
+ true
+
+
+ org.jboss.spec.javax.rmi
+ jboss-rmi-api_1.0_spec
+ test
+
+
-
-
-
-
- org.apache.maven.plugins
- maven-source-plugin
-
-
- attach-sources
- verify
-
- jar
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-javadoc-plugin
-
-
- attach-javadoc
- verify
-
- jar
-
-
-
-
- ${javadoc-executable-path}
- ${project.build.sourceEncoding}
- ${project.build.sourceEncoding}
- ${project.build.sourceEncoding}
- none
- -Xdoclint:none
-
-
-
-
-
-
-
- release-module-exclusives
-
-
-
- performRelease
- true
-
-
-
-
-
- com.github.github
- site-maven-plugin
-
- ${project.artifactId}
- Ejb Site
-
-
-
- github-site
-
- site
-
- site
-
-
-
-
-
-
-
+
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+
+
+ attach-sources
+ verify
+
+ jar
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+
+
+ attach-javadoc
+ verify
+
+ jar
+
+
+
+
+ ${javadoc-executable-path}
+ ${project.build.sourceEncoding}
+ ${project.build.sourceEncoding}
+ ${project.build.sourceEncoding}
+ none
+ -Xdoclint:none
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+ --add-opens=java.base/java.lang=ALL-UNNAMED
+ 0
+ false
+
+
+
+
+
+
+
+ release-module-exclusives
+
+
+
+ performRelease
+ true
+
+
+
+
+
+ com.github.github
+ site-maven-plugin
+
+ ${project.artifactId}
+ Ejb Site
+
+
+
+ github-site
+
+ site
+
+ site
+
+
+
+
+
+
+
diff --git a/mockrunner-jca/pom.xml b/mockrunner-jca/pom.xml
index 094db9730..c531475a1 100644
--- a/mockrunner-jca/pom.xml
+++ b/mockrunner-jca/pom.xml
@@ -5,8 +5,7 @@
com.mockrunner
mockrunner
- 2.0.7-SNAPSHOT
- ..
+ 2.0.8-SNAPSHOT
mockrunner-jca
diff --git a/mockrunner-jdbc/pom.xml b/mockrunner-jdbc/pom.xml
index 44cf19bae..a595cf37f 100644
--- a/mockrunner-jdbc/pom.xml
+++ b/mockrunner-jdbc/pom.xml
@@ -5,8 +5,7 @@
com.mockrunner
mockrunner
- 2.0.7-SNAPSHOT
- ..
+ 2.0.8-SNAPSHOT
mockrunner-jdbc
diff --git a/mockrunner-jdbc/src/main/java/com/mockrunner/jdbc/XMLResultSetFactory.java b/mockrunner-jdbc/src/main/java/com/mockrunner/jdbc/XMLResultSetFactory.java
index 24d7c4617..c8faf67d8 100644
--- a/mockrunner-jdbc/src/main/java/com/mockrunner/jdbc/XMLResultSetFactory.java
+++ b/mockrunner-jdbc/src/main/java/com/mockrunner/jdbc/XMLResultSetFactory.java
@@ -7,9 +7,9 @@
import java.util.List;
import java.util.Map;
-import org.jdom.Document;
-import org.jdom.Element;
-import org.jdom.input.SAXBuilder;
+import org.jdom2.Document;
+import org.jdom2.Element;
+import org.jdom2.input.SAXBuilder;
import com.mockrunner.base.NestedApplicationException;
import com.mockrunner.mock.jdbc.MockResultSet;
diff --git a/mockrunner-jdbc/src/main/java/com/mockrunner/jdbc/XMLResultSetFactorySQLDeveloperSupport.java b/mockrunner-jdbc/src/main/java/com/mockrunner/jdbc/XMLResultSetFactorySQLDeveloperSupport.java
index 837ac29d3..b9d3fb098 100644
--- a/mockrunner-jdbc/src/main/java/com/mockrunner/jdbc/XMLResultSetFactorySQLDeveloperSupport.java
+++ b/mockrunner-jdbc/src/main/java/com/mockrunner/jdbc/XMLResultSetFactorySQLDeveloperSupport.java
@@ -4,9 +4,9 @@
import java.util.Iterator;
import java.util.List;
-import org.jdom.Document;
-import org.jdom.Element;
-import org.jdom.input.SAXBuilder;
+import org.jdom2.Document;
+import org.jdom2.Element;
+import org.jdom2.input.SAXBuilder;
import com.mockrunner.base.NestedApplicationException;
import com.mockrunner.mock.jdbc.MockResultSet;
diff --git a/mockrunner-jdbc/src/main/java/com/mockrunner/mock/jdbc/MockSQLXML.java b/mockrunner-jdbc/src/main/java/com/mockrunner/mock/jdbc/MockSQLXML.java
index c6ef37f25..fab2a8cf6 100644
--- a/mockrunner-jdbc/src/main/java/com/mockrunner/mock/jdbc/MockSQLXML.java
+++ b/mockrunner-jdbc/src/main/java/com/mockrunner/mock/jdbc/MockSQLXML.java
@@ -32,13 +32,13 @@
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
-import org.jdom.Document;
-import org.jdom.input.DOMBuilder;
-import org.jdom.input.SAXBuilder;
-import org.jdom.input.SAXHandler;
-import org.jdom.output.DOMOutputter;
-import org.jdom.output.Format;
-import org.jdom.output.XMLOutputter;
+import org.jdom2.Document;
+import org.jdom2.input.DOMBuilder;
+import org.jdom2.input.SAXBuilder;
+import org.jdom2.input.sax.SAXHandler;
+import org.jdom2.output.DOMOutputter;
+import org.jdom2.output.Format;
+import org.jdom2.output.XMLOutputter;
import org.w3c.dom.Node;
import org.xml.sax.InputSource;
@@ -146,6 +146,7 @@ protected XMLInputFactory createXMLInputFactory()
protected SAXBuilder createJDOMSAXBuilder()
{
+
SAXBuilder builder = new SAXBuilder();
builder.setValidation(false);
return builder;
diff --git a/mockrunner-jdbc/src/test/java/com/mockrunner/test/jdbc/MockSQLXMLTest.java b/mockrunner-jdbc/src/test/java/com/mockrunner/test/jdbc/MockSQLXMLTest.java
index 074832ebc..47059016a 100644
--- a/mockrunner-jdbc/src/test/java/com/mockrunner/test/jdbc/MockSQLXMLTest.java
+++ b/mockrunner-jdbc/src/test/java/com/mockrunner/test/jdbc/MockSQLXMLTest.java
@@ -24,11 +24,11 @@
import junit.framework.TestCase;
-import org.jdom.Document;
-import org.jdom.input.DOMBuilder;
-import org.jdom.input.SAXBuilder;
-import org.jdom.output.Format;
-import org.jdom.output.XMLOutputter;
+import org.jdom2.Document;
+import org.jdom2.input.DOMBuilder;
+import org.jdom2.input.SAXBuilder;
+import org.jdom2.output.Format;
+import org.jdom2.output.XMLOutputter;
import org.xml.sax.ContentHandler;
import org.xml.sax.helpers.AttributesImpl;
diff --git a/mockrunner-jms-spring/pom.xml b/mockrunner-jms-spring/pom.xml
index 3cb9a0c18..5566d6238 100644
--- a/mockrunner-jms-spring/pom.xml
+++ b/mockrunner-jms-spring/pom.xml
@@ -6,7 +6,6 @@
com.mockrunner
mockrunner
2.0.0-SNAPSHOT
- ..
mockrunner-jms-spring
@@ -51,8 +50,8 @@
true
- org.apache.tomcat
- servlet-api
+ javax.servlet
+ javax.servlet-api
true
@@ -137,7 +136,7 @@
-
+
release-module-exclusives
diff --git a/mockrunner-jms/pom.xml b/mockrunner-jms/pom.xml
index c594db51b..26a25b003 100644
--- a/mockrunner-jms/pom.xml
+++ b/mockrunner-jms/pom.xml
@@ -5,8 +5,7 @@
com.mockrunner
mockrunner
- 2.0.7-SNAPSHOT
- ..
+ 2.0.8-SNAPSHOT
mockrunner-jms
@@ -30,8 +29,8 @@
true
- org.apache.tomcat
- servlet-api
+ javax.servlet
+ javax.servlet-api
true
@@ -80,7 +79,7 @@
-
+
release-module-exclusives
diff --git a/mockrunner-servlet/pom.xml b/mockrunner-servlet/pom.xml
index 5163d2cc8..5cbfee7e2 100644
--- a/mockrunner-servlet/pom.xml
+++ b/mockrunner-servlet/pom.xml
@@ -1,138 +1,152 @@
- 4.0.0
-
- com.mockrunner
- mockrunner
- 2.0.7-SNAPSHOT
- ..
-
+ 4.0.0
+
+ com.mockrunner
+ mockrunner
+ 2.0.8-SNAPSHOT
+
- mockrunner-servlet
- MockRunner-Servlet
- Mock classes for servlets
+ mockrunner-servlet
+ MockRunner-Servlet
+ Mock classes for servlets
-
-
- junit
- junit
- provided
-
-
- com.mockrunner
- mockrunner-core
-
-
- com.mockrunner
- mockrunner-core
- xml
- features
-
-
- commons-logging
- commons-logging
-
-
- org.apache.tomcat
- servlet-api
-
-
- org.apache.tomcat
- jasper
-
-
-
-
-
- org.apache.felix
- maven-bundle-plugin
-
-
-
- com.mockrunner.base,
- com.mockrunner.example.servlet,
- com.mockrunner.mock.web,
- com.mockrunner.servlet
- Export-Package>
-
-
-
-
- org.apache.karaf.tooling
- karaf-maven-plugin
-
-
-
- org.apache.maven.plugins
- maven-source-plugin
-
-
- attach-sources
- verify
-
- jar
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-javadoc-plugin
-
-
- attach-javadoc
- verify
-
- jar
-
-
-
-
- ${javadoc-executable-path}
- ${project.build.sourceEncoding}
- ${project.build.sourceEncoding}
- ${project.build.sourceEncoding}
- none
- -Xdoclint:none
-
-
-
-
+
+
+ junit
+ junit
+ test
+
+
+ org.junit.jupiter
+ junit-jupiter-api
+ test
+
+
+ org.assertj
+ assertj-core
+ test
+
+
+ com.mockrunner
+ mockrunner-core
+ test
+
+
+ com.mockrunner
+ mockrunner-core
+
+
+ com.mockrunner
+ mockrunner-core
+ xml
+ features
+
+
+ commons-logging
+ commons-logging
+
+
+ javax.servlet
+ javax.servlet-api
+
+
+ org.apache.tomcat
+ jasper
+
+
+
+
+
+ org.apache.felix
+ maven-bundle-plugin
+
+
+
+ com.mockrunner.base,
+ com.mockrunner.example.servlet,
+ com.mockrunner.mock.web,
+ com.mockrunner.servlet
+
+
+
+
+
+ org.apache.karaf.tooling
+ karaf-maven-plugin
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+
+
+ attach-sources
+ verify
+
+ jar
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+
+
+ attach-javadoc
+ verify
+
+ jar
+
+
+
+
+ ${javadoc-executable-path}
+ ${project.build.sourceEncoding}
+ ${project.build.sourceEncoding}
+ ${project.build.sourceEncoding}
+ none
+ -Xdoclint:none
+
+
+
+
-
-
- release-module-exclusives
-
-
-
- performRelease
- true
-
-
-
-
-
- com.github.github
- site-maven-plugin
-
- ${project.artifactId}
- Servlet Site
-
-
-
- github-site
-
- site
-
- site
-
-
-
-
-
-
-
+
+
+ release-module-exclusives
+
+
+
+ performRelease
+ true
+
+
+
+
+
+ com.github.github
+ site-maven-plugin
+
+ ${project.artifactId}
+ Servlet Site
+
+
+
+ github-site
+
+ site
+
+ site
+
+
+
+
+
+
+
diff --git a/mockrunner-servlet/src/main/java/com/mockrunner/base/BasicHTMLOutputTestCase.java b/mockrunner-servlet/src/main/java/com/mockrunner/base/BasicHTMLOutputTestCase.java
index 16fd09b43..7859ffc09 100644
--- a/mockrunner-servlet/src/main/java/com/mockrunner/base/BasicHTMLOutputTestCase.java
+++ b/mockrunner-servlet/src/main/java/com/mockrunner/base/BasicHTMLOutputTestCase.java
@@ -56,7 +56,7 @@ protected org.w3c.dom.Document getOutputAsW3CDocument()
/**
* Delegates to {@link HTMLOutputModule#getOutputAsJDOMDocument}
*/
- protected org.jdom.Document getOutputAsJDOMDocument()
+ protected org.jdom2.Document getOutputAsJDOMDocument()
{
return getHTMLOutputModule().getOutputAsJDOMDocument();
}
diff --git a/mockrunner-servlet/src/main/java/com/mockrunner/base/HTMLOutputModule.java b/mockrunner-servlet/src/main/java/com/mockrunner/base/HTMLOutputModule.java
index f6d0777da..269590782 100644
--- a/mockrunner-servlet/src/main/java/com/mockrunner/base/HTMLOutputModule.java
+++ b/mockrunner-servlet/src/main/java/com/mockrunner/base/HTMLOutputModule.java
@@ -66,10 +66,10 @@ public org.w3c.dom.Document getOutputAsW3CDocument()
* to parse the string output yourself. Please note that
* HTML parsing is not very fast and may slow down
* your test suite.
- * @return the output as org.jdom.Document
+ * @return the output as org.jdom2.Document
* @throws RuntimeException if a parsing error occurs
*/
- public org.jdom.Document getOutputAsJDOMDocument()
+ public org.jdom2.Document getOutputAsJDOMDocument()
{
return XmlUtil.createJDOMDocument(getOutputAsW3CDocument());
}
diff --git a/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockAsyncContext.java b/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockAsyncContext.java
new file mode 100644
index 000000000..de0ce4f71
--- /dev/null
+++ b/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockAsyncContext.java
@@ -0,0 +1,102 @@
+package com.mockrunner.mock.web;
+
+import javax.servlet.AsyncContext;
+import javax.servlet.AsyncListener;
+import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+
+public class MockAsyncContext implements AsyncContext {
+
+ private ServletRequest request;
+ private ServletResponse response;
+ private boolean hasOriginalRequestAndResponse;
+ private long timeout;
+
+ @Override
+ public ServletRequest getRequest() {
+ return request;
+ }
+
+ public MockAsyncContext setRequest(ServletRequest request) {
+ this.request = request;
+ return this;
+ }
+
+ @Override
+ public ServletResponse getResponse() {
+ return response;
+ }
+
+ public MockAsyncContext setResponse(ServletResponse response) {
+ this.response = response;
+ return this;
+ }
+
+ @Override
+ public boolean hasOriginalRequestAndResponse() {
+ return hasOriginalRequestAndResponse;
+ }
+
+ public MockAsyncContext setHasOriginalRequestAndResponse(boolean hasOriginalRequestAndResponse) {
+ this.hasOriginalRequestAndResponse = hasOriginalRequestAndResponse;
+ return this;
+ }
+
+ @Override
+ public void dispatch() {
+ // No-op
+ }
+
+ @Override
+ public void dispatch(String path) {
+ // No-op
+ }
+
+ @Override
+ public void dispatch(ServletContext context, String path) {
+ // No-op
+ }
+
+ @Override
+ public void complete() {
+ // No-op
+ }
+
+ @Override
+ public void start(Runnable run) {
+ // No-op
+ }
+
+ @Override
+ public void addListener(AsyncListener listener) {
+ // No-op
+ }
+
+ @Override
+ public void addListener(AsyncListener listener, ServletRequest servletRequest, ServletResponse servletResponse) {
+ // No-op
+ }
+
+ @Override
+ public T createListener(Class clazz) throws ServletException {
+ return (T) new MockAsyncListener();
+ }
+
+ @Override
+ public void setTimeout(long timeout) {
+ this.timeout = timeout;
+ }
+
+ public MockAsyncContext setTimeoutFluent(long timeout) {
+ this.timeout = timeout;
+ return this;
+ }
+
+ @Override
+ public long getTimeout() {
+ return timeout;
+ }
+
+}
diff --git a/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockAsyncListener.java b/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockAsyncListener.java
new file mode 100644
index 000000000..fc3e2b056
--- /dev/null
+++ b/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockAsyncListener.java
@@ -0,0 +1,31 @@
+package com.mockrunner.mock.web;
+
+import java.io.IOException;
+
+import javax.servlet.AsyncEvent;
+import javax.servlet.AsyncListener;
+
+public class MockAsyncListener implements AsyncListener {
+
+ @Override
+ public void onComplete(AsyncEvent event) throws IOException {
+ // No-op
+ }
+
+ @Override
+ public void onTimeout(AsyncEvent event) throws IOException {
+ // No-op
+ }
+
+ @Override
+ public void onError(AsyncEvent event) throws IOException {
+ // No-op
+
+ }
+
+ @Override
+ public void onStartAsync(AsyncEvent event) throws IOException {
+ // No-op
+ }
+
+}
diff --git a/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockDynamic.java b/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockDynamic.java
new file mode 100644
index 000000000..319baa725
--- /dev/null
+++ b/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockDynamic.java
@@ -0,0 +1,101 @@
+package com.mockrunner.mock.web;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.MultipartConfigElement;
+import javax.servlet.ServletRegistration.Dynamic;
+import javax.servlet.ServletSecurityElement;
+
+public class MockDynamic implements Dynamic {
+ HashSet mappings = new HashSet<>();
+ private String runAsRole;
+ private String name;
+ private Map initParameters = new HashMap<>();
+
+ @Override
+ public Set addMapping(String... urlPatterns) {
+ for (String pattern : urlPatterns) {
+ mappings.add(pattern);
+ }
+
+ return Collections.emptySet();
+ }
+
+ @Override
+ public Collection getMappings() {
+ return mappings;
+ }
+
+ @Override
+ public String getRunAsRole() {
+ return runAsRole;
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ public MockDynamic setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ @Override
+ public String getClassName() {
+ return null;
+ }
+
+ @Override
+ public boolean setInitParameter(String name, String value) {
+ initParameters.put(name, value);
+ return true;
+ }
+
+ @Override
+ public String getInitParameter(String name) {
+ return initParameters.get(name);
+ }
+
+ @Override
+ public Set setInitParameters(Map initParameters) {
+ this.initParameters.putAll(initParameters);
+ return Collections.emptySet();
+ }
+
+ @Override
+ public Map getInitParameters() {
+ return initParameters;
+ }
+
+ @Override
+ public void setAsyncSupported(boolean isAsyncSupported) {
+ // No-op
+ }
+
+ @Override
+ public void setLoadOnStartup(int loadOnStartup) {
+ // No-op
+ }
+
+ @Override
+ public Set setServletSecurity(ServletSecurityElement constraint) {
+ return Collections.emptySet();
+ }
+
+ @Override
+ public void setMultipartConfig(MultipartConfigElement multipartConfig) {
+ // No-op
+ }
+
+ @Override
+ public void setRunAsRole(String roleName) {
+ runAsRole = roleName;
+ }
+
+}
diff --git a/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockFilterRegistrationDynamic.java b/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockFilterRegistrationDynamic.java
new file mode 100644
index 000000000..1d5f19839
--- /dev/null
+++ b/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockFilterRegistrationDynamic.java
@@ -0,0 +1,86 @@
+package com.mockrunner.mock.web;
+
+import java.util.Collection;
+import java.util.Collections;
+import java.util.EnumSet;
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Set;
+
+import javax.servlet.DispatcherType;
+import javax.servlet.FilterRegistration.Dynamic;
+
+public class MockFilterRegistrationDynamic implements Dynamic {
+
+ private String name;
+ private String className;
+ private Map initParameters = new HashMap<>();
+
+ @Override
+ public void addMappingForServletNames(EnumSet dispatcherTypes, boolean isMatchAfter, String... servletNames) {
+ // No-op
+ }
+
+ @Override
+ public Collection getServletNameMappings() {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public void addMappingForUrlPatterns(EnumSet dispatcherTypes, boolean isMatchAfter, String... urlPatterns) {
+ // No-op
+ }
+
+ @Override
+ public Collection getUrlPatternMappings() {
+ return Collections.emptyList();
+ }
+
+ @Override
+ public String getName() {
+ return name;
+ }
+
+ public MockFilterRegistrationDynamic setName(String name) {
+ this.name = name;
+ return this;
+ }
+
+ @Override
+ public String getClassName() {
+ return className;
+ }
+
+ public MockFilterRegistrationDynamic setClassName(String className) {
+ this.className = className;
+ return this;
+ }
+
+ @Override
+ public boolean setInitParameter(String name, String value) {
+ initParameters.put(name, value);
+ return true;
+ }
+
+ @Override
+ public String getInitParameter(String name) {
+ return initParameters.get(name);
+ }
+
+ @Override
+ public Set setInitParameters(Map initParameters) {
+ this.initParameters.putAll(initParameters);
+ return Collections.emptySet();
+ }
+
+ @Override
+ public Map getInitParameters() {
+ return initParameters;
+ }
+
+ @Override
+ public void setAsyncSupported(boolean isAsyncSupported) {
+ // No-op
+ }
+
+}
diff --git a/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockHttpServletRequest.java b/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockHttpServletRequest.java
index 1ea37f853..52a4a7c7c 100644
--- a/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockHttpServletRequest.java
+++ b/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockHttpServletRequest.java
@@ -11,6 +11,7 @@
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Collections;
import java.util.Date;
import java.util.Enumeration;
@@ -18,16 +19,25 @@
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.UUID;
import java.util.Vector;
+import javax.servlet.AsyncContext;
+import javax.servlet.DispatcherType;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
+import javax.servlet.ServletException;
import javax.servlet.ServletInputStream;
+import javax.servlet.ServletRequest;
import javax.servlet.ServletRequestAttributeEvent;
import javax.servlet.ServletRequestAttributeListener;
+import javax.servlet.ServletResponse;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
+import javax.servlet.http.HttpUpgradeHandler;
+import javax.servlet.http.Part;
import com.mockrunner.base.NestedApplicationException;
import com.mockrunner.util.common.CaseAwareMap;
@@ -64,6 +74,7 @@ public class MockHttpServletRequest implements HttpServletRequest
private Map roles;
private String characterEncoding;
private int contentLength;
+ private long contentLengthLong;
private String contentType;
private List cookies;
private MockServletInputStream bodyContent;
@@ -74,6 +85,10 @@ public class MockHttpServletRequest implements HttpServletRequest
private boolean sessionCreated;
private List attributeListener;
private boolean isAsyncSupported;
+ private AsyncContext asyncContext;
+ private DispatcherType dispatcherType;
+ private boolean authenticated;
+ private ArrayList parts = new ArrayList<>();
public MockHttpServletRequest()
{
@@ -166,6 +181,7 @@ public void resetAll()
remoteAddr = "127.0.0.1";
roles = new HashMap();
contentLength = -1;
+ contentLengthLong = -1L;
cookies = null;
localAddr = "127.0.0.1";
localName = "localhost";
@@ -672,6 +688,16 @@ public MockHttpServletRequest setContentLength(int contentLength)
return this;
}
+ @Override
+ public long getContentLengthLong() {
+ return contentLengthLong;
+ }
+
+ public MockHttpServletRequest setContentLengthLong(long contentLength) {
+ contentLengthLong = contentLength;
+ return this;
+ }
+
public String getContentType()
{
return contentType;
@@ -815,6 +841,12 @@ public MockHttpServletRequest setLocalName(String localName)
return this;
}
+ public ServletContext getServletContext()
+ {
+ if(null == session) return new MockServletContext();
+ return session.getServletContext();
+ }
+
public int getLocalPort()
{
return localPort;
@@ -848,6 +880,94 @@ public MockHttpServletRequest setAsyncSupported(boolean isAsyncSupported)
return this;
}
+ @Override
+ public AsyncContext startAsync() throws IllegalStateException {
+ asyncContext = asyncContext == null ? new MockAsyncContext() : asyncContext;
+ return asyncContext;
+ }
+
+ @Override
+ public AsyncContext startAsync(ServletRequest servletRequest, ServletResponse servletResponse) throws IllegalStateException {
+ asyncContext = asyncContext == null ? new MockAsyncContext().setRequest(servletRequest).setRequest(servletRequest) : asyncContext;
+ return asyncContext;
+ }
+
+ @Override
+ public boolean isAsyncStarted() {
+ return asyncContext != null;
+ }
+
+ @Override
+ public AsyncContext getAsyncContext() {
+ return asyncContext;
+ }
+
+ public MockHttpServletRequest setAsyncContext(AsyncContext asyncContext) {
+ this.asyncContext = asyncContext;
+ return this;
+ }
+
+ @Override
+ public DispatcherType getDispatcherType() {
+ return dispatcherType;
+ }
+
+ public MockHttpServletRequest getDispatcherType(DispatcherType dispatcherType) {
+ this.dispatcherType = dispatcherType;
+ return this;
+ }
+
+ @Override
+ public String changeSessionId() {
+ session = session == null ? new MockHttpSession() : session;
+ if (session instanceof MockHttpSession) {
+ ((MockHttpSession) session).setSessionId(UUID.randomUUID().toString());
+ }
+
+ return session.getId();
+ }
+
+ @Override
+ public boolean authenticate(HttpServletResponse response) throws IOException, ServletException {
+ return authenticated;
+ }
+
+ public MockHttpServletRequest setAuthenticated(boolean authenticated) {
+ this.authenticated = authenticated;
+ return this;
+ }
+
+ @Override
+ public void login(String username, String password) throws ServletException {
+ // No-op
+ }
+
+ @Override
+ public void logout() throws ServletException {
+ // No-op
+ }
+
+ @Override
+ public Collection getParts() throws IOException, ServletException {
+ return parts ;
+ }
+
+ public MockHttpServletRequest setParts(Collection newParts) {
+ this.parts.clear();
+ this.parts.addAll(newParts);
+ return this;
+ }
+
+ @Override
+ public Part getPart(String name) throws IOException, ServletException {
+ return parts.stream().filter(p -> p.getName() == name).findFirst().orElse(null);
+ }
+
+ @Override
+ public T upgrade(Class handlerClass) throws IOException, ServletException {
+ return (T) new MockHttpUpgradeHandler();
+ }
+
private void handleAttributeListenerCalls(String key, Object value, Object oldValue)
{
if(null != oldValue)
@@ -897,10 +1017,4 @@ private void callAttributeListenersRemovedMethod(String key, Object value)
((ServletRequestAttributeListener) anAttributeListener).attributeRemoved(event);
}
}
-
- private ServletContext getServletContext()
- {
- if(null == session) return new MockServletContext();
- return session.getServletContext();
- }
}
diff --git a/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockHttpServletResponse.java b/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockHttpServletResponse.java
index ced9ba08d..25684cbf0 100644
--- a/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockHttpServletResponse.java
+++ b/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockHttpServletResponse.java
@@ -176,6 +176,12 @@ public void setIntHeader(String key, int value)
setHeader(key, stringValue);
}
+ public void setLongHeader(String key, long value)
+ {
+ String stringValue = Long.toString(value);
+ setHeader(key, stringValue);
+ }
+
public void setStatus(int code, String message)
{
statusCode = code;
@@ -258,7 +264,12 @@ public void setContentLength(int length)
{
setIntHeader("Content-Length", length);
}
-
+
+ @Override
+ public void setContentLengthLong(long len) {
+ setLongHeader("Content-Length", len);
+ }
+
public String getContentType()
{
return getHeader("Content-Type");
diff --git a/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockHttpSession.java b/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockHttpSession.java
index 336ffaed2..97e614503 100644
--- a/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockHttpSession.java
+++ b/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockHttpSession.java
@@ -102,6 +102,10 @@ public synchronized String getId()
return sessionId;
}
+ public void setSessionId(String sessionId) {
+ this.sessionId = sessionId;
+ }
+
public synchronized Object getValue(String key)
{
if (!isValid) throw new IllegalStateException("session invalid");
diff --git a/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockHttpUpgradeHandler.java b/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockHttpUpgradeHandler.java
new file mode 100644
index 000000000..d499804e2
--- /dev/null
+++ b/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockHttpUpgradeHandler.java
@@ -0,0 +1,18 @@
+package com.mockrunner.mock.web;
+
+import javax.servlet.http.HttpUpgradeHandler;
+import javax.servlet.http.WebConnection;
+
+public class MockHttpUpgradeHandler implements HttpUpgradeHandler {
+
+ @Override
+ public void init(WebConnection wc) {
+ // No-op
+ }
+
+ @Override
+ public void destroy() {
+ // No-op
+ }
+
+}
diff --git a/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockServletContext.java b/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockServletContext.java
index 6d0c67cae..f7f4cf354 100644
--- a/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockServletContext.java
+++ b/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockServletContext.java
@@ -8,6 +8,7 @@
import java.util.Collection;
import java.util.Collections;
import java.util.Enumeration;
+import java.util.EventListener;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -15,12 +16,19 @@
import java.util.Set;
import java.util.Vector;
+import javax.servlet.Filter;
+import javax.servlet.FilterRegistration;
import javax.servlet.RequestDispatcher;
import javax.servlet.Servlet;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextAttributeEvent;
import javax.servlet.ServletContextAttributeListener;
import javax.servlet.ServletException;
+import javax.servlet.ServletRegistration;
+import javax.servlet.ServletRegistration.Dynamic;
+import javax.servlet.SessionCookieConfig;
+import javax.servlet.SessionTrackingMode;
+import javax.servlet.descriptor.JspConfigDescriptor;
import com.mockrunner.util.common.StreamUtil;
@@ -46,6 +54,11 @@ public class MockServletContext implements ServletContext
private int minorVersion;
private int effectiveMajorVersion;
private int effectiveMinorVersion;
+ private Set sessionTrackingModes;
+ private String virtualServerName;
+ private int sessonTimeOut;
+ private String requestCharacterSetEncoding;
+ private String responseCharacterSetEncoding;
public MockServletContext()
{
@@ -455,4 +468,176 @@ private synchronized void callAttributeListenersRemovedMethod(String key, Object
((ServletContextAttributeListener) anAttributeListener).attributeRemoved(event);
}
}
+
+ @Override
+ public Dynamic addServlet(String servletName, String className) {
+ return new MockDynamic();
+ }
+
+ @Override
+ public Dynamic addServlet(String servletName, Servlet servlet) {
+ return new MockDynamic();
+ }
+
+ @Override
+ public Dynamic addServlet(String servletName, Class extends Servlet> servletClass) {
+ return new MockDynamic();
+ }
+
+ @Override
+ public Dynamic addJspFile(String servletName, String jspFile) {
+ return new MockDynamic();
+ }
+
+ @Override
+ public T createServlet(Class clazz) throws ServletException {
+ try {
+ return clazz.newInstance();
+ } catch (Exception e) {
+ throw new ServletException(e);
+ }
+ }
+
+ @Override
+ public ServletRegistration getServletRegistration(String servletName) {
+ return null;
+ }
+
+ @Override
+ public Map getServletRegistrations() {
+ return Collections.emptyMap();
+ }
+
+ @Override
+ public javax.servlet.FilterRegistration.Dynamic addFilter(String filterName, String className) {
+ return new MockFilterRegistrationDynamic().setName(filterName).setClassName(className);
+ }
+
+ @Override
+ public javax.servlet.FilterRegistration.Dynamic addFilter(String filterName, Filter filter) {
+ return new MockFilterRegistrationDynamic().setName(filterName).setClassName(filter.getClass().getCanonicalName());
+ }
+
+ @Override
+ public javax.servlet.FilterRegistration.Dynamic addFilter(String filterName, Class extends Filter> filterClass) {
+ return new MockFilterRegistrationDynamic().setName(filterName).setClassName(filterClass.getCanonicalName());
+ }
+
+ @Override
+ public T createFilter(Class clazz) throws ServletException {
+ try {
+ return clazz.newInstance();
+ } catch (Exception e) {
+ throw new ServletException(e);
+ }
+ }
+
+ @Override
+ public FilterRegistration getFilterRegistration(String filterName) {
+ return null;
+ }
+
+ @Override
+ public Map getFilterRegistrations() {
+ return Collections.emptyMap();
+ }
+
+ @Override
+ public SessionCookieConfig getSessionCookieConfig() {
+ return new MockSessionCookieConfig();
+ }
+
+ @Override
+ public void setSessionTrackingModes(Set sessionTrackingModes) {
+ this.sessionTrackingModes = sessionTrackingModes;
+ }
+
+ @Override
+ public Set getDefaultSessionTrackingModes() {
+ return sessionTrackingModes;
+ }
+
+ @Override
+ public Set getEffectiveSessionTrackingModes() {
+ return sessionTrackingModes;
+ }
+
+ @Override
+ public void addListener(String className) {
+ // No-op
+ }
+
+ @Override
+ public void addListener(T t) {
+ // No-op
+ }
+
+ @Override
+ public void addListener(Class extends EventListener> listenerClass) {
+ // No-op
+ }
+
+ @Override
+ public T createListener(Class clazz) throws ServletException {
+ try {
+ return clazz.newInstance();
+ } catch (Exception e) {
+ throw new ServletException(e);
+ }
+ }
+
+ @Override
+ public JspConfigDescriptor getJspConfigDescriptor() {
+ return null;
+ }
+
+ @Override
+ public ClassLoader getClassLoader() {
+ return getClassLoader();
+ }
+
+ @Override
+ public void declareRoles(String... roleNames) {
+ // No-op
+ }
+
+ @Override
+ public String getVirtualServerName() {
+ return virtualServerName;
+ }
+
+ public MockServletContext setVirtualServerName(String virtualServerName) {
+ this.virtualServerName = virtualServerName;
+ return this;
+ }
+
+ @Override
+ public int getSessionTimeout() {
+ return sessonTimeOut;
+ }
+
+ @Override
+ public void setSessionTimeout(int sessionTimeout) {
+ this.sessonTimeOut = sessionTimeout;
+ }
+
+ @Override
+ public String getRequestCharacterEncoding() {
+ return requestCharacterSetEncoding;
+ }
+
+ @Override
+ public void setRequestCharacterEncoding(String encoding) {
+ this.requestCharacterSetEncoding = encoding;
+ }
+
+ @Override
+ public String getResponseCharacterEncoding() {
+ return responseCharacterSetEncoding;
+ }
+
+ @Override
+ public void setResponseCharacterEncoding(String encoding) {
+ this.responseCharacterSetEncoding = encoding;
+ }
}
diff --git a/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockServletInputStream.java b/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockServletInputStream.java
index cd65cfc0e..e174ef2ee 100644
--- a/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockServletInputStream.java
+++ b/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockServletInputStream.java
@@ -3,6 +3,7 @@
import java.io.ByteArrayInputStream;
import java.io.IOException;
+import javax.servlet.ReadListener;
import javax.servlet.ServletInputStream;
/**
@@ -11,14 +12,29 @@
public class MockServletInputStream extends ServletInputStream
{
private ByteArrayInputStream stream;
-
+
public MockServletInputStream(byte[] data)
{
stream = new ByteArrayInputStream(data);
}
-
+
public int read() throws IOException
{
return stream.read();
}
+
+ @Override
+ public boolean isFinished() {
+ return stream.available() == 0;
+ }
+
+ @Override
+ public boolean isReady() {
+ return stream.available() > 0;
+ }
+
+ @Override
+ public void setReadListener(ReadListener readListener) {
+ // No-op
+ }
}
diff --git a/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockServletOutputStream.java b/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockServletOutputStream.java
index 80c606f26..99055a402 100644
--- a/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockServletOutputStream.java
+++ b/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockServletOutputStream.java
@@ -4,6 +4,7 @@
import java.io.IOException;
import javax.servlet.ServletOutputStream;
+import javax.servlet.WriteListener;
import com.mockrunner.base.NestedApplicationException;
@@ -14,56 +15,66 @@ public class MockServletOutputStream extends ServletOutputStream
{
private ByteArrayOutputStream buffer;
private String encoding;
-
+
public MockServletOutputStream()
{
this("ISO-8859-1");
}
-
+
public MockServletOutputStream(String encoding)
{
buffer = new ByteArrayOutputStream();
this.encoding = encoding;
}
-
+
public void setEncoding(String encoding)
{
this.encoding = encoding;
}
-
+
public void write(int value) throws IOException
{
buffer.write(value);
}
-
+
public String getContent()
{
try
{
buffer.flush();
return buffer.toString(encoding);
- }
+ }
catch(IOException exc)
{
throw new NestedApplicationException(exc);
}
}
-
+
public byte[] getBinaryContent()
{
try
{
buffer.flush();
return buffer.toByteArray();
- }
+ }
catch(IOException exc)
{
throw new NestedApplicationException(exc);
}
}
-
+
public void clearContent()
{
buffer = new ByteArrayOutputStream();
}
+
+ @Override
+ public boolean isReady() {
+ return true;
+ }
+
+ @Override
+ public void setWriteListener(WriteListener writeListener) {
+ // No-op
+ }
}
diff --git a/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockSessionCookieConfig.java b/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockSessionCookieConfig.java
index d2de19998..cb0203eaa 100644
--- a/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockSessionCookieConfig.java
+++ b/mockrunner-servlet/src/main/java/com/mockrunner/mock/web/MockSessionCookieConfig.java
@@ -1,10 +1,11 @@
package com.mockrunner.mock.web;
+import javax.servlet.SessionCookieConfig;
/**
* Mock implementation of SessionCookieConfig.
*/
-public class MockSessionCookieConfig //implements SessionCookieConfig
+public class MockSessionCookieConfig implements SessionCookieConfig
{
private String comment;
private String domain;
diff --git a/mockrunner-servlet/src/main/java/com/mockrunner/servlet/BasicServletTestCaseAdapter.java b/mockrunner-servlet/src/main/java/com/mockrunner/servlet/BasicServletTestCaseAdapter.java
index ea3bf4e5b..f6df475b9 100644
--- a/mockrunner-servlet/src/main/java/com/mockrunner/servlet/BasicServletTestCaseAdapter.java
+++ b/mockrunner-servlet/src/main/java/com/mockrunner/servlet/BasicServletTestCaseAdapter.java
@@ -5,9 +5,6 @@
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
-import org.junit.After;
-import org.junit.Before;
-
import com.mockrunner.base.BasicHTMLOutputTestCase;
import com.mockrunner.base.HTMLOutputModule;
import com.mockrunner.mock.web.WebMockObjectFactory;
@@ -38,7 +35,6 @@ public BasicServletTestCaseAdapter(String name)
super(name);
}
- @After
public void tearDown() throws Exception
{
servletTestModule = null;
@@ -49,7 +45,6 @@ public void tearDown() throws Exception
* Creates the {@link com.mockrunner.servlet.ServletTestModule}. If you
* overwrite this method, you must call super.setUp().
*/
- @Before
public void setUp() throws Exception
{
servletTestModule = createServletTestModule(getWebMockObjectFactory());
diff --git a/mockrunner-servlet/src/main/java/com/mockrunner/example/servlet/ImageButtonFilterTest.java b/mockrunner-servlet/src/test/java/com/mockrunner/example/servlet/ImageButtonFilterTest.java
similarity index 84%
rename from mockrunner-servlet/src/main/java/com/mockrunner/example/servlet/ImageButtonFilterTest.java
rename to mockrunner-servlet/src/test/java/com/mockrunner/example/servlet/ImageButtonFilterTest.java
index 46e03043a..9138a0966 100644
--- a/mockrunner-servlet/src/main/java/com/mockrunner/example/servlet/ImageButtonFilterTest.java
+++ b/mockrunner-servlet/src/test/java/com/mockrunner/example/servlet/ImageButtonFilterTest.java
@@ -5,26 +5,24 @@
import javax.servlet.http.HttpServletRequest;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
import com.mockrunner.servlet.BasicServletTestCaseAdapter;
/**
* Example test for the {@link ImageButtonFilter}.
* Demonstrates the usage of the filter test features in
- * {@link com.mockrunner.servlet.ServletTestModule}
+ * {@link com.mockrunner.servlet.ServletTestModule}
* and {@link com.mockrunner.servlet.BasicServletTestCaseAdapter}.
*/
public class ImageButtonFilterTest extends BasicServletTestCaseAdapter
{
- private ImageButtonFilter filter;
-
- @Before
+ @BeforeEach
public void setUp() throws Exception
{
super.setUp();
- filter = createFilter(ImageButtonFilter.class);
+ createFilter(ImageButtonFilter.class);
}
@Test
diff --git a/mockrunner-servlet/src/main/java/com/mockrunner/example/servlet/LogoutServletTest.java b/mockrunner-servlet/src/test/java/com/mockrunner/example/servlet/LogoutServletTest.java
similarity index 92%
rename from mockrunner-servlet/src/main/java/com/mockrunner/example/servlet/LogoutServletTest.java
rename to mockrunner-servlet/src/test/java/com/mockrunner/example/servlet/LogoutServletTest.java
index f567422d1..7326721d3 100644
--- a/mockrunner-servlet/src/main/java/com/mockrunner/example/servlet/LogoutServletTest.java
+++ b/mockrunner-servlet/src/test/java/com/mockrunner/example/servlet/LogoutServletTest.java
@@ -7,35 +7,35 @@
import javax.servlet.http.HttpServletRequest;
-import org.junit.Before;
-import org.junit.Test;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
import com.mockrunner.servlet.BasicServletTestCaseAdapter;
/**
* Example test for {@link LogoutServlet}.
- * Demonstrates the usage of {@link com.mockrunner.servlet.ServletTestModule}
+ * Demonstrates the usage of {@link com.mockrunner.servlet.ServletTestModule}
* and {@link com.mockrunner.servlet.BasicServletTestCaseAdapter}
* with and without a filter.
*/
public class LogoutServletTest extends BasicServletTestCaseAdapter
{
- @Before
+ @BeforeEach
public void setUp() throws Exception
{
super.setUp();
createServlet(LogoutServlet.class);
}
-
- @Test
+
+ @Test
public void testDoLogout() throws Exception
{
addRequestParameter("logout", "true");
doPost();
assertFalse(getWebMockObjectFactory().getMockSession().isValid());
}
-
- @Test
+
+ @Test
public void testDoLogoutWithFilteredImageButton() throws Exception
{
addRequestParameter("logout.x", "11");
diff --git a/mockrunner-servlet/src/main/java/com/mockrunner/example/servlet/RedirectServletTest.java b/mockrunner-servlet/src/test/java/com/mockrunner/example/servlet/RedirectServletTest.java
similarity index 92%
rename from mockrunner-servlet/src/main/java/com/mockrunner/example/servlet/RedirectServletTest.java
rename to mockrunner-servlet/src/test/java/com/mockrunner/example/servlet/RedirectServletTest.java
index 2589ee6dd..1e6b88fc8 100644
--- a/mockrunner-servlet/src/main/java/com/mockrunner/example/servlet/RedirectServletTest.java
+++ b/mockrunner-servlet/src/test/java/com/mockrunner/example/servlet/RedirectServletTest.java
@@ -4,30 +4,30 @@
import java.io.BufferedReader;
-import org.jdom.Element;
-import org.junit.Before;
-import org.junit.Test;
+import org.jdom2.Element;
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
import com.mockrunner.servlet.BasicServletTestCaseAdapter;
/**
* Example test for {@link RedirectServlet}.
- * Demonstrates the usage of {@link com.mockrunner.servlet.ServletTestModule}
+ * Demonstrates the usage of {@link com.mockrunner.servlet.ServletTestModule}
* and {@link com.mockrunner.servlet.BasicServletTestCaseAdapter}.
* Demonstrates the testing of output data as string as well as parsed
* HTML data (testServletOutputAsXML).
- *
+ *
*/
public class RedirectServletTest extends BasicServletTestCaseAdapter
{
- @Before
+ @BeforeEach
public void setUp() throws Exception
{
super.setUp();
createServlet(RedirectServlet.class);
}
-
- @Test
+
+ @Test
public void testServletOutput() throws Exception
{
addRequestParameter("redirecturl", "http://www.mockrunner.com");
@@ -43,8 +43,8 @@ public void testServletOutput() throws Exception
assertEquals("