Cardinal-Report

The Cardinal-Report provides a deep analysis of all the inter-partition invocations, the types of all the nonprimitive parameters passed to partitions during their invocations, and foreign class references within a partition. Classes are foreign to a partition if they are defined in another partition.

All nonprimitive Java® objects are passed by references. In a Java monolithic application runtime instance, when all the classes run in a single Java virtual machine (JVM), classes typically pass the reference parameters freely to each other. The ability to pass parameters might be affected by the breaking of the Java monolithic application into partitions of classes that run in separate JVMs. For example, a reference in one JVM that points to a memory location is meaningless in another JVM. The Cardinal-Report details the intricate invocation semantics of a group of recommended partitions and therefore is essential for determining the best way to refactor Java monolithic applications.

Sample Cardinal-Report

The report provides five categories of analysis for each business logic partition for the Java monolithic application. The following figure shows an example report for the Daytrader application. Clicking any of the rows provides the details of the category under consideration.


Cardinal Report for the Daytrader application

The first category lists all the classes in a partition, as shown in the next figure.


Member Classes for the partition_1 partition

The second category of the Cardinal-Report details the interface for a specific partition. The interface of a specific partition defines and determines the signature of the partition. These interfaces are the REST APIs that are used to launch the partition when it becomes available as a running partition.

Attributes like overloaded_#002 in Cardinal-Report represent overloaded constructors or functions. A Persistence attribute next to a class implies that the associated class is an entity class.


Signature of the partition_1 partition

The third category of the Cardinal-Report pinpoints the nonprimitive Java types that are passed as parameters in the interfaces of the partition.


Non-primitive parameters in the signature of the partition_1 partition

Together, these first three categories of the Cardinal-Report identify the components of the partitions and the REST API calls that allow the partitions to be invoked as microservices.

The remaining categories pertain to the inter-partition communication semantics. First, the following figure details the methods of other partitions that can be invoked by the partition under consideration.


Methods of other partitions invoked by the partition_1 partition

The final category indicates the references to the objects of foreign class types that are obtained as return values to function invocations to other partitions. The presence of the foreign class references presents a challenge to building partitions as microservices because foreign classes are defined outside the syntactic scope of the partition under consideration. The next figure shows the details of such a foreign reference.


Foreign Class References in the partition_1 partition