Michael Beckerle created DAFFODIL-2117:
------------------------------------------

             Summary: Generate WarnID.scala and DaffodilTunables.scala off of 
dafext.xsd
                 Key: DAFFODIL-2117
                 URL: https://issues.apache.org/jira/browse/DAFFODIL-2117
             Project: Daffodil
          Issue Type: Improvement
          Components: Front End, Infrastructure
    Affects Versions: 2.4.0
            Reporter: Michael Beckerle


Adding a new property, given the need to create tunables to require it or not, 
provide tunable default value for it or not, etc. is all WAY too hard, error 
prone, etc.

If you look at newly created dfdl:emptyElementPolicy property (which should 
move to DFDLX namespace per another enhancement), the sheer number of files 
that have to be touched is way too large.

There's the
 * property itself (several changes to XSDs in daffodil-propgen)
 * a tunable for requiring it or allowing it to default (dafext.xsd, and 
DaffodilTunables.scala)
 * a tunable (of option type) for specifying its default value as a tunable.
 * a WarnID for issuing warning that it is required but being defaulted 
(dafext.xsd and WarnID.scala)
 * the code that actually computes the defaulted property (e.g., in 
ElementBase.scala)
 ** a library is needed here, as we do this quite a lot.
 ** Note: must detect conflict of a specified property with the tunable if they 
are in conflict, and issue a warning (this one is a generic TunableBeingIgnored 
warning. Phew!)

We should add a generator to daffodil-propgen to generate these files off of 
dafext.xsd and place them in daffodil-lib/src_managed:
 * DaffodilTunables.scala
 * WarnID.scala

Any information, such as things that are to get option types, can be added to 
dafext.xsd as annotations on the elements or attributes so that the generator 
can find that info there and generate the correct thing.

While we're at it, the documentation for all the tunables, warnIDs, etc. should 
be written into dafext.xsd and we should generate
 * scaladoc in the generated scala code files
 * (if needed)  HTML doc for the user-doc on the daffodil user site.

 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to