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

[jira] [Resolved] (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 ]

Josh Adams resolved DAFFODIL-2429.
----------------------------------
    Fix Version/s: 3.1.0
         Assignee:     (was: Josh Adams)
       Resolution: Implemented

This has been implemented in commit f1603a0da8c9610f7ade79250315a2b5db333db2

> 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)