Skip to content
This repository has been archived by the owner on Oct 28, 2022. It is now read-only.

Rename GenotypePhenotypeMethods::SearchFeaturesRequest , SearchFeaturesResponse #400

Open
bwalsh opened this issue Sep 3, 2015 · 0 comments

Comments

@bwalsh
Copy link
Member

bwalsh commented Sep 3, 2015

Name collision (SearchFeaturesResponse)

That schema contains two definitions of the class [SearchFeaturesRequest,SearchFeaturesResponse]. These conflict in the generated code with other classes of the same name.

We based this issue on the model captured in ga4gh/schemas commit of Jul 30, 2015. This version of the schema predates the separated genotype to phenotype files from baseline.

The G2P team is preparing a pull request for the reference server with an extension to include a the '/genotypephenotype/search' endpoint.

The schema project the current server is based on is version = '0.6.be171b00'
Snippets from this commit follow

  • One in the file genotypephenotypemethods.avdl, protocol GenotypePhenotypeMethods
/** This is the response from `POST /genotypephenotype/search` expressed as JSON. */
record SearchFeaturesResponse {
  /**
  The list of matching FeaturePhenotypeAssociation.
  */
  array<org.ga4gh.models.FeaturePhenotypeAssociation> associations = [];

  ...
  • The second one is found in sequenceAnnotationmethods.avdl
  /** This is the response from `POST /features/search` expressed as JSON. */
  record SearchFeaturesResponse {
    /**
    The list of matching annotations, sorted by start position. Annotations which
    share a start position are returned in a deterministic order.
    */
    array<org.ga4gh.models.Feature> features = [];

    ... 
  • The generated code only has the class associated with sequenceAnnotationmethods.avdl

Both sequenceAnnotationmethods.avdl and genotypephenotypemethods.avdl share the same namespace @namespace("org.ga4gh.methods") each file defines an enclosing protocol.

In the names section of the spec

A name only is specified, i.e., a name that contains no dots. In this case the namespace is taken from the most tightly enclosing schema or protocol. For example, if "name": "X" is specified, and this occurs within a field of the record definition of org.foo.Y, then the fullname is org.foo.X. If there is no enclosing namespace then the null namespace is used.

The schemas pass validation.

A schema or protocol may not contain multiple definitions of a fullname. Further, a name must be defined before it is used ("before" in the depth-first, left-to-right traversal of the JSON parse tree, where the types attribute of a protocol is always deemed to come "before" the messages attribute.)

Recommendation: Rename the GenotypePhenotypeMethods [SearchFeaturesRequest,SearchFeaturesResponse] to [SearchGenotypePhenotypeRequest,SearchGenotypePhenotypeResponse]

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

No branches or pull requests

2 participants