You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@daffodil.apache.org by sl...@apache.org on 2022/01/18 13:32:48 UTC

[daffodil-schema.g8] 01/05: Add 'namespaced' property to support flat vs deep directory structure

This is an automated email from the ASF dual-hosted git repository.

slawrence pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/daffodil-schema.g8.git

commit a93decfc4e54ac92e47a728b156170ddcb74be94
Author: Steve Lawrence <sl...@apache.org>
AuthorDate: Thu Jan 13 08:54:16 2022 -0500

    Add 'namespaced' property to support flat vs deep directory structure
    
    Defaults to 'no' to use the preferred flat directory structure.
---
 README.md                                                  | 12 ++++++++++++
 .../$name__camel$.dfdl.xsd                                 |  0
 .../Test$name__Camel$.tdml                                 |  6 +++---
 .../data/test_01.$name__camel$                             |  0
 .../infosets/test_01.$name__camel$.xml                     |  0
 .../Test$name__Camel$.scala                                |  2 +-
 src/main/g8/.gitattributes                                 |  2 +-
 src/main/g8/build.sbt                                      | 14 ++++++++++++++
 src/main/g8/default.properties                             |  1 +
 9 files changed, 32 insertions(+), 5 deletions(-)

diff --git a/README.md b/README.md
index c763a38..010a070 100644
--- a/README.md
+++ b/README.md
@@ -45,6 +45,18 @@ The following properties are used to configure the generated DFDL schema project
     <dd>
         the package namespace, for example "com.example"
     </dd>
+    <dt>namespaced</dt>
+    <dd>
+        if 'no', uses a flattened directory structure with no package
+        directories and mixed source and resource files in src/ and test/
+        directories (default)
+    </dd>
+    <dd>
+        if 'yes', uses a deep directory structure with package directories and
+        separate directories for source and resource files. This should
+        only be used when namespacing is required to avoid file name
+        ambiguities.
+    </dd>
     <dt>daffodil_version</dt>
     <dd>
         the version of Apache Daffodil to add as a dependency, defaults to the
diff --git a/src/main/g8/src/main/resources/$package$/$name__camel$/xsd/$name__camel$.dfdl.xsd b/src/main/g8/$if(namespaced.truthy)$src$else$.$endif$/$if(namespaced.truthy)$main$else$src$endif$/$if(namespaced.truthy)$resources$else$.$endif$/$if(namespaced.truthy)$$package$$else$.$endif$/$if(namespaced.truthy)$$name__camel$$else$.$endif$/$if(namespaced.truthy)$xsd$else$.$endif$/$name__camel$.dfdl.xsd
similarity index 100%
rename from src/main/g8/src/main/resources/$package$/$name__camel$/xsd/$name__camel$.dfdl.xsd
rename to src/main/g8/$if(namespaced.truthy)$src$else$.$endif$/$if(namespaced.truthy)$main$else$src$endif$/$if(namespaced.truthy)$resources$else$.$endif$/$if(namespaced.truthy)$$package$$else$.$endif$/$if(namespaced.truthy)$$name__camel$$else$.$endif$/$if(namespaced.truthy)$xsd$else$.$endif$/$name__camel$.dfdl.xsd
diff --git a/src/main/g8/src/test/resources/$package$/$name__camel$/Test$name__Camel$.tdml b/src/main/g8/$if(namespaced.truthy)$src$else$.$endif$/test/$if(namespaced.truthy)$resources$else$.$endif$/$if(namespaced.truthy)$$package$$else$.$endif$/$if(namespaced.truthy)$$name__camel$$else$.$endif$/Test$name__Camel$.tdml
similarity index 73%
rename from src/main/g8/src/test/resources/$package$/$name__camel$/Test$name__Camel$.tdml
rename to src/main/g8/$if(namespaced.truthy)$src$else$.$endif$/test/$if(namespaced.truthy)$resources$else$.$endif$/$if(namespaced.truthy)$$package$$else$.$endif$/$if(namespaced.truthy)$$name__camel$$else$.$endif$/Test$name__Camel$.tdml
index 3654cd3..d897b72 100644
--- a/src/main/g8/src/test/resources/$package$/$name__camel$/Test$name__Camel$.tdml
+++ b/src/main/g8/$if(namespaced.truthy)$src$else$.$endif$/test/$if(namespaced.truthy)$resources$else$.$endif$/$if(namespaced.truthy)$$package$$else$.$endif$/$if(namespaced.truthy)$$name__camel$$else$.$endif$/Test$name__Camel$.tdml
@@ -26,12 +26,12 @@ limitations under the License.
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   defaultRoundTrip="onePass">
 
-  <tdml:parserTestCase name="test_$name;format="camel"$_01" root="$name;format="Camel"$" model="$package;format="packaged"$/$name;format="camel"$/xsd/$name;format="camel"$.dfdl.xsd">
+  <tdml:parserTestCase name="test_$name;format="camel"$_01" root="$name;format="Camel"$" model="$if(namespaced.truthy)$$package;format="packaged"$/$name;format="camel"$/xsd/$endif$$name;format="camel"$.dfdl.xsd">
     <tdml:document>
-      <tdml:documentPart type="file">$package;format="packaged"$/$name;format="camel"$/data/test_01.$name;format="camel"$</tdml:documentPart>
+      <tdml:documentPart type="file">$if(namespaced.truthy)$$package;format="packaged"$/$name;format="camel"$/$endif$data/test_01.$name;format="camel"$</tdml:documentPart>
     </tdml:document>
     <tdml:infoset>
-      <tdml:dfdlInfoset type="file">$package;format="packaged"$/$name;format="camel"$/infosets/test_01.$name;format="camel"$.xml</tdml:dfdlInfoset>
+      <tdml:dfdlInfoset type="file">$if(namespaced.truthy)$$package;format="packaged"$/$name;format="camel"$/$endif$infosets/test_01.$name;format="camel"$.xml</tdml:dfdlInfoset>
     </tdml:infoset>
   </tdml:parserTestCase>
 
diff --git a/src/main/g8/src/test/resources/$package$/$name__camel$/data/test_01.$name__camel$ b/src/main/g8/$if(namespaced.truthy)$src$else$.$endif$/test/$if(namespaced.truthy)$resources$else$.$endif$/$if(namespaced.truthy)$$package$$else$.$endif$/$if(namespaced.truthy)$$name__camel$$else$.$endif$/data/test_01.$name__camel$
similarity index 100%
rename from src/main/g8/src/test/resources/$package$/$name__camel$/data/test_01.$name__camel$
rename to src/main/g8/$if(namespaced.truthy)$src$else$.$endif$/test/$if(namespaced.truthy)$resources$else$.$endif$/$if(namespaced.truthy)$$package$$else$.$endif$/$if(namespaced.truthy)$$name__camel$$else$.$endif$/data/test_01.$name__camel$
diff --git a/src/main/g8/src/test/resources/$package$/$name__camel$/infosets/test_01.$name__camel$.xml b/src/main/g8/$if(namespaced.truthy)$src$else$.$endif$/test/$if(namespaced.truthy)$resources$else$.$endif$/$if(namespaced.truthy)$$package$$else$.$endif$/$if(namespaced.truthy)$$name__camel$$else$.$endif$/infosets/test_01.$name__camel$.xml
similarity index 100%
rename from src/main/g8/src/test/resources/$package$/$name__camel$/infosets/test_01.$name__camel$.xml
rename to src/main/g8/$if(namespaced.truthy)$src$else$.$endif$/test/$if(namespaced.truthy)$resources$else$.$endif$/$if(namespaced.truthy)$$package$$else$.$endif$/$if(namespaced.truthy)$$name__camel$$else$.$endif$/infosets/test_01.$name__camel$.xml
diff --git a/src/main/g8/src/test/scala/$package$/$name__camel$/Test$name__Camel$.scala b/src/main/g8/$if(namespaced.truthy)$src$else$.$endif$/test/$if(namespaced.truthy)$scala$else$.$endif$/$if(namespaced.truthy)$$package$$else$.$endif$/$if(namespaced.truthy)$$name__camel$$else$.$endif$/Test$name__Camel$.scala
similarity index 89%
rename from src/main/g8/src/test/scala/$package$/$name__camel$/Test$name__Camel$.scala
rename to src/main/g8/$if(namespaced.truthy)$src$else$.$endif$/test/$if(namespaced.truthy)$scala$else$.$endif$/$if(namespaced.truthy)$$package$$else$.$endif$/$if(namespaced.truthy)$$name__camel$$else$.$endif$/Test$name__Camel$.scala
index d14d617..83135ce 100644
--- a/src/main/g8/src/test/scala/$package$/$name__camel$/Test$name__Camel$.scala
+++ b/src/main/g8/$if(namespaced.truthy)$src$else$.$endif$/test/$if(namespaced.truthy)$scala$else$.$endif$/$if(namespaced.truthy)$$package$$else$.$endif$/$if(namespaced.truthy)$$name__camel$$else$.$endif$/Test$name__Camel$.scala
@@ -22,7 +22,7 @@ import org.junit.Test
 import org.apache.daffodil.tdml.Runner
 
 object Test$name;format="Camel"$ {
-  lazy val runner = Runner("/$package;format="packaged"$/$name;format="camel"$/", "Test$name;format="Camel"$.tdml")
+  lazy val runner = Runner("/$if(namespaced.truthy)$$package;format="packaged"$/$name;format="camel"$/$endif$", "Test$name;format="Camel"$.tdml")
 
   @AfterClass def shutDown {
     runner.reset
diff --git a/src/main/g8/.gitattributes b/src/main/g8/.gitattributes
index b2b04d0..0120b8e 100644
--- a/src/main/g8/.gitattributes
+++ b/src/main/g8/.gitattributes
@@ -14,4 +14,4 @@ $if(false)$
 # See the License for the specific language governing permissions and
 # limitations under the License.
 $endif$
-src/test/resources/**/data/** text=false
+$if(namespaced.truthy)$src/test/resources/**/$else$test/$endif$data/** text=false
diff --git a/src/main/g8/build.sbt b/src/main/g8/build.sbt
index e71786a..b6f4c78 100644
--- a/src/main/g8/build.sbt
+++ b/src/main/g8/build.sbt
@@ -31,3 +31,17 @@ libraryDependencies ++= Seq(
 testOptions += Tests.Argument(TestFrameworks.JUnit, "-v")
 
 crossPaths := false
+
+$if(!namespaced.truthy)$
+// Use flat folder structure. This means *.java and *.scala files are in the
+// same directory as resources files, and source/resource files are only
+// differentiated by their file extension.
+Compile / unmanagedSourceDirectories := Seq(baseDirectory.value / "src")
+Compile / unmanagedResourceDirectories := Seq(baseDirectory.value / "src")
+Compile / unmanagedSources / includeFilter := "*.java" | "*.scala"
+Compile / unmanagedResources / excludeFilter := "*.java" | "*.scala"
+Test / unmanagedSourceDirectories := Seq(baseDirectory.value / "test")
+Test / unmanagedResourceDirectories := Seq(baseDirectory.value / "test")
+Test / unmanagedSources / includeFilter := "*.java" | "*.scala"
+Test / unmanagedResources / excludeFilter := "*.java" | "*.scala"
+$endif$
diff --git a/src/main/g8/default.properties b/src/main/g8/default.properties
index 2f03142..bdf02f4 100644
--- a/src/main/g8/default.properties
+++ b/src/main/g8/default.properties
@@ -15,4 +15,5 @@
 
 name=format
 package=com.example
+namespaced=no
 daffodil_version=maven(org.apache.daffodil, daffodil-tdml-processor_2.12)