ANN: kbmMW Professional and Enterprise Edition v. 5.04.30 released!

We are happy to announce v5.04.30 of our popular middleware for Delphi and C++Builder.

If you like kbmMW, please let others know! Share the word!

We strive hard to ensure kbmMW continues to set the bar for what an n-tier product must be capable of in the real world!

This release fixes reported bugs and adds a number of new features:

  • Support for DEFAULT column values in ORM.
  • Support for kbmMW_HTTP attribute for http services.
  • Lots of improvements.

Please look in the end of this post for a detailed change list.

Professional and Enterprise Edition is available for all with a current active SAU. If your SAU has run out, please visit our shop to extend it with another 12 months.

CodeGear Edition is available for free, but only supports a specific Delphi/Win32 SKU, contains a limited feature set and do not include source.

Please visit https://portal.components4developers.com to download.

—-

kbmMW is the premiere n-tier product for Delphi, C++Builder and FPC on .Net, Win32, Win64, Linux, Java, PHP, Android, IOS, embedded devices, websites, mainframes and more.

Please visit http://www.components4developers.com for more information about kbmMW.

—-

Components4Developers is a company established in 1999 with the purpose of providing high quality development tools for developers and enterprises. The primary focus is on SOA, EAI and systems integration via our flagship product kbmMW.

kbmMW is a portable, highly scalable, high end application server and enterprise architecture integration (EAI) development framework for Win32, ..Net and Linux with clients residing on Win32, .Net, Linux, Unix, Mainframes, Minis, Embedded and many other places. It is currently used as the backbone in hundreds of central systems, in
hospitals, courts, private, industries, offshore industry, finance, telecom, governements, schools, laboratories, rentals, culture institutions, FDA approved medical devices, military and more.

—-

5.04.30 Nov 19 2017

        Important notes (changes that may break existing code)
        ======================================================
        * Renamed elements of TkbmMWSQLResolverNameCase to 
          (mwncUnaltered,mwncUpper,mwncLower).
          This is a breaking change that require you to open/save all 
          forms/datamodules on which metadata components are placed to avoid 
          property name error issues at runtime.

        New stuff
        =========
        - Added unittest project in Enterprise Edition, testing kbmMWORM, 
          kbmMWDateTime, kbmMWNullable and kbmMWConfiguration. It require 
          DUnitX.
        - Added Default column value support to ORM, kbmMW_Field attribute and 
          metadata/rewriters.
          A Default value is required if the field is declared not null and 
          kbmMW shall upgrade the table storage automatically. Syntax example:
          [kbmMW_Field('name:fld4, unique:true, default:0',ftFloat)]
          [kbmMW_NotNull]
        - Added public List property to TkbmMWServers.
        - Added OnServiceDefinition to TkbmMWServer which is called whenever
          a service definition is created due to registration of a service using 
          AutoRegisterServices.
        - Added protected ProcessCustomAttributes to 
          TkbmMWCustomServiceDefinition. It allows custom service definitions to 
          process attributes upon AutoRegisterServices.
        - Added Multiply operator overload to TkbmMWDateTime.
        - Added ExceptOnPersistError boolean to TkbmMWORM.
          If true, it will throw exceptions if any persist/insert/delete/modify
          fails. Else persist errors are silent.
        - Added overloaded Insert, Delete, Modify and Persist methods to 
          TkbmMWORM that takes additional anonymous AFunction that will be 
          called if persistence fails.
        - Changed ValuesByField procedure on TkbmMWCustomResolver to take 
          additional const AWhat:TkbmMWResolverSetValues which controls which 
          version of the record should have its value set.
        - Changed GetDefAsArray and GetDefAsObject of TkbmMWONObject to take 
          additional argument: const AAutoCreate:boolean = true. If false nil is 
          returned if no array or object is found for the property.
        - Added support for using simplified inline YAML syntax for RTTI 
          settings attributes.
        - Added new kbmMW_HTTP attribute for TkbmMWCustomHTTPSmartService. 
          Syntax:
          [kbmMW_HTTP('accept:[f,...], root:[c:path,...], template:[c,...],
                      mimeTypes:["BIN=application/octet-stream",...],
                      charSets:["DOC=utf-16",...])]
          where f can be unknown, get, put, head, post, delete, trace, connect, 
          options, patch
          c can be html,css,script,media,other each followed by a path
          accept controls which types of operations should be accepted by the 
          service.
          root controls which directory to look for the given resource type.
          template controls if a resource type should be considered a template 
          and thus subject to macro replacement.
          mimeTypes add/overwrites to the existing known mimetypes.
          charSets add/overwrites to the existing charset types. Example:
          [kbmMW_HTTP('accept:[get], root:[media:"c:\someimages", 
            html:"c:\somehtml"]')]
          TMyHTMLService = class(TkbmMWCustomHTTPSmartService)
        - Added properties EnabledFileCategories and EnabledFunctions to 
          TkbmMWHTTPServiceDefinition.
          Controls which functions and file categories the service will handle.
        - Added SimplifiedInline:boolean (default false) property to 
          TkbmMWYAMLStreamer.
          It allows for syntax like this: [ a:b, c:d ] which is not accepted 
          standard YAML syntax.
          Standard YAML would write [ a:{b}, c:{b} ]. Hence simplifiedinline 
          should be used with care if at all, since it is not standard YAML 
          syntax and can have sideeffects.
          But it is good for kbmMW's settings attributes syntax.
        - Added ADenyWrite:boolean property to TkbmMWFilePool.Access method to 
          allow better control over share rights to file handles.
        - Added overloaded HTTPResponseFromFile methods to 
          TkbmMWCustomHTTPService.
          Allows for easily naming file for receiving browser and for deciding 
          if to map file path or not.
        - Added SetResponseFileName to TkbmMWCustomHTTPService to define 
          content-disposition, filename header field.
        - Added public property OnException to TkbmMWCustomClient. If an event
          handler is provided, any exceptions within the request operation of a 
          TkbmMWCustomClient will be catched and forwarded to the eventhandler, 
          else the exception will be thrown as usual.

        Fixes
        =====
        - Fixed TDateTime vs TkbmMWDateTime issues in TkbmMWServer.
        - Fixed kbmMW Database adapter wizard adding missing AOwner argument to 
          API methods.
        - Fixed invalid properties in TkbmMWCustomHTTPService.dfm
        - Fixed warnings in kbmMWPassword, kbmMWHashSHA512, kbmMWHashFNV1A and 
          kbmMWRandom.
        - Fixed MetaExists declaration in DBISAM3 and DBISAM4 adapters.
        - Removed explicit operator overload from TkbmMWDateTime.
        - Fixed ORM UpdateGeneratorFields issue when it was overwriting 
          preassigned value of a field with generator attribute, if any other 
          fields needed auto generator assistance.
        - Fixed UpdateGeneratorFields to handle update statements where original 
          field with generator attribute is null.
        - Fixed WaitRuns bug in TkbmMWScheduler.
        - Fixed too early clearing ChildEvents in TkbmMWScheduler.
        - Fixed a couple of YAML parsing bugs.
        - Fixed raising exception if TkbmMWCustomFileClient errors and no  
          OnAccessException is defined.

       	Changes/minor additions
        =======================
        - Changed so kbmMWGetFileSize do not require file to be exclusively 
          available.
        - Renamed elements of TkbmMWSQLResolverNameCase to 
          (mwncUnaltered,mwncUpper,mwncLower).
          This is a breaking change that require you to open/save all 
          forms/datamodules on which metadata components are placed to avoid 
          property name error issues at runtime.

kbmMemTable v. 7.77.50 Standard and Professional Edition released

This is a minor release, required for kbmMW v. 5.04.30:

  • Added support for DEFAULT column value in SQL CREATE and ALTER TABLE.

kbmMemTable is the premier high performance, high functionality in
memory dataset for Delphi and C++Builder with kbmMemTable Professional
topping the scales as being the worlds fastest!

If you have an up to date Service and Update (SAU) subscription, then
you can immediately visit https://portal.components4developers.com to
download the latest kbmMemTable release.

If not, please visit our shop at http://www.components4developers.com
and extend your SAU with another 12 months.

ANN: kbmMW Professional and Enterprise Edition v. 5.04.20 released!

We are happy to announce v5.04.20 of our popular middleware for Delphi and C++Builder.

If you like kbmMW, please let others know! Share the word!

We strive hard to ensure kbmMW continues to set the bar for what an n-tier product must be capable of in the real world!

This release is primarily bugfix release, but does also contain a number of new things:

  • Support for scheduling multiple parallel child jobs for recurrent runs.
  • XML <> Object Notation conversion improvements
  • kbmMW Configuration improvements

Please look in the end of this post for a detailed change list.

Professional and Enterprise Edition is available for all with a current active SAU. If your SAU has run out, please visit our shop to extend it with another 12 months.

CodeGear Edition is available for free, but only supports a specific Delphi/Win32 SKU, contains a limited feature set and do not include source.

Please visit https://portal.components4developers.com to download.

—-

kbmMW is the premiere n-tier product for Delphi, C++Builder and FPC on .Net, Win32, Win64, Linux, Java, PHP, Android, IOS, embedded devices, websites, mainframes and more.

Please visit http://www.components4developers.com for more information about kbmMW.

—-

Components4Developers is a company established in 1999 with the purpose of providing high quality development tools for developers and enterprises. The primary focus is on SOA, EAI and systems integration via our flagship product kbmMW.

kbmMW is a portable, highly scalable, high end application server and enterprise architecture integration (EAI) development framework for Win32, ..Net and Linux with clients residing on Win32, .Net, Linux, Unix, Mainframes, Minis, Embedded and many other places. It is currently used as the backbone in hundreds of central systems, in
hospitals, courts, private, industries, offshore industry, finance, telecom, governements, schools, laboratories, rentals, culture institutions, FDA approved medical devices, military and more.

—-

5.04.20 Nov 12 2017

New stuff
 =========
 - Added ability to Schedule batches of tasks as one job, similarly as Run.
 Using Schedule, it can be recurrent.

Fixes
 =====
 - Updated several database adapters with various fixes.
 - Fixed error popping up in TkbmMWCustomHashItem when range check is enabled in compiler.
 - Fixed bugs in kbmMWScheduler.
 - Fixed leaks in kbmMWScheduler related to scheduling of batches of tasks.
 - Fixed TkbmMWLockFreeHashArray2.Enum not returning AKey2 value.
 This shows up if one enable the nice debug flag
 KBMMW_MREW_NOTIFY_LONG_LOCKS_DEBUG (generally not to be used in production).
 It ensures that deadlocks due to locking will show up in the Windows monitor
 with exact info about which thread(s) held the lock and the type of lock.
 - Fixed off by one in counting when to GC a service instance resulting
 in leaving one too little left when minimum of instances has been defined.
 - Fixed service GC issue when a service has a very long running operation
 that times out and thus should be removed, resulting in less than
 defined minimum number of instances.
 - Fixed kbmMWMT database adapter's resolver to not require a table name.
 - Fixed TkbmMWConfiguration.

Changes/minor additions
 =======================
 - Updated MT demo to match current kbmMW version.
 - Significantly improved XML SaveToObjectNotation and LoadFromObjectNotation.
 Amongst other s added the following options:
 mwxonoAutoIdentifyArrayElement - Set to include i=IndexNumber of array
 attribute.
 mwxonoReservedNameAsElement - Set to not interpret id and type names but
 instead treat them as elements.
 mwxonoAutoNumberUnnamedArrays - Set to add array level to unnamed arrays.
 If not set, sub array will have same name as parent.
 - Added BSON as storage format for TkbmMWConfiguration.
 - Added Prepare...Storage utility methods to TkbmMWConfiguration to easily
 setup specific storage type.
 - Added kbmMWConfiguration sample.
 - Added SetDateTimeTimeZone to TkbmMWDateTime, which specifically sets a
 datetime with a specific timezone.

ANN: kbmMW Professional and Enterprise Edition v. 5.04.10 released!

We are happy to announce v5.04.10 of our popular middleware for Delphi and C++Builder.

If you like kbmMW, please let others know! Share the word!

We strive hard to ensure kbmMW continues to set the bar for what an n-tier product must be capable of in the real world!

This release is primarily bugfix release, but does also contain a number of new features:

  • Local and remote checksum support for file service and client
  • Scheduler improvements with support for run of a batch of multiple parallel child jobs
  • AMQP improvements

Please look in the end of this post for a detailed change list.

Professional and Enterprise Edition is available for all with a current active SAU. If your SAU has run out, please visit our shop to extend it with another 12 months.

CodeGear Edition is available for free, but only supports a specific Delphi/Win32 SKU, contains a limited feature set and do not include source.

Please visit https://portal.components4developers.com to download.

—-

kbmMW is the premiere n-tier product for Delphi, C++Builder and FPC on .Net, Win32, Win64, Linux, Java, PHP, Android, IOS, embedded devices, websites, mainframes and more.

Please visit http://www.components4developers.com for more information about kbmMW.

—-

Components4Developers is a company established in 1999 with the purpose of providing high quality development tools for developers and enterprises. The primary focus is on SOA, EAI and systems integration via our flagship product kbmMW.

kbmMW is a portable, highly scalable, high end application server and enterprise architecture integration (EAI) development framework for Win32, ..Net and Linux with clients residing on Win32, .Net, Linux, Unix, Mainframes, Minis, Embedded and many other places. It is currently used as the backbone in hundreds of central systems, in
hospitals, courts, private, industries, offshore industry, finance, telecom, governements, schools, laboratories, rentals, culture institutions, FDA approved medical devices, military and more.


5.04.10 Nov 3 2017

Fixes
=====
– Fixed bugs and improved XML<>ON conversion.
– Fixed bugs in TkbmMWConfiguration.

Changes/minor additions
=======================
– Added KeepAliveTimeout and KeepAliveInterval to Indy TCP server transports

5.04.00 Nov 2 2017

New stuff
=========
– Added OnAccessException event to TkbmMWCustomFileClient.
– Added Checksum, ChecksumEx, SameFile, SameFileEx, LocalChecksum to TkbmMWCustomFileClient
Checksum(Ex) and LocalChecksum use SHA256 to calculate checksum.
SameFile(Ex) calculates checksum on both local and remote file and compares those.
On platforms supporting TkbmMWScheduler, the calculations are run in parallel.
– Added WithObject and WithInterface to TkbmMWScheduledEvent to allow
piggybacking additional data to events.
– Added additional overloaded SynchronizedAfterRun and AfterRun for anonymous
procedures to TkbmMWScheduledEvent.
– Added WhenException methods to TkbmMWScheduledEvent to allow handling exceptions.
– Added WaitRun(s) to TkbmMWScheduledEvent to allow pausing a thread until an
event has finished running.
– Added additional Run/RunNow methods to TkbmMWScheduler to allow for scheduling
multiple parallel jobs that will be run under control of one scheduled event.
Only when all jobs has run, the scheduled event is considered to have run.
– Added mwxonoPreferAttributes and mwxonoAutoIdentifyArrayElement to
TkbmMWXMLObjectNotationOption.
mwxonoPreferAttributes controls if conversion from object notation
should prefer defining XML node values as attributes or as elements.
mwxonoAutoIdentifyArrayElement controls if conversion from object notation
should include index (i) attribute to precisely identify a row in an array.
– Updated many database adapters to prevent certain leaks on exceptions.
– Added MaxFileSize to TkbmMWFileServiceDefinition to define maximum size of file
that is allowed to be received by the server. Default no limit.
– Added TkbmMWVirtualConfigurationStorage to kbmMWConfiguration unit.
It allows for getting and storing configuration from any type of medias.
– Added TkbmMWMarshal.Bytes2Memory function in kbmMWGlobal.
– Added ToString to IkbmMWAutoValue.
– Added kbmMWExplode function to kbmMWGlobal. It allows for exploding
strings with start and end tags as delimiters.
– Added PrettyChar2String function to IkbmMWLogFormatter.
– Made Char2PrettyChar function in IkbmMWLogFormatter implementers public.
– Added support for detecting version of databases for some databases in
TkbmMWCustomConnectionPool.
– Added TkbmMWThreadONObject and TkbmMWThreadONArray to kbmMWObjectNotation.
They allows for multithreaded access to the same base object notation object or array.
– Added additional support for CoInitialize and CoUnInitialize for UNIDac adapter.
– Added BasicProperties property to IkbmMWAMQPChannel.
– Updated database adapter wizard to generate up to date code.
– Improved stability of TkbmMWFileService, TkbmMWFileClient and TkbmMWFilePool.
– Improved error handling in kbmMWORM.

Fixes
=====
– Fixed bugs in TkbmMWScheduler.
– Fixed compilation errors in AMQP on some IDE SKU versions.
– Fixed header properties not available under some circumstances in AMQP.
– Fixed bugs in TkbmMWAuthorizationManager.
– Fixed bugs in kbmMWConfiguration.
– Fixed bugs in kbmMWHTTPUtils resulting in stack overflow.
– Fixed some null handling issues in TkbmMWObjectNotation.
– Removed leftover debug code from TkbmMWBPStringMaskPart.
– Fixed bugs in TkbmMWAMQPChannel.
– Fixed NULL marshalling issue in TkbmMWONNullableMarshal.
– Fixed kbmMWServer not instantiating minimum number of services at startup.
– Fixed IDE Debug visualizers.

Changes/minor additions
=======================
– Improved GetStreamEx and PutStreamEx to allow for retry on failure in TkbmMWCustomFileClient.
– Generally improved exception and error handling in TkbmMWCustomFileClient.
– Improved PutStreamEx to include offset and total file size in server call.
– Improved TkbmMWSQLiteMetaData to support obtaining version meta data and index info
from older SQLite versions (pre 3.8.3)

kbmMemTable v. 7.77.30 Standard and Professional Edition released

This is a bugfix release fixing the following issues:

  • Fixed compilation in D2009/D2010.
  • Fixed ftString PopulateField and CompareFields bug affecting NextGen compilers (locate/sort).
  • Fixed order of destruction of FRowOrderIndex.

kbmMemTable is the premier high performance, high functionality in
memory dataset for Delphi and C++Builder with kbmMemTable Professional
topping the scales as being the worlds fastest!

If you have an up to date Service and Update (SAU) subscription, then
you can immediately visit https://portal.components4developers.com to
download the latest kbmMemTable release.

If not, please visit our shop at http://www.components4developers.com
and extend your SAU with another 12 months.