CPS-376 - Getting issue details... STATUS

Reference Material

IntelliJ Ant plugin 

PoC Code

Findings

  • Antlr4 can replace regex with less and more readable code
  • Replacement of regex for CpsPathQuery fully replaced by fully compatible object generated using Antlr4 this commit: https://gerrit.onap.org/r/c/cps/+/121503
  • Needed to add explicit error rule for handling unexpected tokens (otherwise Antlr would ignore them):  ErrorCharacter : . ;
  • Current CPS code using regex is inconsistent and needless limited for single leave condition
  • Current CPS code was lacking @ token for attribute names in some test cases (fixed in https://gerrit.onap.org/r/c/cps/+/121503)
  • CpsPathQuerySpec did not cover all necessary possibilities (as used in some DB integration tests) This has now been addressed 
  • CpsDataPersistenceQueryDataNodeSpec contains some grammar tests that should be (are already) in  CpsPathQuerySpec
  • IntelliJ plugin very useful for quick testing and troubleshooting of grammar
  • Not sure of best way to refresh generated code (in IntelliJ) mvn clean install in cps-path-parser seems the surest way


Xpath31 grammar

The grammar defined in predefined xpath grammer: https://github.com/antlr/grammars-v4/tree/master/xpath/xpath31



To-Do

  • Check and Improve error handling
  • Re-use CpsPath Exception (wrap IllegalState exception)
  • Clean up, simplify rules and remove redundant legacy limitations
    • Better names (check name-casing conventions Antrl)
  • Consider using predefined xpath grammer: https://github.com/antlr/grammars-v4/tree/master/xpath/xpath31
    • Even just study it or extract small parts  to get correct definition of valid container-names etc.
  • No labels