ao-servlet-util-5.3.0
Release Notes
- Log FINE-level notice when Includer does not send redirect or send error due to the response already being committed.
- Functional
identity()
now declare throwsRuntimeException
instead ofThrowable
. - Moved
resolveValue
from AO Taglib to AO Servlet Util.
ao-servlet-util-5.2.1
Release Notes
- Includer will not send redirect or send error when the response has already been committed. Page processing is still stopped by SkipPageException.
ao-servlet-util-5.2.0
Release Notes
- Updated dependencies.
- New interface
NoClose
along with staticwrap(…)
methods to avoid duplicate wrapping. - Removed dependency on
org.apache.commons:commons-lang3
.
ao-servlet-util-5.1.0
Release Notes
-
New functional interfaces that may throw
ServletException
,IOException
, and (optionally) an arbitrary tertiary exception:ServletBiConsumer
ServletBiConsumerE
ServletConsumer
ServletConsumerE
ServletFunction
ServletFunctionE
ServletPredicate
ServletPredicateE
ServletRunnable
ServletRunnableE
ServletSupplier
ServletSupplierE
-
New functional interfaces that may throw
JspException
,IOException
, and (optionally) an arbitrary tertiary exception:JspBiConsumer
JspBiConsumerE
JspConsumer
JspConsumerE
JspFunction
JspFunctionE
JspPredicate
JspPredicateE
JspRunnable
JspRunnableE
JspSupplier
JspSupplierE
ao-servlet-util-5.0.1
Release Notes
- Cleaning-up ThreadLocal variables when no longer used, see https://rules.sonarsource.com/java/RSPEC-5164.
ao-servlet-util-5.0.0
Release Notes
-
New classes
AttributeEE
,ContextEE
, andScopeEE
for accessing servlet APIs attributes by scope, context, and name.- Breaking change:
Dispatcher.ARG_REQUEST_ATTRIBUTE
is now an instance ofScopeEE.Request.Attribute
instead ofString
. -
API supports arriving at an attribute in any order, such as
scope → context → name
orname → 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 ascomputeIfAbsent
. - 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.
- Breaking change:
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 theAutomatic-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
tocom.aoapps:ao-servlet-util
. - Packages renamed from
com.aoindustries.servlet.*
tocom.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:- Non-localized parts moved to AO Lang.
-
Localized parts moved to AO Hodgepodge and
renamed to
MarkupCoercion
. - New pluggable
CoercionOptimizer
to allow this decoupling. - 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 newLocalizedSupplier
.
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 ofSKIP_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 usePart.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 returnsOptional<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
toJavaeeWebSurrogateFactoryInitializer
.
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
- Improved platform compatibility by falling back to RequestDispatcher.FORWARD_SERVLET_PATH and RequestDispatcher.INCLUDE_SERVLET_PATH where appropriate.
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 intoCoercion
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 withlastModified=…
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 ofHttpServletRequest.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:
- 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.
- HttpServletUtil
updated with new
canonical
parameters. - 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:
- Parser supports both US-ASCII-encoded and Unicode URLs (or any mixture)
- Parser supports fragments on URLs
- Now properly decodes path components