Compile Time Changes

Removal of DsPDataGCPropDef2

DsPDataGCPropDef2 was initially designed for Catalogue Scheme to push options to DsPData, primarily for features with group code. However, the limitation for DsPDataGCPropDef2 is also quite significant. While this approach worked as expected with group code, it did not work well with other feature types. For example, optional, multiple-select, numeric features. In addition to this, the existence of DsPDataGCPropDef2 often brings confusion to developers who were debugging DsPData, as the class naming is very similar to another DsPropDef - DsPDataGCPropDef, another PropDef type in DsPData.

For these reasons, DsPDataGCPropDef2 will be removed in 14.5:

// cm.abstract.dataSymbol.propDefs.dsPropDef.cm
Removed: public class DsPDataGCPropDef2 extends PropDef {

// cm.abstract.dataSymbol.dsPData.cm
DsPData class:
Removed: extend public DsPDataGCPropDef2 gcPropDef2(str k) {

DsPData COM Cache Changes

We made the following modifications to the cm.abstract.dataSymbol.dsPData.cm file:

We updated the _comMtrlsCache field as follows:

Old: private str->Material _comMtrlsCache : copy=shallow;
New: private str->Material _comMtrlsCache : copy=shallow, stream=null;

We added a new field, _appliedComMtrls to keep record of the COMs that are actually applied:

New: private str-><str, Material> _appliedComMtrls : copy=shallow;

Runtime/Behavior Changes

ItemTag key

ItemTags generated from DsPart will now use the data's dataId (if set) for the ItemTag key. If this isn't set, it will fallback to the previous behavior of using the styleNr and then the articleCode.

Cached Parts

The cached parts field on DsPData is now copy=null to avoid undo crashes.