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

Geometrie op http://schemas.opengis.net/ is niet goed gespecificeerd voor codegeneratie #79

Open
MelvLee opened this issue Apr 19, 2021 · 4 comments
Assignees

Comments

@MelvLee
Copy link
Collaborator

MelvLee commented Apr 19, 2021

No description provided.

@MelvLee
Copy link
Collaborator Author

MelvLee commented Apr 19, 2021

Als je van deze schema componenten code genereert, dan krijgt je bijv. voor PointGeoJson twee classes: PointGeoJson en PointGeoJsonType (enum) met één waarde: Point. Wat mist is een Geometrie enum type. GeoPointJSON ziet er als volgt uit:

pointGeoJSON:
  required:
  - coordinates
  - type
  type: object
  properties:
    type:
      type: string
      enum:
      - Point
    coordinates:
      minItems: 2
      type: array
      items:
        type: number

Het had moeten zijn:

pointGeoJSON:
  required:
  - coordinates
  - type
  type: object
  properties:
    type:
      $ref: '#/components/schemas/Geometrie'
      default:
      - Point
    coordinates:
      minItems: 2
      type: array
      items:
        type: number

Geometrie:
  type: string
  enum:
    - Polygon
    - Point
    - ...

@fsamwel
Copy link
Collaborator

fsamwel commented Apr 22, 2021

@MelvLee zoals jij voorstelt is Point in de pointGeoJSON default, maar:

  1. type is required, dus ik denk dat default dan geen functie heeft (je mag type niet weglaten om de default waarde te krijgen)
  2. je mag hier niks anders dan Point gebruiken. Polygon is hier fout.

We hadden ervoor kunnen kiezen alleen een generieke GeoJSON component te gebruiken op alle plekken. Voor de responses is dat misschien geen probleem, de gebruiker weet dan alleen niet van te voren wat deze kan krijgen. Bij requests (zoals straks contour in de request body) willen we wel de mogelijkheden beperken. We ondersteunen dan alleen polygoon, niet multipoligoon, enz.

@MelvLee
Copy link
Collaborator Author

MelvLee commented Apr 22, 2021

Ik ben ondertussen achter gekomen dat het gebruiken van een enum met één waarde dé manier is om een constante op te geven. Hoewel ik er mee kan leven, denk ik dat in dit geval het gebruik van de discriminator object beter zou zijn. Die is volgens mij toegevoegd om polimorphisme mogelijk te maken

@JohanBoer
Copy link
Collaborator

Ik kan me alleen maar bij Frank's Analyse aansluiten. Volgens mij is hier toch geen sprake van polymorphisme. Dat zou volgens mij alleen van toepassing zijn als we het generiek GeoJson component gebruiken. Dan blijft het zo dat je de pointGeoJson als 1 van de subtypes moet definiëren. Of zie ik dat verkeerd ?

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

No branches or pull requests

5 participants