diff --git a/LICENSE-2.0.txt b/LICENSE-2.0.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/LICENSE-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed 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. diff --git a/httpunit-1.7.pom b/httpunit-1.7.pom new file mode 100644 index 0000000..cd12c22 --- /dev/null +++ b/httpunit-1.7.pom @@ -0,0 +1,76 @@ + + 4.0.0 + httpunit + httpunit + HttpUnit + 1.7 + A Java library for the automatic stimulation and testing of web applications. + http://httpunit.sourceforge.net + + + MIT License + http://httpunit.sourceforge.net/doc/license.html + + + + src + test + + + maven-compiler-plugin + + 1.4 + 1.4 + + + + + + + xerces + xmlParserAPIs + 2.2.1 + true + + + xerces + xercesImpl + 2.6.2 + true + + + nekohtml + nekohtml + 0.9.5 + true + + + rhino + js + 1.6R5 + true + + + javax.servlet + servlet-api + 2.3 + + + jtidy + jtidy + 4aug2000r7-dev + + + junit + junit + 3.8.1 + true + + + javax.mail + mail + 1.4 + test + + + diff --git a/httpunit-1.7.zip b/httpunit-1.7.zip new file mode 100644 index 0000000..3810d19 Binary files /dev/null and b/httpunit-1.7.zip differ diff --git a/httpunit-rhino-1.7.7.patch b/httpunit-rhino-1.7.7.patch new file mode 100644 index 0000000..5e0f21f --- /dev/null +++ b/httpunit-rhino-1.7.7.patch @@ -0,0 +1,126 @@ +From b16bbb656cf2a65d5339f6b06b51f9ffdc11d586 Mon Sep 17 00:00:00 2001 +From: Mikolaj Izdebski +Date: Wed, 23 Sep 2015 08:24:17 +0200 +Subject: [PATCH] Port to Rhino 1.7.7 + +--- + .../meterware/httpunit/javascript/JavaScript.java | 27 +++++++++------------- + 1 file changed, 11 insertions(+), 16 deletions(-) + +diff --git a/src/com/meterware/httpunit/javascript/JavaScript.java b/src/com/meterware/httpunit/javascript/JavaScript.java +index 181186b..6d86612 100644 +--- a/src/com/meterware/httpunit/javascript/JavaScript.java ++++ b/src/com/meterware/httpunit/javascript/JavaScript.java +@@ -55,8 +55,7 @@ public class JavaScript { + * Initiates JavaScript execution for the specified web response. + */ + public static void run( WebResponse response ) throws IllegalAccessException, InstantiationException, +- InvocationTargetException, ClassDefinitionException, NotAFunctionException, +- PropertyException, SAXException, JavaScriptException { ++ InvocationTargetException, SAXException, JavaScriptException { + Context context = Context.enter(); + // suggest bug fix for large java scripts see + // bug report [ 1216567 ] Exception for large javascripts +@@ -75,14 +74,14 @@ public class JavaScript { + /** + * Runs the onload event for the specified web response. + */ +- public static void load( WebResponse response ) throws ClassDefinitionException, InstantiationException, IllegalAccessException, InvocationTargetException, PropertyException, JavaScriptException, SAXException, NotAFunctionException { ++ public static void load( WebResponse response ) throws InstantiationException, IllegalAccessException, InvocationTargetException, JavaScriptException, SAXException { + if (!(response.getScriptableObject().getScriptEngine() instanceof JavaScriptEngine)) run( response ); + response.getScriptableObject().load(); + } + + + private static void initHTMLObjects( Scriptable scope ) throws IllegalAccessException, InstantiationException, +- InvocationTargetException, ClassDefinitionException, PropertyException { ++ InvocationTargetException { + ScriptableObject.defineClass( scope, Window.class ); + ScriptableObject.defineClass( scope, Document.class ); + ScriptableObject.defineClass( scope, Style.class ); +@@ -115,7 +114,7 @@ public class JavaScript { + * @scriptable - the scriptable object to do the initialization for + */ + void initialize( JavaScriptEngine parent, ScriptableDelegate scriptable ) +- throws SAXException, PropertyException, JavaScriptException, NotAFunctionException { ++ throws SAXException, JavaScriptException { + _scriptable = scriptable; + _scriptable.setScriptEngine( this ); + _parent = parent; +@@ -305,7 +304,7 @@ public class JavaScript { + } + + +- public Scriptable jsGet_frames() throws SAXException, PropertyException, JavaScriptException, NotAFunctionException { ++ public Scriptable jsGet_frames() throws SAXException, JavaScriptException { + if (_frames == null) { + WebResponse.Scriptable scriptables[] = getDelegate().getFrames(); + Window[] frames = new Window[ scriptables.length ]; +@@ -350,7 +349,7 @@ public class JavaScript { + * @scriptable - the scriptable object to do the initialization for + */ + void initialize( JavaScriptEngine parent, ScriptableDelegate scriptable ) +- throws JavaScriptException, NotAFunctionException, PropertyException, SAXException { ++ throws JavaScriptException, SAXException { + super.initialize( parent, scriptable ); + + _location = (Location) Context.getCurrentContext().newObject( this, "Location" ); +@@ -401,7 +400,7 @@ public class JavaScript { + + + public Window jsFunction_open( Object url, String name, String features, boolean replace ) +- throws PropertyException, JavaScriptException, NotAFunctionException, IOException, SAXException { ++ throws JavaScriptException, IOException, SAXException { + WebResponse.Scriptable delegate = getDelegate().open( toStringIfNotUndefined( url ), name, features, replace ); + return delegate == null ? null : (Window) toScriptable( delegate ); + } +@@ -771,10 +770,6 @@ public class JavaScript { + static ElementArray newElementArray( Scriptable parent ) { + try { + return (ElementArray) Context.getCurrentContext().newObject( parent, "ElementArray" ); +- } catch (PropertyException e) { +- throw new RhinoException( e ); +- } catch (NotAFunctionException e) { +- throw new RhinoException( e ); + } catch (JavaScriptException e) { + throw new RhinoException( e ); + } +@@ -860,7 +855,7 @@ public class JavaScript { + } + + void initialize( JavaScriptEngine parent, ScriptableDelegate scriptable ) +- throws JavaScriptException, NotAFunctionException, PropertyException, SAXException { ++ throws JavaScriptException, SAXException { + super.initialize( parent, scriptable ); + _document = (Document) parent; + _style = (Style) Context.getCurrentContext().newObject( this, "Style" ); +@@ -912,7 +907,7 @@ public class JavaScript { + } + + +- public Scriptable jsGet_elements() throws PropertyException, NotAFunctionException, JavaScriptException { ++ public Scriptable jsGet_elements() throws JavaScriptException { + if (_controls == null) { + initializeControls(); + } +@@ -935,7 +930,7 @@ public class JavaScript { + } + + +- private void initializeControls() throws PropertyException, NotAFunctionException, JavaScriptException { ++ private void initializeControls() throws JavaScriptException { + ScriptableDelegate scriptables[] = getDelegate().getElementDelegates(); + Control[] controls = new Control[ scriptables.length ]; + for (int i = 0; i < controls.length; i++) { +@@ -1011,7 +1006,7 @@ public class JavaScript { + } + + void initialize( JavaScriptEngine parent, ScriptableDelegate scriptable ) +- throws JavaScriptException, NotAFunctionException, PropertyException, SAXException { ++ throws JavaScriptException, SAXException { + super.initialize( parent, scriptable ); + if (parent instanceof Form) _form = (Form) parent; + } +-- +2.4.3 + diff --git a/httpunit-servlet31.patch b/httpunit-servlet31.patch new file mode 100644 index 0000000..dc319b4 --- /dev/null +++ b/httpunit-servlet31.patch @@ -0,0 +1,474 @@ +diff --git a/src/com/meterware/servletunit/ServletInputStreamImpl.java b/src/com/meterware/servletunit/ServletInputStreamImpl.java +index 33ff39f..628d940 100644 +--- a/src/com/meterware/servletunit/ServletInputStreamImpl.java ++++ b/src/com/meterware/servletunit/ServletInputStreamImpl.java +@@ -22,6 +22,7 @@ package com.meterware.servletunit; + import java.io.IOException; + import java.io.ByteArrayInputStream; + ++import javax.servlet.ReadListener; + import javax.servlet.ServletInputStream; + + +@@ -44,4 +45,15 @@ class ServletInputStreamImpl extends ServletInputStream { + return _baseStream.read(); + } + ++ public boolean isFinished() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ public boolean isReady() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ public void setReadListener(ReadListener arg0) { ++ throw new UnsupportedOperationException("not implemented"); ++ } + } +diff --git a/src/com/meterware/servletunit/ServletUnitHttpRequest.java b/src/com/meterware/servletunit/ServletUnitHttpRequest.java +index c2c331e..1f91ca0 100644 +--- a/src/com/meterware/servletunit/ServletUnitHttpRequest.java ++++ b/src/com/meterware/servletunit/ServletUnitHttpRequest.java +@@ -33,10 +33,18 @@ import java.util.*; + + import javax.servlet.http.HttpServletRequest; + import javax.servlet.http.Cookie; ++import javax.servlet.http.HttpServletResponse; + import javax.servlet.http.HttpSession; ++import javax.servlet.http.HttpUpgradeHandler; ++import javax.servlet.http.Part; ++import javax.servlet.AsyncContext; ++import javax.servlet.DispatcherType; ++import javax.servlet.ServletContext; + import javax.servlet.ServletInputStream; + import javax.servlet.RequestDispatcher; + import javax.servlet.ServletException; ++import javax.servlet.ServletRequest; ++import javax.servlet.ServletResponse; + + + /** +@@ -886,6 +894,79 @@ class ServletUnitHttpRequest implements HttpServletRequest { + } + + } +-} + + ++ public AsyncContext getAsyncContext() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public long getContentLengthLong() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public DispatcherType getDispatcherType() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public ServletContext getServletContext() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public boolean isAsyncStarted() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public boolean isAsyncSupported() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public AsyncContext startAsync() throws IllegalStateException { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public AsyncContext startAsync(ServletRequest arg0, ServletResponse arg1) throws IllegalStateException { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public boolean authenticate(HttpServletResponse arg0) throws IOException, ServletException { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public String changeSessionId() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public Part getPart(String arg0) throws IOException, ServletException { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public Collection getParts() throws IOException, ServletException { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public void login(String arg0, String arg1) throws ServletException { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public void logout() throws ServletException { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public HttpUpgradeHandler upgrade(Class arg0) throws IOException, ServletException { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++} +diff --git a/src/com/meterware/servletunit/ServletUnitHttpResponse.java b/src/com/meterware/servletunit/ServletUnitHttpResponse.java +index bcf7236..7f61598 100644 +--- a/src/com/meterware/servletunit/ServletUnitHttpResponse.java ++++ b/src/com/meterware/servletunit/ServletUnitHttpResponse.java +@@ -26,11 +26,11 @@ import java.io.IOException; + import java.io.OutputStreamWriter; + import java.io.PrintWriter; + import java.io.UnsupportedEncodingException; +- + import java.util.*; + import java.text.SimpleDateFormat; + + import javax.servlet.ServletOutputStream; ++import javax.servlet.WriteListener; + import javax.servlet.http.Cookie; + import javax.servlet.http.HttpServletResponse; + +@@ -463,7 +463,7 @@ class ServletUnitHttpResponse implements HttpServletResponse { + /** + * Returns the status of this response. + **/ +- int getStatus() { ++ public int getStatus() { + return _status; + } + +@@ -602,6 +602,27 @@ class ServletUnitHttpResponse implements HttpServletResponse { + ENCODING_MAP.put("Big5", "zh_TW zh_HK " ); + } + ++ ++ ++ public void setContentLengthLong(long arg0) { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public String getHeader(String arg0) { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public Collection getHeaderNames() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public Collection getHeaders(String arg0) { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ + } + + +@@ -618,4 +639,13 @@ class ServletUnitOutputStream extends ServletOutputStream { + } + + private ByteArrayOutputStream _stream; ++ ++ public boolean isReady() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public void setWriteListener(WriteListener arg0) { ++ throw new UnsupportedOperationException("not implemented"); ++ } + } +diff --git a/src/com/meterware/servletunit/ServletUnitServletContext.java b/src/com/meterware/servletunit/ServletUnitServletContext.java +index 101bfb4..b532b8c 100644 +--- a/src/com/meterware/servletunit/ServletUnitServletContext.java ++++ b/src/com/meterware/servletunit/ServletUnitServletContext.java +@@ -28,12 +28,21 @@ import java.net.MalformedURLException; + import java.net.URL; + import java.net.URLConnection; + import java.util.Enumeration; ++import java.util.EventListener; + import java.util.Hashtable; ++import java.util.Map; + import java.util.Set; + import java.util.Vector; + ++import javax.servlet.Filter; ++import javax.servlet.FilterRegistration; ++import javax.servlet.FilterRegistration.Dynamic; ++import javax.servlet.Servlet; + import javax.servlet.ServletContext; + import javax.servlet.ServletException; ++import javax.servlet.ServletRegistration; ++import javax.servlet.SessionCookieConfig; ++import javax.servlet.descriptor.JspConfigDescriptor; + + + +@@ -116,7 +125,7 @@ public class ServletUnitServletContext implements ServletContext { + try { + File resourceFile = _application.getResourceFile( path ); + // PATCH proposal [ 1592532 ] Invalid ServletUnitServletContext#getResource(String path) +- // by Timo Westkämper ++ // by Timo Westk�mper + // return !resourceFile.exists() ? null : resourceFile.toURL(); + return resourceFile == null ? null : resourceFile.toURL(); + } catch (MalformedURLException e) { +@@ -400,4 +409,140 @@ public class ServletUnitServletContext implements ServletContext { + public void setLogStream(PrintStream logStream) { + this._logStream = logStream; + } ++ ++ ++ public Dynamic addFilter(String arg0, String arg1) { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public Dynamic addFilter(String arg0, Filter arg1) { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public Dynamic addFilter(String arg0, Class arg1) { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public void addListener(String arg0) { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public void addListener(EventListener arg0) { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public void addListener(Class arg0) { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public javax.servlet.ServletRegistration.Dynamic addServlet(String arg0, String arg1) { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public javax.servlet.ServletRegistration.Dynamic addServlet(String arg0, Servlet arg1) { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public javax.servlet.ServletRegistration.Dynamic addServlet(String arg0, ++ Class arg1) { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public Filter createFilter(Class arg0) throws ServletException { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public EventListener createListener(Class arg0) throws ServletException { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public Servlet createServlet(Class arg0) throws ServletException { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public void declareRoles(String[] arg0) { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public ClassLoader getClassLoader() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public Set getDefaultSessionTrackingModes() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public int getEffectiveMajorVersion() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public int getEffectiveMinorVersion() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public Set getEffectiveSessionTrackingModes() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public FilterRegistration getFilterRegistration(String arg0) { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public Map getFilterRegistrations() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public JspConfigDescriptor getJspConfigDescriptor() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public ServletRegistration getServletRegistration(String arg0) { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public Map getServletRegistrations() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public SessionCookieConfig getSessionCookieConfig() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public String getVirtualServerName() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public boolean setInitParameter(String arg0, String arg1) { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ ++ public void setSessionTrackingModes(Set arg0) { ++ throw new UnsupportedOperationException("not implemented"); ++ } + } +diff --git a/test/com/meterware/servletunit/RequestContextTest.java b/test/com/meterware/servletunit/RequestContextTest.java +index ec0f4d4..d96ebab 100644 +--- a/test/com/meterware/servletunit/RequestContextTest.java ++++ b/test/com/meterware/servletunit/RequestContextTest.java +@@ -22,6 +22,7 @@ package com.meterware.servletunit; + import com.meterware.httpunit.HttpUnitTest; + + import java.net.URL; ++import java.util.Collection; + import java.util.Enumeration; + import java.util.Map; + import java.util.Locale; +@@ -32,9 +33,18 @@ import java.io.BufferedReader; + + import javax.servlet.http.HttpServletRequest; + import javax.servlet.http.Cookie; ++import javax.servlet.http.HttpServletResponse; + import javax.servlet.http.HttpSession; ++import javax.servlet.http.HttpUpgradeHandler; ++import javax.servlet.http.Part; ++import javax.servlet.AsyncContext; ++import javax.servlet.DispatcherType; ++import javax.servlet.ServletContext; ++import javax.servlet.ServletException; + import javax.servlet.ServletInputStream; + import javax.servlet.RequestDispatcher; ++import javax.servlet.ServletRequest; ++import javax.servlet.ServletResponse; + + import junit.framework.TestSuite; + +@@ -384,7 +394,65 @@ public class RequestContextTest extends HttpUnitTest { + public int getLocalPort() { + return 0; //To change body of implemented methods use File | Settings | File Templates. + } +- } + ++ public AsyncContext getAsyncContext() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ public long getContentLengthLong() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ public DispatcherType getDispatcherType() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ public ServletContext getServletContext() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ public boolean isAsyncStarted() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ public boolean isAsyncSupported() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ public AsyncContext startAsync() throws IllegalStateException { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ public AsyncContext startAsync(ServletRequest arg0, ServletResponse arg1) throws IllegalStateException { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ public boolean authenticate(HttpServletResponse arg0) throws IOException, ServletException { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ public String changeSessionId() { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ public Part getPart(String arg0) throws IOException, ServletException { ++ throw new UnsupportedOperationException("not implemented"); ++ } + ++ public Collection getParts() throws IOException, ServletException { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ public void login(String arg0, String arg1) throws ServletException { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ public void logout() throws ServletException { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ ++ public HttpUpgradeHandler upgrade(Class arg0) throws IOException, ServletException { ++ throw new UnsupportedOperationException("not implemented"); ++ } ++ } + } diff --git a/httpunit-servlettest.patch b/httpunit-servlettest.patch new file mode 100644 index 0000000..f1dba7b --- /dev/null +++ b/httpunit-servlettest.patch @@ -0,0 +1,15 @@ +Index: build.xml +=================================================================== +RCS file: /cvsroot/httpunit/httpunit/build.xml,v +retrieving revision 1.77 +diff -u -r1.77 build.xml +--- a/build.xml 5 Oct 2004 03:45:15 -0000 1.77 ++++ b/build.xml 13 Nov 2004 19:06:13 -0000 +@@ -166,6 +166,7 @@ + + + ++ + + + diff --git a/httpunit.spec b/httpunit.spec new file mode 100644 index 0000000..3ab6066 --- /dev/null +++ b/httpunit.spec @@ -0,0 +1,92 @@ +Name: httpunit +Version: 1.7 +Release: 1 +Epoch: 0 +URL: http://httpunit.sourceforge.net/ +Summary: Automated web site testing toolkit +License: MIT and ASL 2.0 +Source0: http://netix.dl.sourceforge.net/project/httpunit/httpunit/%{version}/httpunit-%{version}.zip +Source1: https://repo1.maven.org/maven2/httpunit/httpunit/1.7/httpunit-1.7.pom +Source2: https://www.oracle.com/webfolder/technetwork/jsc/j2ee/dtds/web-app_2_2.dtd +Source3: https://www.oracle.com/webfolder/technetwork/jsc/dtd/web-app_2_3.dtd +Source4: https://www.oracle.com/webfolder/technetwork/jsc/xml/ns/j2ee/web-app_2_4.xsd +Source5: http://www.apache.org/licenses/LICENSE-2.0.txt +Patch1: httpunit-rhino-1.7.7.patch +Patch2: httpunit-servlettest.patch +Patch3: httpunit-servlet31.patch +Patch4: junit4.patch +BuildRequires: jpackage-utils >= 0:1.6 ant >= 0:1.6 nekohtml jtidy junit >= 0:3.8 +BuildRequires: glassfish-servlet-api javamail >= 0:1.3 rhino java-devel >= 1:1.6.0 +BuildRequires: javapackages-local +Requires: junit >= 0:3.8 glassfish-servlet-api nekohtml rhino +BuildArch: noarch +Obsoletes: httpunit-demo < %{epoch}:%{version} +%description +HttpUnit emulates the relevant portions of browser behavior, including form +submission, JavaScript, basic http authentication, cookies and automatic page +redirection, and allows Java test code to examine returned pages either as +text, an XML DOM, or containers of forms, tables, and links. +A companion framework, ServletUnit is included in the package. + +%package javadoc +Summary: Javadoc for %{name} + +%description javadoc +Javadoc for %{name} + +%package doc +Summary: Documentation for %{name} +Requires: %{name}-javadoc + +%description doc +Documentation for %{name} + +%prep +%autosetup -p1 +find . -name "*.jar" -delete +rm -f META-INF/{web-app_2.2.dtd,web-app_2.3.dtd,web-app_2.4.xsd} +sed -i -e 's|destdir|encoding="iso-8859-1" destdir|g' build.xml +sed -i -e 's|setCharEncoding( org.w3c.tidy.Configuration.UTF8 )|setInputEncoding("UTF-8")|g' src/com/meterware/httpunit/parsing/JTidyHTMLParser.java +find . -name "*.jar" -exec rm -f {} \; +rm -rf doc/api +ln -s \ + %{_javadir}/junit.jar \ + %{_javadir}/jtidy.jar \ + %{_javadir}/nekohtml.jar \ + %{_javadir}/glassfish-servlet-api.jar \ + %{_javadir}/js.jar \ + %{_javadir}/xerces-j2.jar \ + jars +cp %{SOURCE1} pom.xml +cp %{SOURCE2} META-INF/ +cp %{SOURCE3} META-INF/ +cp %{SOURCE4} META-INF/ +cp %{SOURCE5} LICENSE-ASL + +%build +export CLASSPATH=$(build-classpath javamail) +export ANT_OPTS="-Dfile.encoding=iso-8859-1" +ant -Dbuild.compiler=modern -Dbuild.sysclasspath=last \ + jar javadocs test servlettest + +%install +%mvn_file : httpunit +%mvn_artifact pom.xml lib/httpunit.jar +%mvn_install -J doc/api/ +rm -rf doc/api +pushd doc +ln -sf %{_javadocdir}/httpunit api +popd + +%files -f .mfiles +%doc LICENSE-ASL + +%files javadoc -f .mfiles-javadoc +%doc LICENSE-ASL + +%files doc +%doc doc/* + +%changelog +* Sat Aug 22 2020 huanghaitao - 1.7-1 +- package init diff --git a/httpunit.yaml b/httpunit.yaml new file mode 100644 index 0000000..00bbaf0 --- /dev/null +++ b/httpunit.yaml @@ -0,0 +1,4 @@ +version_control: NA +src_repo: NA +tag_prefix: NA +seperator: NA diff --git a/junit4.patch b/junit4.patch new file mode 100644 index 0000000..99a4768 --- /dev/null +++ b/junit4.patch @@ -0,0 +1,26 @@ +--- a/src/com/meterware/servletunit/JUnitServlet.java.sav 2008-05-20 16:25:36.000000000 +0300 ++++ b/src/com/meterware/servletunit/JUnitServlet.java 2012-04-18 14:00:39.653850687 +0300 +@@ -29,8 +29,6 @@ import javax.servlet.http.HttpServletRes + import javax.servlet.ServletException; + + import junit.runner.BaseTestRunner; +-import junit.runner.TestSuiteLoader; +-import junit.runner.StandardTestSuiteLoader; + import junit.framework.Test; + import junit.framework.AssertionFailedError; + import junit.framework.TestResult; +@@ -148,12 +146,8 @@ public class JUnitServlet extends HttpSe + } + + +- /** +- * Always use the StandardTestSuiteLoader. Overridden from +- * BaseTestRunner. +- */ +- public TestSuiteLoader getLoader() { +- return new StandardTestSuiteLoader(); ++ protected boolean useReloadingTestSuiteLoader() { ++ return false; + } + + } diff --git a/web-app_2_2.dtd b/web-app_2_2.dtd new file mode 100644 index 0000000..83ffc29 --- /dev/null +++ b/web-app_2_2.dtd @@ -0,0 +1,602 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web-app_2_3.dtd b/web-app_2_3.dtd new file mode 100644 index 0000000..b4bd390 --- /dev/null +++ b/web-app_2_3.dtd @@ -0,0 +1,1022 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/web-app_2_4.xsd b/web-app_2_4.xsd new file mode 100644 index 0000000..9e4f58d --- /dev/null +++ b/web-app_2_4.xsd @@ -0,0 +1,1242 @@ + + + + + @(#)web-app_2_4.xsds 1.61 04/04/16 + + + + + + + DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + + Copyright 2003-2007 Sun Microsystems, Inc. All rights reserved. + + The contents of this file are subject to the terms of either the + GNU General Public License Version 2 only ("GPL") or the Common + Development and Distribution License("CDDL") (collectively, the + "License"). You may not use this file except in compliance with + the License. You can obtain a copy of the License at + https://glassfish.dev.java.net/public/CDDL+GPL.html or + glassfish/bootstrap/legal/LICENSE.txt. See the License for the + specific language governing permissions and limitations under the + License. + + When distributing the software, include this License Header + Notice in each file and include the License file at + glassfish/bootstrap/legal/LICENSE.txt. Sun designates this + particular file as subject to the "Classpath" exception as + provided by Sun in the GPL Version 2 section of the License file + that accompanied this code. If applicable, add the following + below the License Header, with the fields enclosed by brackets [] + replaced by your own identifying information: + "Portions Copyrighted [year] [name of copyright owner]" + + Contributor(s): + + If you wish your version of this file to be governed by only the + CDDL or only the GPL Version 2, indicate your decision by adding + "[Contributor] elects to include this software in this + distribution under the [CDDL or GPL Version 2] license." If you + don't indicate a single choice of license, a recipient has the + option to distribute your version of this file under either the + CDDL, the GPL Version 2 or to extend the choice of license to its + licensees as provided above. However, if you add GPL Version 2 + code and therefore, elected the GPL Version 2 license, then the + option applies only if the new code is made subject to such + option by the copyright holder. + + + + + + + + ... + + + The instance documents may indicate the published version of + the schema using the xsi:schemaLocation attribute for J2EE + namespace with the following location: + + http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd + + ]]> + + + + + + + The following conventions apply to all J2EE + deployment descriptor elements unless indicated otherwise. + + - In elements that specify a pathname to a file within the + same JAR file, relative filenames (i.e., those not + starting with "/") are considered relative to the root of + the JAR file's namespace. Absolute filenames (i.e., those + starting with "/") also specify names in the root of the + JAR file's namespace. In general, relative names are + preferred. The exception is .war files where absolute + names are preferred for consistency with the Servlet API. + + + + + + + + + + + + + + + + The web-app element is the root of the deployment + descriptor for a web application. Note that the sub-elements + of this element can be in the arbitrary order. Because of + that, the multiplicity of the elements of distributable, + session-config, welcome-file-list, jsp-config, login-config, + and locale-encoding-mapping-list was changed from "?" to "*" + in this schema. However, the deployment descriptor instance + file must not contain multiple elements of session-config, + jsp-config, and login-config. When there are multiple elements of + welcome-file-list or locale-encoding-mapping-list, the container + must concatinate the element contents. The multiple occurance + of the element distributable is redundant and the container + treats that case exactly in the same way when there is only + one distributable. + + + + + + + + + The servlet element contains the name of a servlet. + The name must be unique within the web application. + + + + + + + + + + + + The filter element contains the name of a filter. + The name must be unique within the web application. + + + + + + + + + + + + The ejb-local-ref-name element contains the name of an EJB + reference. The EJB reference is an entry in the web + application's environment and is relative to the + java:comp/env context. The name must be unique within + the web application. + + It is recommended that name is prefixed with "ejb/". + + + + + + + + + + + + The ejb-ref-name element contains the name of an EJB + reference. The EJB reference is an entry in the web + application's environment and is relative to the + java:comp/env context. The name must be unique within + the web application. + + It is recommended that name is prefixed with "ejb/". + + + + + + + + + + + + The resource-env-ref-name element specifies the name of + a resource environment reference; its value is the + environment entry name used in the web application code. + The name is a JNDI name relative to the java:comp/env + context and must be unique within a web application. + + + + + + + + + + + + The message-destination-ref-name element specifies the name of + a message destination reference; its value is the + environment entry name used in the web application code. + The name is a JNDI name relative to the java:comp/env + context and must be unique within a web application. + + + + + + + + + + + + The res-ref-name element specifies the name of a + resource manager connection factory reference. The name + is a JNDI name relative to the java:comp/env context. + The name must be unique within a web application. + + + + + + + + + + + + The env-entry-name element contains the name of a web + application's environment entry. The name is a JNDI + name relative to the java:comp/env context. The name + must be unique within a web application. + + + + + + + + + + + + + A role-name-key is specified to allow the references + from the security-role-refs. + + + + + + + + + + + + The keyref indicates the references from + security-role-ref to a specified role-name. + + + + + + + + + + + + + + + + The auth-constraintType indicates the user roles that + should be permitted access to this resource + collection. The role-name used here must either correspond + to the role-name of one of the security-role elements + defined for this web application, or be the specially + reserved role-name "*" that is a compact syntax for + indicating all roles in the web application. If both "*" + and rolenames appear, the container interprets this as all + roles. If no roles are defined, no user is allowed access + to the portion of the web application described by the + containing security-constraint. The container matches + role names case sensitively when determining access. + + + + + + + + + + + + + + + + + + The auth-methodType is used to configure the authentication + mechanism for the web application. As a prerequisite to + gaining access to any web resources which are protected by + an authorization constraint, a user must have authenticated + using the configured mechanism. Legal values are "BASIC", + "DIGEST", "FORM", "CLIENT-CERT", or a vendor-specific + authentication scheme. + + Used in: login-config + + + + + + + + + + + + + + + + The dispatcher has four legal values: FORWARD, REQUEST, INCLUDE, + and ERROR. A value of FORWARD means the Filter will be applied + under RequestDispatcher.forward() calls. A value of REQUEST + means the Filter will be applied under ordinary client calls to + the path or servlet. A value of INCLUDE means the Filter will be + applied under RequestDispatcher.include() calls. A value of + ERROR means the Filter will be applied under the error page + mechanism. The absence of any dispatcher elements in a + filter-mapping indicates a default of applying filters only under + ordinary client calls to the path or servlet. + + + + + + + + + + + + + + + + + + + + + The encodingType defines IANA character sets. + + + + + + + + + + + + + + + + The error-code contains an HTTP error code, ex: 404 + + Used in: error-page + + + + + + + + + + + + + + + + + + + The error-pageType contains a mapping between an error code + or exception type to the path of a resource in the web + application. + + Used in: web-app + + + + + + + + + + + + + The exception-type contains a fully qualified class + name of a Java exception type. + + + + + + + + + + + The location element contains the location of the + resource in the web application relative to the root of + the web application. The value of the location must have + a leading `/'. + + + + + + + + + + + + + + + Declaration of the filter mappings in this web + application is done by using filter-mappingType. + The container uses the filter-mapping + declarations to decide which filters to apply to a request, + and in what order. The container matches the request URI to + a Servlet in the normal way. To determine which filters to + apply it matches filter-mapping declarations either on + servlet-name, or on url-pattern for each filter-mapping + element, depending on which style is used. The order in + which filters are invoked is the order in which + filter-mapping declarations that match a request URI for a + servlet appear in the list of filter-mapping elements.The + filter-name value must be the value of the filter-name + sub-elements of one of the filter declarations in the + deployment descriptor. + + + + + + + + + + + + + + + + + + + + + + The logical name of the filter is declare + by using filter-nameType. This name is used to map the + filter. Each filter name is unique within the web + application. + + Used in: filter, filter-mapping + + + + + + + + + + + + + + + + The filterType is used to declare a filter in the web + application. The filter is mapped to either a servlet or a + URL pattern in the filter-mapping element, using the + filter-name value to reference. Filters can access the + initialization parameters declared in the deployment + descriptor at runtime via the FilterConfig interface. + + Used in: web-app + + + + + + + + + + + + The fully qualified classname of the filter. + + + + + + + + + + The init-param element contains a name/value pair as + an initialization param of a servlet filter + + + + + + + + + + + + + + + The form-login-configType specifies the login and error + pages that should be used in form based login. If form based + authentication is not used, these elements are ignored. + + Used in: login-config + + + + + + + + + + + The form-login-page element defines the location in the web + app where the page that can be used for login can be + found. The path begins with a leading / and is interpreted + relative to the root of the WAR. + + + + + + + + + + The form-error-page element defines the location in + the web app where the error page that is displayed + when login is not successful can be found. + The path begins with a leading / and is interpreted + relative to the root of the WAR. + + + + + + + + + + + + + + + + + The http-method contains an HTTP method recognized by the + web-app, for example GET, POST, ... + + + + + + + + + + + + + + + + + + + + + + + + The locale-encoding-mapping-list contains one or more + locale-encoding-mapping(s). + + + + + + + + + + + + + + + + + The locale-encoding-mapping contains locale name and + encoding name. The locale name must be either "Language-code", + such as "ja", defined by ISO-639 or "Language-code_Country-code", + such as "ja_JP". "Country code" is defined by ISO-3166. + + + + + + + + + + + + + + + + + + The localeType defines valid locale defined by ISO-639-1 + and ISO-3166. + + + + + + + + + + + + + + + + The login-configType is used to configure the authentication + method that should be used, the realm name that should be + used for this application, and the attributes that are + needed by the form login mechanism. + + Used in: web-app + + + + + + + + + + + The realm name element specifies the realm name to + use in HTTP Basic authorization. + + + + + + + + + + + + + + + + The mime-mappingType defines a mapping between an extension + and a mime type. + + Used in: web-app + + + + + + + + + The extension element contains a string describing an + extension. example: "txt" + + + + + + + + + + + + + + + + + The mime-typeType is used to indicate a defined mime type. + + Example: + "text/plain" + + Used in: mime-mapping + + + + + + + + + + + + + + + + + This type defines a string which contains at least one + character. + + + + + + + + + + + + + + + + The security-constraintType is used to associate + security constraints with one or more web resource + collections + + Used in: web-app + + + + + + + + + + + + + + + + + + + + The servlet-mappingType defines a mapping between a + servlet and a url pattern. + + Used in: web-app + + + + + + + + + + + + + + + + + + The servlet-name element contains the canonical name of the + servlet. Each servlet name is unique within the web + application. + + + + + + + + + + + + + + + + The servletType is used to declare a servlet. + It contains the declarative data of a + servlet. If a jsp-file is specified and the load-on-startup + element is present, then the JSP should be precompiled and + loaded. + + Used in: web-app + + + + + + + + + + + + + The servlet-class element contains the fully + qualified class name of the servlet. + + + + + + + + + + + + + + + The load-on-startup element indicates that this + servlet should be loaded (instantiated and have + its init() called) on the startup of the web + application. The optional contents of these + element must be an integer indicating the order in + which the servlet should be loaded. If the value + is a negative integer, or the element is not + present, the container is free to load the servlet + whenever it chooses. If the value is a positive + integer or 0, the container must load and + initialize the servlet as the application is + deployed. The container must guarantee that + servlets marked with lower integers are loaded + before servlets marked with higher integers. The + container may choose the order of loading of + servlets with the same load-on-start-up value. + + + + + + + + + + + + + + + + + The session-configType defines the session parameters + for this web application. + + Used in: web-app + + + + + + + + + + The session-timeout element defines the default + session timeout interval for all sessions created + in this web application. The specified timeout + must be expressed in a whole number of minutes. + If the timeout is 0 or less, the container ensures + the default behaviour of sessions is never to time + out. If this element is not specified, the container + must set its default timeout period. + + + + + + + + + + + + + + + The transport-guaranteeType specifies that the communication + between client and server should be NONE, INTEGRAL, or + CONFIDENTIAL. NONE means that the application does not + require any transport guarantees. A value of INTEGRAL means + that the application requires that the data sent between the + client and server be sent in such a way that it can't be + changed in transit. CONFIDENTIAL means that the application + requires that the data be transmitted in a fashion that + prevents other entities from observing the contents of the + transmission. In most cases, the presence of the INTEGRAL or + CONFIDENTIAL flag will indicate that the use of SSL is + required. + + Used in: user-data-constraint + + + + + + + + + + + + + + + + + + + + The user-data-constraintType is used to indicate how + data communicated between the client and container should be + protected. + + Used in: security-constraint + + + + + + + + + + + + + + + + + + The elements that use this type designate a path starting + with a "/" and interpreted relative to the root of a WAR + file. + + + + + + + + + + + + + + + + + This type contains the recognized versions of + web-application supported. It is used to designate the + version of the web application. + + + + + + + + + + + + + + + + + + + + + The context-param element contains the declaration + of a web application's servlet context + initialization parameters. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + The web-resource-collectionType is used to identify a subset + of the resources and HTTP methods on those resources within + a web application to which a security constraint applies. If + no HTTP methods are specified, then the security constraint + applies to all HTTP methods. + + Used in: security-constraint + + + + + + + + + + The web-resource-name contains the name of this web + resource collection. + + + + + + + + + + + + + + + + + + The welcome-file-list contains an ordered list of welcome + files elements. + + Used in: web-app + + + + + + + + + + The welcome-file element contains file name to use + as a default welcome file, such as index.html + + + + + + + + + +