You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@daffodil.apache.org by "Olabusayo Kilo (Jira)" <ji...@apache.org> on 2022/03/10 05:30:00 UTC
[jira] [Created] (DAFFODIL-2668) Variable Error caused by ignored newVariableInstance in Group Annotation
Olabusayo Kilo created DAFFODIL-2668:
----------------------------------------
Summary: Variable Error caused by ignored newVariableInstance in Group Annotation
Key: DAFFODIL-2668
URL: https://issues.apache.org/jira/browse/DAFFODIL-2668
Project: Daffodil
Issue Type: Bug
Components: Back End
Affects Versions: 3.2.1
Reporter: Olabusayo Kilo
Fix For: 3.3.0
Variable Error caused by ignored newVariableInstance in Group Annotation
(Note: repo with changes currently exists in a private repo. See comment for details on accessing the repo)
When a newVariableInstance is declared in a statement annotation in a group containing a choice, it causes an error that the variable has no defaultValue, but if the statement annotation is wrapped in a sequence with the choice, it works as expected.
The 2 below should be equivalent.
{code:xml}
<!-- causes variable error -->
<xs:annotation>
<xs:appinfo source="http://www.ogf.org/dfdl/">
<dfdl:format ref="ms:msCommon" />
<dfdl:defineVariable name="messageID" type="xs:string"/>
</xs:appinfo>
</xs:annotation>
<!-- shorthand -->
<group>
<annotation>
<dfdl:newVariableInstance ref="cmvmf:messageID" defaultValue="{...}"/>
</annotation>
<choice choiceDispatchKey="{ $cmvmf:messageID}">...</choice>
</group>
{code}
{code:xml}
<!--no error-->
<xs:annotation>
<xs:appinfo source="http://www.ogf.org/dfdl/">
<dfdl:format ref="ms:msCommon" />
<dfdl:defineVariable name="messageID" type="xs:string"/>
</xs:appinfo>
</xs:annotation>
<!-- shorthand -->
<group>
<sequence>
<annotation>
<dfdl:newVariableInstance ref="cmvmf:messageID" defaultValue="{...}"/>
</annotation>
<choice choiceDispatchKey="{ $cmvmf:messageID}">...</choice>
</sequence>
</group>
{code}
{noformat}
// variable error
org.apache.daffodil.tdml.TDMLExceptionImpl: (Implementation: daffodil) RuntimeSchemaDefinitionError: Runtime Schema Definition Error: Variable Error: Variable map (runtime): variable cmvmf:messageID has no value. It was not set, and has no default value.
Schema context: cmvmf:messageID Location line 53 column 14 in file:/home/okilo/git/DFDLSchemas/dfdl-noc-vmfa/target/classes/com/owlcyberdefense/mil-std-6017/xsd/vmfChoiceOfMessages.dfdl.xsd
Schema context: message Location line 49 column 14 in file:/home/okilo/git/DFDLSchemas/dfdl-noc-vmfa/target/classes/com/owlcyberdefense/noc/xsd/message_content_type.dfdl.xsd
Data location was preceding byte 57 limit(bytes) 78
Caused by: Runtime Schema Definition Error: Variable Error: Variable map (runtime): variable cmvmf:messageID has no value. It was not set, and has no default value.
Schema context: cmvmf:messageID Location line 53 column 14 in file:/home/okilo/git/DFDLSchemas/dfdl-noc-vmfa/target/classes/com/owlcyberdefense/mil-std-6017/xsd/vmfChoiceOfMessages.dfdl.xsd
Schema context: message Location line 49 column 14 in file:/home/okilo/git/DFDLSchemas/dfdl-noc-vmfa/target/classes/com/owlcyberdefense/noc/xsd/message_content_type.dfdl.xsd
Data location was preceding byte 57 limit(bytes) 78
at org.apache.daffodil.processors.parsers.DoSDEMixin.doSDE(ParseErrors.scala:102)
at org.apache.daffodil.processors.parsers.DoSDEMixin.doSDE$(ParseErrors.scala:95)
at org.apache.daffodil.dpath.RuntimeExpressionDPath.doSDE(DPath.scala:73)
at org.apache.daffodil.dpath.RuntimeExpressionDPath.handleCompileState(DPath.scala:169)
at org.apache.daffodil.dpath.RuntimeExpressionDPath.handleThrow(DPath.scala:333)
at org.apache.daffodil.dpath.RuntimeExpressionDPath.evaluateMaybe(DPath.scala:266)
at org.apache.daffodil.dpath.RuntimeExpressionDPath.evaluate(DPath.scala:275)
at org.apache.daffodil.processors.ExprEvalMixin.eval(Evaluatable.scala:404)
at org.apache.daffodil.processors.ExprEvalMixin.eval$(Evaluatable.scala:398)
at org.apache.daffodil.processors.EvaluatableConvertedExpression.eval(Evaluatable.scala:485)
at org.apache.daffodil.processors.EvaluatableConvertedExpressionMixin.compute(Evaluatable.scala:470)
at org.apache.daffodil.processors.EvaluatableConvertedExpressionMixin.compute$(Evaluatable.scala:469)
at org.apache.daffodil.processors.EvaluatableConvertedExpression.compute(Evaluatable.scala:485)
at org.apache.daffodil.processors.InfosetCachedEvaluatable.getCachedOrComputeAndCache(Evaluatable.scala:90)
at org.apache.daffodil.processors.InfosetCachedEvaluatable.getCachedOrComputeAndCache$(Evaluatable.scala:68)
at org.apache.daffodil.processors.ChoiceDispatchKeyEv.getCachedOrComputeAndCache(EvElement.scala:284)
at org.apache.daffodil.processors.Evaluatable.evaluate(Evaluatable.scala:284)
at org.apache.daffodil.processors.parsers.ChoiceDispatchCombinatorParser.computeDispatchKey(ElementKindParsers.scala:235)
at org.apache.daffodil.processors.parsers.ChoiceDispatchCombinatorParserBase.parse(ElementKindParsers.scala:159)
at org.apache.daffodil.processors.parsers.Parser.parse1(Parser.scala:82)
at org.apache.daffodil.processors.parsers.Parser.parse1$(Parser.scala:76)
at org.apache.daffodil.processors.parsers.CombinatorParser.parse1(Parser.scala:161)
at org.apache.daffodil.processors.parsers.Unseparated.parseOne(UnseparatedSequenceParsers.scala:29)
at org.apache.daffodil.processors.parsers.Unseparated.parseOne$(UnseparatedSequenceParsers.scala:27)
at org.apache.daffodil.processors.parsers.ScalarOrderedUnseparatedSequenceChildParser.parseOne(UnseparatedSequenceParsers.scala:37)
at org.apache.daffodil.processors.parsers.SequenceParserBase.parseOneInstanceWithMaybePoU(SequenceParserBases.scala:437)
at org.apache.daffodil.processors.parsers.SequenceParserBase.parseOneInstance(SequenceParserBases.scala:422)
at org.apache.daffodil.processors.parsers.SequenceParserBase.parse(SequenceParserBases.scala:265)
at org.apache.daffodil.processors.parsers.Parser.parse1(Parser.scala:82)
at org.apache.daffodil.processors.parsers.Parser.parse1$(Parser.scala:76)
at org.apache.daffodil.processors.parsers.CombinatorParser.parse1(Parser.scala:161)
at org.apache.daffodil.processors.parsers.ElementParserBase.parse(ElementCombinator1.scala:135)
at org.apache.daffodil.processors.parsers.Parser.parse1(Parser.scala:82)
at org.apache.daffodil.processors.parsers.Parser.parse1$(Parser.scala:76)
at org.apache.daffodil.processors.parsers.CombinatorParser.parse1(Parser.scala:161)
at org.apache.daffodil.processors.parsers.Unseparated.parseOne(UnseparatedSequenceParsers.scala:29)
at org.apache.daffodil.processors.parsers.Unseparated.parseOne$(UnseparatedSequenceParsers.scala:27)
at org.apache.daffodil.processors.parsers.RepOrderedWithMinMaxUnseparatedSequenceChildParser.parseOne(UnseparatedSequenceParsers.scala:64)
at org.apache.daffodil.processors.parsers.SequenceParserBase.parseOneInstanceWithMaybePoU(SequenceParserBases.scala:437)
at org.apache.daffodil.processors.parsers.SequenceParserBase.parseOneInstance(SequenceParserBases.scala:417)
at org.apache.daffodil.processors.parsers.SequenceParserBase.parse(SequenceParserBases.scala:157)
at org.apache.daffodil.processors.parsers.Parser.parse1(Parser.scala:82)
at org.apache.daffodil.processors.parsers.Parser.parse1$(Parser.scala:76)
at org.apache.daffodil.processors.parsers.CombinatorParser.parse1(Parser.scala:161)
at org.apache.daffodil.processors.parsers.SeqCompParser.parse(Parser.scala:177)
at org.apache.daffodil.processors.parsers.Parser.parse1(Parser.scala:82)
at org.apache.daffodil.processors.parsers.Parser.parse1$(Parser.scala:76)
at org.apache.daffodil.processors.parsers.CombinatorParser.parse1(Parser.scala:161)
at org.apache.daffodil.processors.parsers.ElementParserBase.parse(ElementCombinator1.scala:135)
at org.apache.daffodil.processors.parsers.Parser.parse1(Parser.scala:82)
at org.apache.daffodil.processors.parsers.Parser.parse1$(Parser.scala:76)
at org.apache.daffodil.processors.parsers.CombinatorParser.parse1(Parser.scala:161)
at org.apache.daffodil.processors.parsers.Unseparated.parseOne(UnseparatedSequenceParsers.scala:29)
at org.apache.daffodil.processors.parsers.Unseparated.parseOne$(UnseparatedSequenceParsers.scala:27)
at org.apache.daffodil.processors.parsers.ScalarOrderedUnseparatedSequenceChildParser.parseOne(UnseparatedSequenceParsers.scala:37)
at org.apache.daffodil.processors.parsers.SequenceParserBase.parseOneInstanceWithMaybePoU(SequenceParserBases.scala:437)
at org.apache.daffodil.processors.parsers.SequenceParserBase.parseOneInstance(SequenceParserBases.scala:422)
at org.apache.daffodil.processors.parsers.SequenceParserBase.parse(SequenceParserBases.scala:265)
at org.apache.daffodil.processors.parsers.Parser.parse1(Parser.scala:82)
at org.apache.daffodil.processors.parsers.Parser.parse1$(Parser.scala:76)
at org.apache.daffodil.processors.parsers.CombinatorParser.parse1(Parser.scala:161)
at org.apache.daffodil.processors.parsers.SpecifiedLengthParserBase.parse(SpecifiedLengthParsers.scala:76)
at org.apache.daffodil.processors.parsers.Parser.parse1(Parser.scala:82)
at org.apache.daffodil.processors.parsers.Parser.parse1$(Parser.scala:76)
at org.apache.daffodil.processors.parsers.CombinatorParser.parse1(Parser.scala:161)
at org.apache.daffodil.processors.parsers.ElementParserBase.parse(ElementCombinator1.scala:135)
at org.apache.daffodil.processors.parsers.Parser.parse1(Parser.scala:82)
at org.apache.daffodil.processors.parsers.Parser.parse1$(Parser.scala:76)
at org.apache.daffodil.processors.parsers.CombinatorParser.parse1(Parser.scala:161)
at org.apache.daffodil.processors.parsers.Unseparated.parseOne(UnseparatedSequenceParsers.scala:29)
at org.apache.daffodil.processors.parsers.Unseparated.parseOne$(UnseparatedSequenceParsers.scala:27)
at org.apache.daffodil.processors.parsers.ScalarOrderedUnseparatedSequenceChildParser.parseOne(UnseparatedSequenceParsers.scala:37)
at org.apache.daffodil.processors.parsers.SequenceParserBase.parseOneInstanceWithMaybePoU(SequenceParserBases.scala:437)
at org.apache.daffodil.processors.parsers.SequenceParserBase.parseOneInstance(SequenceParserBases.scala:422)
at org.apache.daffodil.processors.parsers.SequenceParserBase.parse(SequenceParserBases.scala:265)
at org.apache.daffodil.processors.parsers.Parser.parse1(Parser.scala:82)
at org.apache.daffodil.processors.parsers.Parser.parse1$(Parser.scala:76)
at org.apache.daffodil.processors.parsers.CombinatorParser.parse1(Parser.scala:161)
at org.apache.daffodil.processors.parsers.SeqCompParser.parse(Parser.scala:177)
at org.apache.daffodil.processors.parsers.Parser.parse1(Parser.scala:82)
at org.apache.daffodil.processors.parsers.Parser.parse1$(Parser.scala:76)
at org.apache.daffodil.processors.parsers.CombinatorParser.parse1(Parser.scala:161)
at org.apache.daffodil.processors.parsers.ElementParserBase.parse(ElementCombinator1.scala:135)
at org.apache.daffodil.processors.parsers.Parser.parse1(Parser.scala:82)
at org.apache.daffodil.processors.parsers.Parser.parse1$(Parser.scala:76)
at org.apache.daffodil.processors.parsers.CombinatorParser.parse1(Parser.scala:161)
at org.apache.daffodil.processors.parsers.Unseparated.parseOne(UnseparatedSequenceParsers.scala:29)
at org.apache.daffodil.processors.parsers.Unseparated.parseOne$(UnseparatedSequenceParsers.scala:27)
at org.apache.daffodil.processors.parsers.ScalarOrderedUnseparatedSequenceChildParser.parseOne(UnseparatedSequenceParsers.scala:37)
at org.apache.daffodil.processors.parsers.SequenceParserBase.parseOneInstanceWithMaybePoU(SequenceParserBases.scala:437)
at org.apache.daffodil.processors.parsers.SequenceParserBase.parseOneInstance(SequenceParserBases.scala:422)
at org.apache.daffodil.processors.parsers.SequenceParserBase.parse(SequenceParserBases.scala:265)
at org.apache.daffodil.processors.parsers.Parser.parse1(Parser.scala:82)
at org.apache.daffodil.processors.parsers.Parser.parse1$(Parser.scala:76)
at org.apache.daffodil.processors.parsers.CombinatorParser.parse1(Parser.scala:161)
at org.apache.daffodil.processors.parsers.ElementParserBase.parse(ElementCombinator1.scala:135)
at org.apache.daffodil.processors.parsers.Parser.parse1(Parser.scala:82)
at org.apache.daffodil.processors.parsers.Parser.parse1$(Parser.scala:76)
at org.apache.daffodil.processors.parsers.CombinatorParser.parse1(Parser.scala:161)
at org.apache.daffodil.processors.parsers.Unseparated.parseOne(UnseparatedSequenceParsers.scala:29)
at org.apache.daffodil.processors.parsers.Unseparated.parseOne$(UnseparatedSequenceParsers.scala:27)
at org.apache.daffodil.processors.parsers.RepOrderedWithMinMaxUnseparatedSequenceChildParser.parseOne(UnseparatedSequenceParsers.scala:64)
at org.apache.daffodil.processors.parsers.SequenceParserBase.parseOneInstanceWithMaybePoU(SequenceParserBases.scala:437)
at org.apache.daffodil.processors.parsers.SequenceParserBase.parseOneInstance(SequenceParserBases.scala:417)
at org.apache.daffodil.processors.parsers.SequenceParserBase.parse(SequenceParserBases.scala:157)
at org.apache.daffodil.processors.parsers.Parser.parse1(Parser.scala:82)
at org.apache.daffodil.processors.parsers.Parser.parse1$(Parser.scala:76)
at org.apache.daffodil.processors.parsers.CombinatorParser.parse1(Parser.scala:161)
at org.apache.daffodil.processors.parsers.ElementParserBase.parse(ElementCombinator1.scala:135)
at org.apache.daffodil.processors.parsers.Parser.parse1(Parser.scala:82)
at org.apache.daffodil.processors.parsers.Parser.parse1$(Parser.scala:76)
at org.apache.daffodil.processors.parsers.CombinatorParser.parse1(Parser.scala:161)
at org.apache.daffodil.processors.DataProcessor.doParse(DataProcessor.scala:503)
at org.apache.daffodil.processors.DataProcessor.parse(DataProcessor.scala:447)
at org.apache.daffodil.tdml.processor.DaffodilTDMLDFDLProcessor.doParseWithBothApis(DaffodilTDMLDFDLProcessor.scala:311)
at org.apache.daffodil.tdml.processor.DaffodilTDMLDFDLProcessor.parse(DaffodilTDMLDFDLProcessor.scala:248)
at org.apache.daffodil.tdml.processor.DaffodilTDMLDFDLProcessor.parse(DaffodilTDMLDFDLProcessor.scala:253)
at org.apache.daffodil.tdml.ParserTestCase.doParseExpectSuccess(TDMLRunner.scala:1069)
... 33 more
Caused by: Variable Error: Variable map (runtime): variable cmvmf:messageID has no value. It was not set, and has no default value.
Schema context: cmvmf:messageID Location line 53 column 14 in file:/home/okilo/git/DFDLSchemas/dfdl-noc-vmfa/target/classes/com/owlcyberdefense/mil-std-6017/xsd/vmfChoiceOfMessages.dfdl.xsd
{noformat}
--
This message was sent by Atlassian Jira
(v8.20.1#820001)