Fixed build script.
diff --git a/build.gradle b/build.gradle
index 6d2737b..adeda07 100644
--- a/build.gradle
+++ b/build.gradle
@@ -72,7 +72,8 @@
zk: 'org.apache.zookeeper:zookeeper:3.3.1',
jcip: 'net.jcip:jcip-annotations:1.0',
junit: 'junit:junit:4.10',
- zkclient: 'com.github.sgroschupf:zkclient:0.1'
+ zkclient: 'com.github.sgroschupf:zkclient:0.1',
+ diezel: 'net.ericaro:diezel-maven-plugin:1.0.0-beta-3'
]
subprojects {
@@ -97,6 +98,7 @@
dependencies {
+ compile('javax.jms:jms:1.1')
/* Google. */
compile( libraries.guava )
compile( libraries.guice )
@@ -114,7 +116,7 @@
/* Misc. */
compile( libraries.jcip )
compile( libraries.zk )
-
+
/* Testing. */
testCompile( libraries.junit )
}
@@ -130,7 +132,7 @@
dependsOnChildren()
-platformProjects = [project(':s4-base'), project(':s4-core'), project(':s4-comm')]
+platformProjects = [project(':s4-base'), project(':s4-core'), project(':s4-comm'), project(':s4-edsl')]
configurations {
platformLibs
diff --git a/settings.gradle b/settings.gradle
index a5655c4..71b1207 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -16,6 +16,7 @@
include 's4-base'
include 's4-core'
include 's4-comm'
+include 's4-edsl'
include 's4-example'
include ':test-apps:simple-deployable-app-1'
include ':test-apps:simple-deployable-app-2'
diff --git a/subprojects/s4-edsl/s4-edsl.gradle b/subprojects/s4-edsl/s4-edsl.gradle
new file mode 100644
index 0000000..f80e103
--- /dev/null
+++ b/subprojects/s4-edsl/s4-edsl.gradle
@@ -0,0 +1,40 @@
+// Use the Diezel Maven plugin to build the project.
+// Gradle doesn't support Maven plugin as of version 1.0
+// Useful article: http://forums.gradle.org/gradle/topics/how_to_download_and_evoke_a_maven_plugin
+
+def generatedSourceDir = "${buildDir}/generated-src/java"
+def diezelSrcDir = "${projectDir}/src/main/diezel";
+
+dependencies {
+ compile project(":s4-core")
+}
+
+
+sourceSets {
+ generated {
+ java { srcDir $generatedSourceDir }
+ }
+}
+
+buildscript {
+ repositories {
+ mavenCentral()
+ }
+ dependencies {
+ classpath libraries.diezel
+ }
+}
+task generateSources << {
+ outputs.dir generatedSourceDir
+ def mojo = new net.ericaro.diezel.plugin.DiezelMojo()
+ mojo.sourceDirectory = new File(diezelSrcDir);
+ mojo.outputDirectory = new File(generatedSourceDir);
+ mojo.staleMillis = 0;
+ mojo.project = new org.apache.maven.project.MavenProject();
+ org.apache.maven.model.Build build = new org.apache.maven.model.Build();
+ build.setDirectory(mojo.sourceDirectory.getAbsolutePath());
+ mojo.project.setBuild(build);
+ mojo.execute();
+}
+
+compileJava.source generateSources.outputs.files, sourceSets.main.java
diff --git a/subprojects/s4-edsl/src/main/diezel/s4/s4-impl.xml b/subprojects/s4-edsl/src/main/diezel/s4/s4-impl.xml
new file mode 100644
index 0000000..4e2cdbe
--- /dev/null
+++ b/subprojects/s4-edsl/src/main/diezel/s4/s4-impl.xml
@@ -0,0 +1,85 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<diezelImplementation xmlns="http://diezel.ericaro.net/2.0.0/">
+ <package>org.apache.s4.core.edsl</package>
+ <name>Builder</name>
+ <implements>org.apache.s4.core.edsl.S4DSL</implements>
+ <transitions>
+ <transitionImplementation name="pe">
+ <body>
+ System.out.println("pe");
+ </body>
+ </transitionImplementation>
+ <transitionImplementation name="type">
+ <body>
+ System.out.println("type");
+ </body>
+ </transitionImplementation>
+ <transitionImplementation name="fireOn">
+ <body>
+ System.out.println("fireOn");
+ </body>
+ </transitionImplementation>
+ <transitionImplementation name="ifInterval">
+ <body>
+ System.out.println("ifInterval");
+ </body>
+ </transitionImplementation>
+ <transitionImplementation name="timer">
+ <body>
+ System.out.println("timer");
+ </body>
+ </transitionImplementation>
+ <transitionImplementation name="withPeriod">
+ <body>
+ System.out.println("withPeriod");
+ </body>
+ </transitionImplementation>
+ <transitionImplementation name="cache">
+ <body>
+ System.out.println("cache");
+ </body>
+ </transitionImplementation>
+ <transitionImplementation name="expires">
+ <body>
+ System.out.println("expires");
+ </body>
+ </transitionImplementation>
+ <transitionImplementation name="asSingleton">
+ <body>
+ System.out.println("asSingleton");
+ </body>
+ </transitionImplementation>
+ <transitionImplementation name="emitEvent">
+ <body>
+ System.out.println("emitEvent");
+ </body>
+ </transitionImplementation>
+ <transitionImplementation name="onField">
+ <body>
+ System.out.println("onField");
+ </body>
+ </transitionImplementation>
+ <transitionImplementation name="onKey">
+ <body>
+ System.out.println("onKey");
+ </body>
+ </transitionImplementation>
+ <transitionImplementation name="to">
+ <body>
+ System.out.println("to");
+ </body>
+ </transitionImplementation>
+ <transitionImplementation name="info">
+ <body>
+ System.out.println("info");
+ </body>
+ </transitionImplementation>
+ <transitionImplementation name="build">
+ <body>
+ System.out.println("build");
+ return "Done!";
+ </body>
+ </transitionImplementation>
+
+ </transitions>
+</diezelImplementation>
diff --git a/subprojects/s4-edsl/src/main/diezel/s4/s4.xml b/subprojects/s4-edsl/src/main/diezel/s4/s4.xml
new file mode 100644
index 0000000..85d6bcb
--- /dev/null
+++ b/subprojects/s4-edsl/src/main/diezel/s4/s4.xml
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<diezel xmlns="http://diezel.ericaro.net/2.0.0/">
+ <package>org.apache.s4.core.edsl</package>
+ <name>S4DSL</name>
+ <expression>(pe , type , (fireOn , ifInterval? )? , (timer, withPeriod)? , (cache, size , expires? )? , asSingleton? , (emitEvent, onField?, onKey?, to )+ )+ , info?, build</expression>
+ <transitions>
+ <transition name="pe">
+ <signature>pe()</signature>
+ </transition>
+ <transition name="type">
+ <signature>type()</signature>
+ </transition>
+ <transition name="fireOn">
+ <signature>fireOn()</signature>
+ </transition>
+ <transition name="ifInterval">
+ <signature>ifInterval()</signature>
+ </transition>
+ <transition name="timer">
+ <signature>timer()</signature>
+ </transition>
+ <transition name="withPeriod">
+ <signature>withPeriod()</signature>
+ </transition>
+ <transition name="cache">
+ <signature>cache()</signature>
+ </transition>
+ <transition name="size">
+ <signature>size()</signature>
+ </transition>
+ <transition name="expires">
+ <signature>expires()</signature>
+ </transition>
+ <transition name="asSingleton">
+ <signature>asSingleton()</signature>
+ </transition>
+ <transition name="emitEvent">
+ <signature>emitEvent()</signature>
+ </transition>
+ <transition name="onField">
+ <signature>onField()</signature>
+ </transition>
+ <transition name="onKey">
+ <signature>onKey()</signature>
+ </transition>
+ <transition name="to">
+ <signature>to()</signature>
+ </transition>
+ <transition name="info">
+ <signature>info()</signature>
+ </transition>
+ <transition name="build">
+ <return>java.lang.String</return>
+ <signature>build()</signature>
+ </transition>
+ </transitions>
+</diezel>
diff --git a/subprojects/s4-edsl/src/main/java/Main.java b/subprojects/s4-edsl/src/main/java/Main.java
new file mode 100644
index 0000000..b2d50ba
--- /dev/null
+++ b/subprojects/s4-edsl/src/main/java/Main.java
@@ -0,0 +1,15 @@
+import org.apache.s4.core.edsl.BuilderS4DSL;
+
+public class Main {
+ public static BuilderS4DSL build() {
+ return new BuilderS4DSL();
+ }
+
+ public static void main(String[] args) {
+
+ String app = new BuilderS4DSL().pe().type().fireOn().ifInterval().cache().size().asSingleton().emitEvent()
+ .onField().to().build();
+ System.out.println(app);
+
+ }
+}