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

Reply via email to