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

ogma-core: Generalize JSON parsing #115

Closed
ivanperez-keera opened this issue Jan 22, 2024 · 6 comments
Closed

ogma-core: Generalize JSON parsing #115

ivanperez-keera opened this issue Jan 22, 2024 · 6 comments
Assignees
Labels
CR:Status:Closed Admin only: Change request that has been completed CR:Type:Management Admin only: Change request for conformance with policies or procedures
Milestone

Comments

@ivanperez-keera
Copy link
Member

Description

The JSON parsing functions currently included with Ogma are very specific to two formats supported, and cannot be easily generalized. This limits our ability to adapt to changes and to different formats.

Type

  • Management: code factorization.

Additional context

None.

Requester

  • Ivan Perez

Method to check presence of bug

Not a bug.

Expected result

The parsing functions support any JSON file and can be easily customized to support specific JSON-based formats.

Desired result

The parsing functions support any JSON file and can be easily customized to support specific JSON-based formats.

Proposed solution

Use selectors, similar to XPath, to customize how fields are selected in JSON files.

Further notes

None.

@ivanperez-keera ivanperez-keera added CR:Status:Initiated Admin only: Change request that has been initiated CR:Type:Management Admin only: Change request for conformance with policies or procedures labels Jan 22, 2024
@ivanperez-keera
Copy link
Member Author

Change Manager: Confirmed that the issue exists.

@ivanperez-keera ivanperez-keera added CR:Status:Confirmed Admin only: Change request that has been acknowledged by the change manager and removed CR:Status:Initiated Admin only: Change request that has been initiated labels Jan 22, 2024
@ivanperez-keera
Copy link
Member Author

Technical Lead: Confirmed that the issue should be addressed.

@ivanperez-keera ivanperez-keera added CR:Status:Accepted Admin only: Change request accepted by technical lead and removed CR:Status:Confirmed Admin only: Change request that has been acknowledged by the change manager labels Jan 22, 2024
@ivanperez-keera
Copy link
Member Author

Technical Lead: Issue scheduled for fixing in Ogma 1.2.

Fix assigned to: @ivanperez-keera.

@ivanperez-keera ivanperez-keera added CR:Status:Scheduled Admin only: Change requested scheduled and removed CR:Status:Accepted Admin only: Change request accepted by technical lead labels Jan 22, 2024
@ivanperez-keera ivanperez-keera added this to the 1.2.0 milestone Jan 22, 2024
@ivanperez-keera ivanperez-keera self-assigned this Jan 22, 2024
@ivanperez-keera ivanperez-keera added CR:Status:Implementation Admin only: Change request that is currently being implemented and removed CR:Status:Scheduled Admin only: Change requested scheduled labels Jan 22, 2024
ivanperez-keera added a commit that referenced this issue Jan 22, 2024
.

Ogma currently has no standard representation for specifications, and
instead relies on a representation that is tied to the input format from
which the spec was read.

This commit introduces a new library to represent generic Ogma
specifications. The specifications are parameterized by the type of the
requirement expressions.

This will allow us to use the same internal representation to hold data
obtained from different kinds of input files (e.g., JSON, XML).
ivanperez-keera added a commit that referenced this issue Jan 22, 2024
.

The JSON parsing functions currently included with Ogma are very
specific to two formats supported, and cannot be easily generalized.
This limits our ability to adapt to changes and to different formats.

This commit introduces a new library to parse Ogma specifications from
JSON files. The parsing functions are parameterized by the functions
that parse requirement sub-expressions, allowing for further
customization.
ivanperez-keera added a commit that referenced this issue Jan 22, 2024
To avoid name clashes, it is sometimes necessary to replace identifiers
in SMV boolean expressions.

This commit adds identifier substitution functions to the SMV language
library.
ivanperez-keera added a commit that referenced this issue Jan 22, 2024
The JSON parsing functions currently used by ogma-core are very
specific to two formats supported, and cannot be easily generalized.

This commit replaces the existing FRET component specficiation parser
and converter by one that is based on the new generic parsing library.
ivanperez-keera added a commit that referenced this issue Jan 22, 2024
The library ogma-language-fret-cs is no longer needed, since its
functions have been generalized in other libraries. Therefore, this
library can be completely removed.
@ivanperez-keera
Copy link
Member Author

Implementor: Solution implemented, review requested.

@ivanperez-keera ivanperez-keera added CR:Status:Verification Admin only: Change request that is currently being verified and removed CR:Status:Implementation Admin only: Change request that is currently being implemented labels Jan 22, 2024
@ivanperez-keera
Copy link
Member Author

Change Manager: Verified that:

  • Solution is implemented:
    • The code proposed compiles passes the tests. Details:
      Docker image:

      FROM ubuntu:trusty
      
      RUN apt-get update
      
      RUN apt-get install --yes software-properties-common
      RUN add-apt-repository ppa:hvr/ghc
      RUN apt-get update
      
      RUN apt-get install --yes ghc-8.6.5 cabal-install-2.4
      RUN apt-get install --yes libz-dev
      
      ENV PATH=/opt/ghc/8.6.5/bin:/opt/cabal/2.4/bin:$PWD/.cabal-sandbox/bin:$PATH
      
      RUN cabal update
      RUN cabal v1-sandbox init
      RUN cabal v1-install alex happy
      RUN apt-get install --yes git
      
      # We install the application first and then test it, in case any tests need to
      # run the tool.
      CMD git clone $REPO && \
          cd $NAME && \
          git checkout $COMMIT && \
          cd .. && \
          cabal v1-install $NAME/$PAT**/ --enable-tests && \
          cabal v1-install $NAME/$PAT**/ --enable-tests --run-tests -j1

      Command:

      $ docker run -e "REPO=https://github.com/ivanperez-keera/ogma" -e "NAME=ogma" -e PAT="ogma-" -e "COMMIT=95a5a1b61daea2ca08569815fe1327eb897c1c61" -it ogma-test
    • The solution proposed fixes the issues described. Details:
      Not applicable (not a bug).

  • Implementation is documented. Details:
    No changes needed.
  • Change history is clear.
  • Commit messages are clear.
  • Changelogs are updated.
  • Examples are updated. Details:
    No examples affected.
  • Required version bumps are evaluated. Details:
    Bump needed (libraries disappear).

@ivanperez-keera
Copy link
Member Author

Change Manager: Implementation ready to be merged.

@ivanperez-keera ivanperez-keera added CR:Status:Closed Admin only: Change request that has been completed and removed CR:Status:Verification Admin only: Change request that is currently being verified labels Jan 22, 2024
ivanperez-keera added a commit that referenced this issue Jan 28, 2024
This commit introduces a new library to parse Ogma specifications from
XML files. The parsing functions are parameterized by the functions that
parse requirement sub-expressions, allowing for further customization.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
CR:Status:Closed Admin only: Change request that has been completed CR:Type:Management Admin only: Change request for conformance with policies or procedures
Projects
None yet
Development

No branches or pull requests

1 participant