2018-01-29 Feature to run Ninja as console (server-less) application
Version 6.2.2
2018-01-08 Fix issue where servlet container without websocket support crashes. (ra)
2017-01-08 Fix copyright year issue (ra)
Version 6.2.1
2017-12-13 Fixed duplicate count for timed metrics (christiangroth)
2017-12-12 Added metrics.graphite.prefix property for custom graphite prefix (christiangroth)
Version 6.2.0
2017-08-30 WebSockets support across Jetty standalone and any JSR-356 compatible servlet container such as Jetty 9.3.15+, Tomcat 7+, Wildfly, WebLogic, Undertow, etc. (jjlauer)
2017-08-30 Automatic Ninja initialization for servlet containers. You can now omit a web.xml (jjlauer)
2017-08-30 ReverseRouter supports building absolute urls (jjlauer)
2017-08-22 System properties (as well as prefixed system properties) can override any configuration keys (jjlauer)
2017-01-06 Support for Optional in controller methods #541 (reyez)
2017-01-03 Replaced Guava Optionals with Java8 Optionals (bazi)
2016-12-25 Fix issue #532: return clean session instead of runtime error when session cookies can not be decrypted (bazi)
2016-12-19 New ninja.ReverseRouter for validated, URL-safe reverse routing using Java 8 lambda expressions in addition to legacy Class + method name references. (jjlauer)
2016-03-06 Added silent error handle to NinjaJetty that does not print out stacktraces. Directory listing by NinjaJetty disabled (ra).
2016-04-05 Improve Ninja usability in Google AppEngine Environment (ra).
2016-04-04 Flyway version bump to 4.0 (nate-kingsley).
2016-03-18 Improved javadoc of Cache interface (ra).
Version 5.4.0
2016-02-29 New ninja.standalone.AutoStandalone class locates standalone to use based on System property, then META-INF/services, then default value of Jetty (jjlauer)
2016-02-29 Reverse routing is now O(1) from O(N) by using a pre-calculated hashmap (jjlauer)
2016-02-28 More flexible Ninja guice configuration! Your conf.Module can optionally extend ninja.conf.FrameworkModule to skip Ninja’s default guice bindings for its “classic” stack of Freemarker, Jackson, Cache, etc. (jjlauer)
2016-02-28 New ninja.conf.NinjaClassicModule guice module to aid power users with configuring the exact set of features they want to include. (jjlauer)
2016-02-28 Migration engine implementation is now configurable with property migration.engine.implementation (jjlauer)
2016-02-28 Ehcache dependency can now be safely excluded if not used (jjlauer)
2016-02-28 New utils.ImplFromPropertiesFactory to aid in loading your implementations from NinjaProperties. (jjlauer)
2016-02-26 Removed ninja-core dependency on org.mindrot:bcrypt (it was unused) (jjlauer)
2016-02-25 New RecycledNinjaServerTester in ninja-test-utilities to speed up your unit tests (jjlauer)
2016-01-08 Fix Cookie domain is not set when clearing session #462
Version 5.3.1
2016-01-29 Security: session and flash data save to Context instead of Result (jjlauer)
2016-01-16 Module.java of Ninja applications can now get NinjaProperties injected optionally. (jlannoy)
2015-12-01 Added more documentation about Freemarker templates. (jlannoy)
Version 5.3.0
2016-01-11 Bump license headers to 2016 (ra)
2015-12-15 Switch from to Travis CI (Cloudbees CI no longer available) (ra)
2015-12-21 Basic HTTPS support for Ninja standalone & SuperDevMode (jjlauer)
Version 5.2.2
2015-11-21 Bump to slf4j 1.7.13 (ra)
2015-11-13 Fixed garbled parameters in multipart requests (mallowlabs)
2015-10-18 Added Session.setExpiryTime() to control session expiry (watsonmw)
2015-10-18 OptionalBinder for ObjectMapper and XmlMapper, so that users can easily override the default types for both of them. (amit2103/jjlauer)
2015-10-09 Refactoring of ninja-servlet to extract non-servlet functionality into ninja-core to enable reuse in future non-servlet environments. (jjlauer)
ninja-servlet ninja/servlet/NinjaBootstrap.java split into ninja-core ninja/Bootstrap.java and ninja-servlet ninja/servlet/NinjaServletBootstrap.java
ninja-servlet ninja/servlet/ContextImpl.java split into ninja-core ninja/utils/AbstractContext.java and ninja-servlet ninja/servlet/NinjaServletContext.java
2015-10-09 Refactoring of ninja-standalone to extract non-Jetty functionality into ninja-core to enable reuse in future non-Jetty standalone implementations. (jjlauer)
Much of the functionality in ninja-standalone ninja/standalone/NinjaJetty.java extracted to ninja-core ninja/standalone/AbstractStandalone.java
2015-10-09 Standalone configuration properties can now be set in conf/application.conf Supports ninja.host, ninja.port, ninja.context, and ninja.idle.timeout The order of precedence is systemProperty > configProperty > defaultValue (jjlauer)
2015-10-09 New ‘ninja.standalone.class’ system property to control which concrete standalone implementation is used by NinjaTestServer (jjlauer)
2015-10-09 ninja-maven-plugin support for ‘jvmArgs’ property to allow for any properties to be passed thru to spawned Ninja JVM. (jjlauer)
2015-10-09 ninja-maven-plugin support for ‘mainClass’ property to override which class is run by spawned Ninja JVM.
2015-10-09 ninja-maven-plugin deprecated ‘contextPath’ property in favor of new ‘context’ key to match what NinjaJetty has always used. (jjlauer)
2015-10-09 NinjaJetty has more polished logging messages on startup (jjlauer)
Version 5.2.1
2015-10-16 Context.getParameterFileItems() now returns Map<String, List<FileItem>> (jjlauer)
Version 5.2.0
2015-08-17 Added gzip-enabled rollover appender examples to archetypes’ logback.xml files & minor doc typo fixes (metacity)
2015-06-24 Injection of params and uploaded files from multipart requests (bazi, momiji)
Version 5.1.7
2015-10-06 AuthenticityFilter uses Ninja interface not NinjaDefault class (jjlauer)
2015-10-06 AuthenticityFilter logs filtered requests as warnings (jjlauer)
2015-10-01 Fixed garbled snippets in diagnostics (mallowlabs)
2015-09-25 Upgrade FreeMarker from 2.3.22 to 2.3.23 (khmarbaise)
2015-09-28 Improved diagnostic mode w/ info about the context, request, and response (jjlauer)
2015-09-28 Fixed NPE issue with cookies not being set in underlying servlet request (jjlauer)
2015-09-28 NinjaDefault now logs exceptions in the debug level (jjlauer)
Version 5.1.6
2015-09-17 Fixed bug in AssetsController that occurred in dev mode on some environments (ra).
2015-08-23 Added charset to error html files (mallowlabs)
2015-09-15 Fixed status code for forbidden results in diagnostic mode (jjlauer)
2015-09-15 Added documentation for session configuration properties (jjlauer)
2015-07-28 Jackson will now use Woodstox as the StAX implementation (metacity)
2015-07-22 Added support for Jackson’s JSON Views (metacity)
2015-07-21 Added properties to override system views location (momiji).
Version 5.1.4
2015-06-24 Flyway upgrade from 2.3.1 to 3.2.1 & fix documentation (danielsawan)
2015-06-30 Fix for asset controller incompatibility with windows file system (BjoernAkAManf).
2015-06-30 Improved tests in asset controller for serving webjars (ra).
Version 5.1.3
2015-06-19 Fix for potential security issue. Under certain circumstances assets controller did stream content from arbitrary directories (Christian B. / ra).
Version 5.1.2
2015-05-22 Removed outdated modules from documentation (svenkubiak)
2015-05-20 #354 Fixed bug with reverse routing with multiple regex parameters (arystan)
2015-05-16 Update to Guice 4.0 final (ra)
2015-05-10 Replaced net.sf.ehcache.internal with net.sf.ehcache to fix #352 (ra)
2015-03-16 (PR #333) ninja-standalone will System.exit on any startup exception (previously it only exited in some cases, kept running in failed state for others) (jjlauer)
2015-03-16 (PR #333) ninja-standalone support for binding to specific host/address (e.g. -Dninja.host=localhost) (jjlauer)
2015-03-16 (PR #333) ninja-standalone support for advanced/power-user jetty configuration(s) (e.g. -Dninja.jetty.configuration=jetty.xml,jetty-ssl.xml) (jjlauer)
2015-03-16 (PR #333) ninja-standalone optimized to specifically handle Guice injector exception (most common startup error) - slightly cuts down on verbosity of failure logging (jjlauer)
2015-03-15 Added support for collections and arrays for body parser engine (gabrielhora)
2014-10-20 Added ninja-jaxy-routes module, a JAX-RS style routes builder (gitblit)
2014-10-16 Bump to Freemarker 2.3.21 (ra).
2014-10-18 Added a Metrics module with reporters for Graphite, Ganglia, InfluxDB, and Librato (gitblit & ra)
2014-10-10 Stability improvement for Jpa blog archetype - setup works now in a predictable manner for testcases ra).
2014-10-09 Removed localized lookup in Freemarker templates. Not needed as Ninja does i18n already (ra).
2014-10-07 Added support for multiple variable parts with regex in routes (bazi)
2014-10-07 Added testcase for NinjaCache (ra)
2014-10-06 Add optional hot-reload support for -Dninja.external.conf external configuration for all runtime modes if -Dninja.external.reload=true (gitblit)
2014-10-06 Add automatic hot-reload support for application.conf in dev mode (gitblit)
2014-10-06 Add automatic hot-reload support for language messages files in dev mode (gitblit)
Version 3.3.3
2014-09-28 Bump to guice beta5 (ra).
2014-09-26 Add support for ${prettyTime(date)} to FreeMarker integration for localized relative-date formatting like “2 days ago” (gitblit)
2014-09-22 Add explicit text/plain template engine and deprecated Result.renderRaw(String). Results.text().render(myString) is the preferred syntax. (gitblit)
2014-09-12 Add ServletContext to ContextImpl to improve 3rd-party integration (gitblit)
2014-09-12 Log registered routes on startup (gitblit)
2014-08-29 Added nicer error screens (ra)
2014-08-29 Added fallbackContentType and supportedContentTypes to Result for better content negotiation (ra).
2014-08-28 Added support for java.util.Date on BodyParserEnginePost. (pedro-stanaka)
Version 3.3.2
2014-08-24 HibernatePersistence is deprecated. Use HibernatePersistenceProvider instead. (eiryu)
2014-08-24 Fix mistake in the sample code (eiryu)
2014-08-21 Added utility methods on Context for isRequestXml and isRequestJson. (dazhudson)
2014-08-21 Fixed bug where getRequestPath would return null in async mode. (dazhudson)
2014-08-21 Modified Context.getRemoteAddr() to honour the X-Forwarded-For header. (dazhudson)
2014-06-21 Replaced all javax.inject.Inject imports with com.google.inject.Inject. That way JEE containers do not try to inject stuff into Ninja applications that run with Guice anyway. (ra)
2014-06-21 i18n Freemarker engine now displays i18n keys when i18n values are missing. The behavior before was to throw an exception. Also added battery of tests. (ra)
2014-06-03 Added getRemoteAddr() method which returns IP of the client (or last proxy) that sent the request to the context object. (Kokol)
2014-06-21 Support for conf.Ninja. Makes it possible for user to customize request and error handling (ra).
2014-06-10 Use SecureRandom instead of Random to generate the application secret. (metacity)
Version 3.1.6
2014-06-09 Fixed a wrong variable when logging (metacity)
2014-06-01 Enhanced security check for callback in JsonP (nobullet).
2014-05-30 Fixed wrong Logger in ResultHandler. Changed javax @Inject to Guice @Inject to make Ninja more compatible with Weld.
2014-05-21 Added created(Optional<String>) and unauthorized() methods to the Results class. (metacity)
2014-05-19 Added port selection to SuperDevMode. (Naum/Buffer0verflow)
Version 3.1.5
2014-05-08 Added getHostname() method to context as a wrapper to getting the Host header. (mattjonesorg)
2014-05-08 Fixed issue #173. NinjaJetty was listening on two http ports. (ra)
2014-04-27 Added possibility to define custom package for application module and routes (avarabyeu)
2014-04-10 “username” of SecureFilter now static final and can be referenced from other modules in a typesafe way. (ra)
2014-04-10 Support getInjector() on FluentLenium testcases (ra)
2014-04-07 Logback is now only configured when on classpath. Allows to use jul logging on App Engine. (Nomi + ra)
Version 3.1.4
2014-04-06 Fixed bug (#165) that caused that html template caching did not work properly. (Nomi + ra)
2014-03-28 Added support for static Result.NO_HTTP_BODY. No need to create new() class all the time. (ra)
Version 3.1.3
2014-03-22 Fixed build to work with JDK 8. (ra)
2014-03-22 Fixed bug in archetype. Reordered modules, so that testing of archetypes works. (ra)
2014-03-22 Removed error-prone again (not yet compatible with JDK 8) (ra)
2014-03-14 Added error-prone bug checking to build lifecycle of Ninja. (ra)
Version 3.1.2
2014-03-13 BugFix #157. @UnitOfWork did not work when nested with @Transactional or other @UnitOfWork annotations. (ra)
2014-03-07 Now caching virtually infinite amount of template files in memory
Version 3.1.1
2014-03-06 Fixed bug that prevented some applications running inside servlet container to start up properly. (ra).
2014-03-06 Fixed potential multi threading issue upon application startup. method getInjector() method of GuiceInjector was not thread safe (ra).
Version 3.1.0
2014-03-05 #155 Fixed glitch were Freemarker did not emit a proper 400 when template not found.
2014-03-05 Fix so that ninjaProperties.getContextPath() and context.getContextPath() are always in sync. No matter what contextpath you supply via the command line and -Dninja.context= … (ra)
2014-03-05 NinjaRunner that allows to auto inject resources into NinjaTests (smallufo)
2014-03-05 #154 Some performance improvements for reverse routing. (ra)
2014-03-04 Fixed bug where reverse routing was not properly working for routes with regex. (ra)
2014-03-04 Added reverse routing to Freemarker templates via ${reverseRoute(…)}, ${assetsAt(…)}, ${webJarsAt(…)} (ra)
2014-03-03 Added support for contextPath to NinjaProperties. That’s a better place than Context (context is only available in request). (ra)
2014-03-03 Using a map no longer needed for generating parameterized reverse route. Now we can specify parameters via simple array. (ra)
2014-03-03 RouterImpl.getReverseRoute() now prefixes the returned url with the context path if one is configured. (zz)
Version 3.0.3
2014-02-26 Bugfix. Dependecy resolution for SuperDevMode was “compile” and not “runtime”. => Changed to “runtime” (zoran, ra)
Version 3.0.2
2014-02-19 Bugfix #145. Shutdown hooks not executed in SuperDevMode and standalone mode. (ra)
Version 3.0.1
2014-02-18 Bump to Jetty 9.1.2.v20140210 (ra)
2014-02-18 Ninja now uses utf-8 for everything in a request. Otherwise e.g. post requests are encoded in a platform dependent way (mallowlabs)
2014-02-17 Fixed possible glitch in the matrix: BodyParserEnginePost.invoke() may set Strings to unsupported fields (amsz, ra).
2014-02-17 Added support for custom static asset location (sojin)
2014-02-14 Proper handling of exceptions in controllers => now emitted as 400 - bad request by the framework. (ra)
Version 3.0.0
2014-02-14 Added support for HEAD and arbitrary http methods in router (ra)
2014-02-14 Added support for getting parameters and automatic conversion (getParameterAs in context) (amsz)
2014-02-12 Adding support of ninja.context for SuperDevMode (nobullet)
2014-02-11 Removed hibernate-jpa-2.0-api (already included by hibernate in version 2.1). (smallufo).
2014-02-07 Added result support for route (amsz).
2014-02-06 Added simple archetype to begin with (ninja-servlet-archetype-simple (ra).
2014-02-06 Fixed bug where css was not included in servlet-jpa archetype. (ra).
2014-02-06 Bump to slf4j 1.7.6 and logback 1.1.1 (ra).
2014-02-05 Fool proof creation of archetypes without manual work (ra).
2014-02-06 Primitive type field mapping for Post form parameters (metacity).
2014-01-30 ninja-maven-plugin now no longer needs ninja-standalone in User’s pom.xml. (ra)
2013-01-28 XmlMapper now singleton configured in one place via a provider. (ra).
2013-01-28 Added afterburner support to XmlMapper (ra).
2014-01-28 Added support for custom regex in variable part of routes (ra).
2014-01-27 Added support to serve arbitrary paths via AssetsController via serveStatic method (ra).
2014-01-16 Removed deprecated (and slow) option to access i18n messages in freemarker templates directly via ${messagekey}. This was replaced by by ${i18n(“messageKey”)} a long time ago (ra).
2014-01-14 Renaming SessionCookie => Session and FlashCookie => FlashScope (ra)
Version 2.5.1
2014-01-08 Setting of hibernate properties no longer on System.setProperty level, but locally. (ra).
2014-01-08 Added @UnitOfWork annotation for fast readonly database access (ra).
Version 2.5.0
2014-01-07 Security fix. Html templates did not escape apostrophes properly (’). (ra)
2013-12-22 Added Maven 3.1.0 as requirement for ninja-maven-plugin (ra)
2013-12-19 ObjectMapperProvider now a singleton (it is threadsafe) (ra)
Version 2.4.0
2013-12-02 Session/cookie sharing between subdomains. (linx56)
2013-12-05 Fix + test in maven plugin. Assets directory was not ignored / regex wrong. (ra)
2013-12-05 Fixed wrong hamcrest imports (junit imports hamcrest 1.3, mockito by default imports hamcrest 1.1). JUnit now always above mockito in pom.xml - therefore hamcrest 1.3 takes precedence over hamcrest 1.1 (ra)
2013-12-13 Bugfix in session implementation. Authenticity token and ID not sent under some circumstances. (ra)
2013-12-13 Ninja now uses “ninja.mode=prod” by default (and no longer dev). Many users complained that it is quite strange to configure the prod mode when running Ninja as war inside a servlet container. These problems are now gone. (ra)
2013-12-14 Json Jackson mapper now uses Afterburner by default for reading / writing Json Pojos (Also valid for rendering JsonP). This should improve Json performance a lot. (ra)
2013-12-14 Fixed a performance bug where output streams / outputwriters were not properly closed. This affected the performance of rendering raw Strings and raw byte arrays. (ra)
2013-12-14 NinjaDocTester added ability to getInjector and get arbitrary guice objects inside Test classes. (ra)
2013-12-14 Added Results.text() as helper to render plain text (ra)
2013-12-14 Fixed getInjector() behavior of NinjaServletListener. Multiple calling of getInjector() caused the generation of multiple Ninja instances what is wrong. (ra)
2013-12-14 Streamlined test-utilities. Now all Ninja*Tests start a new Ninja server before each test. (NinjaDocTester for instance started Ninja before each class. That was inconsistent) (ra).
2013-12-14 Bump to org.doctester 1.1.1 and fluentlenium 0.9.1 (ra).
2013-12-15 Fixed bug in result.renderRaw(). Used outputStream to render strings, will lead to problems with utf-8 characters.
Version 2.3.0
2013-11-14 Tiny fix for sometimes flaky testcase. Added a flush to setup step. (ra)
2013-11-21 Added support for DocTester based tests. (ra)
2013-11-21 Working version of ninja-maven-plugin. Hot reload for Ninja without PermGen errors. (ra)
2013-11-28 Changed naming convention for i18n files from messages.en.properties to messages_en.properties. This allows IntelliJ, Netbeans to recognize those files as translateable and provide i18n editors. (amsz, ra)
2013-11-29 Fixed potential bug in i18n module. Locale was not set when parsing locale sensitive special MessageFormat patterns like {0, date} (ra)
Version 2.2.0
2013-11-05 New NinjaDaoTestBase class to facilitate test your DAOs with a real database (emiguelt)
2013-11-06 Set general log level of archetypes and integration tests to “info” (ra)
2013-11-08 Access to application injector from NinjaTest (paweld2)
2013-11-13 Dependencies and plugin versions now centrally managed in parent pom.xml (ra)
2013-11-13 Bump to ehcache 2.7.4 / Fixes dependency problem with terracotta (ra)
2013-10-30 Improvements of Validation interface - added hasBeanViolations() (an)
Version 2.0.1
2013-09-27 Removed bogus System.setProperty(test…) in NinjaJetty.java (ra)
2013-09-27 Some documentation fixes (ra)
2013-09-27 ninja-core changed from junit-dep (deprecated) to junit archetypeid (ra)
2013-09-28 Added log4j-over-slf4j - Needed for EhCache which logs via log4j by default. (ra)
2013-09-30 Possibility to change context path for standalone mode (an)
Version 2.0.0
2013-08-16 Improved Json and Xml rendering / Switch from Gson to Jackson. (ra)
2013-08-25 Added facility to render simple strings to the outputstream without invoking templating engine. (sojin, ra)
2013-08-28 Guice injector now started in mode production by default. In that course also fixed some hidden problems with JPA shutdown and eh cache registration (samliard, ra)
2013-08-28 Bump to latest javax.el interfaces and implementation (needed for validation) (ra)
2013-08-29 Rollback of hibernate-validation to 4.3.1.Final - because version 5.0.1.Final not compatible with GAE (ra)
2013-07-28 Bugfix for template loading in dev mode (modules’ templates not loaded) (ra)
2013-07-30 Changed accesses of the flash cookie from underscore syntax into “.” syntax. This is now much more consistent with the general way we access stuff inside any ftl.html file. (ra)
2013-07-30 Direct streaming from assets folder without jetty reload in dev mode. Cool for developing js apps inside the assets folder. (ra)
2013-08-05 Fixed bug in OPTION method of routes. (ra)
2013-08-06 Switch to logback - exlusion of commons-logging in pom (ra)