You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@beam.apache.org by lc...@apache.org on 2017/11/17 22:30:07 UTC

[36/50] [abbrv] beam git commit: Enable FFMP -> JavaCC path to generate Beam SQL parser for sdks/java/extensions/sql

Enable FFMP -> JavaCC path to generate Beam SQL parser for sdks/java/extensions/sql


Project: http://git-wip-us.apache.org/repos/asf/beam/repo
Commit: http://git-wip-us.apache.org/repos/asf/beam/commit/6f55ccd2
Tree: http://git-wip-us.apache.org/repos/asf/beam/tree/6f55ccd2
Diff: http://git-wip-us.apache.org/repos/asf/beam/diff/6f55ccd2

Branch: refs/heads/master
Commit: 6f55ccd2801a3d07b40c8efc43baff43e0e66b8e
Parents: aff736f
Author: Luke Cwik <lc...@google.com>
Authored: Fri Nov 17 13:46:24 2017 -0800
Committer: Luke Cwik <lc...@google.com>
Committed: Fri Nov 17 14:27:16 2017 -0800

----------------------------------------------------------------------
 build.gradle                                |  1 +
 runners/core-construction-java/build.gradle |  2 +-
 sdks/java/extensions/sql/build.gradle       | 47 +++++++++++++++++++++++-
 3 files changed, 48 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/beam/blob/6f55ccd2/build.gradle
----------------------------------------------------------------------
diff --git a/build.gradle b/build.gradle
index 8e2b4a5..2d55701 100644
--- a/build.gradle
+++ b/build.gradle
@@ -168,6 +168,7 @@ buildscript {
     classpath "gradle.plugin.com.palantir.gradle.docker:gradle-docker:0.13.0"  // Enable building Docker containers
     classpath "cz.malohlava:visteg:1.0.3"                                      // Enable generating Gradle task dependencies as ".dot" files
     classpath "com.github.jengelman.gradle.plugins:shadow:2.0.1"               // Enable shading Java dependencies
+    classpath "ca.coglinc:javacc-gradle-plugin:2.4.0"                          // Enable the JavaCC parser generator
   }
 }
 

http://git-wip-us.apache.org/repos/asf/beam/blob/6f55ccd2/runners/core-construction-java/build.gradle
----------------------------------------------------------------------
diff --git a/runners/core-construction-java/build.gradle b/runners/core-construction-java/build.gradle
index 8572372..1750024 100644
--- a/runners/core-construction-java/build.gradle
+++ b/runners/core-construction-java/build.gradle
@@ -31,7 +31,7 @@ test {
 
 dependencies {
   compile library.java.guava
-  compileOnly librarj.java.findbugs_annotations
+  compileOnly library.java.findbugs_annotations
   shadow project(path: ":beam-model-parent:beam-model-pipeline", configuration: "shadow")
   shadow project(path: ":beam-model-parent:beam-model-job-management", configuration: "shadow")
   shadow project(path: ":beam-sdks-parent:beam-sdks-java-parent:beam-sdks-java-core", configuration: "shadow")

http://git-wip-us.apache.org/repos/asf/beam/blob/6f55ccd2/sdks/java/extensions/sql/build.gradle
----------------------------------------------------------------------
diff --git a/sdks/java/extensions/sql/build.gradle b/sdks/java/extensions/sql/build.gradle
index 38335c0..9cd9304 100644
--- a/sdks/java/extensions/sql/build.gradle
+++ b/sdks/java/extensions/sql/build.gradle
@@ -18,6 +18,7 @@
 
 apply from: project(":").file("build_rules.gradle")
 applyJavaNature()
+apply plugin: 'ca.coglinc.javacc'
 
 description = "Apache Beam :: SDKs :: Java :: Extensions :: SQL"
 
@@ -25,10 +26,22 @@ test {
   jvmArgs "-da"
 }
 
+configurations {
+  // Create an fmppTask configuration representing the dependencies
+  // required to define and execute the Ant FMPP task.
+  // TODO: Migrate to a FMPP plugin once one exists
+  fmppTask
+  fmppTemplates
+}
+
+
 def calcite_version = "1.13.0"
 def avatica_version = "1.10.0"
 
 dependencies {
+  fmppTask "net.sourceforge.fmpp:fmpp:0.9.15"
+  fmppTask "org.freemarker:freemarker:2.3.25-incubating"
+  fmppTemplates "org.apache.calcite:calcite-core:$calcite_version"
   compile library.java.guava
   compile "org.apache.calcite:calcite-core:$calcite_version"
   compile "org.apache.calcite:calcite-linq4j:$calcite_version"
@@ -49,7 +62,39 @@ dependencies {
   testCompile library.java.mockito_core
 }
 
-// TODO: Add support for generating fmpp
+// Copy Caclcite templates and our own template into the build directory
+// so we have one location for the FMPP task to parse.
+task copyFmppTemplatesFromSrc(type: Copy) {
+  from "src/main/codegen"
+  into "build/templates-fmpp/codegen"
+}
+task copyFmppTemplatesFromCalciteCore(type: Copy) {
+  dependsOn configurations.fmppTemplates
+  File calciteCoreJar = files(configurations.fmppTemplates.files).filter {
+    it.name.startsWith("calcite-core")
+  }.singleFile
+  from zipTree(calciteCoreJar)
+  include "**/Parser.jj"
+  into "${project.buildDir}/templates-fmpp"
+}
+
+// Generate the FMPP sources from the FMPP templates.
+def generateFmppOutputDir = "${project.buildDir}/generated-fmpp"
+task generateFmppSources {
+  dependsOn configurations.fmppTask
+  dependsOn copyFmppTemplatesFromSrc
+  dependsOn copyFmppTemplatesFromCalciteCore
+  doLast {
+    ant.taskdef(name: "fmpp", classname: "fmpp.tools.AntTask", classpath: configurations.fmppTask.asPath)
+    ant.fmpp(configuration: "src/main/codegen/config.fmpp", sourceRoot: "${project.buildDir}/templates-fmpp/codegen/templates", outputRoot: generateFmppOutputDir)
+  }
+}
+
+compileJavacc {
+  dependsOn generateFmppSources
+  inputDirectory = file(generateFmppOutputDir)
+  arguments = [grammar_encoding: "UTF-8", static: "false", lookahead: "2"]
+}
 
 shadowJar {
   dependencies {