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.
Please notice that emergency release 5.04.32 has been made available. It fixes two bugs. One related to compiling for NextGen and the other has to do with TkbmMWCustomSimpleClient exception handling, which unfortunately broke in 5.04.30. It is strongly recommended to immediately upgrade from 5.04.30 to 5.04.32.