LazyJ Changelog

What's new in LazyJ 1.0.7

May 21, 2013
  • 2013-01-16
  • lazyj.page.BasePage
  • added set() and unset() for having common values across iterations
  • 2011-09-22
  • lazyj.DBFunctions
  • introduce getting of last generated sequence/auto-increment ID
  • 2011-09-03
  • lazyj.DBFunctions
  • remove global synchronization point, now it is serializing requests only for the same
  • database endpoint. This prevents one hanging database to bring down everything
  • 2011-08-25
  • lazyj.Format
  • toInterval shows large intervals as years if appropriate
  • 2011-05-05
  • lazyj.cache.ExpirationCache
  • when over size limits and removing an entry, remove it from the delayed queue as well
  • lazyj.RequestWrapper
  • tune gets to get the max out of -XX:+UseCompressedStrings
  • make the rest of get* methods faster by not converting the strings at all
  • 2011-03-03
  • lazyj.Utils
  • more robust handling of http content encoding
  • lazyj.ExtendedServlet, RequestWrapper and CachingStructure
  • proper caching headers that reflect the in-memory caching times
  • 2010-09-14
  • lazyj.commands.CommandOutput
  • add exit code field
  • lazyj.commands.SystemCommand
  • populate the exit code of the CommandOutput object with the process exit code
  • 2010-09-13
  • lazyj.Log
  • add log(level, message) that will fill the component with the class name of the caller
  • 2010-09-10
  • lazyj.DBFunctions
  • added composeInsert and composeUpdate
  • 2010-09-08
  • lazyj.DBFunctions
  • add getEquivalentInsert(..) methods
  • 2010-06-22
  • lazyj.Utils
  • add #getFileLines(final String file)
  • lazyj.FileLinesIterator
  • lazyj.FileLinesIterable
  • added
  • 2010-06-16
  • lazyj.page.BasePage
  • avoid NPE when the template file exists but has size 0, thus the parser is null
  • 2010-06-14
  • lazyj.mail.Sendmail
  • correctly send the HTML / plain text parts when there is an attachment
  • fix boundaries when only one of plain/html parts was given
  • 2010-03-10
  • lazyj.mail.FileTypes
  • update MIME types to Ubuntu 9.10 ones
  • add MIME types for ROOT and JDL
  • lazyj.mail.Sendmail
  • better splitting on new lines of very long headers without spaces
  • 2010-01-13
  • lazyj.page.tags.Size
  • now supports specifying the measurement unit (defaulting to B)
  • lazyj.Format
  • size() with double parameters

New in LazyJ 1.0.6 (May 21, 2013)

  • 2009-12-12
  • lazyj.page.tags.Interval
  • added
  • 2009-12-01
  • lazyj.commands.*
  • added this package to help in getting the output from a system command
  • 2009-09-16
  • lazyj.mail.Sendmail
  • refactoring of the code to first build the entire mail in memory then
  • send it to the SMTP server
  • lazyj.mail.MailUtils
  • newly added, provides for now only MX DNS lookups
  • lazyj.mail.MailFilter
  • new interface that defines how a mail filter should behave
  • lazyj.mail.filter.DKIMSigner
  • first filter, implements DomainKeys signing of the email
  • http://dkim.org/specs/rfc4871-dkimbase.html
  • http://www.agitos.de/dkim-for-java-mail-open-source-library-2.html
  • 2009-09-02
  • lazyj.StringFactory
  • improvement: use a WeakHashMap instead of String.intern()
  • lazyj.ExtendedServlet
  • improvement: properly set HTTP cache expiration and content-length, for both the
  • already-cached content and the newly generated one
  • lazyj.RequestWrapper
  • api: a new method to control the caching expiration (setCacheTimeout(..))
  • 2009-07-20
  • lazyj.page.TemplateParser
  • fix: allow module-like tags to be evaluated as normal tags if a value is set for them
  • 2009-07-17
  • lazyj.page.BasePage
  • add: expose tag set so that clients can consult it to reduce processing time
  • 2009-01-20
  • lazyj.DBFunctions
  • add: a few of methods to help in debugging connection problems
  • framework-wide
  • cleanup: nls
  • 2009-01-19
  • lazyj.DBSession
  • add: make available the encoding and decoding functions to everybody
  • 2009-01-17
  • lazyj.DBFunctions
  • api: public access to the raw JDBC connection
  • api: new constructor for pre-built JDBC URL connection strings
  • lazyj.Utils
  • add: new parameter for readFile to specify character set
  • 2009-01-01
  • lazyj.Utils
  • improvement: override UTF8->ASCII conversion of a few quotes favored by M$ office
  • 2008-12-23
  • lazyj.{Format,ExtProperties}
  • fix: use StringBuilder instead of StringBuffer

New in LazyJ 1.0.5 (May 21, 2013)

  • lazyj.mail.Sendmail:
  • fix: sending emails from Windows (PrintWriter.println() adds system-dependent end-of-line)
  • add: PrintWriter charset support, defaulting to UTF8
  • add setDebug(boolean) to print all traffic with the mail server
  • lazyj.cache.ExpirationCache:
  • improvement: make use of a single thread that watches a single global expiration queue in order to avoid spawning too many threads
  • add: removal and overwriting methods for particular keys
  • lazyj.cache.GenericLastValuesCache:
  • add: methods to refresh one entry only
  • fix: clear the null cache at refresh()
  • improvement: remember the keys for which there was a null return from resolve(), don't ask again
  • lazyj.DBFunctions
  • add: two additional methods to quickly check if we are using a PostgreSQL or a MySQL driver
  • lazyj.ExtProperties:
  • add: allow building from an InputStream directly
  • enhancement: don't bother to remember the extra set values in case we don't have a file backing anyway
  • enhancement: notify clients when a value is changed
  • lazyj.page.BasePage
  • add: support for writing to a Writer, in addition to writing to an OutputStream
  • performance: from parsing time determine the exact formatter to use, only for regexp ones keep resolving them at run time
  • fix: add "ddot" as an exact tag
  • add: "lazyj." prefix to several thread names to easily spot the framework threads in a jstack dump
  • lazyj.Utils:
  • add: getLazyjConfigFolder() to find out where the configuration files are, trying a few default folders
  • lazyj.StringFactory:
  • performance: rely on String.intern() to keep a single instance of the strings, apparently it does the job better than WeakHashMap (less memory requirements)
  • lazyj.ExtendedServlet:
  • fix: correctly determine the context and the servlet in the context of Servlet API 2.1+
  • fix: return the thread name back to the original one at exit, so that Tomcat internal threads show up nicely in the jstack dump
  • lazyj.LRUMap:
  • performance: initial size=32 instead of allocating from the start enough memory to hold max count of elements
  • lazyj.mail.FileTypes:
  • improvement: updated the MIME types list
  • lazyj.Utils:
  • add: stringToBool() that attempts to guess the boolean value of a String, in different formats
  • enhancement: make download() return the contents of the URL if the target file name is null
  • enhancement: change toBaseCharacters() to recognize special HTML characters and convert them as well
  • lazyj.mail.Sendmail:
  • performance: build the headers using a StringBuilder instead of string concatenation
  • fix: a few minor changes suggested by Findbugs
  • lazyj.DateFileWatchdog:
  • fix: stop watching a file when the watcher is destroyed
  • lazyj.LRUMap:
  • enhancement: negative sizes = unlimited number of entries
  • lazyj.page.BasePage:
  • improvement: use the generic caching mechanism to keep pre-compiled TemplateParser objects
  • lazyj.page.TemplateParser:
  • fix: correctly clear the "db" list when reloading the template from disk
  • lazyj.page.BasePage & lazyj.page.TemplateParser:
  • performance: using BasePage.comment() will actually remove the commented section, skipping the processing of the included tags as well
  • performance: other small optimizations for speed and memory consumption
  • lazyj.Utils:
  • add: new method to download content from any URL to a local file
  • lazyj.DBFunctions:
  • API change: signature of encodeArray()
  • lazyj.mail.Sendmail:
  • add: two new functions to override SMTP protocol strings with arbitrary values: setHELO() and setMAILFROM()
  • lazyj.page.BasePage:
  • improvement: make modify() use append() to do the dirty work, eliminate duplicate code
  • lazyj.page.TemplatePage:
  • add: new interface that defines a Page that can be dynamically modified
  • lazyj.page.Module:
  • fix: change function return types, to Page or TemplatePage, to break the cyclic references to BasePage
  • fix: a few other minor changes suggested by FindBugs
  • lazyj.Format:
  • improvement: display of large file sizes
  • add: method that displays sizes starting from an arbitrary measurement unit
  • add: method to display double values with a variable number of decimal places, depending on the value that is displayed
  • lazyj.jar file:
  • fix: remove .svn folders from the archive
  • lazyj.mail.Sendmail:
  • fix: double Return-Path line problem
  • lazyj.Utils:
  • add: htmlToText(String) method to help generating the plain text version of an HTML email

New in LazyJ 1.0.4 (Dec 12, 2007)

  • lazyj.mail.MailDate:
  • fix timezone offset sign
  • lazyj.widgets:
  • new package for HTML widgets. For now it only offers to build list of options
  • for "select" tags, as tree (hierarchical or full path) or as plain list, from DB queries.