diggsweden / DCAT-AP-SE-Processor

GNU General Public License v3.0
9 stars 8 forks source link

ApiDefinitionParser identifierar felaktigt kompakt json-data som YAML RAML #23

Open jonasseglare opened 1 year ago

jonasseglare commented 1 year ago

Contact Details

jonas.ostlund@arbetsformedlingen.se

What happened?

Betrakta följande stycke kod från filen ApiDefinitionParser.java:

        if (apiLine1.contains("openapi")) {
            apiJsonString = getFileApiYamlRaml(fileString, outJsonFile);
        } else if (apiLine1.contains("RAML")) {
            apiJsonString = getFileApiYamlRaml(fileString, outJsonFile);
        } else if (apiLine1.contains("{")){
            apiJsonString = fileString;
        }

Ovanstående kod försöker identifiera syntaxen för api-definitionen genom några strängtester. Det första av dessa tester, apiLine1.contains("openapi"), kommer att evaluera till sant för kompakt json-data där alla data är på samma rad, eftersom denna data kan innehåller delsträngen openapi som vi letar efter, t.ex. som "openapi":"3.0.3".

Ändra filändelsen till .json för nedanstående fil och provkör.

occupations.txt

Steps To Reproduce

Anropa metoden ApiDefinitionParser.getApiJsonString på innehållet från följande fil:

occupations.txt

Detta kommer att resultera i att filen output.json produceras i aktuell katalog, eftersom metoden felaktigt klassificerar innehållet i filen som YAML RAML och inte Json som den borde. I övrigt har jag inte studerat returvärdet från ovanstående metod när man gör anropet.

What did you expect?

Att filen output.json inte produceras av metoden ApiDefinitionParser.getApiJsonString.

Version

Den här commiten: https://github.com/diggsweden/DCAT-AP-SE-Processor/commit/76c0cdd78140f8cd06335566e2bdd7274b2ae7a0

Optional Screenshots

No response

Relevant log output

No response