development / build news
 
 
-- FILE ---------------------------------------------------------------------
-- name       : BuildNews.txt
-- project    : BoarderZone: Development Environment
-- created    : Leon Poyyayil - 2003-01-25
-- language   : English
-- environment: the human readers mind ... ;-)
-- copyright  : (c) 1990-2021 by Leon Poyyayil (private), Switzerland
-- license    : this is free software licensed under the GPL. see COPYING
-----------------------------------------------------------------------------

This file contains a description of the major code changes between builds of
the java and web-site code for BoarderZone.net which are relevant to developers.
See doc/BuildVersioning.txt for a more detailed description of how to read it.


=============================================================================
version: 0.20.805
creator: Leon Poyyayil
created: 2021-04-28 11:35:50
status:  release
----------------------------
- build process:
  - lib.dev/*: updated all own libs and tools
  - changed file name extension for variable sets from the lowercase variant to
    the new .VariableSet
- general:
  - changed to use the new FontTool.getContentFont() in all places where previously
    a hard-coded MONOSPACE-PLAIN-12 font had been used
    => allows to configure the content font size in all plugins etc
- package net.boarderzone.afw:
  - Application: fixed to allow directories to be part of the JCE provider classpath
- package net.boarderzone.apps.file.browser:
  - changed program option "asn-oid-map" to have a default value in the user home
    and to not warn in case that file doesn't exist
- package net.boarderzone.apps.security.asnalyzer:
  - changed program option "oid-map" to have a default value in the user home
    and to not warn in case that file doesn't exist
- package net.boarderzone.apps.security.asnconvert:
  - changed program option "oid-map" to have a default value in the user home
    and to not warn in case that file doesn't exist
- package net.boarderzone.apps.security.asndump:
  - changed program option "oid-map" to have a default value in the user home
    and to not warn in case that file doesn't exist
- package net.boarderzone.apps.security.keystoretool:
  - KeyStoreTool: changed to use X500Principal instead of deprecated Principal
- package net.boarderzone.apps.text.messageexport:
  - MessageExport:
    - added support for more Signal message types for group video calls
    - added option to suppress overwriting existing files older than a given limit
- package net.boarderzone.asn.support:
  - AsnOIDFormatterImplExt.properties: cleaned up some OIDs
- package net.boarderzone.gui:
  - GuiApplication:
    - changed some methods to be final
    - added support for load/save of the FontTool.ContentFont from the dialog props
      => allows to configure the content font size in all plugins etc
- package net.boarderzone.gui.util:
  - FontTool:
    - added global setting for a ContentFont (defaults to MONOSPACE-PLAIN-12)
    - added utility method to encode a font name for later decoding again
- package net.boarderzone.gui.widget:
  - DirectoryListModelBase: added support for showing the executable state of files
  - DirectoryListPanel:
    - added action to set a read-only file back to writable
    - added action to toggle the executable state of a file
  - TableRowHeaderScrollPaneView: improved to have right-aligned row header numbers
    while keeping centered column header identifiers
- package net.boarderzone.modules.tabulardata:
  - TableSheet: added method adaptHeaderAndColumnStylesFrom()
  - TableSheetImpl: implemented method adaptHeaderAndColumnStylesFrom()
- package net.boarderzone.plugins.filehandler.coretypeeditor:
  - CoreTypeEditorHandler: fixed to work with the case sensitive file extension to
    determine which configuration for schema validation to use
- package net.boarderzone.plugins.filehandler.jcetool:
  - AddEntryWizardStepEnterCertificateProfile: made more robust against corrupt keystores
  - JceKeyStoreViewer:
    - changed to use X500Principal instead of deprecated Principal
    - enhanced to support variable expansion in .hsm and .pkcs11 files
    - added special support for the IAIK PKCS#11 JCE wrapper provider in .pkcs11
      files (in addition to the Sun PKCS#11 JCE wrapper provider)
    - added support to load a referenced keystore file when it is specified in an .hsm file
    - improved robustness against corrupt keystores
    - corrected to call the configure() method of the _Provider_ class when loading
      a Sun PKCS#11 provider: avoids the warning about an illegal reflective access
- package net.boarderzone.plugins.filehandler.sntpclient:
  - SntpClient:
    - added logging for certain unexpected input conditions
    - improved to wait until a server name has been set before querying its address
    - improved to prevent repeated address queries for the same server name
- package net.boarderzone.plugins.filehandler.tableeditor:
  - TableEditor:
    - added auto-detection of separator from the options , ; TAB SPACE
    - improved to auto-adjust the width of the row header number column
    - improved performance considerably when adding a very large number of rows/columns
      (e.g. when pasting a large CSV from clipboard)
    - added auto-detection of CSV header rows: centered horizontally
    - added auto-detection of CSV numerical columns: right aligned
  - TableSheetPanel:
    - added support auto-adjusting the width of the row header number column
      and doing so upon each operation that modifies the number of rows
    - added support for adding multiple rows/columns in one call
      => massive performance improvement when adding a large number of rows/columns
    - improved removal of rows to be much more performant when many rows are removed
- package net.boarderzone.plugins.filehandler.tarviewer:
  - ExpandActionBase: enhanced to throw a specific exception in case directory creation fails
  - TarEntryTableRow: fixed to display the case sensitive file extension of entries
- package net.boarderzone.plugins.filehandler.xmltools:
  - XmlEditorHandler: fixed to work with the case sensitive file extension to
    determine which configuration for schema validation to use
- package net.boarderzone.plugins.filehandler.zipviewer:
  - ExpandActionBase: enhanced to throw a specific exception in case directory creation fails
  - ZipEntryTableRow: fixed to display the case sensitive file extension of entries
- package net.boarderzone.security:
  - AlternativeName: fixed to fall back to the default "Other name" content if
    no broken JDK structure is recognized (avoids ignoring "NT Principal Name"
    SANs when loaded with the BouncyCastle JCE which doesn't show the broken
    behavior of the JDK ... - e.g. when displaying certs in a BKS keystore)
  - CertificateBuilder: fixed to sort CSR attributes DER encodings in unsigned mode
    => should now finally prevent BouncyCastle from corrupting the resulting CSRs
  - CertificateVerificationTool: changed to use X500Principal instead of deprecated Principal
  - ExtensionOIDs: added constant MS_APP_CERT_POLICY
  - KeyStoreCertInfo: changed to use X500Principal instead of deprecated Principal
  - KeyStoreEntrySorter: changed to use X500Principal instead of deprecated Principal
  - PKCS10CertificateRequest: added support for verifying EC-based instances
- package net.boarderzone.security.gui:
  - JceCertViewerPanel: changed to use X500Principal instead of deprecated Principal
  - JceCodeSignerPanel: changed to use X500Principal instead of deprecated Principal
- package net.boarderzone.util:
  - ArrayTool: moved method to compare two byte arrays to CompareTool
  - Binary: changed to compare contents in unsigned mode
  - CompareTool:
    - added method to compare two byte arrays in unsigned mode
    - optimized the existing compare methods to avoid unnecessary null checks


=============================================================================
version: 0.20.804
creator: Leon Poyyayil
created: 2021-01-06 10:06:32
status:  release
----------------------------
- build process:
  - updated all file headers to specify copyright 2021
  - script/admin.xml:
    fixed to exclude commercial libraries from ending up in the release src.zip
  - script/library.xml:
    improved behavior when obfuscating and/or normalizing/signing .jar files to
    not require a sleep of one second but rather manually set the timestamp of
    the generated derived .jar files to one/two seconds into the future.
    => this improves build speed while still ensuring that .jar files are only
    re-built when really necessary
  - lib/acme4j.jar: fixed to include new Let's Encrypt root CA certificates in
    embedded truststore for supporting older JDKs and newer LE issuing CAs
  - lib.com/bfopdf.jar: updated to new version 2.24.4
  - lib.dev/ant.jar: fixed to prevent warnings about .jar files being modified
    in the future on linux
  - lib.dev/j2h.jar: fixed to report new version number 1.7.1
  - script/style/checkstyle-config.xml: added new checks for whitespace within
    brackets and braces
  - src/java2html.html: updated version info of j2h utility to 1.7.1
- package net.boarderzone.apps.text.messageexport:
  - MessageExport:
    - added support for new Threema backup format v. 15
    - added support for group chats
    - added support for Signal message types for video calls
- package net.boarderzone.db.mapping.test:
  - DbAdminTest: fixed to combine certain tests in order to avoid problems when
    junit re-orders test method invocation (individual tests should not depend on
    each other!)
- package net.boarderzone.plugins.checkstyle:
  - ArrayBracketWhitespaceCheck: new check to verify whitespace within brackets
  - ArrayInitializerWhitespaceCheck: new check to verify whitespace within array braces
- package net.boarderzone.plugins.filehandler.jcetool:
  - AddEntryWizardStepGenerateCertificateRequest: improved behavior in case
    a key entry doesn't provide access to the associated public key
  - AddEntryWizardStepImportKey: added support for importing EC keys
  - AddEntryWizardStepImportKeyCertificate: added support for importing EC keys
  - AddEntryWizardStepSelectOperation: added support for key entries without
    assigned certificate
  - JceKeyStoreEditor:
    - relaxed enabling of toolbar action buttons somewhat to accommodate keystores
      that don't require a password for editing their contents (such as some HSMs)
  - JceKeyStoreViewer:
    - improved chain building algorithm when importing keys:
      - check whether the signature of a potential issuer is actually verifiable
      - prefer issuer certificates with a validity period that overlaps the longest
        with the subject certificate (in case when multiple matches are present)
      - log a warning when a match is chosen which doesn't fully cover the subject
        validity period
    - added support for loading .hsm files which should not query for a password
    - added access to the flag whether a loaded keystore requires a password
- package net.boarderzone.plugins.filehandler.pdfviewer:
  - fixed german translation typo
  - updated to latest BFO library version
  - added workaround to disable JDK warning about deprecated javascript engine
- package net.boarderzone.plugins.filehandler.zipviewer:
  - ShowVersionInfoAction: new action class
  - VerifyAction: added support for extracting Manifest
  - ZipViewer: added support for action to display package version information
- package net.boarderzone.plugins.javashell.filesystem:
  - FileOnEach: changed to sort file names non-case-sensitively
  - FileRecurseDir: changed to sort file names non-case-sensitively
- package net.boarderzone.security:
  - CertificateBuilder:
    - fixed to truncate milliseconds from times when creating certificates
    - fixed to properly sort PKCS#10 attributes by their DER-encoding to
      prevent BouncyCastle from corrupting the resulting CSRs upon load
      => ordering by attribute OID is not enough: DER length might interfere ...
  - CertificateVerificationStatus: added VALIDITY_MISMATCH enum member
  - CertificateVerificationTool:
    - added detection of certificate validity period mismatches, e.g. when the
      validity period of a certificate is not wholly included in the validity
      period of its signer certificate
  - KeyStoreEntryInfo:
    - made a little more robust for KeyStore implementations that return a
      null key instead of throwing an UnrecoverableKeyExeption ...
    - added support for renaming key entries that don't have a certificate
    - added support for renaming key entries in KeyStore implementations that
      do the renaming internally in the call to setKeyEntry() (these don't
      support the following call to deleteEntry() ...)
    => most of this as support for the (broken) KeyStore implementation of
       the Securosys Primus HSM
- package net.boarderzone.util:
  - ArrayTool: added method to compare two byte arrays by content


=============================================================================
version: 0.20.803
creator: Leon Poyyayil
created: 2020-08-08 11:35:36
status:  alpha
----------------------------
- build process:
  - conf/code-signing.properties: switched code signing timestamp service from
    SwissSign to Sectigo because SwissSign is expiring soon and won't be
    replaced anymore. furthermore, the Sectigo TSA offers a TSA certificate
    that is valid for more than ten years at the moment of signing
    => this provides for good long-term-validation support, e.g. the signed jars
    will be considered valid for a long time
  - lib/zxing.jar: updated from 2.3.0 to 3.4.0 (improved decoding results)
  - lib.com/bfopdf.jar: updated to 2.24.3 (improved signature validation)
  - lib.dev/*: updated all own libs and tools
  - lib.dev/j2h.jar: updated to 1.7.1 to support final modifier on exception
    declarations in catch clauses
- products:
  - FileBrowser: moved submenu Tools/Options to root level to make it easier to access
- package net.boarderzone.afw:
  - Application:
    - added support for executing ApplicationInitializer instances upon startup
    - changed interpretConfigData() to allow throwing ConfigExceptions
    - added support for installSecurityProviders() to suppress printing and throwing
    - fixed to set variable 'app.host' the the _unqualified_ host name without domain
      and to set a new variable 'app.host.fqdn' with the fully qualified domain name
  - ApplicationInitializer: new class for executing application startup initializers
- package net.boarderzone.apps.file.browser:
  - FileBrowser:
    - moved code to initialize security providers into Application base class
    - added support for new config option to execute startup initializers
  - FileBrowserConfig.xml: added new option app-initializer-classes
- package net.boarderzone.apps.text.xmlvalidator:
  - XmlValidator: fixed to suppress XML BOM in case an external header is used
- package net.boarderzone.asn.codec.ber:
  - AsnBerInputStream: fixed to properly recognize correct year for UTCTime
    => was using java default logic to deduce correct century, which is different
       from the standard defined in RFC 5280 for X.509 certificates (validity ...)
- package net.boarderzone.asn.support:
  - AsnOIDFormatterImplExt.properties: added more OID names for Adobe PDF signing
- package net.boarderzone.asn.value:
  - AsnUTCTime: added utility methods to encapsulate handling of valid year range:
    isValidYear, getCentury, getCenturyPrefix
- package net.boarderzone.gui.widget:
  - BinaryHexTableModel: fixed a NPE in cell rendering (ASCII column)
  - ScreenRulerWindow: fixed resize behavior on modern JDKs
  - ThreadInfo:
    - fixed to prevent NPE in case of unavailable thread group
    - extended to keep a reference to the thread itself
  - ThreadMonitorFrame:
    - added buttons to interrupt and kill a single selected thread
- package net.boarderzone.modules.geomap:
  - MapPanel:
    - fixed to prevent repainting after (re-)loading tiles that are older
      than the current paint operation
      - was an endless loop in case of offline mode
      - was producing way too many repaint operations during tile download
      => massive performance improvement
    - improved ordering of tile fetching to load those tiles first that were
      requested most recently
      => much better responsiveness when scrolling/zooming while downloading tiles
    - fixed to only perform dragging upon plain left-mouse-button dragging
      (ignoring drags with other mouse buttons and/or with any pressed modifiers)
  - MapTileProviderImplCacheFile: improved logging
  - MapTileProviderImplOffline:
    - added support for displaying a centered text with customizable font/color
- package net.boarderzone.plugins.filehandler.geomapviewer:
  - GeoMapViewer: added support for simplified route/track creation by CTRL-clicking
    when a route/segment is selected (prevents to have to choose the corresponding
    context menu entry to add a new point to the route/track)
- package net.boarderzone.plugins.filehandler.javacodesnippeteditor:
  - AbortExecutionAction: new action
  - InterruptExecutionAction: new action
  - JavaCodeSnippetEditor:
    - added action buttons to interrupt and kill the running snippet
    - added action button to toggle visibility of the code snippet framework class
    - enhanced to display the partial snippet output even in case of an exception
      (before the stacktrace)
  - ToggleFrameworkAction: new action
- package net.boarderzone.plugins.filehandler.jcetool:
  - AddEntryWizardStepImportCertificateRequest: enhanced to be more robust when
    selecting a specific provider
    => when verifying the PKCS#10 signature, first try to verify it with the selected
       provider, but retry with any suitable provider in case the first attempt fails
    => signature verification should not be provider specific, any will normally do
  - JceKeyStoreEditor:
    - disable saving for .hsm files (content is not in the file but in the HSM)
    - fixed to prevent NPE in case an entry doesn't have a certificate chain
  - JceKeyStoreViewer:
    - enhanced to not fail upon X.509 certs without proper subject/issuer DN
    - added support for .hsm property files to load custom keystore types of foreign
      JCE security providers
    - added support for .p11 config files to support the Sun PKCS#11 JCE provider
    - improved to better detect keystore entry type based on heuristics: some HSMs say
      that an entry is a certificate entry even though it is actually a key entry ...
    - improved distinction between private and secret keys
    - replaced "-" prefix in displayed text items by pure indenting
      => allows for easier concatenation of DNs when copying the multiple lines ...
    - added support for displaying information about the MS template on the details tab
- package net.boarderzone.plugins.filehandler.pdfviewer:
  - updated to use new version of BFO PDF library for better signature validation support
  - DocumentInfoDialog: improved page size detection
  - PdfViewer:
    - added support for new feature to examine signature information (certificates etc)
    - changed configuration properties handling to align better with JceCertViewerPanel
    - fixed to ignore empty configuration properties
  - SignatureInfoDialog: new class
  - SignatureInfoFeature: new class
  - SignatureInfoPanel: new class with detailed signature information
    - shows all signatures and their verification status
    - shows all certificates of signers and TSAs
    - shows status of LTV information if available
    - lists any verification problems
- package net.boarderzone.plugins.filehandler.qrcode:
  - adapted to require updated zxing library 3.4.0
  - QRCodeEditor:
    - added support for new settings:
      - explicit QR code version
      - overlay image file (logo)
    - changed image creation order to let zxing create a pure pixel image first
      with applied quiet zone, then scale that image to the desired pixel size
      => much improved predictability of the resulting white border while
         maintaining the ability for pixel exact output size
    - added display of resulting image size: dots, pixels and mm (300/600 DPI)
  - QRCodeSettings:
    - added setting for explicitly specifying the QR code version
    - separated settings for QR code dot count and image pixel size
    - widened allowed image size range to 10x10 .. 2000x2000
    - re-termed "margin" to "quiet zone" to conform to QR code terminology
    - changed default value for quiet zone to zero
    - added setting for specifying the name of an overlay image file
- package net.boarderzone.security:
  - AlternativeName: added support for encoding an invalid instance to ASN.1
  - CertificateBuilder:
    - fixed to only use ASN.1 GeneralizedTime instead of UTCTime for validity
      for years beyond 2049 (e.g. from 2050 onwards, or before 1950)
      => necessary to conform to RFC 5280 which mandates years in the range 1950..2049
         to be represented as UTCTime
      => this fixes acceptance of such certificates in Firefox
    - improved to detect key type from key algorithm name rather than the implementing
      class => this allows to support keys from HSMs etc which don't provide key data
  - CertificateInspectionTool:
    - enhanced to not fail upon secret keys without encoding
    - added method getCN()
    - added method formatTemplateInformation()
  - CertificateRevocationCheckTool:
    - added tolerance of one second when checking whether an OCSP response is from "the future"
      => prevents misleading problem message when the system clock is a bit inaccurate
    - added checking of "OCSP Signing" EKU in OCSP responder certificate
    - added checking of OCSP responder certificate issuer
  - CertificateVerificationTool:
    - enhanced to not fail upon X.509 certs without proper subject/issuer DN
    - added logging in case of any unexpected verification exceptions
    - improved logging of X.509 certs without proper subject DN and/or serial numbers
  - ExtensionOIDs: added OIDs for MS certificate template information
  - KeyStoreCertInfo: enhanced to not fail upon X.509 certs without proper subject DN
  - KeyStoreEntryInfo: improved detection of different entry kinds to better distinguish
    between private/secret keys and trusted certificate entries
    => added detection based on key algorithm name in case a JCE provider (e.g. from a HSM)
       won't allow access to the key as PublicKey, PrivateKey or SecretKey interfaces ...
- package net.boarderzone.security.gui:
  - JceCertViewerPanel:
    - enhanced to not fail upon X.509 certs without proper subject/issuer DN and/or
      serial numbers and validity dates
    - improved to better detect keystore entry type based on heuristics: some HSMs say
      that an entry is a certificate entry even though it is actually a key entry ...
    - opened method formatDate() to be public
    - changed display of DNs in details tab to omit "-" at the beginning of components
    - added display of MS certificate template information in details tab
- package net.boarderzone.util:
  - general code cleanup:
    - using String.isEmpty() instead of .length()==0
    - using String.contains() instead of .indexOf()>=0
    - added @Override annotations
    - making more use of try-with-resources construct
    - using constants for 'magic' numbers
    - using constants for zero-sized arrays
    - making constructors of abstract classes protected
    - using consistent synchronized access
    - using new multi-exception catch syntax when possible
    - making classes final when possible
    - using constants for fixed regular expressions
    - using foreach instead of iterators when possible
    - using class name of declaring class when accessing constants
    - using defined Locale for toLowerCase() etc
  - DateTool: added utility methods getYearOf()
  - LoggerFactory: split inner class Provider into interface and base class
    => preparation for having dedicated derivations with non-colliding class names
  - LoggerFactory*: adapted inner provider class to above change
  - OrderedHashMap: removed redundant explicit Map implementation
  - ReplacementMapperConfig: replaced repeated instanceof with switch on item kind
  - ReplacementMapperConfigItem: new interface
  - ReplacementMapperConfigItemKind: new enum
  - ReplacementMapperConfigImport: adapted to new interface
  - ReplacementMapperConfigVariable: adapted to new interface
  - ShieldableLinkedHashset: new class
  - SimpleMap: added support for building with a minimalistic VariableProvider
    => this allows to make use of any such implementation to be passed to the
       StringTool.multiReplace() method for variable substitution in texts
  - VariableProvider: new minimalistic interface for looking up variables
  - VariableSet: extracted a few methods into new VariableProvider interface
- package net.boarderzone.util.xml:
  - XmlSerializer: added option to prevent BOM from being written
- package net.boarderzone.web:
  - ProxyServlet: changed to use version info from VersionInfo singleton
    => no more byte code change between releases


=============================================================================
version: 0.20.802
creator: Leon Poyyayil
created: 2020-05-06 22:50:11
status:  alpha
----------------------------
- build process:
  - lib:
    - biweekly.jar: new library for I/O of iCalendar files
    - ez-vcard.jar: upgraded to 0.10.5 (only small fixes)
    - vinnie.jar: upgraded to 2.0.2 (only packaging updates)
  - lib.dev/*: updated all own libs and tools
  - scripts:
    - adapted to run build on Linux which has UTF-8 as default file encoding
      => our unit test resources use the Windows default of ISO-8859-1 instead
    - buildLib.xml: enforcing to run junit with ISO-8859-1 file encoding
      => necessary to verify correctly with the existing test resources
    - javadoc.xml:
      - fixed to pass the copyright symbol as an HTML entity to prevent corrupting it
      - enforced to produce HTML output with declared UTF-8 encoding
    - library.xml:
      - added support for running findbugs on linux (classpath separator)
      - added sleep of one second before normalizing and signing to prevent repeated
        such operations when building on a fast machine with a file system that has
        a timestamp resolution of less than one second ...
    - runAnt.sh: enforcing to run ant with ISO-8859-1 file encoding
      => necessary to prevent corrupting resources_de.properties files when
         copying them with active content filtering (on Linux)
- all applications:
  - fixed windows start batch scripts to preserve the program exit code
- package net.boarderzone.afw:
  - Application: added method getExitCode()
- package net.boarderzone.apps.file.browser:
  - FileBrowser: enhanced to sort the list of sessions alphabetically
- package net.boarderzone.apps.text.messageexport:
  - MessageExport: added exception stack trace for invalid messages (in debug mode)
  - updated to new library dependencies
- package net.boarderzone.apps.text.search:
  - TextSearch: fixed to handle file extensions case insensitively (archive type check)
- package net.boarderzone.mapping:
  - DbAdmin: added support for creating/dropping tables in such an ordered way as to
    respect any dependencies which can be derived from the class mappings: independent
    tables get created first, dependent ones later and mapping tables at the end.
    dropping tables then occurs in the opposite order.
  - DbSchemaAccessor: added support for loading java.sql.Blob instances from the DB
  - SchemaMapping: added method getDependencies() to allow ordering class mappings
- package net.boarderzone.gui.widget:
  - DirectoryListModelBase: fixed to handle file extensions case insensitively (icon load)
  - ModalDialog: added workaround for AWT bug on Linux that prevented ESC from
    closing the dialog in case the system had been suspended (sleep mode)
  - ZoomableImage: fixed behavior for selection/panning with right-click menu
    => it is now possible to open the context menu with an existing selection without
       losing the current selection area on Linux
- package net.boarderzone.install.shortcut.windows.test:
  - WindowsShortcutTest: added support for running under Linux (dir separator etc)
- package net.boarderzone.modules.geomap.geodata.gpx:
  - GPXTool: changed to use an indenting of 1 upon write to save some disk space
- package net.boarderzone.modules.tabulardata.test:
  - TableDataXmlHelperTest: added support for running under Linux (line endings ...)
- package net.boarderzone.net.pcap.test:
  - PCAPDumperTest: added support for running under Linux (line endings ...)
- package net.boarderzone.net.stat.test:
  - BandwidthStatisticsChartBuilderTest: added support for running under Linux (.png)
- package net.boarderzone.plugins.anttasks:
  - ObfuscateProperties:
    - refactored to use try-with-resources
    - fixed to enforce ISO-8859-1 encoding to prevent corrupting contents
    - enhanced to fail the build when renaming/deleting files fails
- package net.boarderzone.plugins.filehandler.asnxmleditor:
  - AsnXmlEditor: fixed to handle file extensions case insensitively (type check)
- package net.boarderzone.plugins.filehandler.contacteditor:
  - updated to new library dependencies
- package net.boarderzone.plugins.filehandler.coretypeeditor:
  - CoreTypeEditorHandler: fixed to handle file extensions case insensitively (data load)
- package net.boarderzone.plugins.filehandler.packviewer:
  - PackViewer: fixed to handle file extensions case insensitively (type check)
- package net.boarderzone.plugins.filehandler.processrunner:
  - ProcessRunnerHandler.properties: added text/shell-script MIME-type
    => will now support executing all such shell scripts by default
- package net.boarderzone.plugins.filehandler.tarviewer:
  - TarEntryTableRow: fixed to handle file extensions case insensitively (type check)
- package net.boarderzone.plugins.filehandler.textlineviewer:
  - TextFileModel: fixed to correctly support non-default file encodings
    (problem was introduced in 0.20.800 when adding UTF-16 support)
    => now supports ASCII, ISO-8859-*, UTF-8, UTF-16, UTF-32
    => fixes wrong line number display
    => fixes wrong encoding detection in many cases
    => fixes wrong refresh behavior
    - added unit tests for most common input formats, along with behavior tests
- package net.boarderzone.plugins.filehandler.xmltools:
  - XmlEditorHandler: fixed to handle file extensions case insensitively (type check)
- package net.boarderzone.plugins.filehandler.zipviewer:
  - ZipEntryTableRow: fixed to handle file extensions case insensitively (type check)
- package net.boarderzone.plugins.filehandler.tableeditor:
  - TableEditor: fixed to handle file extensions case insensitively (type check)
- package net.boarderzone.security:
  - CertificateBuilder: fixed to use ASN.1 GeneralizedTime instead of UTCTime for validity
    => necessary to represent timestamps outside the year range 1950..2050 and to make sure
       years beyond 2050 are handled correctly (not mistaken to be in the 19.. range)
    => this now allows certificates with a validity beyond 2050 (e.g. in the KeyStoreEditor)
- package net.boarderzone.sound.mp3.test:
  - ID3TaggerTest: added support for running under Linux (file system time resolution)
- package net.boarderzone.util:
  - FileTool: added convenience methods getExtensionLowerCase()
  - RandomAccessFileInputStream: corrected potential int overflow
  - StreamTool: added support for detecting UTF-32 BOMs (BE & LE)
- package net.boarderzone.util.lang:
  - MessageResourceRegistry: added more debug logging
- package net.boarderzone.util.testing:
  - JUnitRes:
    - fixed to enforce ISO-8859-1 encoding for test resources
    - fixed to enforce \r\n line endings for test resources
    => both necessary to run successfully under Linux
- package net.boarderzone.util.xml:
  - XmlSerializer: fixed to properly respect the configured EOL between the
    XML declaration and the header and footer comments


=============================================================================
version: 0.20.801
creator: Leon Poyyayil
created: 2019-12-19 12:44:33
status:  developmental
----------------------------
- build process:
  - updated all file headers to specify copyright 2020
  - lib.dev/*: updated all own libs and tools


=============================================================================
version: 0.20.800
creator: Leon Poyyayil
created: 2019-12-19 02:35:27
status:  developmental
----------------------------
- build process:
  - fixed javadoc links to updated libraries
  - upgraded checkstyle to 8.23
- products:
  - FileBrowser: added new CSV report configuration for DiaryEditor plugin
- package net.boarderzone.afw:
  - Application:
    - extended to print some environment information in debug mode
    - extended to log storage location of dumped config/dependency descriptor files
- package net.boarderzone.apps.file.monitor:
  - FileMonitor:
    - added support for new command line option to specify the file encoding
    - fixed to support files with multi-byte character encodings (UTF-16)
- package net.boarderzone.apps.file.statistics:
  - FileStatistics: improved report output to have proper column alignment
- package net.boarderzone.apps.file.touch:
  - FileTouch: changed to print timestamps in verbose messages with milliseconds
- package net.boarderzone.apps.text.messageexport:
  - MessageExport:
    - added support for signal backup messages with multiple attachments
      => will be exported as a .zip file with all of them included
    - added support for more technical signal message types:
      - bad encrypted message
      - secure session reset
      - group metadata changes
      - safety number marked as verified
    - added support for new Threema message backup format version (14)
- package net.boarderzone.apps.text.textsearch:
  - TextSearch:
    - added new command line option to suppress output of match location
    - fixed to correct behavior when encountering encrypted .zip files:
      => not the whole process is aborted anymore, but only the affected .zip file
      => encrypted .zip files are not supported by the standard java implementation
- package net.boarderzone.asn.support:
  - AxnXml.xsd: fixed regular expression restriction for BinaryDataType to disallow
    trailing zeros instead of leading ones (MSB is to the right for BIT_STRING!)
- package net.boarderzone.asn.value:
  - AsnBitString: fixed string parsing to determine the number of valid bits from the
    given string to make certain that the first digit in the string remains the LSB
    of the resulting instance
- package net.boarderzone.gui.widget:
  - ClipBoardMonitor:
    - fixed NullPointerException in certain content situations
    - fixed to explicitly clear display area if no more clipboard contents are
      available to prevent old contents from remaining visible if some other
      application (e.g. KeePass) clears the clipboard externally ...
  - VariableConfigDialog: added convenience c'tors
  - VariableConfigPanel: added support for creating an instance without config
    to edit all variables in a set
  - VariableSetPanel: new panel to edit name/value pairs from a VariableSet
- package net.boarderzone.java.compile:
  - JavaCompiler:
    - added hint to exception message about possibly not running on a JDK
    - added logging of class version of compiled classes (debug level)
    - corrected logging of compiler command line options (separate name from value)
- package net.boarderzone.modules.geomap:
  - MapTileProviderURLBase: extended to set a "User-Agent" HTTP header
    => fixes access to OpenStreetMap tiles which recently started requiring such a header
- package net.boarderzone.net.ocsp:
  - OcspResponse: fixed to properly support decoding of revocation reason
- package net.boarderzone.plugins.checkstyle:
  - updated all check classes to modified checkstyle API
- package net.boarderzone.plugins.filehandler.javacodesnippeteditor:
  - JavaCodeSnippetEditor: added logging of JDK home upon compiler creation
- package net.boarderzone.plugins.filehandler.processrunner:
  - ProcessRunner: new FileHandler plugin to execute arbitrary native processes
- package net.boarderzone.plugins.filehandler.textlineviewer:
  - TextFileModel: fixed to properly support UTF-16 encoded files
- package net.boarderzone.security:
  - AlternativeName: added support for SANs with multiple DNS and/or E-Mail entries
    via comma separated arguments to corresponding string properties
  - CertificateBuilder: added workaround when generating PKCS#10 requests to be
    interoperable with BouncyCastle (prevent re-ordering of attributes)
  - CertificateInspectionTool:
    - improved to safely handle LDAP CDPs which contain spaces
  - CertificateVerificationTool:
    - added some more debug logging
- package net.boarderzone.security.gui:
  - JceCertViewerPanel: extended to display the revocation reason (if available)
    on the overview panel
- package net.boarderzone.util:
  - BOMAwareInputStreamReader: added support for accessing a known fixed char size
  - Platform: fixed version format checking to support version strings that contain
    non-numeric content (e.g. "11.0.4-redhat" for OpenJDK ...)
  - ReplacementMapper: extracted some methods into new interface VariableSet
  - ReplacementMapperConfig: added c'tor with ReplacementMapper instance
  - StreamTool: added support for accessing a known fixed char size when detecting BOM
  - VariableSet: new interface


-- EOF ----------------------------------------------------------------------