Butterfly Container - Change History
This list shows what features and / or bug fixes the various versions contain.
NOTE: Butterfly Container is now feature complete, and pretty mature, so don't expect a lot
new updates coming in the future. Butterfly Container can do a lot of stuff, and almost anything
it cannot do, that you might need, you can plugin via custom factory objects. No reason to bloat it.
In short: It's not dead. It's stable.
||This version fixes the malfunctioning Container.init() method. A minor bug that has been
present for too long. But now it's fixed.
||This version makes it possible to parse script files using a Reader instead of an InputStream.
That way you can control what character set the script file should be read as.
||This version brings support for internationalization (I18N). It also fixes a small
bug related to injecting a factory into a Map.
||This version makes "singleton" the default instantiation mode for global factories. New instance is
still default for local factories (factory calls etc.). This makes Butterfly Container Script a
better choice for your application configuration.
||This version brings easy Collection, array, and Map configuration, and the ability to assign names to the input streams
you read container scripts from. This name is used when an error is detected in the script, making
it easier to find out what file the error ocurred in. It is now also possible to have the
ScriptFactoryBuilder close the script input stream for you. This version also fixes a minor bug related
to parsing and error messages.
||This version fixes to minor bugs related to the improved error messages.
It also fixes some important bugs related to casting of parameters to
Java primitives (int, long etc.) and standard Java types like String,
BigDecimal, URL etc.
||This version brings improved error messages during parsing of factory. Earlier
versions did not always tell you the name of the factory a parser error occurred in.
This has been vastly improved.
This version also pioneers a new exception handling technique called
||This version makes it possible to replace factories at runtime. A handy feature
when unit testing.
||This version makes it possible to inject decimal numbers (like 1.99 etc.). It also
fixes problems with circular factory dependencies when using plain Java factories.
Before the Java factories had access to the whole container, meaning they could access
(= depend on) any factory in the container. Now Java factories need to specify what
factories they depend on, and will have these injected. This makes it possible to
check if the factories exist, and if the factories return the expected types.
||After feedback from John Coleman it was made possible to add plain Java factories to the container.
This was done for two reasons: First to support users that need to obfuscate their code.
Obfuscation is a bit hard to get to work with the external script files. Second, to provide
a faster alternative to the script factories. The Java factories do not use reflection when
instantiation objects, so the overhead is smaller than script factories.
||First public release of the redesigned container.
Fairly stable but lacks minor features. The first version of
the new website, jenkov.com, was built using this version and Butterfly M2 v. 1.8.0-beta
Back to Top