Downloads
Welcome to the Induction downloads page. This page contains links to download the latest release of Induction and also links to archives of previous releases.
The archive in the distributions were created using 7-zip using the ZIP compression type flag -tzip
. You should be able to open these archives using programs that support the ZIP format. On Windows XP these archives can be viewed/extracted using the operating system’s built-in ZIP archive support.
Update Mar 10 2013: Induction 1.5.4b released! Minor release, new feature/bug fixes, upgrade recommended
Update Sep 27 2012: Induction 1.5.3b released! Minor release, new features and bug fixes, upgrade recommended
Update May 08 2011: Induction 1.5.2b released! Minor release, new features and important bug fixes, upgrade strongly recommended
Update Dec 23 2010: Induction 1.5.1b released! Minor release, new features and important bug fixes, upgrade recommended
Update Aug 16 2010: Induction 1.5.0b released! New features and important bug fixes, upgrade recommended
Update Jan 31 2010: Induction 1.4.0b released! New features and important bug fixes, upgrade recommended
Update Nov 22 2009: Induction 1.3.1b released! Has bug fixes related to request interceptors.
Update Nov 02 2009: Induction 1.3.0b released! This release introduces support for request interceptors and support for mapping hyphenated URLs to controllers/views.
Latest Release
This section highlights the latest and greatest stable version of Induction available.
Induction – release 1.5.4b - (JDK 1.4-1.6) - Mar 10, 2013
This release contains an important feature fix in the URL resolvers and a bug fix in the form parser.
Feature/bug fixes in this release:
- Feature fix: previously only the ‘/*’ pattern could be specified in the web.xml for the Induction servlet (e.g.
/* ). Now patterns that do not begin with a ‘/’ such as*.action are supported. The previous limitation was caused by Induction dispatching using only the value returned by getPathInfo() of the HttpServletRequest, now the full path constructed using getServletPath() + getPathInfo() is used.
- Bug fix: fixed a bug in the HTML form parser that prevented the use of form variables with a data type prefix (e.g. int:age) with the POST form submit method. The problem occured with browsers that URL encoded special characters (such as ‘:’) in POST data.
File | Description |
acciente-induction-1.5.4b-core.zip | This file contains the core Induction libraries, javadocs, sources and sample Induction configuration file |
acciente-induction-1.5.4b-required-libs.zip | This file contains the Apache and Freemarker libraries required to run Induction. If you already have these libraries you do not need to download this file. This file is intended as a convenient way to get the libraries for those who do not already have them. |
acciente-induction-1.5.4b-samples.zip | This file contains the source for several simple sample Induction applications |
Induction – release 1.5.2e-GAE (Experimental for Google App Engine) - (JDK 1.4-1.6) - May 08, 2011 (uploaded to Google code, Apr 18, 2011)
This is an experimental release! It is identical to 1.5.2b except that the Induction reloading classloader in 1.5.2e-GAE extends java.lang.ClassLoader instead of java.security.SecureClassLoader which is used in 1.5.2b (and all other previous releases of Induction)
File | Description |
acciente-induction-1.5.2e-GAE-core.zip | This file contains the core Induction libraries, javadocs, sources and sample Induction configuration file |
Previous Releases
This section contains links to download previous versions of Induction.
Induction – release 1.5.3b - (JDK 1.4-1.6) - Sep 27, 2012
This release contains some changes and fixes related to error dispatching, and a minor bug fix related to the form parser.
Changes in this release:
- if an error occurs during request interceptor execution it is now routed to the error controllers (if any are declared). Previously interceptor errors got propagated out as a unhandled errors.
- when attempting to find an error controller Induction now dispatches based on the root cause of the exception generated. Previously Induction dispatched based on the actual exception thrown. The previous behaviour made it impossible to have an error controller trap a specific root cause exception class since root cause exceptions typically get wrapped by upper application layers before being thrown.
Bug fixes in this release:
- Bug fix: fixed a case where the interceptor sequence may continue to execute even after a runtime error is dispatched to an error controller.
- Bug fix: fixed a bug in the HTML form parser that prevented the use of map variables (not common) in a form, an example of a map variable in a URL string is:
address[city]=Scottsdale&address[state]=AZ
. Map variables now work as expected.
File | Description |
acciente-induction-1.5.3b-core.zip | This file contains the core Induction libraries, javadocs, sources and sample Induction configuration file |
acciente-induction-1.5.3b-required-libs.zip | This file contains the Apache and Freemarker libraries required to run Induction. If you already have these libraries you do not need to download this file. This file is intended as a convenient way to get the libraries for those who do not already have them. |
acciente-induction-1.5.3b-samples.zip | This file contains the source for several simple sample Induction applications |
Induction – release 1.5.2b - (JDK 1.4-1.6) - May 08, 2011 (uploaded to Google code, Apr 18, 2011)
This release contains a few minor new features and some important bug fixes. The most important fix is for the bug that prevented Induction from detecting controllers and views when run from inside a .war file in Linux.
- User-provided templating engine implementations can now request the injection of any model in the templating engine implementation class constructor
Bug fixes in this release:
- Bug fix: the ClassFinder failed to work correctly when scanning a .war file’s contents in Linux/Unix since it was stripping the leading / in path used to scan the file system
File | Description |
acciente-induction-1.5.2b-core.zip | This file contains the core Induction libraries, javadocs, sources and sample Induction configuration file |
acciente-induction-1.5.2b-required-libs.zip | This file contains the Apache and Freemarker libraries required to run Induction. If you already have these libraries you do not need to download this file. This file is intended as a convenient way to get the libraries for those who do not already have them. |
acciente-induction-1.5.2b-samples.zip | This file contains the source for several simple sample Induction applications |
Induction – release 1.5.1b - (JDK 1.4-1.6) - Dec 23, 2010
This release contains a few minor new features and some important bug fixes. The most important fix is for the bug that prevented Induction from working correctly in the GlassFish 3.0.1 built-in web container.
- Support for a new
static
model scope.- The
static
model scope is broader than the previous broadest scope, which was theapplication
model scope. Anapplication
scope model has one instance per Induction dispatcher servlet, while the astatic
scope model has one instance per servlet context. - The new
static
scope is useful for models that need to be shared across Induction dispatcher instances. For example thestatic
scope could be use to provide access to a shared J2EEjavax.naming.InitialContext
instance.
- The
- Enhanced meta information in the ViewExecutorException and ControllerExecutorException exception classes.
- The goal of this enhancement is to provide better information to an error controller about the view or controller in which an error occured.
- New
getList()
andgetMap()
methods in the Induction form object to provide more streamlined access to list and map parameters in an HTML form.- Previously developers had to use the
getObject()
method and typecast the return value.
- Previously developers had to use the
- The
ShortURLRedirectResolver
now supports the<class-replace>
directive.- The directive has the same sematics as the
<class-replace>
directive used by the forward resolvingShortURLViewResolver
andShortURLControllerResolver
that already support this directive. - This directive is specified in
<class-to-url-map>
block in the<redirect-mapping>
section.
- The directive has the same sematics as the
Bug fixes in this release:
- Bug fix: The Induction dispatcher servlet’s
init()
method now has a call tosuper.init()
.- The absence of this
super.init()
call caused GlassFish 3.0.1 to call theinit()
method of the Induction servlet for every request!
- The absence of this
- Bug fix: Attempting to access a form variable on a HTML form for which no form data was submitted now correctly throws a
FormException
instead of returning anull
value.- Previously a
FormException
was thrown only if some form data was submitted but no data was submitted for the requested parameter.
- Previously a
File | Description |
acciente-induction-1.5.1b-core.zip | This file contains the core Induction libraries, javadocs, sources and sample Induction configuration file |
acciente-induction-1.5.1b-required-libs.zip | This file contains the Apache and Freemarker libraries required to run Induction. If you already have these libraries you do not need to download this file. This file is intended as a convenient way to get the libraries for those who do not already have them. |
acciente-induction-1.5.1b-samples.zip | This file contains the source for several simple sample Induction applications |
Induction – release 1.5.0b - (JDK 1.4-1.6) - Aug 16, 2010
This release has several important changes summarized below:
- Enhanced controller and views resolver interfaces (more details here) now support dependency injection in the new
resolveRequest()
andresolveThrowable()
methods- Backwards compatibility note: The new methods replace the previous overloaded
resolve()
methods, so any pre-1.5.0b custom resolvers need thereresolve()
methods renamed to work with 1.5.0b. If you use the standard resolvers that come with Induction no changes are needed.
- Backwards compatibility note: The new methods replace the previous overloaded
- A new URLResolver class to provide access to Induction’s URL mapping engine. The URLResolver provides access to the class to URL resolution mechanism used by the RedirectResolver.
- The URLResolver is the final piece required to enable writing fully URL independent applications using Induction. It was inadvertently left-out until this release! Thanks to Pierre Lavignotte for raising awareness of this issue on the user group!
- View-to-view injection support. If a view type A is declared in the constructor formal parameter list of view B, then an instance of view A is automatically injected into view B’s constructor.
Bug fixes in this release:
- Bug fix:
Form
objects are now correctly cached within request scope (previously a new object was created each time, causing failure when the Form is requested from more than one context per request) - Bug fix: Form parser now correctly handles array parameters of the form
foobar[]
. - Bug fix: Fixed a bug in the ReloadingClassLoader that resulted in infinite recursion when loading a classes with certain types of cyclic dependencies
File | Description |
acciente-induction-1.5.0b-core.zip | This file contains the core Induction libraries, javadocs, sources and sample Induction configuration file |
acciente-induction-1.5.0b-required-libs.zip | This file contains the Apache and Freemarker libraries required to run Induction. If you already have these libraries you do not need to download this file. This file is intended as a convenient way to get the libraries for those who do not already have them. |
acciente-induction-1.5.0b-samples.zip | This file contains the source for several simple sample Induction applications |
Induction – release 1.4.0b - (JDK 1.4-1.6) - Jan 31, 2010
This release has several important changes summarized below:
- New support for error handlers
- New
<error-to-class-map>
directive in config XML to configure error handlers - ControllerResolver interface has a new resolve() method to to support resolving an exception to a controller
- New
- New template output buffering (feature suggested by David Nia)
- The output of a template is sent to the client only if the template completes without errors.
- Since now nothing is written to the client for a template that errors, this means:
- A user no longer sees the messy stack trace generated by most templating engines
- The error handler you write, now has more options, such as returning a redirect or error code to the client (since no writing was started on the response)
- The implementation (re)uses StringWriters from a pool to conserve memory and improve performance
- Improvements in reporting of errors that occur during controller/view execution
Bug fixes in this release:
- Request scope models were not being cached within the scope of the HTTP request context. As a result each time the injection of a request scope model is requested (say first in an interceptor and and then in a controller), a new model gets incorrectly created
- Changes to request model classes were not being detected/hot deployed
File | Description |
acciente-induction-1.4.0b-core.zip | This file contains the core Induction libraries, javadocs, sources and sample Induction configuration file |
acciente-induction-1.4.0b-required-libs.zip | This file contains the Apache and Freemarker libraries required to run Induction. If you already have these libraries you do not need to download this file. This file is intended as a convenient way to get the libraries for those who do not already have them. |
acciente-induction-1.4.0b-samples.zip | This file contains the source for several simple sample Induction applications |
Induction – release 1.3.1b - (JDK 1.4-1.6) - Nov 22, 2009
This release was made primarily to include a bug fix that missed the 1.3.0b release.
Bug fixes in this release:
- Injecting the ControllerResolver.Resolution or ViewResolver.Resolution in a request interceptor incorrectly threw an exception if resolution objects were null.
- Now throws an exception when an attempt is made to access a session scope model from a context in which no session is available, previously this caused a NullPtrEx (in the ModelPool class)
File | Description |
acciente-induction-1.3.1b-core.zip | This file contains the core Induction libraries, javadocs, sources and sample Induction configuration file |
acciente-induction-1.3.1b-required-libs.zip | This file contains the Apache and Freemarker libraries required to run Induction. If you already have these libraries you do not need to download this file. This file is intended as a convenient way to get the libraries for those who do not already have them. |
acciente-induction-1.3.1b-samples.zip | This file contains the source for several simple sample Induction applications |
Induction – release 1.3.0b - (JDK 1.4-1.6) - Nov 02, 2009
This release introduces support for request interceptors and support for mapping hyphenated URLs to controllers/views.
New features in this release:
- Powerful new support for request interceptors backed by the same zero-configuration type-based dependency injection support currently available in Induction controllers.
- The ShortURL resolvers are enhanced to support a new
<class-replace>
directive in the<url-to-class-map>
section of the Induction configuration. This directive allows a character in a URL that is not legal in a Java class name to be replaced with a character that is legal in a Java class. For example, this directive can be used to map a hypen in URL to, say, an underscore in a controller or views class name. Induction becomes the only MVC framework to date that supports mapping a hyphenated URL to a controller/view, even though the mapping are established via dynamic discovery with no individual controller/view mapping definitions (please look at the sample Induction configuration XML for examples on how to specify the directive).
Bug fixes in this release:
- The ShortURL resolver regexs now do case insensitive pattern matching.
- Previously specifying
false
for the<init-on-startup>
directive incorrectly generated a configuration exception.
File | Description |
acciente-induction-1.3.0b-core.zip | This file contains the core Induction libraries, javadocs, sources and sample Induction configuration file |
acciente-induction-1.3.0b-required-libs.zip | This file contains the Apache and Freemarker libraries required to run Induction. If you already have these libraries you do not need to download this file. This file is intended as a convenient way to get the libraries for those who do not already have them. |
acciente-induction-1.3.0b-samples.zip | This file contains the source for several simple sample Induction applications |
Induction – release 1.2.0b - (JDK 1.4-1.6) - Jun 10, 2009
Induction v1.2.0b has major new features and several enhancements. A summary of the changes follow:
Features in this release:
- New support for directly mapping a URL to a view. This is a whole new subsystem which means there is now a view resolver in addition to the already existing controller and redirect resolvers.
- New support for controllers to return a view type in addition to the previous support for returning a view instance. If a view type is returned, Induction will instantiate the view type (with dependency injection on the view constructor parameters)
- The previous simplistic default resolver implementation are now replaced with powerful, production-quality, regex-driven resolvers. The new resolvers “discover” controllers and views (using a configured regex pattern) and are capable of mapping short URLs to controller and view classes straight out of the box (for example it can easily and efficiently resolve /login.action to class named, say, myapp.security.LoginController). The new resolvers are configured using new three new configuration sections in the Induction configuration XML. The sections are
<controller-mapping>
,<view-mapping>
and<redirect-mapping>
.
- New
<include-config ...>
directive in the Induction configuration XML.
- New
<init-on-startup ...>
directive to support initializing application scope models on startup.
- And other enhancements to expand access to system level objects (such as the templating engine and classloader) in controllers and views for use by specialized applications.
File | Description |
acciente-induction-1.2.0b-core.zip | This file contains the core Induction libraries, javadocs, sources and sample Induction configuration file |
acciente-induction-1.2.0b-required-libs.zip | This file contains the Apache and Freemarker libraries required to run Induction. If you already have these libraries you do not need to download this file. This file is intended as a convenient way to get the libraries for those who do not already have them. |
acciente-induction-1.2.0b-samples.zip | This file contains the source for several simple sample Induction applications |
Induction – release 1.1.4b - (JDK 1.4, 1.5, 1.6) - Oct 12, 2008
This release introduces the following new features:
- Ability to inject models into ControllerResolver and RedirectResolver implementations (this feature was motivated by applications that used models to implement advanced modular configuration management. This feature now allows access to model objects early in the Induction initialization process)
- Ability to inject Induction’s reloading classloader into model constructors. This is accomplished by declaring a parameter of type
java.lang.Classloader
in the model constructor.
- The reloading classloader now implements the
getResourceAsStream
method. This allows applications to use the Induction classloader to load resources.
- Ability to inject Induction’s templating engine into model constructors. This is accomplished by declaring a parameter of type
com.acciente.induction.template.TemplatingEngine
in the model constructor.
- The built-in Freemarker template engine plug-in now ignores any non-existent directories in the template path. Previously non-existent directories caused the Freeemarker template engine plug-in to throw a runtime exception that prevented Induction from starting.
This release fixes the following bugs discovered since the previous release:
- Incorrect return type for the
getInputStream
method in theFileHandle
class. - Models classes which used factory classes were getting reloaded when no reload was necessary.
File | Description |
acciente-induction-1.1.4b-core.zip | This file contains the core Induction libraries, javadocs, sources and sample Induction configuration file |
acciente-induction-1.1.4b-required-libs.zip | This file contains the Apache and Freemarker libraries required to run Induction. If you already have these libraries you do not need to download this file. This file is intended as a convenient way to get the libraries for those who do not already have them. |
acciente-induction-1.1.4b-samples.zip | This file contains the source for several simple sample Induction applications |
Induction – release 1.1.3b - (JDK 1.4, 1.5, 1.6) - Jul 24, 2008
This is a bug fix release. This release fixes the following bugs reported on Jul 23, 2008:
- Injection of HttpServletRequest into a model constructor fails
- Reloading classloader fails attempting to load an array class
This release also introduces improved packaging. This release contains separate binaries (inside the file acciente-induction-1.1.3b-core.zip
) compiled with JDK 1.4 and JDK 1.6. If you are using JDK 1.6 you may use the JDK 1.6 binaries, otherwise for JDK 1.5 and JDK 1.4 use the JDK 1.4 binaries.
File | Description |
acciente-induction-1.1.3b-core.zip | This file contains the core Induction libraries, javadocs, sources and sample Induction configuration file |
acciente-induction-1.1.3b-required-libs.zip | This file contains the Apache and Freemarker libraries required to run Induction. If you already have these libraries you do not need to download this file. This file is intended as a convenient way to get the libraries for those who do not already have them. |
acciente-induction-1.1.3b-samples.zip | This file contains the source for several simple sample Induction applications |
Induction – release 1.1.2b-jdk1_4 - (JDK 1.4, 1.5, 1.6) - Jul 16, 2008
This beta release was created since v1.1.1b was compiled with JDK 1.6 (Java 6). This release is compiled with JDK 1.4. The functionality of this release is identical to v1.1.1b below. Also the samples and required libs from 1.1.1b are unchanged.
File | Description |
acciente-induction-1.1.2b-jdk1_4-core.zip | This file contains the core Induction libraries, javadocs, sources and sample Induction configuration file |
acciente-induction-1.1.1b-required-libs.zip | This file contains the Apache and Freemarker libraries required to run Induction. If you already have these libraries you do not need to download this file. This file is intended as a convenient way to get the libraries for those who do not already have them. |
acciente-induction-1.1.1b-samples.zip | This file contains the source for several simple sample Induction applications |
Induction – release 1.1.1b - (JDK 1.6 only!) - Jun 28, 2008
This is the first publicly released beta version of Induction. This version of Induction was compiled with JDK 1.6 (Java 6). Changes in this release from the 1.1.0b limited beta release are:
- new feature: controller resolution object now supports a new “options” property
- this property was introduced to enable the controller resolver to parameterize the controllers behaviour based on information in the originating request
- bug fix: there were cases when the model definition data was not being loaded correctly by XML config loader
- bug fix: removed reference to Freemarker’s TemplateException class in the Induction TemplateEngine interface
- the TemplateEngine interface should not (and now does not) have any dependency on any templating engine implementation
File | Description |
acciente-induction-1.1.1b-core.zip | This file contains the core Induction libraries, javadocs, sources and sample Induction configuration file |
acciente-induction-1.1.1b-required-libs.zip | This file contains the Apache and Freemarker libraries required to run Induction. If you already have these libraries you do not need to download this file. This file is intended as a convenient way to get the libraries for those who do not already have them. |
acciente-induction-1.1.1b-samples.zip | This file contains the source for several simple sample Induction applications |