diff --git a/gradle.properties b/gradle.properties index 160890028..2c6011720 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1 +1,2 @@ org.gradle.caching=true +kotlin.daemon.jvmargs=-Xmx1024m \ No newline at end of file diff --git a/grooves-api/build.gradle b/grooves-api/build.gradle deleted file mode 100644 index 6690d5889..000000000 --- a/grooves-api/build.gradle +++ /dev/null @@ -1,28 +0,0 @@ -plugins { - id("java-library") - id("org.jetbrains.kotlin.jvm") - id("org.jlleitschuh.gradle.ktlint") - id("com.github.rahulsom.waena.published") -} - -apply from: "$rootDir/gradle/jacoco.gradle" - -description = "APIs that help in computation of Grooves based Snapshots" - -dependencies { - api project(':grooves-types') - - implementation 'io.reactivex.rxjava2:rxjava:2.2.21' - implementation "org.slf4j:slf4j-api:2.0.4" - - compileOnly "org.codehaus.groovy:groovy:3.0.13" - compileOnly 'org.jetbrains:annotations:23.0.0' - compileOnly 'org.projectlombok:lombok:1.18.24' - - annotationProcessor 'org.projectlombok:lombok:1.18.24' - -} - -tasks.withType(Javadoc) { - options.addStringOption('Xdoclint:none') -} diff --git a/grooves-api/build.gradle.kts b/grooves-api/build.gradle.kts new file mode 100644 index 000000000..c4c4a7663 --- /dev/null +++ b/grooves-api/build.gradle.kts @@ -0,0 +1,31 @@ +plugins { + id("java-library") + id("org.jetbrains.kotlin.jvm") + id("org.jlleitschuh.gradle.ktlint") + id("com.github.rahulsom.waena.published") +} + +apply { + from("$rootDir/gradle/jacoco.gradle") +} + +description = "APIs that help in computation of Grooves based Snapshots" + +dependencies { + api(project(":grooves-types")) + + implementation("io.reactivex.rxjava2:rxjava:2.2.21") + implementation("org.slf4j:slf4j-api:2.0.4") + + compileOnly("org.codehaus.groovy:groovy:3.0.13") + compileOnly("org.jetbrains:annotations:23.0.0") + compileOnly("org.projectlombok:lombok:1.18.24") + + annotationProcessor("org.projectlombok:lombok:1.18.24") +} + +tasks.withType().configureEach { + options { + (this as StandardJavadocDocletOptions).addStringOption("Xdoclint:none", "-quiet") + } +} \ No newline at end of file diff --git a/grooves-core/build.gradle.kts b/grooves-core/build.gradle.kts index 76d6c7b21..276071dc1 100644 --- a/grooves-core/build.gradle.kts +++ b/grooves-core/build.gradle.kts @@ -4,7 +4,7 @@ plugins { id("dev.jacomet.logging-capabilities") version "0.+" id("io.freefair.aspectj.post-compile-weaving") version "6.5.1" id("com.github.rahulsom.waena.published") - `java-library` + id("java-library") } loggingCapabilities { @@ -14,45 +14,29 @@ loggingCapabilities { description = "Simpler implementation of Grooves" dependencies { - configureLombok() - configureKotlin() - configureJUnit() - configureLogging() - - implementation("org.aspectj:aspectjrt:1.9.9.1") -} - -tasks.withType { - useJUnitPlatform() - - // Configure Slf4j Simple Logger - systemProperty("org.slf4j.simpleLogger.log.com.github.rahulsom.grooves", "DEBUG") -} - -fun DependencyHandlerScope.configureLogging() { + compileOnly("org.projectlombok:lombok:1.18.24") + testCompileOnly("org.projectlombok:lombok:1.18.24") + annotationProcessor("org.projectlombok:lombok:1.18.24") + testAnnotationProcessor("org.projectlombok:lombok:1.18.24") + implementation(platform("org.jetbrains.kotlin:kotlin-bom")) + implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") + testImplementation(platform("org.junit:junit-bom:5.+")) + testImplementation("org.assertj:assertj-core:3.23.1") + testImplementation("org.junit.jupiter:junit-jupiter-api") + testImplementation("org.junit.jupiter:junit-jupiter-params") + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine") implementation("org.slf4j:slf4j-api:2.0.4") testRuntimeOnly("org.slf4j:slf4j-simple:2.0.5") testRuntimeOnly("org.apache.logging.log4j:log4j-core:2.19.0") testRuntimeOnly("org.apache.logging.log4j:log4j-slf4j-impl:2.19.0") testRuntimeOnly("ch.qos.logback:logback-classic:1.4.5") -} -fun DependencyHandlerScope.configureJUnit() { - testImplementation(platform("org.junit:junit-bom:5.+")) - testImplementation("org.assertj:assertj-core:3.23.1") - testImplementation("org.junit.jupiter:junit-jupiter-api") - testImplementation("org.junit.jupiter:junit-jupiter-params") - testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine") + implementation("org.aspectj:aspectjrt:1.9.9.1") } -fun DependencyHandlerScope.configureKotlin() { - implementation(platform("org.jetbrains.kotlin:kotlin-bom")) - implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") -} +tasks.withType { + useJUnitPlatform() -fun DependencyHandlerScope.configureLombok() { - compileOnly("org.projectlombok:lombok:1.18.24") - testCompileOnly("org.projectlombok:lombok:1.18.24") - annotationProcessor("org.projectlombok:lombok:1.18.24") - testAnnotationProcessor("org.projectlombok:lombok:1.18.24") + // Configure Slf4j Simple Logger + systemProperty("org.slf4j.simpleLogger.log.com.github.rahulsom.grooves", "DEBUG") } \ No newline at end of file diff --git a/grooves-diagrams/build.gradle b/grooves-diagrams/build.gradle deleted file mode 100644 index 7d5b119e5..000000000 --- a/grooves-diagrams/build.gradle +++ /dev/null @@ -1,54 +0,0 @@ -plugins { - id("java-library") - id("groovy") - id("org.jetbrains.kotlin.jvm") - id("org.jlleitschuh.gradle.ktlint") - id("com.github.rahulsom.waena.published") - id("io.miret.etienne.sass").version("1.4.1") -} - -apply from: "$rootDir/gradle/jacoco.gradle" - -description = "Asciidoctor Extension to generate Event Sourcing Diagrams like those on https://rahulsom.github.io/grooves" - -repositories { - google() -} - -dependencies { - implementation 'com.github.rahulsom:svg-builder:0.4.1' - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8" - - implementation 'commons-beanutils:commons-beanutils:1.9.4' - implementation 'org.asciidoctor:asciidoctorj:2.5.7' - implementation "org.slf4j:slf4j-api:2.0.4" - - implementation 'javax.xml.bind:jaxb-api:2.3.1' -// implementation 'com.sun.xml.bind:jaxb-core:4.0.1' -// implementation 'com.sun.xml.bind:jaxb-impl:4.0.1' -// implementation 'javax.activation:activation:1.1.1' -// implementation 'org.glassfish.jaxb:jaxb-runtime:4.0.1' -// -// implementation 'jakarta.xml.bind:jakarta.xml.bind-api:2.3.3' -// implementation 'com.sun.xml.bind:jaxb-ri:2.3.3' -// - testImplementation 'org.spockframework:spock-core:2.1-groovy-3.0' -} - -compileSass { - sourceDir = project.file ("${projectDir}/src/main/resources") - outputDir = project.file ("${buildDir}/generated/css") -} - -sourceSets { - main { - resources.srcDirs "${buildDir}/generated/css" - } -} - -tasks.getByName("processResources").dependsOn("compileSass") -tasks.getByName("sourceJar").dependsOn("compileSass") - -test { - useJUnitPlatform() -} diff --git a/grooves-diagrams/build.gradle.kts b/grooves-diagrams/build.gradle.kts new file mode 100644 index 000000000..43e9f4bdb --- /dev/null +++ b/grooves-diagrams/build.gradle.kts @@ -0,0 +1,51 @@ +import io.miret.etienne.gradle.sass.CompileSass + +plugins { + id("java-library") + id("groovy") + id("org.jetbrains.kotlin.jvm") + id("org.jlleitschuh.gradle.ktlint") + id("com.github.rahulsom.waena.published") + id("io.miret.etienne.sass").version("1.4.1") +} + +apply { + from("$rootDir/gradle/jacoco.gradle") +} + +description = "Asciidoctor Extension to generate Event Sourcing Diagrams like those on https://rahulsom.github.io/grooves" + +repositories { + google() +} + +dependencies { + implementation("com.github.rahulsom:svg-builder:0.4.1") + implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") + + implementation("commons-beanutils:commons-beanutils:1.9.4") + implementation("org.asciidoctor:asciidoctorj:2.5.7") + implementation("org.slf4j:slf4j-api:2.0.4") + + implementation("javax.xml.bind:jaxb-api:2.3.1") + + testImplementation("org.spockframework:spock-core:2.1-groovy-3.0") +} + +tasks.withType { + setSourceDir(project.file("$projectDir/src/main/resources")) + outputDir = project.file("$buildDir/generated/css") +} + +sourceSets { + main { + resources.srcDirs("$buildDir/generated/css") + } +} + +tasks.getByName("processResources").dependsOn("compileSass") +tasks.getByName("sourceJar").dependsOn("compileSass") + +tasks.withType { + useJUnitPlatform() +} \ No newline at end of file diff --git a/grooves-diagrams/src/main/kotlin/com/github/rahulsom/grooves/asciidoctor/EventsBlock.kt b/grooves-diagrams/src/main/kotlin/com/github/rahulsom/grooves/asciidoctor/EventsBlock.kt index 15f42930b..75273a73c 100644 --- a/grooves-diagrams/src/main/kotlin/com/github/rahulsom/grooves/asciidoctor/EventsBlock.kt +++ b/grooves-diagrams/src/main/kotlin/com/github/rahulsom/grooves/asciidoctor/EventsBlock.kt @@ -21,7 +21,7 @@ class EventsBlock(name: String) : val input = reader.readLines().joinToString("\n") - var filename = (attributes ?: emptyMap()).get("2") as String? ?: md5(input) + var filename = (attributes ?: emptyMap()).get("2") as String? ?: hash(input) filename = if (filename.endsWith(".svg")) filename else "$filename.svg" SvgBuilder(input).write(File(outDir, filename)) @@ -35,10 +35,10 @@ class EventsBlock(name: String) : return createBlock(parent, "image", input, newAttributes, attributes?.mapKeys { it }) } - private fun md5(input: String) = - MessageDigest.getInstance("MD5").let { md5 -> - md5.update(input.toByteArray()) - val hash = BigInteger(1, md5.digest()) - hash.toString(16) + private fun hash(input: String) = + MessageDigest.getInstance("SHA256").let { messageDigest -> + messageDigest.update(input.toByteArray()) + val hash = BigInteger(1, messageDigest.digest()) + hash.toString(16).substring(0, 15) } } \ No newline at end of file diff --git a/grooves-docs/build.gradle b/grooves-docs/build.gradle deleted file mode 100644 index 14e605435..000000000 --- a/grooves-docs/build.gradle +++ /dev/null @@ -1,69 +0,0 @@ -plugins { - id("org.ajoberstar.git-publish").version("2.1.3") - id("org.asciidoctor.jvm.convert").version("3.3.2") -} - -repositories { - mavenCentral() - maven { url 'https://repo.spring.io/release' } -} - -configurations { - asciidoctorExt -} - -dependencies { - asciidoctorExt project(':grooves-diagrams') - asciidoctorExt 'io.spring.asciidoctor:spring-asciidoctor-extensions-block-switch:0.6.0' -} - -project.version = rootProject.version.toString() - -asciidoctor { - sourceDir file('src/docs/asciidoc') - baseDir file('src/docs/asciidoc') - sources { - include 'index.adoc' - } - configurations 'asciidoctorExt' - - attributes ( - 'sourcedir': rootDir.absolutePath, - 'includedir': file('src/docs/asciidoc'), - 'toc': 'left', - 'icons': 'font', - 'stylesheet': 'grooves.css', - 'source-highlighter': 'rouge' , - ) - - resources { - from("src/docs/asciidoc") { - include("*.css") - } - } -} - -asciidoctor.dependsOn ':grooves-diagrams:jar' - -gitPublish { - repoUri.set "https://github.com/rahulsom/grooves.git" - branch.set 'gh-pages' - contents { - from(file("$buildDir/asciidoc/html5")) { - into "manual/${version}" - } - if (System.getenv('BRANCH_NAME') == 'master') { - from(file("$buildDir/asciidoc/html5")) { - into "manual/current" - } - from(rootProject.file('grooves-site')) { - into '.' - } - } - } - preserve { - include '**' - } -} - -tasks.findByName('gitPublishPush').dependsOn 'asciidoctor' diff --git a/grooves-docs/build.gradle.kts b/grooves-docs/build.gradle.kts new file mode 100644 index 000000000..52a993815 --- /dev/null +++ b/grooves-docs/build.gradle.kts @@ -0,0 +1,71 @@ +import org.asciidoctor.gradle.jvm.AsciidoctorTask + +plugins { + id("org.ajoberstar.git-publish").version("2.1.3") + id("org.asciidoctor.jvm.convert").version("3.3.2") +} + +repositories { + mavenCentral() + maven { setUrl("https://repo.spring.io/release") } +} + +val asciidoctorExt by configurations.creating + +dependencies { + asciidoctorExt(project(":grooves-diagrams")) + asciidoctorExt("io.spring.asciidoctor:spring-asciidoctor-extensions-block-switch:0.6.0") +} + +project.version = rootProject.version.toString() + +tasks.withType { + sourceDir(file("src/docs/asciidoc")) + // baseDir (file("src/docs/asciidoc")) + sources { + include("index.adoc") + } + configurations("asciidoctorExt") + + attributes( + mutableMapOf( + "sourcedir" to rootDir.absolutePath, + "includedir" to file("src/docs/asciidoc"), + "toc" to "left", + "icons" to "font", + "stylesheet" to "grooves.css", + "source-highlighter" to "rouge", + ) + ) + + resources { + from("src/docs/asciidoc") { + include("*.css") + } + } +} + +tasks.findByName("asciidoctor")?.dependsOn(":grooves-diagrams:jar") + +gitPublish { + repoUri.set("https://github.com/rahulsom/grooves.git") + branch.set("gh-pages") + contents { + from(file("$buildDir/asciidoc/html5")) { + into("manual/${version}") + } + if (System.getenv("BRANCH_NAME") == "master") { + from(file("$buildDir/asciidoc/html5")) { + into("manual/current") + } + from(rootProject.file("grooves-site")) { + into(".") + } + } + } + preserve { + include("**") + } +} + +tasks.findByName("gitPublishPush")?.dependsOn("asciidoctor") diff --git a/grooves-example-javaee/build.gradle b/grooves-example-javaee/build.gradle index 3f46d2fc6..522c40fc1 100644 --- a/grooves-example-javaee/build.gradle +++ b/grooves-example-javaee/build.gradle @@ -32,9 +32,7 @@ liberty { server { features { name = [ - 'jaxrs-2.1', - /*'adminCenter-1.0',*/ - /*'restfulWS-3.0',*/ + 'jaxrs-2.1' ] } } diff --git a/grooves-example-springboot-jpa/build.gradle b/grooves-example-springboot-jpa/build.gradle deleted file mode 100644 index 49feeae49..000000000 --- a/grooves-example-springboot-jpa/build.gradle +++ /dev/null @@ -1,36 +0,0 @@ -plugins { - id('org.springframework.boot') - id('io.spring.dependency-management') - id 'groovy' -} - -apply from: "$rootDir/gradle/codenarc/codenarc.gradle" -apply from: "$rootDir/gradle/jacoco.gradle" - -dependencies { - compileOnly "org.jetbrains:annotations:23.0.0" - - implementation 'org.springframework.boot:spring-boot-starter-data-jpa' - implementation 'org.springframework.boot:spring-boot-starter-web' - implementation 'org.codehaus.groovy:groovy' - implementation 'org.codehaus.groovy:groovy-dateutil' - implementation 'io.reactivex.rxjava2:rxjava:2.2.21' - - implementation project(':grooves-groovy') - implementation project(':grooves-example-test') - - runtimeOnly 'javax.xml.bind:jaxb-api:2.3.1' - runtimeOnly 'com.sun.xml.bind:jaxb-core:4.0.1' - runtimeOnly 'com.sun.xml.bind:jaxb-impl:4.0.1' - runtimeOnly 'javax.activation:activation:1.1.1' - runtimeOnly 'com.h2database:h2' - - testImplementation 'org.springframework.boot:spring-boot-starter-test' - - testImplementation "org.spockframework:spock-core:2.1-groovy-3.0" - testImplementation "org.spockframework:spock-spring:2.1-groovy-3.0" -} - -test { - useJUnitPlatform() -} diff --git a/grooves-example-springboot-jpa/build.gradle.kts b/grooves-example-springboot-jpa/build.gradle.kts new file mode 100644 index 000000000..692f2f6bb --- /dev/null +++ b/grooves-example-springboot-jpa/build.gradle.kts @@ -0,0 +1,38 @@ +plugins { + id("org.springframework.boot") + id("io.spring.dependency-management") + id("groovy") +} + +apply { + from("$rootDir/gradle/codenarc/codenarc.gradle") + from("$rootDir/gradle/jacoco.gradle") +} + +dependencies { + compileOnly("org.jetbrains:annotations:23.0.0") + + implementation("org.springframework.boot:spring-boot-starter-data-jpa") + implementation("org.springframework.boot:spring-boot-starter-web") + implementation("org.codehaus.groovy:groovy") + implementation("org.codehaus.groovy:groovy-dateutil") + implementation("io.reactivex.rxjava2:rxjava:2.2.21") + + implementation(project(":grooves-groovy")) + implementation(project(":grooves-example-test")) + + runtimeOnly("javax.xml.bind:jaxb-api:2.3.1") + runtimeOnly("com.sun.xml.bind:jaxb-core:4.0.1") + runtimeOnly("com.sun.xml.bind:jaxb-impl:4.0.1") + runtimeOnly("javax.activation:activation:1.1.1") + runtimeOnly("com.h2database:h2") + + testImplementation("org.springframework.boot:spring-boot-starter-test") + + testImplementation("org.spockframework:spock-core:2.1-groovy-3.0") + testImplementation("org.spockframework:spock-spring:2.1-groovy-3.0") +} + +tasks.withType { + useJUnitPlatform() +} \ No newline at end of file diff --git a/grooves-example-springboot-kotlin/build.gradle b/grooves-example-springboot-kotlin/build.gradle deleted file mode 100644 index 873343a3f..000000000 --- a/grooves-example-springboot-kotlin/build.gradle +++ /dev/null @@ -1,61 +0,0 @@ -buildscript { - repositories { - mavenCentral() - maven { url "https://repo.grails.org/grails/core" } - } - dependencies { - classpath 'de.flapdoodle.embed:de.flapdoodle.embed.process:2.1.2' - } -} - -plugins { - id ('org.springframework.boot') - id('io.spring.dependency-management') - id("org.jetbrains.kotlin.jvm") - id("org.jlleitschuh.gradle.ktlint") - id("org.jetbrains.kotlin.plugin.allopen") - id("org.jetbrains.kotlin.plugin.spring") - id("groovy") - id("com.sourcemuse.mongo").version("1.0.7") -} - -version = '0.0.1-SNAPSHOT' - -repositories { - mavenCentral() -} - -dependencies { - implementation 'org.springframework.boot:spring-boot-starter-data-mongodb-reactive' - implementation 'org.springframework.boot:spring-boot-starter-data-mongodb' - implementation 'org.springframework.boot:spring-boot-starter-webflux' - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8" - implementation "org.jetbrains.kotlin:kotlin-reflect" - implementation 'io.reactivex:rxjava-reactive-streams' - implementation 'org.springframework:spring-aspects' - implementation project(':grooves-api') - implementation project(':grooves-example-test') - - runtimeOnly 'javax.xml.bind:jaxb-api:2.3.1' - runtimeOnly 'com.sun.xml.bind:jaxb-core:4.0.1' - runtimeOnly 'com.sun.xml.bind:jaxb-impl:4.0.1' - runtimeOnly 'javax.activation:activation:1.1.1' - - testImplementation 'org.springframework.boot:spring-boot-starter-test' - testImplementation 'org.spockframework:spock-core:2.1-groovy-3.0' - testImplementation 'org.spockframework:spock-spring:2.1-groovy-3.0' - testImplementation 'io.projectreactor.addons:reactor-test:3.0.7.RELEASE' -} - -tasks.findByName('bootRun').dependsOn 'startMongoDb' -tasks.findByName('bootRun').finalizedBy 'stopMongoDb' -tasks.findByName('test').dependsOn 'startMongoDb' -tasks.findByName('test').finalizedBy 'stopMongoDb' - -mongo { - port 27021 -} - -test { - useJUnitPlatform() -} diff --git a/grooves-example-springboot-kotlin/build.gradle.kts b/grooves-example-springboot-kotlin/build.gradle.kts new file mode 100644 index 000000000..fa96e6061 --- /dev/null +++ b/grooves-example-springboot-kotlin/build.gradle.kts @@ -0,0 +1,63 @@ +import com.sourcemuse.gradle.plugin.GradleMongoPluginExtension + +buildscript { + repositories { + mavenCentral() + maven { setUrl("https://repo.grails.org/grails/core") } + } + dependencies { + classpath("de.flapdoodle.embed:de.flapdoodle.embed.process:2.1.2") + } +} + +plugins { + id("org.springframework.boot") + id("io.spring.dependency-management") + id("org.jetbrains.kotlin.jvm") + id("org.jlleitschuh.gradle.ktlint") + id("org.jetbrains.kotlin.plugin.allopen") + id("org.jetbrains.kotlin.plugin.spring") + id("groovy") + id("com.sourcemuse.mongo").version("1.0.7") +} + +version = "0.0.1-SNAPSHOT" + +repositories { + mavenCentral() +} + +dependencies { + implementation("org.springframework.boot:spring-boot-starter-data-mongodb-reactive") + implementation("org.springframework.boot:spring-boot-starter-data-mongodb") + implementation("org.springframework.boot:spring-boot-starter-webflux") + implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8") + implementation("org.jetbrains.kotlin:kotlin-reflect") + implementation("io.reactivex:rxjava-reactive-streams") + implementation("org.springframework:spring-aspects") + implementation(project(":grooves-api")) + implementation(project(":grooves-example-test")) + + runtimeOnly("javax.xml.bind:jaxb-api:2.3.1") + runtimeOnly("com.sun.xml.bind:jaxb-core:4.0.1") + runtimeOnly("com.sun.xml.bind:jaxb-impl:4.0.1") + runtimeOnly("javax.activation:activation:1.1.1") + + testImplementation("org.springframework.boot:spring-boot-starter-test") + testImplementation("org.spockframework:spock-core:2.1-groovy-3.0") + testImplementation("org.spockframework:spock-spring:2.1-groovy-3.0") + testImplementation("io.projectreactor.addons:reactor-test:3.0.7.RELEASE") +} + +tasks.findByName("bootRun")?.dependsOn("startMongoDb") +tasks.findByName("bootRun")?.finalizedBy("stopMongoDb") +tasks.findByName("test")?.dependsOn("startMongoDb") +tasks.findByName("test")?.finalizedBy("stopMongoDb") + +configure { + setPort(27021) +} + +tasks.withType { + useJUnitPlatform() +} \ No newline at end of file diff --git a/grooves-example-test/build.gradle b/grooves-example-test/build.gradle deleted file mode 100644 index aa55a3eaf..000000000 --- a/grooves-example-test/build.gradle +++ /dev/null @@ -1,25 +0,0 @@ -plugins { - id("java-library") - id("groovy") - id("com.github.rahulsom.waena.published") -} - -apply from: "$rootDir/gradle/codenarc/codenarc.gradle" -description = "Standard Tests for Grooves" - -dependencies { - api project(':grooves-api') - api 'org.codehaus.groovy.modules.http-builder:http-builder:0.7.1' - api 'org.spockframework:spock-core:2.1-groovy-3.0' - - implementation 'io.reactivex.rxjava2:rxjava:2.2.21' - implementation "org.slf4j:slf4j-api:2.0.4" - - implementation 'xerces:xercesImpl:2.12.2' - implementation 'org.codehaus.groovy:groovy-all:3.0.13' - implementation 'org.codehaus.groovy:groovy-dateutil:3.0.13' - implementation 'org.apache.httpcomponents:httpclient:4.5.13' - implementation 'commons-beanutils:commons-beanutils:1.9.4' - - compileOnly 'org.jetbrains:annotations:23.0.0' -} diff --git a/grooves-example-test/build.gradle.kts b/grooves-example-test/build.gradle.kts new file mode 100644 index 000000000..f83e98cb3 --- /dev/null +++ b/grooves-example-test/build.gradle.kts @@ -0,0 +1,31 @@ +plugins { + id("java-library") + id("groovy") + id("com.github.rahulsom.waena.published") +} + +apply { + from("$rootDir/gradle/codenarc/codenarc.gradle") +} + +description = "Standard Tests for Grooves" + +dependencies { + api(project(":grooves-api")) + api("org.codehaus.groovy.modules.http-builder:http-builder:0.7.1") + api("org.spockframework:spock-core:2.1-groovy-3.0") + + implementation("io.reactivex.rxjava2:rxjava:2.2.21") + implementation("org.slf4j:slf4j-api:2.0.4") + + implementation("xerces:xercesImpl:2.12.2") + implementation("org.codehaus.groovy:groovy-all:3.0.13") + implementation("org.codehaus.groovy:groovy-dateutil:3.0.13") + implementation("org.apache.httpcomponents:httpclient:4.5.13") + implementation("commons-beanutils:commons-beanutils:1.9.4") + + compileOnly("org.jetbrains:annotations:23.0.0") + compileOnly("org.projectlombok:lombok:1.18.24") + + annotationProcessor("org.projectlombok:lombok:1.18.24") +} \ No newline at end of file diff --git a/grooves-example-test/src/main/groovy/com/github/rahulsom/grooves/test/EventsDsl.java b/grooves-example-test/src/main/groovy/com/github/rahulsom/grooves/test/EventsDsl.java index f2a04e5ab..b6d956636 100644 --- a/grooves-example-test/src/main/groovy/com/github/rahulsom/grooves/test/EventsDsl.java +++ b/grooves-example-test/src/main/groovy/com/github/rahulsom/grooves/test/EventsDsl.java @@ -2,6 +2,8 @@ import com.github.rahulsom.grooves.api.events.BaseEvent; import com.github.rahulsom.grooves.api.snapshots.Snapshot; +import lombok.AccessLevel; +import lombok.Getter; import org.jetbrains.annotations.NotNull; import java.util.Date; @@ -12,9 +14,9 @@ /** * DSL to simplify writing code with Events. * - * @param The Aggregate on which this operates - * @param The type of EventT's id - * @param The type of event on which this operates + * @param The Aggregate on which this operates + * @param The type of EventT's id + * @param The type of event on which this operates * * @author Rahul Somasunderam */ @@ -23,12 +25,9 @@ public class EventsDsl< EventIdT, EventT extends BaseEvent> { + @Getter(AccessLevel.PROTECTED) private static final AtomicLong defaultPositionSupplier = new AtomicLong(); - protected static AtomicLong getDefaultPositionSupplier() { - return defaultPositionSupplier; - } - /** * Allows executing a consumer with some context to set up events. * @@ -65,6 +64,20 @@ > AggregateT on( return aggregate; } + /** + * Allows executing a consumer with some context to set up events. + * + * @param The type of SnapshotT's id + * @param The type of Snapshot Generated + * @param aggregate The aggregate on which the consumer must operate + * @param entityConsumer A Consumer that decides what happens when apply is called on an + * entity + * @param positionSupplier A supplier which offers the default position number for an event + * when it is not provided + * @param closure The block of code to execute with the aggregate + * + * @return The aggregate after all the code has been executed + */ @NotNull public > AggregateT on( closure); } + /** + * Allows executing a consumer with some context to set up events. + * + * @param The type of SnapshotT's id + * @param The type of Snapshot Generated + * @param aggregate The aggregate on which the consumer must operate + * @param entityConsumer A Consumer that decides what happens when apply is called on an + * entity + * @param closure The block of code to execute with the aggregate + * + * @return The aggregate after all the code has been executed + */ @NotNull public , SnapshotIdT, SnapshotT extends Snapshot> { + @Getter private AggregateT aggregate; private Consumer entityConsumer; private Supplier timestampSupplier; @@ -104,23 +108,4 @@ SnapshotT>> SnapshotT snapshotWith(@NotNull QueryT query) { }); } - public AggregateT getAggregate() { - return aggregate; - } - - public void setAggregate(@NotNull AggregateT aggregate) { - this.aggregate = aggregate; - } - - public void setEntityConsumer(@NotNull Consumer entityConsumer) { - this.entityConsumer = entityConsumer; - } - - public void setTimestampSupplier(@NotNull Supplier timestampSupplier) { - this.timestampSupplier = timestampSupplier; - } - - public void setPositionSupplier(@NotNull Supplier positionSupplier) { - this.positionSupplier = positionSupplier; - } } \ No newline at end of file diff --git a/grooves-groovy/build.gradle b/grooves-groovy/build.gradle deleted file mode 100644 index 14e8c7988..000000000 --- a/grooves-groovy/build.gradle +++ /dev/null @@ -1,25 +0,0 @@ -plugins { - id("java-library") - id("groovy") - id("com.github.rahulsom.waena.published") -} - -apply from: "$rootDir/gradle/jacoco.gradle" - -description = "Support for completeness of queries in Groovy code" - -dependencies { - api project(':grooves-api') - - implementation "org.codehaus.groovy:groovy:3.0.13" - - testImplementation 'io.reactivex:rxjava:1.3.8' - testImplementation 'io.reactivex:rxjava-reactive-streams:1.2.1' - testImplementation 'org.spockframework:spock-core:2.1-groovy-3.0' - - testRuntimeOnly 'org.jetbrains:annotations:23.0.0' -} - -test { - useJUnitPlatform() -} diff --git a/grooves-groovy/build.gradle.kts b/grooves-groovy/build.gradle.kts new file mode 100644 index 000000000..91c68f223 --- /dev/null +++ b/grooves-groovy/build.gradle.kts @@ -0,0 +1,27 @@ +plugins { + id("java-library") + id("groovy") + id("com.github.rahulsom.waena.published") +} + +apply { + from("$rootDir/gradle/jacoco.gradle") +} + +description = "Support for completeness of queries in Groovy code" + +dependencies { + api(project(":grooves-api")) + + implementation("org.codehaus.groovy:groovy:3.0.13") + + testImplementation("io.reactivex:rxjava:1.3.8") + testImplementation("io.reactivex:rxjava-reactive-streams:1.2.1") + testImplementation("org.spockframework:spock-core:2.1-groovy-3.0") + + testRuntimeOnly("org.jetbrains:annotations:23.0.0") +} + +tasks.withType { + useJUnitPlatform() +} \ No newline at end of file diff --git a/grooves-java/build.gradle b/grooves-java/build.gradle deleted file mode 100644 index 0d970f7ae..000000000 --- a/grooves-java/build.gradle +++ /dev/null @@ -1,22 +0,0 @@ -plugins { - id("java-library") - id("com.github.rahulsom.waena.published") -} - -apply from: "$rootDir/gradle/jacoco.gradle" - -description = "AspectJ Support for Java implementations of Grooves" - -dependencies { - api project(':grooves-api') - - implementation 'com.google.auto.service:auto-service:1.0.1' - - compileOnly "org.jetbrains:annotations:23.0.0" - - testImplementation 'com.google.testing.compile:compile-testing:0.19' - testImplementation 'io.reactivex:rxjava:1.3.8' - testImplementation 'io.reactivex:rxjava-reactive-streams:1.2.1' - - testRuntimeOnly "org.jetbrains:annotations:23.0.0" -} diff --git a/grooves-java/build.gradle.kts b/grooves-java/build.gradle.kts new file mode 100644 index 000000000..1b9eb648b --- /dev/null +++ b/grooves-java/build.gradle.kts @@ -0,0 +1,22 @@ +plugins { + id("java-library") + id("com.github.rahulsom.waena.published") +} + +apply { from("$rootDir/gradle/jacoco.gradle") } + +description = "AspectJ Support for Java implementations of Grooves" + +dependencies { + api(project(":grooves-api")) + + implementation("com.google.auto.service:auto-service:1.0.1") + + compileOnly("org.jetbrains:annotations:23.0.0") + + testImplementation("com.google.testing.compile:compile-testing:0.19") + testImplementation("io.reactivex:rxjava:1.3.8") + testImplementation("io.reactivex:rxjava-reactive-streams:1.2.1") + + testRuntimeOnly("org.jetbrains:annotations:23.0.0") +} diff --git a/grooves-java/src/main/java/com/github/rahulsom/grooves/java/Event.java b/grooves-java/src/main/java/com/github/rahulsom/grooves/java/Event.java index 3939a1ae0..859ed7d1f 100644 --- a/grooves-java/src/main/java/com/github/rahulsom/grooves/java/Event.java +++ b/grooves-java/src/main/java/com/github/rahulsom/grooves/java/Event.java @@ -5,6 +5,11 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +/** + * Annotates a class as an event. + * + * @author Rahul Somasunderam + */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.SOURCE) public @interface Event { diff --git a/grooves-java/src/main/java/com/github/rahulsom/grooves/java/QueryProcessor.java b/grooves-java/src/main/java/com/github/rahulsom/grooves/java/QueryProcessor.java index 755444e27..00fd9fa44 100644 --- a/grooves-java/src/main/java/com/github/rahulsom/grooves/java/QueryProcessor.java +++ b/grooves-java/src/main/java/com/github/rahulsom/grooves/java/QueryProcessor.java @@ -10,6 +10,9 @@ import static javax.tools.Diagnostic.Kind.ERROR; +/** + * Checks if a {@link Query} for a given {@link Aggregate} handles all {@link Event}s. + */ @SuppressWarnings("unused") @SupportedAnnotationTypes({ QueryProcessor.AGGREGATE_ANNOTATION, diff --git a/grooves-types/build.gradle b/grooves-types/build.gradle deleted file mode 100644 index da113513a..000000000 --- a/grooves-types/build.gradle +++ /dev/null @@ -1,23 +0,0 @@ -plugins { - id("java-library") - id("org.jetbrains.kotlin.jvm") - id("org.jlleitschuh.gradle.ktlint") - id("com.github.rahulsom.waena.published") -} - -apply from: "$rootDir/gradle/jacoco.gradle" - -description = "Types that are used by Grooves to build an Event Sourcing system" - -dependencies { - api 'org.reactivestreams:reactive-streams:1.0.4' - implementation "org.slf4j:slf4j-api:2.0.4" - - compileOnly "org.jetbrains.kotlin:kotlin-stdlib-jdk8" - - testImplementation "org.spockframework:spock-core:2.1-groovy-3.0" -} - -test { - useJUnitPlatform() -} diff --git a/grooves-types/build.gradle.kts b/grooves-types/build.gradle.kts new file mode 100644 index 000000000..e989957a1 --- /dev/null +++ b/grooves-types/build.gradle.kts @@ -0,0 +1,25 @@ +plugins { + id("java-library") + id("org.jetbrains.kotlin.jvm") + id("org.jlleitschuh.gradle.ktlint") + id("com.github.rahulsom.waena.published") +} + +apply { + from("$rootDir/gradle/jacoco.gradle") +} + +description = "Types that are used by Grooves to build an Event Sourcing system" + +dependencies { + api("org.reactivestreams:reactive-streams:1.0.4") + implementation("org.slf4j:slf4j-api:2.0.4") + + compileOnly("org.jetbrains.kotlin:kotlin-stdlib-jdk8") + + testImplementation("org.spockframework:spock-core:2.1-groovy-3.0") +} + +tasks.withType { + useJUnitPlatform() +} \ No newline at end of file