Summary: This document provides information about changes and new features introduced in this release.
CAST AIP Service Packs 8.3.20 - 8.3.23 are compatible only with the latest releases of the JEE Analyzer extension, i.e. 1.0.28 and 1.2.10-funcrel. Using older releases of the extension with these CAST AIP Service Packs risks incomplete analysis results (missing objects, links, violations, erroneous FP values) for JEE and C++ analyses.
Therefore, when using CAST AIP Service Packs 8.3.20 - 8.3.23, please either:
- Upgrade your JEE extension to a compatible release (i.e. ≥ 1.0.28 or ≥ 1.2.10-funcrel) OR
- Upgrade CAST AIP to a more recent Service Pack (≥ 8.3.24) which are compatible with older releases of the JEE Analyzer extension
If upgrading the JEE Analyzer extension or CAST AIP is not possible, please contact CAST Technical Support.
Technology support
Spring 4.x
Added support for Spring 4.x via a new Environment Profile, including support for the @Query annotation.
Spring 3.x
Added new support for JSR 330 @Inject and @Named annotations.
Spring 2.x/3.x
The existing support for Spring 2.x/3.x has been improved via the use of parametrization rules to support the following database access method classes:
- SimpleJdbcInsert
- SimpleJdbcCall
Spring Batch
Spring Batch is now supported as standard: by default, Spring frameworks present in the delivered source code will be analyzed and objects relating to Spring Batch (Spring Batch Job and Spring Batch Step) will be detected and stored in the results. For full details, please see JEE Analyzer - Technology support notes.
JPA2.1/Hibernate 4.3 - 5.x
Added support for JPA 2.1/Hibernate 4.3 - 5.x via a new Environment Profile.
Improved link resolution
The link resolution for applications using Hibernate is as follows: Java Method -> Hibernate object -> database object. In previous releases of CAST AIP, the links between the Hibernate object and the database object were "untyped", in other words all links were classified as U (Use) links rather than the more specific Ui (Use Insert), Us (Use Select), Ud (Use Delete), Uu (Use Update) which are available for the links between the Java Method and the Hibernate object. As a result of this, the transaction type could not be fully determined during an Automatic Function Point calculation.
In this release of the JEE analyzer extension, link resolution between the Hibernate object and the database object has been improved and links are now fully typed with the specific link type, i.e. Ui (Use Insert), Us (Use Select), Ud (Use Delete), Uu (Use Update) instead of simply U (Use).
JPA 2.1 access to stored procedures
Access to database stored procedures using one of the below mechanisms is now supported:
- Via the annotation @NamedStoredProcedureQuery
- Or via the tag named-stored-procedure-query when configuring via XML in orm.xml
Struts
2.5
Added support for Struts 2.5 via a new Environment Profile, including support for the @TilesDefinition annotation.
2.x
Added support for the following annotations:
- @Action, @Actions
- @Result
- @Namespace, @Namespaces
- @ParentPackage
EJB
Support for EJB 3.x is now active by default for all new Applications analyzed with this release of the extension and will follow the Java Version that is set for the source code. If an EJB 2.x Environment Profile is activated then support for EJB 3.x is will be deactivated. See JEE Analyzer - Technology support notes for more information about how EJB is handled by the analyzer.
Web Technologies
The ability to analyze "Web technologies" such as those listed below has been removed from the JEE Analyzer extension. This change has been made to take advantage of the superior analysis capabilities of the HTML5/JavaScript extension, which is delivered and installed automatically with CAST AIP 8.3.x.
- Image files (.gif, .jpg etc.)
- HTML files (.htm, .html, .htc etc.)
- Script files (.js, .vbs etc.)
See also Removal of web technology analysis capabilities below.
How are web technologies analyzed in CAST AIP 8.3.x?
As mentioned above, applications containing web technologies will now be handled by the the HTML5/JavaScript extension, which is delivered and installed automatically with CAST AIP 8.3.x with new CAST AIP triplets and as part of an upgrade. An additional Web Files Discoverer extension is available (and installed automatically with CAST AIP ≥ 8.3.1 with new CAST AIP triplets and as part of an upgrade) so that web technology applications can be detected automatically and a corresponding Analysis Unit can be created in the CAST Management Studio.
- to onboard and analyze web technologies in new applications, you must use the HTML5/JavaScript extension, which is delivered and installed automatically with CAST AIP 8.3.x with new CAST AIP triplets and as part of an upgrade.
- for upgrades to CAST AIP ≥ 8.3.x, analysis results for existing Applications containing web technologies will be impacted as described in Removal of web technology analysis capabilities below.
Resolved legacy limitations
In previous releases of CAST AIP, the following limitation applied:
- When Struts 2.x is integrated with Spring, we do not deduce the action class from the spring bean specified in the XML. Links from this action to the method of the Spring implementation class will not be created.
This limitation has now been removed and the use case is now supported.
Technology configuration options
This section explains how various CAST Management Studio GUI options have changed (to find out more about configuration options, see JEE - Analysis configuration).
Option name | Previous behaviour in AIP | New behavior in extension | ||||||
---|---|---|---|---|---|---|---|---|
Client File Extensions | Ability to select Client File Extensions corresponding to web technologies has been removed - analysis of Web Technologies has been removed from the JEE Analyzer extension (see above for more information): | |||||||
Default Scripting language for client side | This option has been removed - analysis of Web Technologies has been removed from the JEE Analyzer extension (see above for more information): | |||||||
Extract XML from Jars (previously available in the Production tab) | When set to true (the default position) any XML files contained within .JAR files supplied in the Class Paths settings via the Add New Archive File and Add New Archive Folder options were extracted from the JAR and analyzed. Unticking the option forced the analyzer to ignore the extracted XML files during the analysis. | The option has been removed. By default, only XML files that are part of JAR files supplied with Environment Profiles will be extracted and analyzed. | ||||||
Hibernate/JPA, Struts and Spring options | The options for Hibernate/JPA, Struts and Spring were previously set according to the discovery made by the CAST Delivery Manager Tool: | These options are now always set to the "Latest" option (i.e. the most recent release supported by the JEE analyzer extension). You can override the default setting if required. | ||||||
Framework support | The following distinct frameworks (supported via an Environment Profile) were always set to Yes, but it was possible to set them to No: | The options have been removed. By default support for all of the following frameworks is now always enabled:
Note that versioning for JSF and CDI will follow the Java Version that is set for the source code. | ||||||
EJB and Web Services options | In previous releases it was possible to select a "custom" option for the EJB and Web Services options:
Selecting either option enabled the "Custom Environment Profile" option for each, enabling the selection of a custom Environment Profile: | The "custom" options in the drop down lists for EJB and Web Services have been marked as deprecated as it is no longer possible to select a custom environment profile:
The ability to select a custom Environment Profile specifically to address a configuration not supported out of the box by CAST AIP has been removed to simply the analysis configuration. Note that that EJB Version option has been renamed EJB2 Version, specifically because it addresses only EJB 2.x. |
Bug Fix List
The following bugs have been fixed in this release of the JEE Analyzer extension:
Internal ID | Call ID | Summary |
---|---|---|
JFAMILY-276 / SCRAIP-25514 | - | @Query Annotation with embedded query not resolved - JPA 1.1 with Spring Data |
JFAMILY-245 / SCRAIP-24664 | - | JPA resolution - Missing links to sequence via SequenceGenerator annotation |
JFAMILY-214 / SCRAIP-24798 | - | Hibernate JPA - @Entity annotation not resolved if the @Table is not defined |
Changes in results post upgrade
Externalization of the JEE Analyzer
The JEE Analyzer has been "externalized" as an official CAST AIP Extension in this release of CAST AIP. This extension is delivered and installed automatically with CAST AIP 8.3.x with new CAST AIP triplets and as part of an upgrade. Note that any changes in analysis results that are visible after an upgrade to CAST AIP 8.3.x (and therefore to the externalized JEE Analyzer) are only due to improvements and bug fixes introduced in this release of the analyzer and NOT due to the externalization.
After upgrading to CAST AIP 8.3.x and starting to use the JEE Analyzer extension, you should expect the following impacts after generating a post upgrade snapshot on the same source code:
Dynamic links between Java code and JPA/Hibernate entities
A bug has been fixed which caused the creation of many false dynamic links between Java code and JPA/Hibernate entities. These false dynamic links were created due to the fact that in Java, references to JPA/Hibernate entities are case sensitive, which was ignored by the JEE analyzer. The result of these false dynamic links was transactions being wrongly linked to many JPA entities and as a consequence, to many database tables. This in turn created false or invalid Function Point transactions. This bug has now been fixed and after an upgrade to CAST AIP 8.3.x/JEE Analyzer extension and the generation of a new snapshot on existing source code, results will now now more accurate with a reduction in the number of false dynamic links between Java and JPA/Hibernate.
Removal of legacy limitation
Due to the removal of a legacy limitation concerning Struts 2.x using Spring beans as an implementing class for an action provided that it extends ActionSupport (see above), the action class from the Spring bean specified in the struts.xml file is now identified. Links from this action to the method of the Spring implementation class will be resolved and stored in the analysis results. As such, you should expect changes to Transactions and Quality Rule grades directly due to this improvement.
Removal of web technology analysis capabilities
The ability to analyze "Web technologies" such as
- Image files (.gif, .jpg etc.)
- HTML files (.htm, .html, .htc etc.)
- Script files (.js, .vbs etc.)
- Style sheets (.css)
has been removed from the JEE Analyzer extension, therefore after an upgrade to CAST AIP 8.3.x/JEE Analyzer extension and the generation of a new snapshot on existing source code, you will find that analysis results will change:
- All web technology files will no longer be visible. These objects will be recorded as "deleted" in the post upgrade snapshot:
Before upgrade | After upgrade |
---|---|
- Line of Code (LOC) Quality Measures will be impacted - there will be a decrease in the LOC count.
- Some Quality Rule grades may change.
- Intra-web technology links (i.e. between .HTML and .JS files for example) will be removed
- Any links between pure JEE objects and web technology objects (i.e. between .JSP and .HTML files for example) will be removed
- Transactions and Function Point data may be impacted by this change.
EJB3 Environment Profile active by default
After an upgrade to CAST AIP 8.3.x/JEE Analyzer extension and the generation of a new snapshot on existing source code, you may find that additional EJB objects are resolved if your source code contains them. This is because the EJB 3.x Environment Profile is now active by default, even for those upgrading. See JEE Analyzer - Technology support notes for more information about how EJB is handled by the analyzer:
Before upgrade | After upgrade |
---|---|