This is an automated email from the ASF dual-hosted git repository. arosien pushed a commit to branch daffodil-vscode-tdml in repository https://gitbox.apache.org/repos/asf/daffodil-vscode.git
commit 5b92f4f4e8a40f08b7289a49ac3dd0368595d271 Author: Michael Hoke <[email protected]> AuthorDate: Thu Jun 23 11:21:33 2022 -0400 - Add jaxb bindings to sbt build --- bindings.xjb | 55 ++++++++++++++++++++++ build.sbt | 27 ++++++++++- project/plugins.sbt | 3 ++ .../org.apache.daffodil.debugger.dap/Parse.scala | 21 +++++++++ 4 files changed, 105 insertions(+), 1 deletion(-) diff --git a/bindings.xjb b/bindings.xjb new file mode 100644 index 0000000..826b0b5 --- /dev/null +++ b/bindings.xjb @@ -0,0 +1,55 @@ +<jxb:bindings version="2.1" + xmlns:tdml="http://www.ibm.com/xmlns/dfdl/testData" + xmlns:jxb="http://java.sun.com/xml/ns/jaxb" + xmlns:dfdl="http://www.ogf.org/dfdl/dfdl-1.0/" + xmlns:xs="http://www.w3.org/2001/XMLSchema"> + <jxb:bindings schemaLocation="resources/xsd/DFDL_part3_model.xsd" version="1.0"> + <jxb:bindings node="//xs:attributeGroup[@name='SetVariableAG']/xs:attribute[@name='value']"> + <jxb:property name="ValueAttribute"/> + </jxb:bindings> + <jxb:bindings node="//xs:element[@name='simpleType']"> + <jxb:class name="simpleTypeClass"/> + </jxb:bindings> + <jxb:bindings node="//xs:element[@name='group']"> + <jxb:class name="groupClass"/> + </jxb:bindings> + <jxb:bindings node="//xs:element[@name='choice']"> + <jxb:class name="choiceClass"/> + </jxb:bindings> + <jxb:bindings node="//xs:element[@name='sequence']"> + <jxb:class name="sequenceClass"/> + </jxb:bindings> + <jxb:bindings node="//xs:element[@name='element']"> + <jxb:class name="elementClass"/> + </jxb:bindings> + </jxb:bindings> + <jxb:bindings schemaLocation="resources/xsd/DFDL_part2_attributes.xsd" version="1.0"> + <jxb:bindings node="//xs:attributeGroup[@name='BaseAGQualified']/xs:attribute[@name='ref']"> + <jxb:property name="RefAttribute"/> + </jxb:bindings> + </jxb:bindings> + <jxb:bindings schemaLocation="resources/xsd/DFDL_part1_simpletypes.xsd" version="1.0"> + <jxb:bindings node="//xs:simpleType[@name='ByteOrderEnum']"> + <jxb:typesafeEnumClass name="ByteOrderEnumType"/> + </jxb:bindings> + <jxb:bindings node="//xs:simpleType[@name='BitOrderEnum']"> + <jxb:typesafeEnumClass name="BitOrderEnumType"/> + </jxb:bindings> + </jxb:bindings> + <jxb:bindings schemaLocation="resources/xsd/dafext.xsd" version="1.0"> + <jxb:bindings node="//xs:attribute[@name='parseUnparsePolicy']"> + <jxb:property name="ParseUnparsePolicyExt"/> + </jxb:bindings> + <jxb:bindings node="//xs:simpleType[@name='PropertyNameType']"> + <jxb:typesafeEnumClass name="PropertyNameTypeExt"/> + </jxb:bindings> + <jxb:bindings node="//xs:complexType[@name='PropertyType']"> + <jxb:class name="PropertyTypeClass"/> + </jxb:bindings> + </jxb:bindings> + <jxb:bindings schemaLocation="resources/xsd/dfdlx.xsd" version="1.0"> + <jxb:bindings node="//xs:simpleType[@name='PropertyNameType']"> + <jxb:typesafeEnumClass name="PropertyNameTypeX"/> + </jxb:bindings> + </jxb:bindings> +</jxb:bindings> \ No newline at end of file diff --git a/build.sbt b/build.sbt index b0a64b8..62ba03f 100644 --- a/build.sbt +++ b/build.sbt @@ -15,6 +15,7 @@ * limitations under the License. */ +import com.github.retronym.sbtxjc.SbtXjcPlugin import play.api.libs.json._ lazy val packageData = Json.parse(scala.io.Source.fromFile("./package.json").mkString).as[JsObject] @@ -44,7 +45,8 @@ lazy val commonSettings = { // remove the -Xcheckinit option added by the sbt tpoletcat plugin. This // option leads to non-reproducible builds scalacOptions --= Seq("-Xcheckinit"), - startYear := Some(2021) + startYear := Some(2021), + javaSource := file("server/sbtXjc/target/scala-2.12/src_managed_cxf/org/apache/daffodil/tdml") ) } @@ -69,6 +71,8 @@ lazy val `daffodil-debugger` = project .settings(publish / skip := true) .dependsOn(core) .aggregate(core) + .dependsOn(sbtXjcProject) + .aggregate(sbtXjcProject) lazy val core = project .in(file("server/core")) @@ -87,3 +91,24 @@ lazy val core = project packageName := s"${name.value}-$daffodilVer" ) .enablePlugins(commonPlugins: _*) + +lazy val sbtXjcProject = project + .in(file("server/sbtXjc")) + .enablePlugins(SbtXjcPlugin) + .settings( + name := "daffodil-xjc", + libraryDependencies ++= Seq( + "javax.activation" % "activation" % "1.1.1", + "com.sun.xml.bind" % "jaxb-xjc" % "2.1.6", + // "org.relaxng" % "jing" % "20220510" % "runtime", + + // "com.sun.istack" % "istack-commons-tools" % "4.1.1" + ), + xjcCommandLine += "-nv", + xjcCommandLine += "-p", + xjcCommandLine += "org.apache.daffodil.tdml", + xjcBindings += "bindings.xjb", + xjcJvmOpts += "-classpath", + xjcJvmOpts += s"${csrCacheDirectory.value}/https/repo1.maven.org/maven2/javax/activation/activation/1.1.1/*:${csrCacheDirectory.value}/https/repo1.maven.org/maven2/javax/activation/javax.activation-api/1.2.0/*:${csrCacheDirectory.value}/https/repo1.maven.org/maven2/org/glassfish/jaxb/txw2/2.2.11/*:${csrCacheDirectory.value}/https/repo1.maven.org/maven2/relaxngDatatype/relaxngDatatype/20020414/*:${csrCacheDirectory.value}/https/repo1.maven.org/maven2/com/sun/xsom/xsom/20140925/*:${csr [...] + Compile / xjc / sources := Seq(file("resources/xsd")) + ) diff --git a/project/plugins.sbt b/project/plugins.sbt index 741b8d5..c3754bc 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -21,3 +21,6 @@ addSbtPlugin("io.github.davidgregory084" % "sbt-tpolecat" % "0.1.17") addSbtPlugin("org.musigma" % "sbt-rat" % "0.7.0") addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.4.3") addSbtPlugin("com.github.battermann" % "sbt-json" % "0.5.0") +addSbtPlugin("org.scala-sbt.plugins" % "sbt-xjc" % "0.10") + +// resolvers += "Java Net" at "http://download.java.net/maven/2/" \ No newline at end of file diff --git a/server/core/src/main/scala/org.apache.daffodil.debugger.dap/Parse.scala b/server/core/src/main/scala/org.apache.daffodil.debugger.dap/Parse.scala index 6c84f49..e613ca4 100644 --- a/server/core/src/main/scala/org.apache.daffodil.debugger.dap/Parse.scala +++ b/server/core/src/main/scala/org.apache.daffodil.debugger.dap/Parse.scala @@ -46,6 +46,7 @@ import org.apache.daffodil.util.Misc import org.typelevel.log4cats.Logger import org.typelevel.log4cats.slf4j.Slf4jLogger import scala.util.Try +import org.apache.commons.io.output.NullOutputStream trait Parse { @@ -316,6 +317,26 @@ object Parse { case ec => Logger[IO].debug(s"deliverParseData: $ec") } ++ Stream.eval( dapEvents.offer(None) // ensure dapEvents is terminated when the parse is terminated + ) ++ Stream.eval( + args.infosetOutput match { + case Debugee.LaunchArgs.InfosetOutput.File(path) => + // if (Debugee.LaunchArgs.InfosetOutput.File(path)) + /* Resource.make { + IO(new FileOutputStream(path.toFile())) + } { outStream => + IO(outStream.close()).handleErrorWith(_ => IO.unit) + } */ + IO(new FileOutputStream(path.toFile())) + // path.toString() + case _ => + /* Resource.make { + IO(new ByteArrayOutputStream(0)) + } { outStream => + IO(outStream.close()).handleErrorWith(_ => IO.unit) + } */ + IO(new PrintStream(NullOutputStream.NULL_OUTPUT_STREAM)) + // "" + } ), infosetChanges ).parJoinUnbounded
