BDL 2.50 new features

Features added in 2.50 releases of the Genero Business Development Language.

Important: This page covers only those new features introduced with the Genero BDL version specified in the page title. Check prior new features pages if you migrate from an earlier version. Make sure to also read the upgrade guide corresponding to this Genero version.

Corresponding upgrade guide: BDL 2.50 upgrade guide.

Table 1. Core language
Overview Reference
Support for character length semantics to simplify UTF-8 programming.

See Length semantics settings.

The UTF-8 character set can be used on Microsoft™ Windows® platforms by setting the LANG environment variable to .fglutf8. See Language and character set settings.
JSON (JavaScript Object Notation) utility classes. See The util.JSON class, The util.JSONObject class, The util.JSONArray class.
String to DATETIME conversion now accepts ISO 8601 format sub-set. See Data type conversion reference.
The base.Channel method dataAvailable(), to check for channel readability. See base.Channel.dataAvailable.
With IMPORT FGL, fglcomp now automatically compiles imported modules when needed. To avoid implicit compilation, use the --implicit=none option of fglcomp. See IMPORT FGL module.
The --resolve-calls or -W implicit fglcomp compiler options can be used to detected unresolved symbols. See IMPORT FGL module.
The fglrun option --print-imports can be used to find modules dependencies and use IMPORT FGL instead of traditional linking. See IMPORT FGL module.
Option --doc-private can be used with fglcomp --build-doc in order to document private symbols. See Understanding source code documentation.
CANCEL DIALOG instruction for DIALOG blocks. See CANCEL DIALOG instruction.
FGLPROFILE fglrun.decToCharScale2 and fglrun.decToCharScale2.print to control DECIMAL(P) to string conversion. See Floating point to string conversion.
Table 2. User interface
Overview Reference
Dialog modularization. Declarative DIALOG blocks can be defined as module elements and reused with the SUBDIALOG keyword of procedural DIALOG blocks. See Structure of a procedural DIALOG block.
Form modularization. Use the new FORM layout keyword to include a sub-form in the current form specification file. See Form file structure.
CLEAR SCREEN ARRAY instruction clears the values of all the rows of a form list (TABLE, TREE, SCROLLGRID). See CLEAR SCREEN ARRAY.
AUTONEXT attribute is allowed in DATEEDIT, SPINEDIT and TIMEEDIT fields. See DATEEDIT, SPINEDIT, TIMEEDIT.
BUTTONEDIT item type attribute NOTEDITABLE, to disable the field editor. See NOTEDITABLE attribute.
ON CHANGE fired when selecting a date in DATEEDIT calendar or when changing the value of a TIMEEDIT widget. See ON CHANGE block.
Presentation style attributes ringMenuButtonTextHidden and actionPanelButtonTextHidden added to customize the default action view panels. See actionPanelButtonTextHidden, ringMenuButtonTextHidden.
Presentation style attribute thinScrollbarDisplayTime to define the display time of the thin scrollbar when scrolling in fixed screen arrays. See thinScrollbarDisplayTime
Presentation style attribute customWidget:
  • Defines the CHECKBOX widget (attribute is removed in V3.00)
  • Defines the RichText TEXTEDIT widget (attribute is removed in V3.10)
fglrun options --start-guilog and --run-guilog, to generate and replay a GUI protocol exchange. See Front-end protocol logging.
Table 3. SQL databases
Overview Reference
The SQLite driver dbmsqt3xx is now statically linked with the SQLite library, except on platforms where the SQLite library is usually present such as Linux® and Mac OS-X™. See the SQLite adaptation guide.
Database driver for PostgreSQL 9.2: dbmpgs92x. This driver is similar to the prior PGS 9.x drivers, it is supported for strict binary compatibility with the PostgreSQL 9.2 client library and is compiled with the 9.2 libpq headers. See Database driver dbmpgs92x.
Database driver for IBM® DB2® LUW version 10: dbmdb2Ax. This driver is similar to the prior DB2 9.x driver, it is supported for strict binary compatibility with the DB2 10.x client library and is compiled with the 10.x CLI headers. See Database driver dbmdb2Ax.
Support for the Oracle® RAW data type, in order to use the SYS_GUID() values generator. See The RAW data type.
FGLPROFILE entry for MySQL to specify the my.cnf client configuration file: dbi.database.dbname.mys.config. See Oracle MySQL specific FGLPROFILE parameters.
Table 4. Web Services
Overview Reference
New security library provides classes and methods to support basic cryptographic features. Although added for Genero Web Services, can be used for any Genero application. See The security package.
New signature methods in xml.Signature class: signString() and verifyString(). See xml.Signature methods.
New methods in xml.CryptoKey: loadPublicFromString() and savePublicToString(). See xml.CryptoKey methods.
Support of Diffie-Hellman key-agreement algorithm. It allows two peers to agree on the same symmetric key, the shared secret, without exchanging confidential data. See The Diffie-Hellman key agreement algorithm, Supported kind of keys and Computing the shared secret with Diffie-Hellman
HTTP compression support has been added for Genero Web Services. See HTTP compression in SOAP.

The com.HTTPRequest.setAutoReply() method now works for HTTP HEAD method as well as the GET method.

See com.HTTPRequest methods.

DOM features:

The Genero XML DOM library has been enhanced with new features that can be set with the setFeature() method or retrieved with the getFeature() method.
  • load-save-base64-string - loads and saves an XML document from/to a base64 string
  • auto-id-attribute - sets at document loading all unqualified attributes named ID, id, Id or iD of type ID
  • auto-id-qualified-attribute - sets at document loading all qualified attributes named ID, id, Id or iD of type ID
  • enable-html-compliancy - allows HTML document parsing and modification using the xml.DomDocument API.
See The DomDocument class.

Binary support on HTTP layer:

The Genero COM library has been enhanced to support transport of binary data via the Genero BYTE data type.

On the client side, it is now possible to send and read binary data to/from a server with the following two methods:
On the server side, it is possible to read and write binary data to a client with following two methods:
See The com package.
Access the HTTP headers request and response in high level web services. See how to modify your server or use fglwsdl generated global end point at runtime.

The standard API is enhanced with few new methods and a new class called HTTPPart to handle the different part in a HTTP request or response at client and server side.

See The HTTPPart class, The HTTPRequest class, The HTTPResponse class, and The HTTPServiceRequest class.
The client side is able to generate stubs to support multiple part with Genero Web Services. Support for the server side is not yet provided.
Note: Starting with version 2.50.25, when generating client stubs managing multipart, you will get extra input and/or output variables called AnyInputParts and AnyOutputParts, defined as a DYNAMIC ARRAY of com.HTTPPart objects. These arrays may contain additional input and/or output HTTP parts not specified in the WSDL. You will have to adapt your client program, to handle those dynamic arrays in any functions calling such stubs. See Client stubs managing multipart changes.
See Multipart in the client stub and SOAP multipart style requests in GWS.
FGLPROFILE HTTPS configuration details no longer needed to perform HTTPS communication. A default SSL/TLS configuration is now generated automatically. See HTTPS configuration.
Creating URL base that applies to multiple server applications by using a wildcard in the URL, allowing for a shared server configuration (such as authentication and HTTPS). See FGLPROFILE: Server URL patterns.