Overview

CoreSchemes and GroupSchemes End of Life

In the CET 15.5 release in November 2024, CoreSchemes and GroupSchemes will reach their End-of-Life (EOL) and be deprecated. All developers are encouraged to upgrade and migrate to PropsSchemes - read more and learn how to migrate to PropsScheme here.

As part of the EOL effort:

  • Some programming interfaces in core will be deprecated and removed, specifically scheme builders, configurators, and user interface builders - see compile-time changes below under "CoreSchemes and GroupSchemes End of Life" section.
  • Specific data structures will be kept in core for ensuring legacy drawings compatibility and some basic functionalities.

Compile Time Changes

The following function has been removed. Replace any usage of it with easyLoad(url).?ViewMode.

Removed: public ViewMode loadCustomViewMode(Url url) {

The following function has been removed as it is no longer used in the base repository. If it is still used, consider making a local copy of the function in the affected extension.

Removed: public ViewMode fixPartTagInViewMode(ViewMode vm) {

The functions breakAllConnections(Snapper this, Snapper{} exceptTo=null) and breakConnectionsTo(Snapper this, Snapper b) are now methods in Snapper. This allows them to be overridable.

public class Snapper extends Entity {

    /***********************************************************************
     * Break connections
     ***********************************************************************/

    /**
     * Disconnect all connections in this snapper, except those
     * who are attached to a snapper in 'exceptTo'.
     */
    extend public void breakAllConnections(Snapper{} exceptTo=null) {
        ...
    }


    /**
     * Disconnect the direct connections between this and 'b'.
     */
    extend public void breakConnectionsTo(Snapper b) {
        ...
    }
}

CoreSchemes and GroupSchemes End of Life

As part of the EOL effort, these classes or functions have been moved to cm-unmaintained. They will no longer receive bugfixes or be shipped as part of CET core builds, and you will no longer be able to reference these classes in your packages.

Please note that most of these classes are user interface related classes that were not (and should not) be streamed, specifically the scheme builders, configurators, and user interface builders. However, we retained data structures in Core that are streamed as part of the drawing for old drawing load reasons, however please perform relevant testing to ensure that it works as expected.

For developers unable to move to PropsSchemes in time, you can copy these deprecated classes into your own codebase or packages as a temporary workaround / mitigation. However, we encourage you to plan for a migration to PropsScheme as soon as possible.

# cm.abstract.industry.mobileShelving
- package class MConfigurator extends PropObjConfigurator

# cm.abstract.tools
- public PropObjConfigurator getPropObjConfigurator()
- package class PropObjConfigurator extends DialogWindow
- package class PropObjTreeViewItem extends TreeViewItem
- package class PropObj1TreeViewItem extends PropObjTreeViewItem 
- package class PropObjConfWindow extends CoreSchemeWindow 

# cm.abstract.wardrobe
- package class WardrobeConfigurator extends PropObjConfigurator : abstract 
- public void setWardrobeConfigurator(WardrobeConfigurator configurator) 
- public void setWardrobeConfiguratorScheme(Window parent, bool default, WardrobeScheme scheme, bool lazy=false)
- public void initWardrobeHooks() 

# cm.abstract.dataSymbol
- public class DsSchemeBuilder extends CoreSchemeBuilder 
- public class DsSchemeBuilder extends CoreSchemeBuilder 
- public class DsMatSchemeProp extends DsMaterialSchemeProperty
- public class DsPDataSchemePropDef extends SchemePropDef
- public str stringify(str[] list, str delimiter=";") {

# cm.abstract.material
- public class AbsMatCoreSchemeBuilder extends CoreSchemeBuilder 

Runtime/Behavior Changes

Core Properties bugfix

'cm/core/coreProperties.cm::build(PreCorePropObj z, symbol{} attributes=null, BuildPropertiesEnv env=null, str->Object args=null)`

Resolved a bug during properties rebuild, with existing properties not getting removed correctly if the rebuilt properties has zero item or only one item left. This may impact developers using workarounds to manually remove properties that are incorrectly left behind.