This is an automated email from the ASF dual-hosted git repository.
slawrence pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-daffodil.git
The following commit(s) were added to refs/heads/master by this push:
new d9330b7 SDE if the model group of group definition is a
dfdl:hiddenGroupRef
d9330b7 is described below
commit d9330b77ec0d2c563321f91ddf861debd004997f
Author: Steve Lawrence <[email protected]>
AuthorDate: Fri Mar 27 09:52:09 2020 -0400
SDE if the model group of group definition is a dfdl:hiddenGroupRef
DAFFODIL-2304
---
.../main/scala/org/apache/daffodil/dsom/GroupDef.scala | 11 ++++++++++-
.../section14/sequence_groups/HiddenSequences.tdml | 18 +++++++++---------
.../sequence_groups/TestHiddenSequences.scala | 7 +------
3 files changed, 20 insertions(+), 16 deletions(-)
diff --git
a/daffodil-core/src/main/scala/org/apache/daffodil/dsom/GroupDef.scala
b/daffodil-core/src/main/scala/org/apache/daffodil/dsom/GroupDef.scala
index 3e17d89..d686925 100644
--- a/daffodil-core/src/main/scala/org/apache/daffodil/dsom/GroupDef.scala
+++ b/daffodil-core/src/main/scala/org/apache/daffodil/dsom/GroupDef.scala
@@ -132,7 +132,16 @@ sealed abstract class GlobalGroupDef(
final class GlobalSequenceGroupDef(
defXMLArg: Node, seqXML: Node, schemaDocument: SchemaDocument)
extends GlobalGroupDef(defXMLArg, seqXML, schemaDocument)
- with SequenceDefMixin
+ with SequenceDefMixin {
+
+ requiredEvaluationsIfActivated(checkGroupDefIsNotHiddenSequence)
+
+ private def checkGroupDefIsNotHiddenSequence: Unit = {
+ if (hiddenGroupRefOption.isDefined) {
+ SDE("the model group of a group definition cannot be a sequence with
dfdl:hiddenGroupRef")
+ }
+ }
+}
final class GlobalChoiceGroupDef(
defXMLArg: Node, choiceXML: Node, schemaDocument: SchemaDocument)
diff --git
a/daffodil-test/src/test/resources/org/apache/daffodil/section14/sequence_groups/HiddenSequences.tdml
b/daffodil-test/src/test/resources/org/apache/daffodil/section14/sequence_groups/HiddenSequences.tdml
index ae2d344..6d801b9 100644
---
a/daffodil-test/src/test/resources/org/apache/daffodil/section14/sequence_groups/HiddenSequences.tdml
+++
b/daffodil-test/src/test/resources/org/apache/daffodil/section14/sequence_groups/HiddenSequences.tdml
@@ -263,9 +263,9 @@
</tdml:errors>
</tdml:unparserTestCase>
- <tdml:unparserTestCase name="ignoredHiddenGroupRefWithNoSequenceParent"
root="e9"
+ <tdml:unparserTestCase name="invalidGroupDefWithHiddenSequenceModelGroup"
root="e9"
model="SequencesWithHiddenRefs.dfdl.xsd"
- description="the hiddenGroupRef is not wrapped in a sequence and is
ignored by daffodil">
+ description="a group definition is used where the model group is a hidden
group ref">
<tdml:infoset>
<tdml:dfdlInfoset>
<ex:e9>
@@ -273,13 +273,13 @@
</ex:e9>
</tdml:dfdlInfoset>
</tdml:infoset>
- <tdml:warnings>
- <tdml:warning>Schema Definition Warning</tdml:warning>
- <tdml:warning>DFDL property was ignored: hiddenGroupRef</tdml:warning>
- </tdml:warnings>
- <tdml:document>
- <tdml:documentPart type="text"><![CDATA[7]]></tdml:documentPart>
- </tdml:document>
+ <tdml:errors>
+ <tdml:error>Schema Definition Error</tdml:error>
+ <tdml:error>model group</tdml:error>
+ <tdml:error>group definition</tdml:error>
+ <tdml:error>sequence</tdml:error>
+ <tdml:error>dfdl:hiddenGroupRef</tdml:error>
+ </tdml:errors>
</tdml:unparserTestCase>
</tdml:testSuite>
diff --git
a/daffodil-test/src/test/scala/org/apache/daffodil/section14/sequence_groups/TestHiddenSequences.scala
b/daffodil-test/src/test/scala/org/apache/daffodil/section14/sequence_groups/TestHiddenSequences.scala
index 9903dcf..849aed8 100644
---
a/daffodil-test/src/test/scala/org/apache/daffodil/section14/sequence_groups/TestHiddenSequences.scala
+++
b/daffodil-test/src/test/scala/org/apache/daffodil/section14/sequence_groups/TestHiddenSequences.scala
@@ -54,10 +54,5 @@ class TestHiddenSequences {
@Test def test_noOVCinHiddenContext() {
runner.runOneTest("noOVCinHiddenContext") }
@Test def test_nestedNoOVCinHiddenContext() {
runner.runOneTest("nestedNoOVCinHiddenContext") }
- /*
- * FIXME DAFFODIL-2304; Dropped hiddenGroupRef
- * This will fail once fixed, as no warrning will be generated and the
output data will changed
- */
- @Test def test_ignoredHiddenGroupRefWithNoSequenceParent() {
runner.runOneTest("ignoredHiddenGroupRefWithNoSequenceParent") }
-
+ @Test def test_invalidGroupDefWithHiddenSequenceModelGroup() {
runner.runOneTest("invalidGroupDefWithHiddenSequenceModelGroup") }
}