You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@daffodil.apache.org by "Dave Thompson (Jira)" <ji...@apache.org> on 2021/03/18 15:40:00 UTC

[jira] [Closed] (DAFFODIL-2429) newVariableInstance and setVariable require 'direction' property

     [ https://issues.apache.org/jira/browse/DAFFODIL-2429?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dave Thompson closed DAFFODIL-2429.
-----------------------------------

Verified the specified commit (actually commit f1603a0da8c9610f7ade79250315a2b5db333db2) is included in the latest pull from the daffodil repository.

Verified the effected daffodil subproject sbt test suites execute successfully.

Verified the nightly test schemas compile and save successfully.

Verified the nightly test suite executes successfully.

> newVariableInstance and setVariable require 'direction' property 
> -----------------------------------------------------------------
>
>                 Key: DAFFODIL-2429
>                 URL: https://issues.apache.org/jira/browse/DAFFODIL-2429
>             Project: Daffodil
>          Issue Type: Bug
>          Components: Back End, Front End
>    Affects Versions: 3.0.0
>            Reporter: Mike Beckerle
>            Priority: Major
>             Fix For: 3.1.0
>
>
> I have updated the PCAP schema on github to illustrate this issue.
>  
> This is a pull request (code review) of the changes [https://github.com/DFDLSchemas/PCAP/pull/10]
>  
> In the PCAP schema the IPSrcGrp group ref appears immediately before the IPSrc element. Similarly the IPDestGrp reference appears immediately before the IPDest element.
>  
> These groups contain elements which are the individual binary bytes of the IP Source and IP Dest addresses. They are 4 unsigned bytes.
> When parsing these are parsed and then their values concatenated as strings into a string like "1.2.3.4".
>  
> When unparsing, these groups use dfdl:outputValueCalc to take apart a string like "1.2.3.4" (which appears in the infoset after parsing), back into its individual digits 1, 2, 3, 4, and creates an unsignedByte value of each number.
>  
> The problem is, these groups are absolute nonsense if you view the dfdl:newVariableInstance defaultValue expression as being evaluated at parse time. The expression is for use *only* at unparse time and immediately does a forward reference to the following IPSrc member containing the "1.2.3.4" type string.
>  
> Without some sort of additional property on dfdl:newVariableInstance and dfdl:setVariable to indicate that this only should be evaluated at unparse time, there is no way to suppress evaluation and perform it only at unparse time.
>  
> I suggest we need an additional property on newVariableInstance and setVariable which I suggest is called 'direction', with values 'parse', 'unparse', 'both'. This property defaults to 'both', but if set to 'unparse' only evaluates the expression (and binds/sets variable) during that direction of processing.
>  
> ...mikeb{color:#888888}
> {color}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)