Chapter 3. Cobol2JSF2EJB3

3.1. BLU AGE II 5.2.1 Cobol2JSF2EJB3JPA2 DWP Release Note

Global Notes:

  • 5.X products are parts of the “Blu Age II – Legacy to cloud” product family, built on Kepler (Eclipse 4.3);

  • Product documentation is available at http://wikimod.bluage.com/mediawiki/index.php/Main_Page;

    • Starting with version 5.0, a new license management has been introduced, requiring the use of a new License Server (shipped separately – see corresponding documentation for details);

    • 5.X versions rely on the launch configurations mechanism introduced with the 4.X product series in replacement of the previous workflow mechanism. Migrating from the 3.X workflow to the 5.X launch configuration is described in a dedicated guide.

3.1.1. JSF2EJB3JPA2 DWP

3.1.1.1. Global overview

The DWP variant of the JSF2EJB3JPA2 relies on:

  • JPA2 for the entity layer

  • EJB3 for the service layer, with a dual implementation for Spring compatibility

  • JSF2/primefaces for the web layer

  • Bytecode enhancements with Lombok framework

  • Dozer for automatic conversion of data objects between layers

  • Bespoke framework classes supplied by the customer. The path to this framework must be setup in the “bespokeFwkPackage” workflow option.

Please note that the Lombok framework is not provided in this release. To install it:

  • Download the Lombok framework (http://projectlombok.org/download.html )

  • Copy the downloaded jar in the %BLUAGE_INSTALL_PATH%/BLUAGE/eclipse folder

  • Add this line at the end of the bluage.ini file : -javaagent:lombok.jar

The specifics of this technical stack requires some custom modelling practices, which will be described below.

3.1.1.2. Data layer

3.1.1.2.1. Entities and BOs
  • The entities and BOs are modelled as usual, with <<PK_ENTITY>> and <<PK_BUSINESS_OBJECT>> stereotypes.

    • Unlike the usual practice, the entities will be generated as JPA objects, and the BOs as normal java objects.

    • Despite being modelled in the entity layer, the BOs will be generated in the service layer.

    • In the generated code, dozer will be used to automatically convert from entity to BO, and conversely. Lists can be managed the same way. Generally speaking, there is no need to manipulate the entities directly in the model, but it is allowed.

  • In the entities, the id must be modelled with “id” name, “Long” type and <<Identifier>> stereotype. This is mandatory because the attribute is supplied by the framework in the generated code. The id will not be generated in the entity (it is inherited), but will be generated in the BO (used to retain the value throughout Dozer transfers).

  • Version attribute is also supplied by the framework, thus stereotypes for version customizations are not supported.

3.1.1.2.2. Data managers
  • For each entity, a service class called a DataManager will be created. Each entity named MyEntity will have its corresponding MyEntityDM.

  • Usually, this class will be generated under the hood for raw low level data manipulation. There should be HQL and CRUD operations in the service layer relying on BOS (as in usual Bluage models) that will automatically generate the corresponding raw method in the correct Data Manager.

    • The raw method in Data Manager will operate with entities.

    • The method in the service layer will convert the input and return parameters using Dozer.

    • Dispatching in the correct Data Manager is achieved with:

      • Return type for <<find_by_id>> operations

      • Input type for <<create>>, <<update>> and <<delete>> operations

      • “bo” tag for <<hql_operation>>. Thus it is mandatory to supply this tag.

3.1.1.3. Service layer

3.1.1.3.1. Global architecture
  • Two distinct projects are generated for the service layer: Common service module and Business service module.

  • There must be two <<PK_SERVICE>> packages in the model.

  • One of them must additionally hold the <<PK_COMMON_SERVICE>> stereotype.

  • The modelled services will generate an interface, an implementation with @Named annotation and the actual methods, and an EJB that extends the implementation.

3.1.1.3.2. CRUD operations
  • There are three operations in the framework for data management:

    • public <T> T findByID(Class<T> entityClass, Long id)

    • public <T> T save(T entity)

    • public <T> void delete(T entity)

      • Note: there is no merge support in the framework.

  • <<find_by_id>> stereotype maps to the first one, <<create>> and <<update>> to the second one, and <<delete>> to the third one.

  • <<XXX_all>> stereotypes are not supported. Neither is <<find_by_properties>>.

  • <<find_by_id>> generates a method with a call to the framework, and then a Dozer transfer. Unlike the usual assumption, the model operation must take a Long as a parameter (rather than the BO). The class parameter will be added automatically in the generated code.

  • <<create>> and <<update>> generate a method with a Dozer transfer of the parameter, a call to the framework, and then a Dozer transfer of the result. Unlike the usual assumption, the model operation must return the BO (rather than a Boolean).

  • <<delete>> generates a method with a Dozer transfer and a call to the framework. Unlike the usual assumption, the model operation must return void.

3.1.1.3.3. HQL operations
  • They are modelled as usual, except that the “Bo” tag is mandatory even if the return type is not a collection.

  • They produce methods in the DM for raw entity access, and methods in the service with a Dozer transfer of the parameters (if needed), a call to the generated DM method, and a Dozer transfer of the result (if needed).

3.1.1.3.4. Process operations
  • There is nothing unusual in these operations except what is described in next chapter. Bags and Bluage Common Utils can be used as usual. The Bluage Common Utils will be generated in the package defined in the “utilsPackageName” workflow option, in the CSM project.

3.1.1.3.5. Copy operations
  • Copy operations are modelled as usual and produce methods with calls to the Dozer transfer methods supplied in the framework.

3.1.1.3.6. Miscellaneous stereotypes
  • New stereotypes are added for specific annotations:

    • <<@Audit>>

    • <<@Log>>

    • <<@RefreshPDSnapshot>>

    • <<@Secure>>

  • They can decorate operations or interfaces. If they decorate an interface, the annotation will be put on the EJB.

  • The <<throwBusinessException>> stereotype adds the corresponding throw clause an operation. The actual throw code must be added thanks to an opaque action.

3.1.1.4. Direct use of entities in the service layer

3.1.1.4.1. Presentation
  • The screenshot below is an excerpt from the client application describing the desired architecture.

  • As seen in this sample, direct use of entities in the process diagrams (instead of the BO/Dozer mechanics) is possible.

  • To achieve this in the model, some new concepts are introduced.

3.1.1.4.2. Entities in processes
  • In this product, it is now allowed to manipulate entities in process diagrams.

3.1.1.4.3. Use of DM in processes
  • Direct use of entity-based Data manager operations is enabled.

  • These operations (CRUD and HQL) must be modelled in the same way as described before, except that the entity must be used instead of the BO (in the signature AND in the “bo” tag of the <<hql_operation>>).

  • These operations must be modelled in a <<PK_DATA_MANAGER>> package added beside the related <<PK_ENTITY>> and <<PK_BUSINESS_OBJECT>>.

    • The interface name is not relevant, the operations will be dispatched in the correct Data Manager according to the rule described above in 2)b).

    • Nonetheless, it is a good practice to match the expected Data Manager for readability and traceability sake.

  • The operations can then be used in process diagrams as desired.

  • The CRUD methods in DM will not be actually generated: their use in the process diagrams will lead to a direct call to the inherited framework methods described in 3)b). In case of a <<find_by_id>> call, the additional Class parameter will be automatically added during generation.

  • Operations with <<hql_operation>> stereotype will be generated with raw entity access.

3.1.1.4.4. <<wrapper>> operations for <<hql_operation>>
  • In the specific case where the same HQL operation must be used with raw entity access in some diagrams and with BO access and automatic Dozer in others, it is not desirable to design and setup the query twice. In addition, as the BO <<hql_operation>> generates its own raw DM method, it would lead to a duplicate method in the DM.

  • Instead, a <<wrapper>> stereotype with “target” tag is supplied.

  • In this kind of situation, the raw entity operation must be fully modelled in the DM, and the service operation must have the same parameters, the <<wrapper>> stereotype, and the “target” tag populated with the DM operation. It must not have the <<hql_operation>> stereotype, and it may not have the same name.

  • This stereotype is not supposed to be used often: there should not be many cases where you need the exact same <<hql_operation>> in raw entity mode and in BO mode.

3.1.1.4.5. <<copy>> operations
  • The <<copy>> operations explained in 3)e) can also be used to transfer from entity to BO and from BO to entity.

3.1.1.4.6. Comments
  • With this set of new functionalities, a model can be designed to match the sample code above. A slight difference is that the calls to Transformer will be calls to the <<copy>> operations, which in turn call Transformer.

  • If this “registerCustomer” method is designed with normal process diagrams using BOs, the resulting code may lead to address duplication instead of attaching a customer to an existing address, exactly as stated by the comment in the supplied code:

  • Please note that the correct behaviour might also have been obtained by relying on the JPA merge functionality, but the given framework does not supply it.

3.1.1.5. Web layer

3.1.1.5.1. Generic assumptions
  • This product uses Rich UI modelling, with some specificities.

3.1.1.5.2. Controllers
  • This product designs the controllers by relying on the use cases: several pages in the same use case will share the same controller. The controller name will be the use case name + “Epm”.

  • The controller will contain all the event calls in all the corresponding pages, and all the properties in all the corresponding pages.

  • An event can be common to several pages. In this case, it can be inserted in the use case instead of the view

  • A property in a page will be generated in the controller, so a property shared in several pages can simply be modelled in any of these pages and used across all.

3.1.1.5.3. Scopes
  • The scope by default is the Conversation Scope. If a Request Scope is desired, the new <<REQUEST_SCOPED>> stereotype is available.

  • In conversation scope, the conversation is started by using the <<BEGIN_CONVERSATION>> stereotype on the event. The conversation is ended by using the <<END_CONVERSATION>> stereotype.

3.1.1.5.4. Session use
  • Three session management methods are supplied in the framework:

    • public void addSessionAttribute(String key, Object value)

    • public Object getSessionAttribute(String key)

    • public void removeSessionAttribute(String key)

  • These methods are supplied in the bluage profiles. They are located in the View control in the ui profile.

  • Manually updating the Output Pin type for the getSessionAttribute operation generates the appropriate cast in the code.

3.1.1.5.5. Webpages
  • The pages are designed as usual in Rich UI modelling. Specific controls can be designed and used the normal way.

3.1.1.5.6. Miscellaneous functionalities
  • The customary isPostback and executeClientScript operations are supplied. The corresponding classes are generated in the web project, in the package defined by the “fwkPackage” workflow option.

3.1.1.6. Bluage Wizards

3.1.1.6.1. Operation Wizard
  • The operation wizard generates signatures consistent with the assumptions explained in 3)b)

3.1.1.6.2. Data Manager Operation Wizard
  • This new wizard generates operations in a DM. Their signatures are consistent with the assumptions explained in 4)c)

3.1.1.7. KDM setup and Maven

3.1.1.7.1. Project types XXX-parent
  • In the KDM setup, each Project type named XXX must be accompanied by the Project Type named XXX-parent with option skipped=false. This parent will not be generated and must contain the maven setup for the actual parent project of the desired architecture (fields “Project name”, “Maven Group Id” and “Maven Artifact Version”).

  • The actual Maven dependencies must be handled by these use supplied parents, as Maven management is out of scope of the product.

3.1.1.7.2. Inner projects
  • In the desired architecture, the BSM and EPM project belong to an enclosing project. This is achieved by using the “Parent Project Type” attribute on the project type.

  • The generated project will be inside its enclosing project, but will also be imported as a top level project in the eclipse workspace, which will lead to this kind of workspace:

Here, the inner register-customer-bsm and register-customer-epm folders are physically the same as the top level projects with the same name.

3.2. BLU AGE II 5.2.3 Cobol2JSF2EJB3JPA2 DWP Release Note

Global Notes:

  • 5.X products are parts of the “Blu Age II – Legacy to cloud” product family, built on Kepler (Eclipse 4.3);

  • Product documentation is available at http://wikimod.bluage.com/mediawiki/index.php/Main_Page;

    • Starting with version 5.0, a new license management has been introduced, requiring the use of a new License Server (shipped separately – see corresponding documentation for details);

    • 5.X versions rely on the launch configurations mechanism introduced with the 4.X product series in replacement of the previous workflow mechanism. Migrating from the 3.X workflow to the 5.X launch configuration is described in a dedicated guide.

3.2.1. JSF2EJB3JPA2 DWP

3.2.1.1. Corrections

3.2.1.1.1. Entities generation (JIRA PLTC-2581)
  • The <<@column.length>> option is now correctly taken into account and does not produce generation errors.

3.2.1.2. Evolutions

3.2.1.2.1. Context classes
  • As the Data Layer is meant to be shared between the online programs and the batch programs, a flag was added in the workflow to generate the context management classes (for batches) in the Data Layer. This flag is available in this product, allowing a consistent generation between this product and the batch product.

    • The flag is a workflow option named generateContextClasses found in the com.netfective.bluage.dwp.data BSP.

3.2.1.2.2. Exception throwing
  • An ExceptionFactory has been added to the dwp profile. It allows to add business exception throws and technical exception throws in process diagrams without custom opaque code.

    • Try-catch constructions, on the other hand, must be written as opaque code.

    • We discourage the use of these, since validation code through exceptions is not a good idea. In these excerpts from the sample application:

    The exception handling can easily be removed.

    The validateCustomer method should return a Boolean.

3.3. BLU AGE II 5.2.4 Cobol2JSF2EJB3JPA2 DWP Release Note

Global Notes:

  • 5.X products are parts of the “Blu Age II – Legacy to cloud” product family, built on Kepler (Eclipse 4.3);

  • Product documentation is available at http://wikimod.bluage.com/mediawiki/index.php/Main_Page;

    • Starting with version 5.0, a new license management has been introduced, requiring the use of a new License Server (shipped separately – see corresponding documentation for details);

    • 5.X versions rely on the launch configurations mechanism introduced with the 4.X product series in replacement of the previous workflow mechanism. Migrating from the 3.X workflow to the 5.X launch configuration is described in a dedicated guide.

3.3.1. COBOL

3.3.1.1. Fixes

3.3.1.1.1. COBOL Parsing
  • More “SPECIAL-NAMES” entry syntaxes are now properly parsed.

3.3.1.1.2. Transmodeling
  • The COBOL “IS NUMERIC” condition is now properly transmodeled as a call to the StringUtils.isNumeric Blu Age utility.

3.3.2. JSF2EJB3JPA2 DWP

3.3.2.1. Fixes

3.3.2.1.1. Code Generation
  • Constants are now properly generated.

3.3.2.1.2. Tools
  • The getDifferenceInDays() method of DataUtils now returns the proper value when provided dates range spans daylight saving time.

3.3.2.1.3.  Compare Feature
  • The JavaScript code required by the allcols variables is now available in generated views. Note that columns of the “Display/Hide columns mismatch” category are best displayed by the Firefox and Chrome browsers.

3.4. BLU AGE II 5.2.6 Cobol2JSF2EJB3JPA2 DWP Release Note

Global Notes:

  • 5.X products are parts of the “Blu Age II – Legacy to cloud” product family, built on Kepler (Eclipse 4.3);

  • Product documentation is available at http://wikimod.bluage.com/mediawiki/index.php/Main_Page;

    • Starting with version 5.0, a new license management has been introduced, requiring the use of a new License Server (shipped separately – see corresponding documentation for details);

    • 5.X versions rely on the launch configurations mechanism introduced with the 4.X product series in replacement of the previous workflow mechanism. Migrating from the 3.X workflow to the 5.X launch configuration is described in a dedicated guide.

3.4.1. COBOL

3.4.1.1. Improvements

3.4.1.1.1. COBOL OCCURS Modernization Features

A set of improvements aiming at facilitating modernization of common cases of OCCURS definition and manipulation in COBOL are provided. Those evolutions target 1-dimension OCCURS of fixed size.

  • The Legacy Object Modernization wizard (aka TOM) will now modernize OCCURS fields as associations of the proper cardinality (when subfields are present), or typed Lists (for scalar types). Optionally those choices can be manually overridden to Blu Age array data types (string[], etc.).

  • Transmodeling generates appropriate BAGS access expressions for legacy expressions accessing the following mapped fields:

    • fields modernized as Lists (by using BDM for instance),

    • fields modernized as Arrays of primitive types using TOM,

    • fields modernized as Association with 0..* cardinality and a “@collection.type” stereotype set with a “list” value,

    • previously mapped synthetic attributes describing access to collections (see “Mapping” section below),

  • While transmodeling COBOL OCCURS specificities (ambiguous subscripts, non-zero-based indexes) are taken into account.

Note that this improvement is not supported while transmodelling in “NO BAGS” mode. Hence checking “Blu Age>Blu Age Reverse>Transmodelling>Generate BAGS in guard and opaque action” in Preferences is mandatory to benefit from this feature.

3.4.1.1.2. Legacy Object Modernization

As an addition to evolutions described above:

  • Classes can now be deleted in the Legacy Object Modernization tree. This is useful in the scenario where the fields of multiple legacy entities are moved in a single modernized one, hence leaving “empty” classes.

3.4.1.1.3. Mapping

The transmodeling wizard now provides the user with the possibility to resolve “missing mappings” by pointing to synthetic getters and setters, either defined by hand or generated by the BDM tool. Once mapped, calls to those methods will automatically be generated by transmodeling.

By default this possibility is deactivated (only previous behavior, mapping to properties, is provided). To enable this feature, check the “Blu Age>Blu Age Reverse>Transmodelling>Enable mapping to operation” Preference:

Then, while transmodelling, getter and setter operations can be picked for unmapped elements as follows:

Make sure the “Blu Age>Blu Age Reverse>UML Pickers>Only show service operations” Preference is unchecked.

Validate all and finish transmodeling Wizard.

Transmodeling generates appropriate BAGS access expressions to synthetics getters and setters.

Here is an example of the resulting model and code:

Note that this improvement is only supported for indexed accesses for now.

As an addition to evolutions described above, it is now possible to pick <<bean>> elements (hence residing in PK_SERVICE).

3.4.2. JSF2EJB3JPA2 DWP

3.4.2.1. Improvements

3.4.2.1.1. Tools
  • The process creation wizard can now use as types <<bean>> elements (hence residing in PK_SERVICE).

3.5. BLU AGE II 5.2.7 Cobol2JSF2EJB3 Hibernate Release Note

Global Notes:

  • 5.X products are parts of the “Blu Age II – Legacy to cloud” product family, built on Kepler (Eclipse 4.3);

  • Product documentation is available at http://wikimod.bluage.com/mediawiki/index.php/Main_Page;

    • Starting with version 5.0, a new license management has been introduced, requiring the use of a new License Server (shipped separately – see corresponding documentation for details);

    • 5.X versions rely on the launch configurations mechanism introduced with the 4.X product series in replacement of the previous workflow mechanism. Migrating from the 3.X workflow to the 5.X launch configuration is described in a dedicated guide.

3.5.1. COBOL

3.5.1.1. Fixes

3.5.1.1.1. COBOL Parsing

The following COBOL construction are now properly parsed:

  • The NOT ON EXCEPTION and AT clauses in FIND statement.

  • The ON EXCEPTION clause in DELETE statement.

  • FUNCTION(DMERROR)

  • MYSELF(VALUE)

  • CHANGE ATTRIBUTE AREAS

  • The DOUBLE and BLANK features on PIC definition

  • The non-mandatory keyword IS in SIGN IS features on PIC definition

  • The RECORD feature on SEEK statement

  • The MOVE [A :B :C] form statement

  • The THRU features of RENAMES clause on data definition

3.5.1.1.2. Transmodeling
  • The COBOL EVALUATE statement with ALSO feature is now properly transmodeled.

  • The nested IF Control Structures are now right after “CALL PROGRAM.” Statement.

  • With respect to the previous released evolution of the capability to map fields on synthetic getters and setters: the restriction of use on non-indexed access has been lifted. Thus, reading and writing access on fields can use these synthetic getters and setters as the shows the following screen shot.

3.5.1.2. Improvements

  • A tool facilitating the modernization of SADS screens to RichUI UML modelization is provided. It takes as an input an SADS textual dump of screens and their associated structure description. To use this wizard, note that a knownledge base project must be created and the target UML model opened beforehand. Then:

    1. To access the wizard, rename the dump in the Package Explorer so that it bears a “.TXT” extension, then right click on it and choose the “Modernize SADS Dump as RichUI” menu entry.

    2. On the first wizard page, select one screen to extract:

    1. On the next wizard page, an overview of the fields which will be extracted and their associated screen value object properties are provided:

    1. Press Finish to generate a value object describing those fields and a RichUI modelization of this screen mapped to this value object:

    Note that in order to gain access to the Bluage UI palette, the following contextual menu action must be performed on the generated activity diagram:

    Refactor > Change Type > Custom Diagrams > Bluage UI

3.5.2. JSF2EJB3 Hibernate

3.5.2.1. Improvements

  • A stack using JSF2, EJB3.1, JPA2 and Hibernate as a provider is supplied.

  • Generated POMs and EAR configuration are upgraded to fit the Weblogic application server.

    • Some methods are not allowed to be final in the EJBs in the Weblogic server. A workflow option “enableEJBDynamicExtension” was supplied to remove the final mark. It must be set to true.

    • The workflow option “hibernateTransactionJtaPlatform” can be used to specify the transactions platform.

      In order to deploy under Weblogic, this option must be set to “org.hibernate.service.jta.platform.internal.WeblogicJtaPlatform”.

      When this option is set, the “hibernateTransactionFactoryClass” workflow option must be unset.

3.6. BLU AGE II 5.2.8 Cobol2JSF2EJB3 Hibernate Release Note

Global Notes:

  • 5.X products are parts of the “Blu Age II – Legacy to cloud” product family, built on Kepler (Eclipse 4.3);

  • Product documentation is available at http://wikimod.bluage.com/mediawiki/index.php/Main_Page;

    • Starting with version 5.0, a new license management has been introduced, requiring the use of a new License Server (shipped separately – see corresponding documentation for details);

    • 5.X versions rely on the launch configurations mechanism introduced with the 4.X product series in replacement of the previous workflow mechanism. Migrating from the 3.X workflow to the 5.X launch configuration is described in a dedicated guide.

3.6.1. COBOL

3.6.1.1. Fixes

3.6.1.1.1. Transmodeling
  • Mapping on particular modernized entities was wrong and thus led to “TODO” opaque actions or invalid guard on conditions. This concerned level 01 or 77 with only level 88 entities. It was fixed.

  • Some wrong “Abstract::abs()” were generated in BAGS opaque action during transmodeling of a move statement from String to a signed type. In this case no conversion to absolute value is used anymore. If an incompatibility of type is detected, a warning is added to generated UML.

  • Some wrong @ReverseUtils.NoName() operation were generated when transmodeling Perform XXX THRU YYY statement. It was fixed.

    • SET XXXX (TITLE) TO YYY statement led to exception in transmodeling step. It was fixed.

  • Lack of linking on entities defined from file description and database led to “TODO” opaque actions. Linking on these entities was established and solved the problem.

3.6.1.2. Improvements

3.6.1.2.1. Transmodeling
  • BAGS expression generated in opaque action are now lightened from specific type conversion, in particular for BigDecimal conversion. Conversion is delegated to BAGS framework on forward generation.

3.6.2. JSF2EJB3 Hibernate

3.6.2.1. Improvements

3.6.2.1.1. Specific pom.xml configuration injection 

Specific fragments of pom.xml configuration can now be directly injected into the generated project.

  • A workflow property specificPomPath has been added to the com.netfective.bluage.jsf2.myfaces.primefaces BSP, in order to specify the path to the text file to inject.

  • If the project is configured to use a Maven parent pom, the content of this file will be injected into the parent pom.xml. Otherwise, it will be injected into the pom.xml of all modules.

  • Only top-level configuration elements can be injected this way, which means elements available under the <project> element.

3.6.2.2. Fixes

3.6.2.2.1. Multi-datasource handling

Fixes have been made in order to manage multiple datasource connections. For each secondary datasource, the <<URL_Connection>> stereotype must be applied to:

  • the package containing the entities stored in this datasource.

  • the interface containing the services associated with these entities.

The dbkey tag must then be filled with the JNDI name of the persistence unit handling the datasource.

3.7. BLU AGE II 5.2.9 Cobol2JSF2EJB3JPA2 DWP Release Note

Global Notes:

  • 5.X products are parts of the “Blu Age II – Legacy to cloud” product family, built on Kepler (Eclipse 4.3);

  • Product documentation is available at http://wikimod.bluage.com/mediawiki/index.php/Main_Page;

    • Starting with version 5.0, a new license management has been introduced, requiring the use of a new License Server (shipped separately – see corresponding documentation for details);

    • 5.X versions rely on the launch configurations mechanism introduced with the 4.X product series in replacement of the previous workflow mechanism. Migrating from the 3.X workflow to the 5.X launch configuration is described in a dedicated guide.

3.7.1. COBOL

3.7.1.1. Fixes

  • Decomposition mechanism of BAGS expressions failed when index accesses concern item modeled with the “List” type and “Template Object” stereotype.

  • Transmodelling of PERFORM VARYING statement was wrong. The WHILE pattern, from the transmodelling, used a boolean condition, from the UNTIL Cobol Clause, which has to be negated.

  • The SCL/JCP Annotation Editor is available again.

3.8. BLU AGE II 5.2.10 Cobol2JSF2EJB3 Hibernate Release Note

Global Notes:

  • 5.X products are parts of the “Blu Age II – Legacy to cloud” product family, built on Kepler (Eclipse 4.3);

  • Product documentation is available at http://wikimod.bluage.com/mediawiki/index.php/Main_Page;

    • Starting with version 5.0, a new license management has been introduced, requiring the use of a new License Server (shipped separately – see corresponding documentation for details);

    • 5.X versions rely on the launch configurations mechanism introduced with the 4.X product series in replacement of the previous workflow mechanism. Migrating from the 3.X workflow to the 5.X launch configuration is described in a dedicated guide.

3.8.1. COBOL

3.8.1.1. Fixes

3.8.1.1.1. Grammar
  • String continuation construction now supports inserted comments.

3.8.1.1.2. Annotation Editor
  • Navigation from history in COBOL Annotation Editor works again.

3.8.1.2. Improvements

3.8.1.2.1. Grammar
  • Handle the ALTER statement.

  • Possibility to use the following keywords as data name.

    • SAVE

    • PRIOR

    • CLEAR

    • AUDITS

  • Handle the POINTER VALUE NULL in segment definition.

  • Handle the EXTERNAL keyword in File Description definition.

  • Handle the CHARACTERS and AFTER keywords in COPY REPLACING BY statement.

3.8.1.2.2. Transmodeling
  • Generated warnings about Integer to String conversion in transtyping have been removed, since they are not relevant for the supported target languages.

3.8.1.2.3. Entities Modernization
  • A Bean/Class creation action was added to the wizard. It enables the user to organize its modernized entities. Consider the following use case :

3.9. BluAge II 5.2.11 Cobol2JSF2EJB3 DWP Release Note

Global Notes:

  • 5.X products are parts of the “Blu Age II – Legacy to cloud” product family, built on Kepler (Eclipse 4.3);

  • Product documentation is available at http://wikimod.bluage.com/mediawiki/index.php/Main_Page ;

    • Starting with version 5.0, a new license management has been introduced, requiring the use of a new License Server (shipped separately – see corresponding documentation for details);

    • 5.X versions rely on the launch configurations mechanism introduced with the 4.X product series in replacement of the previous workflow mechanism. Migrating from the 3.X workflow to the 5.X launch configuration is described in a dedicated guide.

3.9.1. Common DWP

3.9.1.1. New features

  • Lombok annotations were changed in the generated code. Now annotations @Getter and @Setter are used instead of the @Data annotation.

3.9.1.2. Fixes

  • The ability to set a value for the @Named annotation on services now works correctly in the CSM layer as well as in the BSM layer.

3.10. BluAge II 5.2.12 Cobol2JSF2EJB3 Release Note

Global Notes:

  • 5.X products are parts of the “Blu Age II – Legacy to cloud” product family, built on Kepler (Eclipse 4.3);

  • Product documentation is available at http://wikimod.bluage.com/mediawiki/index.php/Main_Page ;

    • Starting with version 5.0, a new license management has been introduced, requiring the use of a new License Server (shipped separately – see corresponding documentation for details);

    • 5.X versions rely on the launch configurations mechanism introduced with the 4.X product series in replacement of the previous workflow mechanism. Migrating from the 3.X workflow to the 5.X launch configuration is described in a dedicated guide.

3.10.1. JSF2 / EJB3

3.10.1.1. Improvements

3.10.1.1.1. Improvements following Sonar analysis
  • A Sonar analysis was taken into account. For the JSF2/EJB3 stack:

    • The Business Objects now have symmetric equals methods that use getClass() instead of instanceof.

    • Some Serializable markers were added.

    • Some equals(…) and hashcode() methods were written along with the compareTo(…) method.

    • Exception management was improved.

    • isAssignableFrom is used instead of comparing the class names when possible.

    • Some utility methods were improved (isDouble and isInteger).

3.10.1.2. New features

3.10.1.2.1. Raw text above classes, properties and methods
  • In order to allow arbitrary annotations on the generated code, a new feature was added which allows to add raw text on model elements, through the use of headerText stereotype and tagged value.

    • The tagged value may be multi-line and will be printed as-is in the generated code

    • Pay attention that with this feature, you must provide the Fully Qualified Name for your annotations.

    • Such tagged values will be taken into account on Business Objects, Entity attributes, BO process operations, Service interfaces and Service process operations.

3.10.1.2.2. Primefaces 5.2 support
  • In order to add support for PrimeFaces 5.2 a new workflow variable has been added:

    • primefacesVersion

  • Configured in the BSP: com.netfective.bluage.jsf2.ejb31.jpa2.framework two values are available 4.x or 5.x. Its default value is set to 4.x.

3.11. BluAge II 5.4.0 Cobol2JSF2EJB3 Release Note

Global Notes:

  • 5.X products are parts of the “Blu Age II – Legacy to cloud” product family, built on Mars (Eclipse 4.5.1);

  • Product documentation is available at http://wikimod.bluage.com/mediawiki/index.php/Main_Page ;

    • Starting with version 5.0, a new license management has been introduced, requiring the use of a new License Server (shipped separately – see corresponding documentation for details);

    • 5.X versions rely on the launch configurations mechanism introduced with the 4.X product series in replacement of the previous workflow mechanism. Migrating from the 3.X workflow to the 5.X launch configuration is described in a dedicated guide.

3.11.1. General

3.11.1.1. Improvements

3.11.1.1.1. Major platform upgrade
  • Following the migration of the base eclipse platform to Mars, integration was done with version 18.3 of Magicdraw.

  • Following the migration of the base eclipse platform to Mars, an integration with Weblogic application server can now be used in the environment.

[Warning]Warning
Due to technical limitations, a supplied patch must be used on the Blu Age product if it is to be used in a continuous integration environment (Blu Age launched by a command line).

3.12. BluAge II 5.4.1 Cobol2JSF2EJB3 Release Note

Global Notes:

  • 5.X products are parts of the “Blu Age II – Legacy to cloud” product family, built on Mars (Eclipse 4.5.1);

  • Product documentation is available at http://wikimod.bluage.com/mediawiki/index.php/Main_Page ;

    • Starting with version 5.0, a new license management has been introduced, requiring the use of a new License Server (shipped separately – see corresponding documentation for details);

    • 5.X versions rely on the launch configurations mechanism introduced with the 4.X product series in replacement of the previous workflow mechanism. Migrating from the 3.X workflow to the 5.X launch configuration is described in a dedicated guide.

3.12.1. General

3.12.1.1. Fixes

  • When setting the primefacesVersion workflow option to 5.X, the TableDataModel class is correctly generated for Primefaces 5.

3.12.1.2. Improvements

3.12.1.2.1. Artifact dispatcher
  • The artifact dispatcher tool has been added to the JSF2 product. It can be used with component diagrams like in Spring batch.

3.13. BluAge II 5.4.2 Cobol2JSF2EJB3 Release Note

Global Notes:

  • 5.X products are parts of the “Blu Age II – Legacy to cloud” product family, built on Mars (Eclipse 4.5.1);

  • Product documentation is available at http://wikimod.bluage.com/mediawiki/index.php/Main_Page ;

    • Starting with version 5.0, a new license management has been introduced, requiring the use of a new License Server (shipped separately – see corresponding documentation for details);

    • 5.X versions rely on the launch configurations mechanism introduced with the 4.X product series in replacement of the previous workflow mechanism. Migrating from the 3.X workflow to the 5.X launch configuration is described in a dedicated guide.

3.13.1. Magicdraw Integration

Bluage product is now integrated with Magicdraw 18.4. It benefits from several Magicdraw bug fixes, some of which are:

  • It is now possible to open a second magicdraw project and get the second containment tree.

  • The containment tree is now resizable.

  • There is no more a need to patch Bluage for continuous integration.

3.13.2. JSF2

3.13.2.1. Fixes

  • PLTC-3638 was corrected: the implementation now catches NoResultException.