AO Servlet Util Changelog

ao-servlet-util-5.0.0

Release Notes

  • New classes AttributeEE, ContextEE, and ScopeEE for accessing servlet APIs attributes by scope, context, and name.
    • Breaking change:Dispatcher.ARG_REQUEST_ATTRIBUTE is now an instance of ScopeEE.Request.Attribute instead of String.
    • API supports arriving at an attribute in any order, such as scope → context → name or name → context.
    • API provides generic type safety (assumes casts will be OK behind the scenes, which is acceptable when all access to attributes is through this API).
    • Also provides additional functional-friendly methods similar to those in Map, such as computeIfAbsent.
    • There is also a set of static utility methods, to which the rest of the API ends up calling. For one-off attribute access, these static methods may be more succinct.

ao-servlet-util-4.0.0

Release Notes

  • Updated to Java™ EE 7 Web Profile (Servlet 3.1, JSP 2.3, EL 3.0, and JSTL 1.2).
  • Now supports Java 9+ modules. Due to still having filename-based automatic module dependencies, *-SNAPSHOT versions include module-info.class while releases include the Automatic-Module-Name manifest entry. To minimize the difference between these modes, module-info.java does not perform any transitive requires.
  • Maven artifact relocated from com.aoindustries:ao-servlet-util to com.aoapps:ao-servlet-util.
  • Packages renamed from com.aoindustries.servlet.* to com.aoapps.servlet.*.

ao-servlet-util-3.5.1

Release Notes

  • Updated dependencies.

ao-servlet-util-3.5.0

Release Notes

  • Coercion moved out of AO Encoding:
    1. Non-localized parts moved to AO Lang.
    2. Localized parts moved to AO Hodgepodge and renamed to MarkupCoercion.
    3. New pluggable CoercionOptimizer to allow this decoupling.
    4. Servlet-specific optimizations moved to this project.

ao-servlet-util-3.4.0

Release Notes

  • JspTagUtils now supports throwing any localized exceptions types using the new LocalizedSupplier.

ao-servlet-util-3.3.1

Release Notes

  • Now implementing ServletUtil.SKIP_PAGE_EXCEPTION as a private inner class with a detailed message. Previously, an uncaught instance of SKIP_PAGE_EXCEPTION would produce the rather short, cryptic error message:
    com.aoindustries.servlet.ServletUtil$1
            at com.aoindustries.servlet.ServletUtil.<clinit>(ServletUtil.java:49)

ao-servlet-util-3.3.0

Release Notes

  • New method HttpServletUtil.getSubmittedFileName(Part), which fills in the gap in Java EE 6. Applications that are Java EE 7 should use Part.getSubmittedFileName() directly.

ao-servlet-util-3.2.0

Release Notes

  • Updated dependencies.

ao-servlet-util-3.1.0

Release Notes

  • Split development-only classes into a new sub-project in devel/. This sub-project is used only for development and is never deployed to artifact repositories.

ao-servlet-util-3.0.0

Release Notes

  • JspTagUtils.findAncestor(…) now returns Optional<T>, allowing for parent to not be found.
  • New methods JspTagUtils.requireAncestor(…) that throw an exception when the parent is not found.
  • Changed parameter order in HttpServletUtil.getAbsoluteURL(…) to better match the order they are used in the generated URL.

ao-servlet-util-2.2.1

Release Notes

  • Renamed JavaeeWebSetStackTraceInitializer to JavaeeWebSurrogateFactoryInitializer.

ao-servlet-util-2.2.0

Release Notes

  • Updated dependencies.
  • Now registering exception types for use with Throwables.newSurrogate(…) that supports creating new instances of throwables in order to have caller stack trace. When wrapped, the original throwable is the cause of the new throwable. When not wrapped, the original throwable is used directly and caller stack trace is lost.

    This is used to maintain exception types and states across thread boundaries, such as when an exception cause is obtained from an ExecutionException.

ao-servlet-util-2.1.0

Release Notes

ao-servlet-util-2.0.0

Release Notes

  • Minimum Java version changed from 1.7 to 1.8.
  • Reduced use of property substitutions in pom.xml. This is to help 3rd-party parsers that fail to perform full Maven-compatible substitutions.
  • Consolidated writeWithMarkup(…) methods into Coercion class directly.
  • Optimized ServletContext attribute initialization and concurrency.

ao-servlet-util-1.1.0

Release Notes

  • Added Cache-Control header to LastModifiedServlet. Defaults to a short-term setting of public, five-minute, and allowing stale. This will help performance when *.css files are accessed directly (URLs not rewritten with lastModified=… parameter).

ao-servlet-util-1.0.0

Release Notes

  • Pulled Servlet and JSP related utilities out of AO Hodgepodge.
  • Split HTTP-specific parts of ServletUtil into HttpServletUtil.
  • Added variants of HttpServletUtil.getAbsoluteURL(…) that allow not adding context path.
  • Cookie names, values, comments, and paths are now URI-encoded.
  • HttpServletUtil.getContextRequestUri() now percent-encodes result of HttpServletRequest.getContextPath() because it sometimes comes back percent encoded, but is usually decoded.
  • Absolute URLs are now generated in RFC 3986 URI US-ASCII format, even when the context path has Unicode characters.
  • Absolute URLs are generated first, then passed to response URL encoding.
  • HttpServletUtil.sendRedirect(…) now converts location to RFC 3986 URI US-ASCII format.
  • Added Canonical URL support:
    1. New class Canonical that coordinates when canonical URLs should be generated during response URL rewriting (such as not adding per-user information when cookies are disabled). These canonical URLs, without per-user settings, are used for things like Canonical URLs, BreadcrumbList, and Sitemaps.
    2. HttpServletUtil updated with new canonical parameters.
    3. When in auto mode, last modified stamping is not performed on Canonical URLs.
  • Now adding last modified parameter to *.jnlp, *.tld, and *.xsd files, too.
  • HttpServletUtil cleaned-up significantly, with more consistent method names and more uniform method overloads.
  • Improved LastModifiedServlet Unicode support:
    1. Parser supports both US-ASCII-encoded and Unicode URLs (or any mixture)
    2. Parser supports fragments on URLs
    3. Now properly decodes path components