Apache Daffodil (incubating)
Apache Daffodil (incubating) is the open source implementation of the Data Format Description Language (DFDL), a specification created by the Open Grid Forum. DFDL is capable of describing many data formats, including textual and binary, commercial record-oriented, scientific and numeric, modern and legacy, and many industry standards. It leverages XML technology and concepts, using a subset of W3C XML schema type system and annotations to describe such data. Daffodil uses this description to parse data into an infoset represented as XML or JSON, easily capable of ingestion, validation, and transformation.
For more information about Daffodil, see https://daffodil.apache.org/.
- JDK 1.8
- SBT 0.13.8 or higher
To build Daffodil:
$ sbt clean package
To run all Daffodil tests:
# run all unit tests $ sbt test # run all integration tests $ sbt it:test
To build the Daffodil command line interface:
$ sbt daffodil-cli/stage
The above will create Linux and Windows shell scripts in
daffodil-cli/target/universal/stage/bin/. See the Command Line Interface documentation for details on its usage.
To run the Apache RAT checks:
$ sbt ratCheck
This will generate a RAT report in
target/rat.txt and will error if any unapproved licenses are found.
Debugging CLI Tests in Eclipse
The CLI tests in daffodil-cli execute a daffodil script to perform tests.
Before testing in Eclipse, you must first build that script by running
sbt daffodil-cli/stage. Additionally, because the tests spawn a sub-shell for
executing the script, tests must be individually modified to make them
debuggable in Eclipse--the idiom is:
// tests all synthesize a command line into val cmd val cmd = ..... // Instead of running the rest of the test, do these two lines: val args = cmd.split(' ').tail // cmdline minus the daffodil program name. Main.run(args) // Run Main directly, so we can debug.
Note that this does not perform the 'expect' checks, so you have to type the commands at the console pane, and inspect the output to see if it is what you want.
Daffodil is licensed under the Apache License, v2.0