Overview

In enhancing Cúram in a Major Version release or fixing defects in a Service Pack, the necessity occasionally arises where the contract of a Cúram development artifact has to be changed. In this context the contract of an artifact is its API or signature (e.g. name, parameters, return values, etc) in conjunction with its documented statement of functionality (e.g. JavaDoc).

Prior to Cúram 6.0, such changes would typically have been made in place, potentially causing compilation errors or unexpected runtime behavior in a custom application. This policy changed in 6.0 to favor adding a new artifact which implements the changed behavior while preserving the original artefact and marking it 'deprecated'. This has two main benefits for custom applications. Primarily, it provides back-compatibility for any references in custom code to the deprecated artefact (n.b. it does not provide back-compatibility for a custom override of the deprecated artefact). It also eliminates a source of compilation failures during upgrades, which can hamper the development of a reliable upgrade plan. These effects are described in more detail in this chapter.

Finally, infrastructure is provided in Cúram that extends Java 's command-line compiler deprecation warnings to certain Cúram builds. This helps pinpoint dependencies in custom applications on deprecated Cúram artefacts. It also helps distinguish between references-to and customizations-of deprecated artefacts in custom code. That build infrastructure is also described in this chapter.