AO Web Framework Changelog


Snapshot Notes

  • Reduced use of property substitutions in pom.xml. This is to help 3rd-party parsers that fail to perform full Maven-compatible substitutions.
  • Registering serialization (HTML/XHTML) with new methods SerializationEE.set(…) and SerializationEE.get(…).
  • Registering doctype with new methods DoctypeEE.set(…) and DoctypeEE.get(…).
  • Response writing now uses the new Html instead of ChainWriter.
  • Refactored WebPage.doGet(…) and WebPage.doPost(…) methods for more meaningful parameter order.
  • Added <link rel="author" href="…" /> support.
  • Removed all the old logging nonsense: use java.util.logging.Logger like normal now.
  • Integrated with AO Web Resources.
  • HttpServletResponse is passed many places that were formerly only given WebSiteRequest.
  • Added support for WebP images.
  • Now using the standard file upload API for all uploaded files. This allows the removal of the com.servlets:cos legacy dependency.
  • ServletException allowed more places where it naturally fits.
  • TreePageData now takes a String[] for the path. This allows path elements to contain slash (/) characters without any special encoding.
  • Renamed WebPage.getWebPages(…) to getChildren(…) and WebPage.getCachedPages(…) to getCachedChildren(…).
  • URL parameters are now manipulated using URIParameters, instead of a haphazard combination of String and String[]. With this change, we have proper URL encoding by default.
  • WebPage(WebSiteRequest) and WebPage(URIParameters) and constructors are now optional. When WebPage(WebSiteRequest) does not exist, it falls-back to WebPage(URIParameters), which, in-turn, falls-back to WebPage().
  • Removed uses of SQLException in favor of ServletException.
  • Removed uses of IOException where neither configuration of the response nor output to client are expected.
  • Updated to Java™ EE 7 Web Profile (Servlet 3.1, JSP 2.3, EL 3.0, and JSTL 1.2).
  • Minimum Java version changed from 1.8 to 11.
  • 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, does not perform any transitive requires.
  • Maven artifact relocated from com.aoindustries:aoweb-framework to com.aoapps:ao-web-framework.
  • Package renamed from to com.aoapps.web.framework.
  • Completely removed ErrorReportingServlet:
    1. Removed request statistics since they were not used anywhere within our code-base.
    2. Response buffer is no longer increased to 256 kiB and instead remains at the container default (8 kiB for Tomcat). Any servlet or WebPage that requires a larger buffer must configure it.
  • WebPage now has setHeaders(…) instead of getAdditionalHeaders(…) to provide more flexibility.
  • Now properly restoring Thread interrupted state on InterruptedException.
  • Performed Checkstyle clean-up.
  • Pages no longer use keywords from parent page.


Release Notes

  • Split getRandom() into both getSecureRandom() and getFastRandom(), then selected the appropriate method for each place random is used.
  • Upload file ids changed from 31-bit long to 128-bit Identifier.
  • Case-insensitive matching of URL schemes. Previously, URL schemes were matched case-sensitive, while the spec is case-insensitive. This has been OK given we only use lower-case schemes within our code and tools, but this is now a correct implementation.
  • New WebSiteRequest.getEncodedURL(…) methods that:
    1. Include HttpServletRequest.getContextPath() as a prefix
    2. Encoded to ASCII-only RFC 3986 format
    3. Response encode via HttpServletResponse.encodeURL(String)
  • Split WebSiteRequest.getURL(String, …) into WebSiteRequest.getURLForClass(String, …) and WebSiteRequest.getURLForPath(String, …) to avoid ambiguity.
  • Updated bundled mime.types to current version from Debian 8.11.
  • Added #fragment support to WebSiteRequest.getURLForClass(String, …).


Release Notes


Release Notes


Release Notes

  • Updated dependencies.


Release Notes

  • New AO OSS Parent POM to simplify pom.xml files.
  • Project documentation moved to per-project book in SemanticCMS format.
  • Added changelog as top-level project link.


Release Notes

  • Improved Javadoc formatting.
  • Improved README formatting.
  • No more page stack, just show title for current page only.


Release Notes

  • Completely removed dynamic classloading and all configuration.


Release Notes

  • Improved Javadoc formatting.
  • Improved README formatting.
  • Each lock object now a small empty class to help identify lock contention.

    The lock contention profiler in NetBeans is just showing "java.lang.Object" all over, and can't seem to get from the lock object id to the actual object in the heap dump using OQL (id not found).


Release Notes

  • Project moved to GitHub and Maven.