Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Missing property descriptor for attribute exception handling #184

Merged

Conversation

spamhurts
Copy link
Collaborator

@spamhurts spamhurts commented Mar 20, 2024

Rationale

We need to roll back the SaveEvent transaction when an SND attribute cannot be updated because the PD has an invalid name.

MDP-88: SNPRC_Mobile - Fix SND saveEvent API failure to report error when propertyDescriptor is not found for AttributeData

…he propertyDescriptor is found even if the attribute name does not match value in the property descriptor name.
@spamhurts spamhurts requested a review from labkey-martyp March 21, 2024 16:10
@spamhurts spamhurts merged commit 6f89390 into release23.11-SNAPSHOT Mar 21, 2024
2 checks passed
@spamhurts spamhurts deleted the 23.11_fb_propertyDescriptorNotFoundError branch March 21, 2024 19:46
propertyDescriptor = OntologyManager.getPropertyDescriptor(attributeData.getPropertyId());
propertyDescriptor = OntologyManager.getPropertyDescriptor(PackageDomainKind.getDomainURI(
SNDSchema.NAME, PackageDomainKind.getPackageKindName(), c, u) + "-" + pkgId + "#" +
attributeData.getPropertyName().replaceAll("\\s", "+"), c);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PageFlowUtil.encode(attributeData.getPropertyName())

Might need to do a quick test on this, but this should handle how these names are expected to be encoded.

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi Marty,

Thanks for looking at the PR. Unfortunately, your suggestion is not going to work. The PageFlowUtil.encode() method replaces the space with a %20, resulting in, for example, body%20part. In the attribute data, the propertyURI replaces the space with a +. Here is the propertyURI for the body part attribute:

urn:lsid:txbiomed.org:package-snd.Folder-6:Package-62#body+part

Both the + and the %20 are proper URL encodings for the space, but the OntologyManager.getPropertyDescriptor() function is doing a key/value lookup in the property descriptor cache, with the propertyURI as the key, and it is failing when the encoding doesn’t match.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry I didn't do enough investigation into that. Here is the function that is being used when those are first encoded. Let me know if that works for you.

Lsid.encodePart(attributeData.getPropertyName())

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That does the trick! I'll submit a new PR for the change. Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants