[Index]

JHPropertiesTyped - Release Notes


2.0 (2015-08-05)

  • New major Features

  • New major feature - XmlAdapter implementations for most PropertyTypes (to use with JAXB for XML), see more info XML Adapters in JHPropertyTypes and XML Adapters in JHPropertyTypesExtensions
  • New major feature - JSF Validator implementations for most PropertyTypes, see more info JSF Validators in JHPropertyTypesExtensions
  • New major feature - ResourceFilePropertyIO is now deprecated, and divided into ResourceStreamPropertyIO and ResourceBundlePropertyIO. ResourceFilePropertyIO will be DELETED in next version.
  • New major feature - new PropertyIO - ResourceBundlePropertyIO - replaces part of ResourceFilePropertyIO.
  • New major feature - new PropertyIO - ResourceStreamPropertyIO - replaces part of ResourceFilePropertyIO.
  • #
  • New Features

  • New feature - Can now initialize the RootDirectoryNode with a file, added a new method "public final void initialize(File rootDirectory)"
  • New feature - DateTimePropertyType now has minValue/maxValue attributes to set a valid range which the Date value must be inside of. (Optional)
  • New feature - FilePropertyIO now use CommentedProperties instead of Properties, so comments are preserved.
  • New feature - TimeSpanPropertyType now has minValue/maxValue attributes to set a valid range which the TimeSpan value must be inside of. (Optional)
  • New feature - TimeUnitPropertyType now has minValue/maxValue attributes to set a valid range which the TimeSpan value must be inside of. (Optional)
  • New feature - Added utility XMLFileIO for reading and writing a xml object to and from file.
  • New feature - Encryption interface added, used by PasswordEncryption and AbstractPasswordEncryption. Added for future used if we choose to implements encryption for PropertyIO.
  • New feature - New ColorFormat supported - CMYKColorFormat - by request from users.
  • New feature - New ColorFormat supported - YUVColorFormat
  • New feature - New PropertyChangeListener abstract implementation "OnChangePropertyChangeListener", which is trigger when the Property is succesfully changed.
  • New feature - New PropertyType - BigIntegerPropertyType - by request from users.
  • New feature - New PropertyType - BigDecimalPropertyType - by request from users.
  • New feature - MapUtils - Static utility methods for Hashtables, HashMaps, HashSets and Map.
  • New feature - New TypeFromGeneric implementation KeyValuesFromTextFile which is a quick reader for adhoc multi valued properties.
  • New feature - New TypeFromGeneric implementation KeyMultiLineValuesFromTextFile which is a quick reader for adhoc multi valued multi line properties.
  • New feature - Created AbstractFilePropertyIO, from which several PropertyIO is now inherited from and some methods is pushed up to. (FilePropertyIO,AbstractXMLFilePropertyIO)
  • #
  • Changes

  • Changes - Removed the method "getId" from "PropertyChangeListener" class, it is an unnessecary method.
  • Changes - New "dk.heick.properties.types.interfaces.Range" interface, which forces an uniform implementation of PropertyTypes with an optional minValue and maxValue restrictions.
  • Changes - New "dk.heick.properties.types.utils.RangeUtils" static class which implements the <T> version of Range#validateMinMaxValues and Range#validateIsInRange.
  • Changes - All Range type PropertyTypes now validates that default value is inside the valid range.
  • Changes - ColorPropertyType now will/can now use the same (last) ColorFormat to save the Color as String, which it use to load. This can be set on the ColorPropertyType instance.
  • Changes - Updates in javadoc and documentation.
  • Changes - New method "public String generatePassword();" to "PasswordEvaluator"
  • Changes - AESPasswordEncryption deleted - Renamed/refactored to AESEncryption
  • Changes - PasswordEncryption interface updates
  • Changes - TimeSpan now has two new method "isLessThan" and "isGreatherThan"
  • Changes - TimeSpan now has new methods for add, substract and multiply.
  • Changes - TimeSpan now throws a IllegalArgumentException if the millisecond value is less than zero. This will result in a PropertyException in TimeSpanPropertyType in the "validateValue" method.
  • Changes - TypeUtils.isInList is removed, duplicate method in ArrayUtils.isInArray
  • Changes - TypeUtils.toString(T[] a,String divider) moved to ArrayUtils
  • Changes - TypeUtils renamed to GenericFilterUtils
  • Changes - Cleaned up in JHPropertiesTypeWebDemo.
  • Changes - PrintLines renamed to SystemOutUtils - it is a better class name.
  • Changes - Refined ant scripts, automate everything.
  • Changes - Standardized performance logging message with two new methods in AbstractPropertyIO - "logPerformanceGetProperties(start)" and "logPerformanceSetValue(propertyName,start)".
  • Changes - Standardized readonly handling and message in AbstractPropertyIO, with new method - "validateWritable(propertyName)".
  • Changes - PropertyExposedFieldCollection, PropertyExposedFinalFieldCollection and PropertyStaticCollection was declared abstract, they typically always inherited but there is no need for them to be abstract.
  • #
  • Bugfixes

  • Bugfix - PropertyTypes with range possibilty, could have default value outside the range defined for the PropertyType, this is now checked during "validateConstraints".
  • Bugfix - CommentedProperties had an error when loading with a Reader, the stream was closed to soon. Removed the method for using a reader, it has never worked.
  • Bugfix - Fixes wrong example code for XmlFileDemoProperties
  • Bugfix - Javadoc now has working link to JavaAPI when references is made to them i @see etc.
  • Bugfix - Cleaned up a bit in JHPropertiesTypedWebDemo, added some missing properties and renderers, will have a bit more focus in the future, it is really nice to have as reference.
  • Bugfix - Fixed NullPointerException in ProxyPropertyType toString() method.
  • Bugfix - Fixed bug in CompositePropertyIOFactory, not adding file to list when trying to locate them.
  • Bugfix - Fixed bug in RenderFactory in web, did not properly detect a DerivedPropertyType.
  • Bugfix - Updated documentation for PropertyCollection's.
  • Bugfix - PBKDF2Encryption was mentioned in the documentation, NO implementation of PBKDF2 encryption is currently in the framework, documentation updated.
  • Bugfix - Updated documentation for PropertyTypes in JHPropertyTypes and JHPropertyTypesExtension, default optional values .
  • #

1.9 (2015-03-03)

  • New PropertyTypes

  • New feature - New LatLngPropertyType which can parse a Latitude and Longitude value. Including a large library for LatLng calculcations.
  • New feature - New MimeTypePropertyType which can parse to a javax.activation.MimeType value.
  • New feature - New TimeSpanPropertyType which can parse to a dk.heick.properties.types.custom.TimeSpan value.
  • New feature - New ProxyPropertyType you can define a java.net.Proxy.
  • New feature - New reimplemented FilenameFilterPropertyType is now initialized with instances of AbstractStringFilenameFilter, currently two implementations RegularExpressionFilenameFilter and WildCardFilenameFilter.
  • #
  • New PropertyTypes Definition

  • Major New feature - DerivedPropertyType - The ability to load context derived from other Properties (multiple), example has a property which returns the contense of a file, where the file is also defined as a Property
    • Major New feature - DerivedFromTypePropertyType - Class which has derived functionallity from one Property to a Type. Generic class.
    • Major New feature - FileDerivedPropertyType - Class which load the contense of a file into type T, Generic class.
    • Major New feature - URLDerivedPropertyType - Class which load the contense of a URL into type T, Generic class.
    • Major New feature - TextFromFilePropertyType - Class which load the contense of a file into a String.
    • Major New feature - PublicKeyFilePropertyType - Load a public key from file.
    • Major New feature - PrivateKeyFilePropertyType - Load a private key from file.
    • Major New feature - CertificateSignedFilePropertyType - Loads and validates from certificate a signed file.
    • Major New feature - BytesFromFilePropertyType - Class which load the contense of a file into a byte array.
    • Major New feature - CertificatesFilePropertyType - Loads all cerfiticates from a a file.
    • Major New feature - CertificateKeyStoredPropertyType - Loads cerfiticate from a keystore.
    • Major New feature - KeySignedFilePropertyType - Loads and validates from key a signed file.
    • Major New feature - KeyStoreFilePropertyType - Loads a keystore
    • Major New feature - ImageFromFilePropertyType - Loads an image from an File.
    • Major New feature - ImageFromURLPropertyType - Loads an Image from URL.
    • Major New feature - TypeListFromTextFilePropertyType - Load a file where each line is converted to a <T> type, and a List of these is returned.
  • #
  • New PropertyIO Capabilities

  • Major New feature - Now able to set cache time on PropertyIO, so it will automatically reload after X ms, default is NONE(-1) is set with global parameter. Can be set individual.
  • Major New feature - It is now possible to set a cache time for PropertyIO's, the amount of milliseconds before the typed value cache is invalidated and the properties will be automatically reloaded at next access. The default value is set from PropertyFrameworkGlobals to -1, which mean that per default no cache timeout is enabled. The value can be set globally in or for the individual PropertyIO. This is usual done in the method PropertyCollection.preValidation().
  • New feature - New PropertyIO to load manifest files, ManifestPropertyIO.
  • New feature - AbstractURLPropertyIO added, as an abstract PropertyIO for getting Properties via an URL.
  • New feature - Now able to set cache time on PropertyIO, so it will automatically reload after X ms, 0 means never automatically reload.
  • #
  • Changed PropertyType Capabilities

  • New feature - FilterFileNode for FileStructurePropertyType.
  • Changes - Posssible to overload the DNS url use to verify the domain in EmailPropertyType, default is the internal URL provided.
  • Changes - New constructors added to URLPropertyType, so defaultValue URL given to the constructor as an String.
  • Changes - EmailPropertyType, do not use Preferences.getSystem(...), but instead have static methods for timeout and retries, used when checking the MX record for the email domain.
  • Bugfix - AbstractPropertyIO fixed an NullPointerException if the Properties could not be loaded in the "getValue(String)" method. Instead of a NullPointerException, null is returned.
  • Bugfix - URLPropertyType description now includes proxy and URLValidator setup.
  • Bugfix - Fixed EmailPropertyType bug when cheking email domains "Prefs at root 0x80000002. Windows RegCreateKeyEx(...)", used Preferences,getSystem(...)
  • #
  • Changed PropertyFrameworkGlobals Capabilities

  • Major New feature - Loading PropertyFrameworkGlobals from global properties file "jhpropertiestypes.global.properties"
  • New feature - Log performance for all methods, PropertyType around "toType" / PropertyIO around "getProperties" / PropertyCollection around "initialize". With a new PropertyFrameworkGlobals "logDebugFrameworkPerformance" as a property "global.log.debug.framework.performance"
  • Changes - Change default double precision in PropertyFrameworkGlobals to "0.00000000001".
  • #
  • Changed PropertyCollection Capabilities

  • New feature - PropertyCollectionLocator class which can get any registered Property.
  • New feature - PropertyCollectionRegistry has a lastUdpated added
  • New feature - PropertyCollection has new method "getName" which is used to identify the PropertyCollection in the PropertyCollectionRegistry.
  • New feature - PropertyCollection has new method "getRegistryTimeout()" which is used to specify how long a collection has to be stored in the PropertyCollectionRegistry.
  • Changes - Static class PropertyInitializationPriorityComparator in class PropertyCollectionFactory moved to seperate class in collections package, why? - It just seemed cleaner.
  • Changes - SystemPropertiesCollection now has a static initializer.
  • #
  • Other Changes and Bugfixes

  • New feature - URLUtils class added, can construct a URL without a checked exception.
  • New feature - ByteSizeVO now have a "parse(String)" method
  • New feature - Some new PropertyTypes have the javadoc annotation @Version, this is only when Im not sure they are completely correct.
  • Changes - Method in class "Property#isValid()" is now final.
  • Changes - In DefaultURLValidator the value for DEFAULT_TESTCONNECTION_TIMEOUT_IN_MILLISECONDS has been changed from 10000 to 4000 milliseconds.
  • Changes - Renamed "URLTester" to "URLValidator" to have consistent naming.
  • Changes - Renamed "DefaultURLTester" to "DefaultURLValidator" to have consistent naming.
  • Changes - Renamed "NoURLTester" to "NoURLValidator" to have consistent naming.
  • Changes - Renamed "URLPropertyType#getUrlTester" to "URLPropertyType#getURLValidator" to have consistent naming.
  • Changes - Renamed "URLPropertyType#setUrlTester" to "URLPropertyType#setURLValidator" to have consistent naming.
  • Changes - Renamed "URLPropertyType#NO_URL_TEST" to "URLPropertyType#NO_URL_VALIDATOR" to have consistent naming.
  • Changes - AbstractTreeNode.getFile() is not "final" any more. Reason that "FilterFileNode" needed to override it.
  • Changes - DefaultXmlFileValidator has a additional constructor which loads schema URL as class resource
  • Changes - Renamed "IListPropertyType" to "MarkerListPropertyType" and moved to package "dk.heick.properties.types.interfaces.markers". I dont like the "I*" notation.
  • Changes - Renamed "IPasswordPropertyType" to "MarkerPasswordPropertyType" and moved to package "dk.heick.properties.types.interfaces.markers". I dont like the "I*" notation.
  • Changes - Renamed "IPathPropertyType" to "MarkerPathPropertyType" and moved to package "dk.heick.properties.types.interfaces.markers". I dont like the "I*" notation.
  • Changes - Renamed "IProxyDependent" to "MarkerProxyDependent" and moved to package "dk.heick.properties.types.interfaces.markers". I dont like the "I*" notation.
  • Changes - Renamed "ISubPropertyType" to "MarkerSubPropertyType" and moved to package "dk.heick.properties.types.interfaces.markers". I dont like the "I*" notation.
  • Changes - Renamed arguments "name" to "propertyName" where ever its appropiate, to get the namespace more clearly defined.
  • Changes - Add "final" where ever a "String propertyName".
  • Changes - Updated code with consistent naming of "propertyName" instead of "name" in some case.
  • Changes - Upgraded the javadoc.
  • Bugfix - Removed spelling mistakes Propety to Property, and DTO to VO.
  • #
  • Web Changes

  • New feature - In JHPropertiesTypedWebDemo now has the ability to view all global settings and, and the ability to set default proxy.
  • #

1.8 (2014-10-07)

  • New feature - New CountryPropertyType, which returns Locale only on the basis of the Country.
  • New feature - Property can now retrieved description from I18N resource bundle.
  • New feature - The URLPropertyType now has the ability to test the connection on validation.
  • New feature - If the Property description starts with "$" it is assume that the string value is the key for ResourceBundle entry.
  • New feature - In PropertyFrameworkGlobals new option for "DefaultProxy", which can be used by the framework if needed.
  • New feature - In PropertyFrameworkGlobals new option for "DisardValueQuotes", which determines values loaded from PropertyIO should have any "" or '' removed before further validation.
  • New feature - In PropertyFrameworkGlobals new option for "PropertyDescriptionLocalizer", which is an implementation of the Localizer, from where Property will retrieve the description. Default is null.
  • New feature - PropertyFieldCollection which implements PropertCollection, where a PropertyFieldFilter determines which fields to initialize.
  • New feature - PropertyExposedFieldCollection which extends PropertyFieldCollection, which initialize all public and protected fields.
  • New feature - PropertyExposedFinalFieldCollection which extends PropertyFieldCollection, which initialize all final and public/protected fields.
  • New feature - AbstractHttpPropertyIO which wraps common HttpRequest features.
  • New feature - HttpResponseHeadersPropertyIO which extends AbstractHttpPropertyIO, handles HttpResponse headers.
  • New feature - HttpRequestParamsPropertyIO which extends AbstractHttpPropertyIO, handles HttpRequest parameters.
  • New feature - HttpRequestHeadersPropertyIO which extends AbstractHttpPropertyIO, handles HttpRequest headers.
  • New feature - HttpRequestPropertyIO which extends AbstractHttpPropertyIO, handles both HttpRequest parameters and headers.
  • New feature - PropertyFieldFilter
  • New feature - PropertyFieldFilterFactory
  • ---###---
  • Changes - Property class now has a "getI18NName()" method which generates a name for retrieving the property description, if the property description is null.
  • Changes - "Quotation Mark" and "Apostrophe" around values can now be removed before a PropertyType validates the value, its a new optional parameter in PropertyFrameworkGlobals, which is default false.
  • Changes - PropertyFrameworkGlobals now in alphabetical order in documentation.
  • Changes - HttpCookiesPropertyIO moved from package "dk.heick.properties.io.specialized" to "dk.heick.properties.io.http".
  • Changes - HttpCookiesPropertyIO will not throw a NullPointerException on construction, but fail validation if HttpServletRequest or HttpServletReponse is null.
  • Changes - PropertyStaticCollection now extends PropertyFieldCollection, which initialize all static fields.
  • Changes - HttpCookiesPropertyIO now extends AbstractHttpPropertyIO
  • Changes - "JHPropertiesTypedWeb" now displayes description I18N name.
  • ---###---
  • Bugfix - Spelling mistakes fixed in AESEncryption.
  • Bugfix - DefaultDirectoryValidator, spelling mistake "wrietable" to "writeable".
  • Bugfix - In "SystemPropertiesCollection" the Property "USER_COUNTRY" has changed PropertyType from "CharsetPropertyType" to "CountryPropertyType".
  • Bugfix - Javadoc for CharsetPropertyType is copied form LocalePropertyType, fixed documentation for CharsetPropertyType.
  • Bugfix - "JHPropertiesTypedWebDemo" some options in web generation of properties do not seems to work

1.7 (2014-08-07)

  • JHPropertiesTyped
    • New feature - ColorPropertyType now you can set which ColorFormat the string reprensentation shall be as, both with Alpha value and with out.
    • New feature - ColorPropertyType now has the ability to set min and max value on color.
    • New feature - ColorPropertyType now has even more parsing abilities to validate a color string, and now with alpha value as well, can now parse formats.
      • HexColorFormat
      • HexAlphaColorFormat
      • HSVAColorFormat
      • HSVColorFormat
      • HSBAColorFormat
      • HSBColorFormat
      • HSLAColorFormat
      • HSAColorFormat
      • RGBAColorFormat
      • RGBColorFormat
      • SVGNamedColorFormat
    • New feature - PropertyCollectionRegistry where PropertyCollections is automtically registered, which gives the possible to view all constructed PropertyCollections instances.
    • New feature - New PropertyFrameworkGlobals attribute "AutoRegisterPropertyCollections", where you can turn on/off auto register of PropertyCollections in PropertyCollectionRegistry.
    • New feature - EmailPropertyType can now validate if the domain/hostname exists. Using "com.sun.jndi.dns.DnsContextFactory". There are options to turn this feature off if you want. But per default it is on.
    • New feature - Extended LdapNamePropertyType constructor with a baseDN string value which is append if needed. Either to facilite short paths or ensure correct paths.
    • New feature - New ConnectionUrlPropertyType - Validates a database connection url.
    • New feature - set/get InitializationPriority on a PropertyType. The higher the number the sooner is the Property initialized.
      There by securing that some types is loaded before others.
      Fx. when database class driver must be registred before the URL for the database is validated.
    • New feature - RangePropertyType where you can have two values (from and to) of type T (comparables) seperated by a divider.
    • New feature - IPRangePropertyType where you can define an IP range.
    • New feature - New marker interface, "ISubPropertyType" which indicates that a PropertyType has attributes which again is a PropertyType.
    • Bugfix - When setting typed values, they where not always validate against PropertyType constraints. PropertyType.toString(name,T) do not call validate - IMPORTANT to get into Write your own PropertyTypes. Be aware not to use "toString(name,T)" when generating error message, otherwise a StackOverflowError occurs.
    • Bugfix - PropertyChangeListener - fixed spelling mistake from "changeSuccessful" to "changeSuccessfull"
    • Change - Cleanup in password encryption, by adding AbstractPasswordEncryption class.
    • Change - In class "PasswordEncryption" method "isEncrypted" can no longer throw a "NullPointerException", but returns false instead.
    • Change - Moved methods "getValidCount" and "getInvalidCount" from WebUtils to PropertyCollectionUtil.
    • Change - LdapNamePropertyType, now take comma into consideration when appending baseDN, if it is present.
    • Change - Method "isEncrypted" in PasswordEncryption interface now throws a PropertyException, if the password value is encrypted with another encryption method.
    • Change - Method "setPropertyValidationHandler" added to PropertyCollection interface.
    • Framework change - Have changed the definition of PropertyType<T> from .
      From:
      			public abstract T validate(String name, String value) throws PropertyException;
      		
      To:
      			public final void T validate(String name, String value) throws PropertyException {
      				validateConstraints(name);
      				validateValue(name,value);
      			}
      			
      			public void validateConstraints(String name) throws PropertyException {
      				//DEFAULT IMPLEMENTATION
      				getLogger().debug("No constraints on Property ["+name+"] for PropertyType ["+getClass().getSimpleName()+"].");
      			}
      															
      			public abstract T validateValue(String name, String value) throws PropertyException;												
      		
      Reason:
      There are several reasons:
      1. The ability to validate the constraints as well
      2. I want to make the framework more java bean enabled, so all constraints for PropertyType has a getter and a setter.
      3. To make sure that all PropertyTypes has an empty constructor
      4. I had som user input that invalid PropertyType constraints was not caugth. This way ensure that the constraints are validated.

      Consequences:
      • If you have made your own PropertyTypes in a previous version, you will have rename "validate(name,value)" to "validateValue(name,value)",
      • and you have to consider if you need to override the implementation of "validateConstraints(name)"
      • Notify all users that uses 1.7 will have to reimplement their custom propertyTypes

1.6 (2014-01-10)

  • Framework
    • New feature - JHPropertiesTyped-Bundle-[version].jar is now being generated. This JAR includes all the classes from :
      • JHPropertiesTyped
      • JHPropertiesTypedWeb
      • JHPropertiesTypedExtensions
  • JHPropertiesTyped
    • New feature - New FontPropertyType - java.awt.Font.
    • New feature - New Point2DPropertyType - Custom type Point2D.
    • New feature - New Point3DPropertyType - Custom type Point3D.
    • New feature - HttpCookiesPropertyIO.
    • New feature - CustomPasswordEvaluator now has a 2 methods to generate password using the rules stated in the constructor.
    • Change - All classes in JHPropertiesTyped now implements Serializable.
    • Change - Include more Properties in SystemPropertiesCollection, and change some types.
    • Change - Method "sendMessage" in class ValidationMessenger, has changed so it now has an array of "to" recievers.
    • Change - Update getting_started.html with new SystemPropertiesCollection.
    • Renamed class - class PropertyValidationDTO is renamed to PropertyValidationVO to get uniform naming convention.
    • Bugfix : FilePropertyIOFactory search for files, didnt search sub dierctories properly.
    • Bugfix : SystemPropertiesCollection fixed misspelling FILE_SEPERATOR to FILE_SEPARATOR.
    • New feature : The class "PropertiesJavaDefinitionPrinter" will now automatically detects if the JHPropertiesTypedExtensions jar is present and call the "ExtensionPropertiesJavaDefinition.getExtensionTypedJavaDefinitions()" method, so it will generate extension types definitions.
    • New Feature - PropertyChangeListeners on Property
      • New interface - PropertyChangedListener add to Property class, to detect a change in a Property. Be careful of cyclic references.
      • New feature - On PropertyCollection new method "addPropertyChangeListener(...)"
      • New feature - On PropertyCollection new method "removePropertyChangeListener(...)"
      • New feature - On PropertyCollection new method "removeAllPropertyChangeListeners(...)"
      • New class - LoggingPropertyChangeListener implements PropertyChangedListener which logs changes to a property with old and new value, both when succesful and not.
      • New class - UpdateLastChangedPropertyChangeListener - updates a Date Property with current datetime, when a another Property is changed successfully.
  • JHPropertiesTypedWeb
    • New feature - New renderer - FontRenderer
    • New feature - New renderer - Point2DRenderer
    • New feature - New renderer - Point3DRenderer
    • New feature - The class "RendererFactory" will now automatically detects if the JHPropertiesTypedExtensions jar is present and call the "ExtensionsRenderFactory.registerExtensionsRenderer()" method.
    • Change - Renamed class - DateTimePropertyTypeRenderer to DateTimeRenderer
    • Change - Renamed class - PasswordPropertyTypeRenderer to PasswordRenderer
    • Change - Renamed class - StringPropertyTypeRenderer to StringRenderer
    • Bugfix - AbstractPropertyCollectionHandlingServlet - Set a property once, fine - set it twice goes to index
  • JHPropertiesTypedExtensions
    • New Feature - JHPropertiesTypedExtensions library is no included in the framework.
    • New PropertyType - QuartzCronExpressionPropertyType
    • New class - mailValidationMessenger.
    • New class -SendMessageAsEmailPropertyValidationHandler
  • JHPropertiesTypedWeb
    • New feature - Making use JHPropertiesTypedExtensions when generating properties.
    • New feature - Environment page.

1.5 (2013-11-12)

  • New Feature - New PropertyType TimeZonePropertyType
  • New Feature - New PropertyType DateFormatPropertyType
  • New Feature - New PropertyType DecimalFormatPropertyType
  • New Feature - New class CommentedProperties for load general comments and property comments besides of course the properties them self.
  • New Feature - New TimeZoneDropDownRenderer in JHPropertiesTypedWeb for TimeZonePropertyType.
  • New Feature - New helper class PrintLines
  • Change - Rewritten PropertiesJavaDefinitionPrinter, to generate definitions with comments from in properties if exists. Added new configuration parameters to customize generation.
  • Change - '0' and '1' has be removed as valid values from BooleanPropertyType, was mistaken as a number to often.

1.4 (2) (2013-10-30)

  • Change - PropertyType PasswordPropertyType has now default PasswordEncryption (AESEncryption) which is decryptable, meaning this is no more a required attribute.
  • Change - Methods added to "dk.heick.properties.collections.PropertiesJavaDefinitionPrinter".
    • "public static int generateJavaDefinition(Properties,boolean,PrintStream)"
    • "public static List<String> generateJavaDefinitionAsList(String,boolean)"
    • "public static List<String> generateJavaDefinitionAsList(Properties,boolean)"
  • Change - PropertiesJavaDefinitionPrinter do not generate properties for text lines starting with '#'.
  • Change - PropertiesJavaDefinitionPrinter will generate javadoc for text properties which starts with '##'.
  • Change - PropertiesJavaDefinitionPrinter will generate property description for text properties which starts with '#'.
  • Change - New "generate.jsp" in "JHPropertiesWebDemo" so you can paste your properties and get Property definitions generated.
  • Bugfix - Fixed bug when generating list in PropertiesJavaDefinitionPrinter. List divider was set as Property description not as list divider.

1.4 Final (2013-10-07)

  • New Feature - New PropertyType CharsetPropertyType.
  • New Feature - New CharsetRenderer for JHPropertiesTypedWeb.
  • Change - Updated FAQ.
  • Change - Updated FilePropertyIOFactory test.
  • Change - Updated PropertiesJavaDefinitionPrinter supports CharsetPropertyType.
  • Change - Updated messages in for PropertyType exceptions, some was missing name, and some had spelling mistakes, and make some of them more uniform.
  • Bugfix - EmailPropertyType did not return property name in the validate exceptions.
  • Bugfix - Wrong exception message for FilePropertyType and DirectoryPropertyType.
  • Bugfix - Fixed NullPointerException for FilePropertyIOFactory.findPropertyFiles(File).
  • Bugfix - Fixed NullPointerException for FilePropertyIOFactory.findPropertyFiles(File,String).
  • Bugfix - Missing implementation of handling PropertyFrameworkGlobalsdoValidateIPathPropertyTypes() correctly for IPathPropertyTypes.
  • Bugfix - Improved exception messaging for ListPropertyType and ListKeyValuePropertyType, now indicating which index it failed on.

1.3 Final (2013-10-01)

  • New Feature - New PropertyType LdapNamePropertyType
  • New Feature - New PropertyType URIPropertyType
  • New Feature - New PropertyIO - AbstractXMLFilePropertyIO
  • New Feature - New PropertyIO - AbstractXMLInputStreamPropertyIO
  • New Feature - New PropertyIO - InputStreamPropertyIO
  • New Feature - New PropertyIO - JBossSystemPropertiesPropertyIO, in the specialized package where all containter specific PropertyIOs, will be put.
  • New Feature - PropertiesJavaDefinitionPrinter will suggest types for LdapNamePropertyType, PasswordPropertyType, EmailPropertyType and URIPropertyType.
  • New Feature - PropertiesJavaDefinitionPrinter will suggest types for ListPropertyType.
  • New Feature - XMLUtils documentation and test
  • Change - Moved "resources/test" into "src/test/resources"
  • Change - Documentation on propertytypes updated, required value for PasswordPropertyType was under optional.
  • Change - Null allowed not in restrictions, but now PropertyTypeRenderer in JHPropertiesTypedWeb
  • Change - Documentation of XmlErrorHandler updated.
  • Change - Javadoc for ActivationValidator
  • Change - Javadoc and more testcases for ListPropertyType
  • Change - Javadoc and more testcases for ListKeyValuePropertyType
  • Change - Javadoc and more testcases for IP4AddressPropertyType
  • Change - XmlErrorHandler documentation and test

1.2 Final (2013-09-19)

  • New Feature - New global framework behaviour property "PropertyFrameworkGlobals.doAutoEncryptPasswords".
  • New Feature - New global framework behaviour property "PropertyFrameworkGlobals.doValidateIPathPropertyTypes".
  • New Feature - Class Property can be defined as "nullAllowed" as value.
  • New Feature - Better javadoc. Cleanup, spelling corrected, more examples in javadoc.
  • New Feature - Activation/CrossValidation of Properties now possible.
  • New Feature - PropertiesJavaDefinitionPrinter can suggest type.
  • New Feature - Documentation and test for concepts on values.
  • New Feature - Documentation example for PropertiesJavaDefinitionPrinter.
  • New Feature - Documentation on where to setup globals.
  • New Feature - Better documentation.
  • New Feature - More javadoc for PasswordPropertyType, on autoEncrypt getValue etc.
  • New Feature - More documentation in getting started tutorial.
  • New Feature - More documentation in creating new propertytypes tutorial.
  • New Feature - Release notes in html.
  • Change - PasswordPropertype.autoEncrypt has been change to default is "FALSE".
  • Change - Fewer constructors for Property class. (Cleanup).
  • Change - In PropertyFrameworkGlobals "doNotAutoEncryptPasswords" has switched to/and renamed to "doAutoEncryptPasswords".
  • Change - StringPropertyType have "nullAllowed" remove, replaced with parameter in Property class.
  • Change - Javadoc ".space" after first line in method and constructors.
  • Change - To abide to concepts, especially around null and empty values.
  • Change - DomainMustContain" and "default value" for EmailPropertyType be switch around, all others have default value as the first value.
  • Bugfix - ByteSizePropertyType, do not fail with StringIndexOutOfBoundsException, if first letter of value is 'b'.
  • Bugfix - DefaultXmlFileValidator, do not have recursive/infinite loop when calling getRestrictions().

1.1 Beta (2013-08-29)

  • Updated enum Environment with entry "UNKNOWN" for PropertyType EnvironmentPropertyType, which now is default value for EnvironmentPropertyType constructor with no params.
  • Updated documentation for PropertyTypes, Environment was misspelled as EnvironmentType.
  • Added FileValidator interface, and implemented DefaultFileValidator and DefaultDirectoryValidator.
  • Updated FilePropertyType to use FileValidator.
  • Updated DirectoryPropertyType to use FileValidator.
  • Added new custom PropertyType - VersionPropertyType.
  • Added API Doc for VersionPropertyType.
  • Updated documentation for PropertyTypes, Links to PropertyType Javadoc API.
  • Updated documentation for PropertyTypes, Links to PropertyType Individual tutorial.
  • Added Renderer for JHPropertyTypedWebDemo for - VersionPropertyType.
  • Added demo for VersionPropertyType in JHPropertyTypedWebDemo.
  • Added new PropertyIO - WebContextParamsPropertyIO.
  • Updated AbstractJDBCPropertyIO, the ability to check for value field length before setting the value.
  • API Doc for FileStructurePropertyType.
  • Added new custom PropertyType - FileStructurePropertyType.
  • Added Renderer FileStructureRenderer for JHPropertyTypedWebDemo for - FileStructurePropertyType.
  • Preparser property values when read in a PropertyIO , replaces all ${name} with System.Properties, only.
  • License change to LGPL License 3.0
  • Standardize css name for webdemo renderer, so it can be used.
  • Making a generic web jar file.
  • Images in war file instead of web.
  • log4j setup.
  • Lot of documentation.

1.0 Beta(2013-05-04)

  • Replaced Log4J with Apache Commons Logging, since this is a frame that will deployed in many different environments.
  • Dropped JHPropertiesTypedEE an moved the class into JHPropertiesTyped, but making JHPropertiesTyped dependent on ServletAPI.jar (or any javaEE implementation).
  • Refactoring PropertyIO implementations, moved reload(), getLogger() and getValue():String up in AbstractPropertyIO.
  • Updated javadoc and tutorials.
  • Javadoc for ServletContextPropertyIO.
  • JUnit test for ServletContextPropertyIO.
  • Bug fixing "backup()" for AbstractJDBCPropertyIO , it will now return delete and than insert SQL statements for all known properties.
  • Added method "backupWithUpdates()" method for AbstractJDBCPropertyIO , it will now return update SQL statements for all known properties.
  • Bug fixing backup() for CompositePropertyIO.