Skip to content

arccore.filter keys cannot contain period(s) characters #3

@ChrisRus

Description

@ChrisRus

I noticed an interesting (and potentially exceptionally confusing) error string back from filter recently.

{
    ____types: "jsObject",
    ____asMap: true,
    key: {
        ____types: "jsObject",
        required: {
            ____accept: "jsString"
         }
    }
}

Now suppose I create an object that looks like this:

{
    "~.this.is.a.path.into.cds.instance.data.used.as.a.key": { /* whoops */ )
}

missing ~.this.is.a.path.into.cds.instance.data.used.as.a.key.required <--- wat

What to do about this? n JavaScript we can write:

let x = {};
x["~.whatever.i.want"] = 5

RAP: [ "whatever.i.want" ]
RIS: "~.[whatever.i.want]"

I'm not sure. I've got a whole system all worked out for ARC RIS and RAP --- I just can't recall the exact details.

In the short term I think it's prudent to **advise against ** using map/dictionary keys that contain period (.) character(s). arccore.identifier.irut.fromReference (or alternative) function is available to quickly hash strings that may contain forbidden characters.

Leaving this open in case anyone hits this case. DO NOT USE period characters in keys; if you have to deal with keys that do or may contain periods, convert them to IRUT digest hash strings (or use some other appropriate mechanism to remove the periods).

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions