Genero 2.21 – General Availability

Irving, Texas – December 11, 2009Four Js Development Tools is pleased to announce the Genero 2.21 General Availability today, December 11, 2009. This important release brings significant improvements to the Graphical User Interface and the application server, and includes the support of the 42m module specification with the IMPORT instruction.

Genero 2.21

New features

  • Modules
    Modules are the major feature in Genero 2.21. Modules are a straightforward way to define dependencies, allowing program compilation without a link phase. With the IMPORT FGLinstruction, you can share elements such as functions, variables, user types and constants to be shared between modules.

    IMPORT FGL myutils
    IMPORT FGL account
      CALL myutils.init()
      CALL set_account("CFX4559")
  • New database drivers
    The following database drivers are now supported with the Genero 2.21 version:

    • dbmads381 for a Genero db 3.81 client.
    • dbmoraB2x for Oracle 11g release 2 (11.2).
    • dbmesmA0 for an Easysoft 1.2.3 client to connect from Unix to Microsoft SQL Server.
    • dbmpgs84X for a PostgreSQL 8.4 client supporting the INTERVAL datatype.
  • Widgets management
      • Some new style attributes have been added for
        • the window : actionPanelButtonTextAlign, ringMenuButtonTextAlign.
        • the image : alignment.
      • Support for SpinEdit new attributes: valueMin and valueMax, to set a range on the SpinEdit.
  • Numeric keypad decimal separator
    The decimal separator key of the numeric keypad now follows the application settings for numeric data formatting defined by DBMONEY or DBFORMAT. The decimal separator defined by one of these environment variables will be used when the dot key of the numeric keypad is pressed.
  • Automatic display of BYTE images
    Image data contained in a BYTE variable can now be displayed automatically by Genero when you use a simple DISPLAY BY NAME, DISPLAY TO, or when the BYTE variable is used by a dialog instruction.
  • Paged DISPLAY ARRAY supports undefined initial row count
    When using a Paged DISPLAY ARRAY (ON FILL BUFFER), it was mandatory to provide the total number of rows in the result set, requiring a SELECT COUNT(*) before executing the dialog instruction. The dialog now supports an undefined number of rows, by using the value -1 in the COUNT dialog attribute.
  • Static SQL column definition supports DEFAULT clause
    The syntax of the CREATE TABLE and ALTER TABLE Static SQL statements allows the DEFAULT clause in column definitions.

    CREATE TABLE item ( num SERIAL, name VARCHAR(50) DEFAULT '' 
    NOT NULL )
  • PostgreSQL supports TEXT/BYTE
    It is now possible to use TEXT/BYTE data with PostgreSQL with the dbmpgs (PostgreSQL) drivers.
  • Define the initial size of the MDI container
    You can now define the initial size of an MDI container with the ui.Interface.setSize method.

      CALL ui.Interface.setName("main1")
      CALL ui.Interface.setText("This is the MDI container")
      CALL ui.Interface.setType("container")
      CALL ui.Interface.setSize("600px","600px")
      CALL ui.Interface.loadStartMenu("appmenu")
      MENU "Main"
        COMMAND "Help" CALL help()
        COMMAND "About" CALL aboutbox()
        COMMAND "Exit"
           EXIT MENU
      END MENU
  • New INSERT syntax to avoid SERIAL column usage
    A new Static SQL syntax has been implemented for the INSERT statement, which removes the record member defined as SERIAL, SERIAL8 or BIGSERIAL in the schema file:

    SCHEMA mydb
    DEFINE record RECORD LIKE table.*
    INSERT INTO table VALUES record.*
  • Support for C1 Ming Guo date format modifier
    You can enable the digit-based Ming Guo date format by adding the C1 modifier at the end of the value set for the DBDATE environment variable:

    $ DBDATE="Y3MD/C1"
    $ export DBDATE

Genero Web Services 2.21

  • Support of HTTPS in the fglwsdl tool
    The fglwsdl tool supports HTTPS requests to retrieve a WSDL or an XSD on the network.
  • Support of authentication in the fglwsdl tool
    The fglwsdl tool allows http authentication and proxy authentication when requesting a WSDL or an XSD on the network, and supports basic and digest authentication.
  • Client stub based on the DOM API and using callback functions
    The fglwsdl tool provides a new option that generates:

    • a client stub entirely based on the DOM API
    • calls to a request, response and fault callback function per service

    This option is especially useful when you have to communicate with another web service that requires additional information on the XML request, or when it returns additional information that was not specified in the WSDL. For instance, this is the case if you have to communicate with web services using WS-Security. You can manipulate the XML document in the generated client stub using the XML-Signature or XML-Encryption  API to perform the security part by hand before it is sent to the network.

  • Mixing low-level and high-level services
    The COM library is enhanced by a new function called HandleRequest to allow low-level and high-level web services on the same server.
  • Automatic HTTP GET request reply
    The COM library is enhanced to perform automatic reply on an HTTP GET request when the server requires HTTP authentication, proxy authentication, or returns an HTTP redirect.
  • Option to serialize BDL date and datetime in UTC format
    The XML library supports a new option to serialize any BDL DATE and DATETIME using the UTC format requested in most WS-Security exchanges.
  • Support for key derivation
    Due to security issues, the usage of a direct shared symmetric or HMAC key is not recommended; most secured operations should use a key derived from a common shared key instead. The XML library has been enhanced with two APIs in the CryptoKey class:

    • Constructor CreateDerivedKey()
    • Method deriveKey()
  • Digest computation and random string generation
    In most Web Service security exchanges, computing digest passwords and using random binary data is required, to detect reply attacks for instance. The COM library has therefore been enhanced with two helper APIs in a new Util class:

    • Static method CreateDigestString()
    • Static method CreateRandomString()
  • Support of TEXT stream in the StAX API
    The StAX reader and writer classes have been enhanced with two new methods to set up the XML stream on a TEXT lob. It enables parsing of an XML document in StAX directly from a TEXT with the readFromText() method, and creating a new XML document saved directly as TEXT with the writeToText() method.
  • Support of XML wildcard attributes
    The Genero Web Services library has been enhanced to support XML wildcard attributes. Such wildcard attribute can be set in a XML schema or in a WSDL via the anyAttribute tag. It allows additional attributes belonging to other XML schemas in a main XML schema. The additional attributes are not necessarily known by the main schema.
    The fglwsdl tool has been enhanced to recognize the additional attribute and to generate a one-dimensional dynamic array with a new XMLAnyAttribute attribute, and the XML Serializer has been enhanced to handle the new XMLAnyAttribute during the serialization and de-serialization process.
    A new option called xs_processcontents is supported by the XML Serializer to generate the XML schema of such wildcard attributes with a processContents tag that defines the way a validator will handle them.
  • Full operational XML-Encryption demo
    The package contains a new demo called SimplePKI that demonstrates the usage of XML-Encryption in Genero. Actually, it allows several clients to register to a centralized PKI(Public Key Infrastructure) service that generates a unique RSA key-pair per user. The private key is returned to the user during the registration or login, using a derived symmetric key based on the user’s password to make it secure. Then any client is able to retrieve the public key of the registered users, and to encrypt XML data only readable by that user.
    Note: This demo could easilly be adapted in a real-world application if for instance all key-pairs are stored in a database for persistence.
    You can find the demo in the demo/WebServices/simplepki subdirectory or by running the demo application in your installation directory.

Genero 2.11 Compatibility

GDC and GAS 2.21 are compatible with FGL 2.11 Runtime.
You can now run your 2.11 application with Desktop or Web Client 2.21. You can also run your 2.11 web service on Application Server 2.21. This can be useful if you need to mix FGL 2.11 and 2.2x installations: you only need to install the 2.21 client and/or application server.

Genero Desktop Client 2.21

New features

  • General

    • HTTP Stack Review.
      The Internal HTTP stack has been rewritten. This enables pre-2.20 features like Kerberos Support, NTLM single Sign-on or to reestablish Client certificates that were lost. GDC is also able to retry when network errors occur. This was already the case in previous (late MR) versions, but now it may retry in more situations (ex: in case of HTTP error 500). This can be useful if your network is not too reliable and sometimes messages may be discarded before reaching GAS or returning to GDC. You can now configure how GDC will retry.
      GDC now shows some information in the systray icon when there is an HTTP connection issue:

  • Windows

    • Automatic scrollbars when forms are larger than the desktop size
      In 2.20, maximized windows show scrollbars around the form if the window is larger than the desktop’s available size.

      This old feature has been revised to work also when the window is not maximized. When the window is larger, GDC will automatically fit the size of the window to the desktop size (height or width) and display scrollbars around the form. The following screenshots show the same application running on two different desktop sizes.
      On a 1920×1200 desktop:

      No scrollbar is visible. Now, the same application on a 1024×768 Screen:

      You can see that the height of the form is now bigger than the screen size. A vertical scrollbar is added to allow the display of the bottom of the screen.

      • Navigation buttons are different if you are on the first or last row.
      • A “plus” button has been added to display in one click all remaining items.
      • A little animation shows scroll direction.
    • Toolbars: configure if dockable or not
    • Window state minimized
  • Monitor

    • Connection tab displays application title and windows list
      Previous versions only displayed the application name (usually 42r name) ; now the tab shows the text (if set using ui.interface.setText()). Each application will also show in the tooltip the list of all open windows.
    • “User limit exceeded” as default Terminal String
      “User Limit exceeded” is now a default terminal string so the end user has feedback if his application can’t start because of a license issue.
    • Show debug information when starting shortcuts
      Debugging information has been added to the debug console when starting a shortcut.
    • Support for Windows Seven
    • Support for WinSSHd 5
  • Frontend function call

    • Standard: hardcopy
      “Hardcopy” is now available as a frontcall. It allows you to print a screenshot of the current window.
    • Standard: launchurl update
  • Miscellaneous

    • Hard copy available in system menu of MDI Child window.
    • MSI Installer for windows and Desktop integration
    • Improved Desktop integration:
      • .gdc files are associated with GDC to be run directly in your favorite explorer (windows, linux)
      • Linux installer creates entries in your desktop start menu.

Genero Application Server 2.21

  • Layout enhancement for the AJAX Web Client

    The layout of the AJAX output driver has been enhanced in several ways.

    • When there is empty space below table elements, the table grows by adding new rows. The following picture shows the effect on a table compared to the same application executed by GAS 2.20.Before,


    • Empty space around elements like groups and textedits is filled by growing that element.
  • Picture deployment enhancements

    • The list of file system paths which are searched for pictures can be configured according to the user agent type.
    • Pictures that are not found on the GAS file system are requested from the DVM. The ResourceURI has been enhanced to support it.
  • Table picture flow style for the AJAX Web Client support
  • Internet Explorer 8 support
  • Authenticated user and remote IP address
    The authenticated user and the remote IP address from the client is accessible to the 4GL application through environment variables.
  • SBRE Path list
    The list of supported snippet-based rendering engine template paths is accessible through a specific URL.
  • Template Element Identifiers
    The Template Element Identifiers feature provides a mean to customize the template element identifier name used to reference elements during the incremental update of the page, according to the target markup language.
  • Configuration application description
    Application tags in configuration files support a short and a long description.

Best Regards,

The Four Js Development Team