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

Dave Thompson closed DAFFODIL-2354.
-----------------------------------

Verified the specified commits (commit 779e9803ba7708d700c0205cbd690a179841b084 
and  cf57e0d04ed7414081febb0992e6ebdbb6cd708d) is included in the latest pull 
from the incubator-daffodil repository.

Verified the effected incubator-daffodil sbt test suites execute successfully.

Verified the nightly test schemas compile and save successfully.

Verified the nightly test suite executes successfully.

> newVariableInstance leads to mark state exception
> -------------------------------------------------
>
>                 Key: DAFFODIL-2354
>                 URL: https://issues.apache.org/jira/browse/DAFFODIL-2354
>             Project: Daffodil
>          Issue Type: Bug
>          Components: Back End
>    Affects Versions: 2.6.0
>            Reporter: Steve Lawrence
>            Priority: Critical
>             Fix For: 3.0.0
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> The following schema uses newVariableInstance with the goal of parameterizing 
> repeated types. Note that this snippet does not even use the type and count 
> variables, or parameterizes anything, which is the intention. The ultimate 
> goal is to have set the type and count variables based on the type/count 
> elements, and then use those variables in the choice rather than using XPath 
> to access the elements. Things were simplified to create the smallest test 
> case.
> {code:xml}
> <?xml version="1.0" encoding="UTF-8"?> 
> <xs:schema
>   xmlns:xs="http://www.w3.org/2001/XMLSchema";
>   xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/";>
>   <xs:include 
> schemaLocation="org/apache/daffodil/xsd/DFDLGeneralFormat.dfdl.xsd" />
>   <xs:annotation>
>     <xs:appinfo source="http://www.ogf.org/dfdl/";>
>       <dfdl:format ref="GeneralFormat" />
>       <dfdl:defineVariable name="type" type="xs:int" />
>       <dfdl:defineVariable name="count" type="xs:int" />
>     </xs:appinfo>
>   </xs:annotation>
>   <xs:element name="file">
>     <xs:complexType>
>       <xs:sequence>
>         <xs:element name="records" maxOccurs="unbounded" 
> dfdl:terminator="%NL;">
>           <xs:complexType>
>             <xs:sequence>
>               <xs:element name="type" type="xs:int" 
> dfdl:lengthKind="explicit" dfdl:length="1" />
>               <xs:element name="count" type="xs:int" 
> dfdl:lengthKind="explicit" dfdl:length="1" />
>               <xs:sequence>
>                 <xs:annotation>
>                   <xs:appinfo source="http://www.ogf.org/dfdl/";>
>                     <dfdl:newVariableInstance ref="type" />
>                     <dfdl:newVariableInstance ref="count" />
>                   </xs:appinfo>
>                 </xs:annotation>
>                 <xs:sequence>
>                   <xs:choice dfdl:choiceDispatchKey="{ xs:string(./type) }">
>                     <xs:element name="int" type="xs:int" 
> dfdl:choiceBranchKey="1" maxOccurs="unbounded"
>                       dfdl:occursCountKind="expression" dfdl:occursCount="{ 
> ../count }"
>                       dfdl:lengthKind="explicit" dfdl:length="1" />
>                     <xs:element name="str" type="xs:string" 
> dfdl:choiceBranchKey="2" maxOccurs="unbounded"
>                       dfdl:occursCountKind="expression" dfdl:occursCount="{ 
> ../count }"
>                       dfdl:lengthKind="explicit" dfdl:length="1" />
>                   </xs:choice>
>                 </xs:sequence>
>               </xs:sequence>
>             </xs:sequence>
>           </xs:complexType>
>         </xs:element>
>       </xs:sequence>
>     </xs:complexType>
>   </xs:element>
> {code}
> So each line has a type (either 1 for int or 2 for string) and a count, 
> followed by count occurrances of that type.
> This should parse data that looks something like this:
> {code}
> 1512345
> 26abcdef
> {code}
> However, trying to parse this data leads to a usage exception about the mark 
> state being messed up.
> Simply removing the newVariableInstance annotation allows things to work, so 
> somehow that is messing with state in a way that is unexpected.



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

Reply via email to