All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
- #560: Hot reloading does not work
- Enable reloading by default only in DEV mode
- Update slf4j to 1.7.25
- #550: JaxbEngine improvements
- #552: ContentTypeEngines: Change the log level from debug to info
- #553: PippoRule: Make methods startPippo and stopPippo public
- Update JUnit to 4.13.1
- Update Jetty to 9.4.35
- Update Tomcat to 8.5.61
- Update Snakeyaml to 1.26
- #555: Add possibility to disable suffix for Pebble loader
- #558: Add method CorsHandler.details
- #559: Add http status constant TOO_MANY_REQUESTS = 429
- Use a ThreadFactory with a prefix for ReloadWatcher executor
- Improve reload configurability
- Add support for ZonedDateTime in Pebble's PrettyTimeExtension
1.13.1 - 2020-06-01
- #545: Error after I upgraded from
1.12.0
to1.13.0
1.13.0 - 2020-05-29
- #457: Closing the writer will close the stream as well
- #496: Do not call
channel.resumeReceives()
untilhandler.onOpen()
called - #528: NPE when use the route function in Pebble
- #522:
CryptoUtils.hmacDigest
unsafe with non-ascii inputs - #523: Fix Character Encoding/Content-Length Bug in
Response.commit(CharSequence)
- #530: Controllers are not being located in subpackages/addControllers
- #542: Close
gzipOutputStream
after the usage - #544: Handle non-empty Path and empty method path
- #491: Update Undertow to 1.4.27.Final
- #492: Update Tomcat to 8.5.38
- #494: Update Jetty to 9.4.14.v20181114
- #510: Upgrade FastJSON to 1.2.57
- #532: Improved
FileItemExtractor
- #535:
ContentTypeEngine
improvement - #538: Make
PippoFilter.createApplication
protected - #539: Update JUnit to 4.13
- #499: Feature/java 11 build
1.12.0 - 2018-12-12
- #454: Lead to RCE when unmarshal xml data with XStream
- #458: Java deserialization vulnerability in
SerializationSessionDataTranscoder.decode()
- #463: Resolve undertow settings not getting picked
- #483: Use
WebSockets.sendClose
to send close code/reason - #485: Use undertow channel tasks to remove closed/broken connections
- #486: Resolve xxe vulnerabilities
- #465: Made
SessionData
an interface, and introducedDefaultSessionData
- #467: Updated
FastJSON
to 1.2.51
- #260: Add
route
method helper in templates (only for Pebble engine) - #468: Add wrapper method in
Request
to get header names - #474: Send
gzip
response whenAccept-Encoding:*
is present
1.11.0 - 2018-10-05
- #436: The PippoSettings file is now read with UTF-8 as the default encoding
- #438: Incorrect service file name for template engines
- #443: Make methods statics in
IoUtils
- #446: Upgrade
jackson
to latest version (2.9.6) - #447: Upgrade
guice
to latest version (4.2.0) - #459: Update Pebble template engine to 3.0.5
- #460: Update Tomcat to 8.5.34
- #437: Add useful handlers for admin
- Add model field in
TemplateHandler
- Add masking password feature in
SettingsHandler
- #439: Add
DirEntry
comparator inDirectoryHandler
- #452: Add new headers
- #456: Add
CorsHandler
for Cross-origin resource sharing
1.10.0 - 2018-07-10
- #433: FileItem's input stream is closed properly now
- Use try-with-resources in IoUtils
- Update Dropwizard's metric to 4.0.2
- Update Undertow to 1.4.25.Final
- Update Pebble template engine to 2.6.1
- Rename
CountedRouteHandler
toCountedHandler
,MeteredRouteHandler
toMeteredHandler
,TimedRouteHandler
toTimedHandler
- #433: Call SharedMetricRegistries.setDefault in MetricsInitializer
- #427: Add option converterClass to
@ParamField
- #428: Add support for Prometheus (metrics)
- Add
getResourceAsString
method inIoUtils
1.9.0 - 2018-05-10
- #420: Trailing slashes removed from registered routes
- #418: Convert to float, double and BigDecimal according Locale
- #419: Uses Locale in request context
- #421: Update to Freemarker 2.3.28
1.8.0 - 2018-02-24
- #410: Any syntax error in freemarker template results in "PippoRuntimeException: Recursion in error handler" exception
- Make setters fluent in
Pac4jCallbackHandler
(pippo-pac4j module) - Move logging from debug to trace in
DefaultUriMatcher#addUriPattern
(less noise) - Feat settings: remove braces from start and end in
getStrings
- Feat settings: add helper methods to get list of float or double
- #412: Return immutable
Set
whenParameterValue#toSet
is called
- Add automatically
PippoNopHttpActionAdapter
inSettingsConfigFactory#build
(pippo-pac4j module)
1.7.0 - 2017-12-12
- #367: Redirecting to named routes using setPippoFilterPath settings (improvement)
- Downgrade TJWS version to 3.0.10.Final because the last version is deprecated
- #408: Add security (PAC4J) module
1.6.0 - 2017-11-18
- #382: Missing content type on Response for TJWS server
- #385: JedisFactory not initializing redis URI
- #387: Intercepted bean method public final Controller.getRequest() cannot be declared final
- #394: getResponse().status(200) return 404 code
- #396: ErrorHandler not properly working with Controllers and CheckedExceptions
- #400: Duplicate routes being created
- #384: Add full support to configure Undertow server
- #388: TemplateEngine customization and extension support
- #397: Add path params in websocket uri
- #404: Add Polish translation
- Add OPTIONS to Routing
1.5.0 - 2017-08-07
- #367: Redirecting to named routes using
setPippoFilterPath
settings - Stop web server in
PippoRule
- #368: Hot deployment doesn't work in Jetty
- #381: Error in Pippo-TJWS module
- Replace
ALL
route withANY
(deprecateALL
) - Update
Pebble
template engine to 2.4.0 - Update
Jetty
to 9.4.6.v20170531 - Update
Undertow
to 1.4.12.Final - Update
RestAssured
used byPippoTest
to 2.9.0 - #378: Simplify
JettyServer
- Update
TJWS
to 3.1.4.Final - Simplify
TomcatServer
(delete executor service)
- #363: Route
OPTIONS
- #366: Add
TrailingSlashHandler
- Add
CONNECT
method - Add log entry in Less and Sass
- #377: Handle keystore paths that are relative to Classpath
1.4.0 - 2017-05-03
- #361: Move PippoFilter instantiation from Pippo class to the WebServer implementations (breaking change)
- Log exception for
PippoFilter.init
method - #360: Websocket support (Jetty and Undertow)
1.3.0 - 2017-04-04
- [353]: Two annotations named Param
- [356]:
ClasspathResourceHandler
Directory Traversal Bug (Security)
- #352: NotFound (CatchAll) route handler
- #354: Add possibility in Controller to return the template rendered string
- #355: Hot reloading
1.2.0 - 2017-02-17
- Synchronize cache in
SingletonControllerFactory
- Rename
RequestLanguageFilter
toLanguageHandler
- Add
getMessage
method helper/shortcut inRouteContext
- #341: New controller concept
- #344: Helper method in
Response
for setting filename - #346: Expose method to reset the response
- #347: Make the
Route
available inRouteHandler
- #350: Add possibility to use a singleton
Controller
(one instance for all requests) - #253: Named route group
- #348: Support attributes in RouteGroup
- Add
getMessages
method helper inRouteContext
- Add
getSettings
method helper inRouteContext
- Add
getMessages
andgetSettings
methods helper inController
1.1.0 - 2017-01-04
- #329: Make Pippo class a little bit more expressive
- Improve Lambda code (avoid parentheses around a single parameter)
- #330: Make public
Route.setAbsoluteUriPattern
method - #332: Relax the signature of WebServer.addListener method
- Return generic type for
RouteContext.getApplication
(no need for cast) - Set the application as an attribute of the servlet container (ServletContext)
- Mark
RouteHandler
asFunctionalInterface
- Use
gzip
compression where it's possible; see #331 - Add
getWriter
method toResponse
1.0.0 - 2016-11-21
- #327: Improve PippoTest (add the possibility to set a custom web server or to set
pippoFilterPath
)
- Force
pippo.mode
on TEST inPippoTest
0.10.0 - 2016-11-07
- #318: Non-debug error handler
- #315: Improve the route group concept
- #317: Add
setFileExtension
method toTemplateEngine
- #321: Add possibility to register filter, servlet, listener
- #323: Inject
Application
instance inServletContext
- #326: Add
SingletonControllerFactory
0.9.1 - 2016-08-27
- Fix stupid NPE in Pippo.start
- #308: Fix NPE when Working with PippoTest
- #310:
MongoDBSessionDataStorageTest
is failing
- Refine the use of
@MetaInfServices
when it's possible (remove annotation's parameter in some cases)
- #309: Expose the values attribute of
ParameterValue
viagetValues:String[]
- Remove unused class
PippoTemplateLocator
frompippo-trimou
0.9.0 - 2016-08-27
- #262: Errors Configuring Underlying Tomcat Server to use HTTPS without Client Auth
- #265: JettyServer attempts to use keystore password as truststore file path
- #293: JettyServer.start() blocks due to Jetty server.join()
- #305: Trimou TEMPLATE_LOCATOR_INVALID_CONFIGURATION running fat jar
- #306: Length issues with unicode characters
- Upgrade pippo-undertow to Undertow 1.3.24
- Use
org.kohsuke.metainf-services:meta-services
annotation processor to automatically generate all META-INF/services files - pippo-csv now properly collects all fields in a class hierarchy when deserializing objects
- pippo-test Automatically initialize RestAssurred with Pippo ContentType engines
- Upgrade pippo-trimou to Trimou 1.8.4
- Upgrade pippo-xstream to XStream 1.4.
- Upgrade pippo-snakeyaml to SnakeYaml 1.17
- Upgrade pippo-fastjson to FastJSON 1.2.8
- Upgrade pippo-groovy to Groovy 2.4.6
- Upgrade pippo-jackson to Jackson 2.7.3
- Upgrade pippo-jetty to Jetty 9.3.8
- Upgrade pippo-tomcat to Tomcat 8.0.33
- Upgrade pippo-jade to Jade 1.1.4
- Upgrade pippo-pebble to Pebble 2.2.2
- Make
chunked
transfer-encoding optional, not the default - Make the text/plain content type engine handle returning reasonable types like String, CharSequence, char[], and byte[]
- Reduce the DirectoryHandler logging noise caused by connection resets, broken pipes, and connection timeouts by not logging the IOException stacktrace
- Restructuring of the hierarchy of modules
- #245: Route groups
- #258: Optional logo display in PippoFilter
- #288: Extract addRoute, GET, POST, ... methods in Routing interface
- #299: Encrypted/signed cookie based session
0.8.0 - 2016-01-29
- #209: Exception handling for requests with arrays and very large numbers
- Fixed parsing of dates, times, and timestamps when parameter value is an empty string
- Fixed StringIndexOutOfBoundsException in ResourceHandler
- Gracefully handle whitespace parameter values
- Upgrade pippo-tomcat to Tomcat version 8.0.28
- Upgrade pippo-weld to Weld version 2.3.1.Final
- Upgrade pippo-less4j to Less4j version 1.15.2
- Upgrade pippo-undertow to Undertow 1.3.15
- Move to Java 8
- Move quickstart maven archetype to Java 8
- Upgrade vaadin-sass-compiler to 0.9.13
- Upgrade pippo-metrics-librato to Librato 4.1.2.1
- #241: Transparently support Java 8
-parameters
names for controllers
- #228: Versioning public resources
- Add static factory methods for GET, POST, ... in Route class
- #230: Create distribution zip file with
mvn package
- #231: Add pippo-test module
- Add DirectoryHandler for serving external directories
- Add pippo-csv content-type engine to easily serialize and deserialize to/from CSV
0.7.0 - 2015-11-09
- #188: Fix alias substitution in webjars paths
- #206: Problem wtih Request.updateEntityFromParameters method
- #215: Fixed CSRF guard ignoring POST requests with content-types that specify a charset
- #219: Java8 build fails with javadoc warning
- #233: Serve static resources from the root url
- Updated pippo-pebble to Pebble 1.5.2
- Updated pippo-metrics-librato to Librato 4.0.1.12
- Updated pippo-freemarker to Freemarker 2.3.23
- Updated pippo-fastjson to FastJSON 1.2.7
- Updated pippo-undertow to Undertow 1.3.5
- Updated pippo-trimou to Trimou 1.8.2
- Updated pippo-jetty to Jetty 9.3.5
- Updated pippo-jackson to Jackson 2.6.3
- Upgrade pippo-tomcat to Tomcat version 8.0.24
- Add support for simple integer->boolean conversion in ParameterValue
- #221: Use standard java service loader mechanism via ServiceLocator and remove pippo.properties files
- #189: Register Json, Xml, and Yaml engines with pippo-jackson
- Move demo applications to pippo-demo repository
- #207: Add PathRegexBuilder
- #211: Add custom Filters, Extensions in PebbleEngine from Application
- #217: Add convenience methods for setting date headers
- #218: Add Response method to finalize a response and return the OutputStream for custom streaming
- #220: Add support for
:alnum:
,:alpha:
,:ascii:
,:digit:
,:xdigit:
POSIX character classes for URL path parameters. This allows use of UTF-8 in path parameters.
0.6.0 - 2015-06-03
- #120: FileResourceHandler usage is not self evident
- #163: Recursion in error handler when provoking a 404 with Pebble
- CSRF token was not bound as a local property making templates with forms & CSRF tokens generated in a POST handler fail.
- Updated pippo-pebble to Pebble 1.5.0
- Updated pippo-jade to Jade4j 0.4.3
- Updated pippo-trimou to Trimou 1.8.0
- Updated pippo-undertow to Undertow 1.2.8
- Updated pippo-jackson to Jackson 2.5.4
- #152: Rename maven profile
main
withstandalone
for clearer usage - Improved support for array types in ParameterValue
- #181: pippo-gson Serialize and deserialize dates using ISO8601
- #182: pippo-fastjson Serialize and deserialize dates using ISO8601
- #183: pippo-jackson Serialize and deserialize dates using ISO8601
- #184: Moved JAXB engine into a separate module pippo-jaxb
- #35: Added demo ajax using intercooler.js pippo-demo-ajax
- #141: Added Apache Tomcat as embedded web server pippo-tomcat
- #144: Added Apache Velocity as template engine pippo-velocity
- #147: Web server tuning (being able to tune from PippoSettings)
- #150: Added Weld implementation of CDI pippo-weld, pippo-demo-weld
- #161: Added route name as first criterion in
RouteContext.uriFor
- #162: Added support for redirect to route via
RouteContext.redirect
- #170: Added less and sass compilers pippo-less4j, pippo-sasscompiler, pippo-demo-css
- #180: Add support for
artifactId
version alias in WebjarsAt declarations (i.e. ${WebjarsAt('jquery/jquery.min.js')}) - #185: Allow specifying
Accept-Type
with a URI suffix expression (i.e. GET("/contact/{id: [0-9]+}(.(json|xml|yaml))?", () -> {}));
0.5.0 - 2015-06-03
- #121: ContentTypeEngines were not properly initialized during the discovery/registration process
- Fixed multiple regex parameter tokenization
- #132: Prevent web server instantiation
- #117: Rework pippo-spring, pippo-guice
- Updated pippo-fastjson to FastJSON 1.2.6
- Updated pippo-undertow to Undertow 1.2.6
- Updated pippo-jetty to Jetty 9.2.11
- Updated pippo-guice to Guice 4.0
- Updated pippo-metrics-librato to 4.0.1.8
- #121: Added pippo-jackson
- #122: Added a CSRF handler & StatusCodeException class
- #124: Automatically encode the parameters values in DefaultRouter.uriFor()
- #126: Maven quickstart archetype to build a small Pippo web application
- #128, #131: Added support for
Set
,List
, and any other concrete Collection type - #128: Added support for array query/form parameters like
yada[0]
,yada[1]
, &yada[2]
- #129: Added support for
_method
assignment for HTML form POST processing - #130: Added support for
_content_type
and_content
assignment for HTML form POST processing - #134: Added
Response.send(String format, Object... args)
- Removed pippo-ioc module because it is no longer used anywhere
0.4.2 - 2015-04-30
- Fixed unset RouteContext ThreadLocal when processing ignore paths
- Throw the target exception rather than the InvocationTargetException in DefaultControllerHandler
- Updated pippo-undertow to Undertow 1.2.3
0.4.1 - 2015-04-23
- #113: Fixed ControllerRouter ClassCastException
- #111: Request.getBody now uses UTF-8 encoding rather than the default character set of the JVM
- Make the session available to the template engines
- Updated pippo-fastjson to FastJSON 1.2.5
- Updated pippo-groovy to Groovy 2.4.3
- Updated pippo-pebble to Pebble 1.4.5
- Updated pippo-snakeyaml to SnakeYAML 1.15
- Updated pippo-trimou to Trimou 1.7.3
- Updated pippo-undertow to Undertow 1.2.0
0.4.0 - 2015-03-27
Massive change, needs more documenting :)
- Moved Controller implementation to pippo-controller
- Added pippo-fastjson
- Added pippo-groovy
- Added pippo-guice
- Added pippo-gson
- Added pippo-metrics
- Added pippo-metrics-ganglia
- Added pippo-metrics-graphite
- Added pippo-metrics-influxdb
- Added pippo-metrics-librato
- Added pippo-pebble
- Added pippo-session
- Added pippo-session-cookie
- Added pippo-spring
- Added pippo-snakeyaml
- Added pippo-tjws
- Added pippo-trimou
- Added pippo-undertow
- Added pippo-xstream
0.3.0 - 2014-11-14
- Improved
noCache
implementation
- Implemented Controller concept
0.2.0 - 2014-11-07
- Updated to Bootstrap 3.3.0
- Added a Jade template engine module
- Added file upload support
- Implemented RouteHandlerChain concept
- Added Request.getSession()
- Added Response.getLocals()
Initial release.
- Added pippo-core
- Added pippo-freemarker
- Added pippo-jetty