Spiffy is a collection of well tested and efficient best practice utility methods and classes. Most of the code has been applied in industrial settings with great results. The aim of this code is to remedy design flaws or insufficiencies in existing API's or make tedious interactions with the API straight forward. For example, there is great stuff to be discovered in the JUnitHelper or the LoggerHelper. Given the nature of utility classes, they are often copy/pasted from project to project, rather than centralized for reuse. The aim of the Spiffy framework is to collect and present the best and most often used helpers in industry in one package.

Spiffy Objectives

The goals of Spiffy:
  • To collect and centralize "utility abstractions"
  • To serve as a repository of knowledge/smart ideas for programmers to learn
A good description of Spiffy is a utility tool-box sitting in-between other frameworks making them easier to use. Spiffy does not limit the frameworks it may target. Any utility code for any framework is welcome.

The current spirit of Spiffy is to cover real-life usage over theoretical completeness. Hence there may exist a utility method for easily creating ArrayList's without necessarily a method existing for easily creating LinkedList. Should you find yourself using LinkedList's, you are still in a fortunate situation. You are more than welcome to copy the code+test for ArrayList creations and amend them to support LinkedList. Submit your code (see below) which in term may be part of subsequent releases.

Join the debate

The current stage of Spiffy is the ALPHA stage, and as such, everything is up for debate. Please join the forums for comments/ideas on existing features or missing features.

Submitting code

Forums (see link in the menu) are ideal for code submission as it invites debates on idea, implementation etc. If you don't want to submit code through the forums, you may mail me at spiffy . code at gmail . com. Please use subject spiffycode to allow me to quicker sort spam from gold (your mails ;-)


To prevent bloat, Spiffy is to be distributed in a very modular way. A core (spiffy_core.jar) forms the foundation and dependency for all other modules (jar files) for each supported framework/API. See the figure. At the present time of writing, we have not yet split the framework into multiple modules, hence only a spiffy_all.jar is available.

The java package structure within each module should conform to the package structure of the target API. Hence, a StringHelper for the class java.lang.String naturally fit in the package spiffy.core.lang.

The code is distributed along side the jar file. This is a deliberate move to enable the programmer to quickly identify precisely how a given utility method operates, and to quickly extend or modify it.

Version history

v0.5, 05.2008
  • A whole new helper class dedicated to Log4J
  • added keySet() to TwoDHashMap and ThreeDHashMap
  • added getAs2d() to ThreeDHashMap returning a TwoDHashMap

Upgrade guide: Just replace your spiffy.jar file...

v0.3, 02.2008
  • A whole new helper class dedicated to Struts 1 helpers
  • - Given a string check to see if it is in a collection of strings
  • StringHelper.inAndNotEmpty() - Given a string, trim it, and if different from the string "", check to see if it is in a collection of strings

Upgrade guide: Just replace your spiffy.jar file...

See also my other quality projects