Steps to setup a DFDL schema project for use with the VSCode Extension:


   - Setup the main project (the final assembly of all schema components)
   to create a lib_managed directory
   - Checkout (git) all project repositories to a location where they share
   a common parent.
   - Put all src/main/resources locations from all projects on the daffodil
   debug classpath in the launch.json.
      - These entries should be first on the daffodil debug classpath. All
      subsequent additions of jar files must come AFTER these
src/main/resources
      entries.
   - Any project that creates a jar (for a layer, UDF, or charset) the jar
   must also go on the daffodil debug classpath in launch.json
      - Doing sbt test in the main project will populate lib_managed with
      all the required jars.
      - This command will define DAFFODIL_CLASSPATH to have every required
      jar (and then some).
         - export DAFFODIL_CLASSPATH=$(sbt -batch -error "export
         fullClasspath")
      - You can then massage this, with an editor, into a form suitable to
      use as added entries in the daffodil debug classpath in launch.json.
      - This ensures you have all jars, but many of these are not necessary
      (you can remove any jars except the jars for the layers, UDFs,
or charsets.)
         - The resulting classpath must include all src/main/resources for
         all schema components, and the jars for any layers, UDFs, or
charsets.
      - The main project must have a schema you can point at, and it must
   be under src/main/resources.
      - (any schema files under src/test/resources implies those
      directories also must appear on the daffodil debug classpath
   - Schemas cannot be pre-compiled, so at the start of each run the DFDL
   schema will be compiled. This can take over 1 minute for large DFDL
   schemas.



I used the above to create a launch.json and workspace for the VSCode
Extension for DFDL to debug the envelope-payload example on DFDLSchemas.



This involves these 5 git projects all of which are on the github
DFDLSchemas site:



   - envelope-payload
   - tcpMessage
   - mil-std-2045
   - PCAP
   - ethernetIP



The ethernetIP project creates a layer plugin (to compute IPv4 checksums).



This PR includes the launch.json for these schemas:



https://github.com/DFDLSchemas/envelope-payload/pull/5



Mike Beckerle
Apache Daffodil PMC | daffodil.apache.org
OGF DFDL Workgroup Co-Chair | www.ogf.org/ogf/doku.php/standards/dfdl/dfdl
Owl Cyber Defense | www.owlcyberdefense.com

Reply via email to