Handle roleless SBOL2 components during import - #462
Open
simplyshree wants to merge 1 commit into
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes an SBOL2 import failure path where SBOLCanvas assumes every
ComponentDefinitionhas at least one role.Root Cause
SBOLToMx.javachecked for circular-backbone components by calling:Valid SBOL2
ComponentDefinitionobjects may legally have an empty role set. When a roleless component is imported, such as a generic GenBankmisc_featureannotation, this can throwNoSuchElementExceptionand cause Canvas import to fail.Convert.javathen hid unchecked exceptions without messages behind the generic responseExport failed, making the real import failure difficult to diagnose.Changes
cd.getRoles().contains(...).errorMessage(Throwable e)helper so conversion failures include the exception class, even when the exception message is null.Impact
This makes SBOL2 import robust for standards-valid roleless components and also correctly detects circular-backbone roles when a component has multiple roles and the circular role is not first.
Validation
git diff --checkpassed.Notes
SeqTrainer has a workaround that assigns generic Sequence Ontology role
SO:0000110(sequence_feature) to source features without a narrower mapping, but Canvas should still handle roleless valid SBOL2 components safely.