Changes in SDAI_dictionary_schema for v3.6

Changes in SDAI_dictionary_schema for version 3.6.

Explicit attributes changed into derived ones

in entity attribute:

  • parent_entity

in entity declaration:

  • parent_schema

in entity entity_definition

  • supertypes

in entity sub_supertype_constraint:

  • super_type

in entity subtype_expression:

  • operands

Also added a new type:

TYPE declaration_scope_type = SELECT
(algorithm_definition,
global_rule);
END_TYPE;

Added new entity:

ENTITY inner_declaration SUBTYPE OF (declaration);
scope : declaration_scope_type;
END_ENTITY;

A corresponding change made in declaration:

ENTITY declaration
ABSTRACT SUPERTYPE OF (ONEOF(inner_declaration,
interfaced_declaration, local_declaration)
AND ONEOF(data_type_declaration, rule_declaration,
algorithm_declaration, constant_declaration, map_declaration,
subtype_constraint_declaration));

Incompatibilities in writing JSDAI applications caused by the above changes in SDAI_dictionary_schema

Methods no longer available:

  • in CAttribute:
    public static int usedinParent_entity(EAttribute type, EEntity_definition instance, ASdaiModel domain, AEntity result) throws SdaiException {...}
  • in CDeclaration (and its subtypes):
    public static int usedinParent_schema(EDeclaration type, ESchema_definition instance, ASdaiModel domain, AEntity result) throws SdaiException {...}
  • in CEntity_definition:
    public static int usedinSupertypes(EEntity_definition type, EEntity_definition instance, ASdaiModel domain, AEntity result) throws SdaiException {...}
  • in CSub_supertype_constraint:
    public static int usedinSuper_type(ESub_supertype_constraint type, EEntity_definition instance, ASdaiModel domain, AEntity result) throws SdaiException {...}
  • in CSubtype_expression:
    public static int usedinOperands(ESubtype_expression type, EEntity instance, ASdaiModel domain, AEntity result) throws SdaiException {...}

NOTE: the corresponding methods for attributes of more general types are still available:

  • usedinParent_entity(..) - usedinParent(...)
  • usedinParent_schema(...) - usedinParent(...)
  • usedinSupertypes(...) - usedinGeneric_supertypes(...)
  • usedinSuper_type(...) - usedinGeneric_supertype(...)
  • usedinOperands(...) - usedinGeneric_operands(...)

Methods that are still present but may require changes in applications

  • in CAttribute:
    public static jsdai.dictionary.EAttribute attributeParent_entity(EAttribute type) throws SdaiException {...}
  • in CDeclaration (and its subtypes:
    public static jsdai.dictionary.EAttribute attributeParent_schema(EDeclaration type) throws SdaiException {...}
  • in CEntity_definition:
    public static jsdai.dictionary.EAttribute attributeSupertypes(EEntity_definition type) throws SdaiException {...}
  • in CSub_supertype_constraint:
    public static jsdai.dictionary.EAttribute attributeSuper_type(ESub_supertype_constraint type) throws SdaiException {...}
  • in CSubtype_expression:
    public static jsdai.dictionary.EAttribute attributeOperands(ESubtype_expression type) throws SdaiException {...}

NOTE: These methods may cause incompatibilities if the returned EAttribute value is attempted to cast to EExplicit_attribute because instead of instances of EExplicit_attribute now instances of EDerived_attribute are returned.

For example, this code is no longer correct:

EExplicit_attribute ea = (EExplicit_attribute)attr_inst.attributeParent_entity(null);