From 9b8f27058a0152581318e33a4b3a9aa9b110a186 Mon Sep 17 00:00:00 2001 From: Federico Tomassetti Date: Fri, 28 Jun 2024 08:50:05 +0200 Subject: [PATCH 1/4] Setting up BuildConfig --- build.gradle | 6 +++--- core/build.gradle.kts | 18 +++++++++++++++++- .../java/serialization/JsonSerialization.java | 3 ++- gradle.properties | 2 +- gradle/libs.versions.toml | 5 +++++ 5 files changed, 28 insertions(+), 6 deletions(-) create mode 100644 gradle/libs.versions.toml diff --git a/build.gradle b/build.gradle index b7c895f3..a2cf6bc5 100644 --- a/build.gradle +++ b/build.gradle @@ -1,8 +1,8 @@ plugins { id "com.diffplug.spotless" version "5.1.0" id "java" - id 'net.researchgate.release' version '3.0.2' - id("com.vanniktech.maven.publish") version "0.26.0" apply false + alias(libs.plugins.release) + alias(libs.plugins.superPublish) apply(false) } repositories { @@ -35,4 +35,4 @@ tasks.wrapper { // You can either download the binary-only version of Gradle (BIN) or // the full version (with sources and documentation) of Gradle (ALL) distributionType = Wrapper.DistributionType.ALL -} \ No newline at end of file +} diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 0d6b0d5e..3f2e4d40 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -1,12 +1,15 @@ import com.vanniktech.maven.publish.SonatypeHost import java.net.URI +import org.gradle.internal.impldep.org.junit.experimental.categories.Categories.CategoryFilter.exclude +import org.gradle.internal.impldep.org.junit.experimental.categories.Categories.CategoryFilter.include plugins { id("java-library") id("signing") id("com.github.johnrengelman.shadow") version "7.1.1" - id("com.vanniktech.maven.publish") + alias(libs.plugins.superPublish) jacoco + alias(libs.plugins.buildConfig) } repositories { @@ -186,3 +189,16 @@ val integrationTest = tasks.create("integrationTest", Test::class.java) { tasks.jacocoTestReport { dependsOn(tasks.test) // tests are required to run before generating the report } + +buildConfig { + sourceSets.getByName("main") { + packageName("io.lionweb.lioncore.java") + buildConfigField("String", "CURRENT_SPECS_VERSION", "\"${specsVersion}\"") + } +} + +spotless { + java { + target("src/**/*.java") + } +} \ No newline at end of file diff --git a/core/src/main/java/io/lionweb/lioncore/java/serialization/JsonSerialization.java b/core/src/main/java/io/lionweb/lioncore/java/serialization/JsonSerialization.java index f30f81e4..0d0d035f 100644 --- a/core/src/main/java/io/lionweb/lioncore/java/serialization/JsonSerialization.java +++ b/core/src/main/java/io/lionweb/lioncore/java/serialization/JsonSerialization.java @@ -4,6 +4,7 @@ import com.google.gson.GsonBuilder; import com.google.gson.JsonElement; import com.google.gson.JsonParser; +import io.lionweb.lioncore.java.BuildConfig; import io.lionweb.lioncore.java.api.ClassifierInstanceResolver; import io.lionweb.lioncore.java.api.CompositeClassifierInstanceResolver; import io.lionweb.lioncore.java.api.LocalClassifierInstanceResolver; @@ -39,7 +40,7 @@ * behavior explicitly by calling getNodeInstantiator().enableDynamicNodes(). */ public class JsonSerialization { - public static final String DEFAULT_SERIALIZATION_FORMAT = "2023.1"; + public static final String DEFAULT_SERIALIZATION_FORMAT = BuildConfig.CURRENT_SPECS_VERSION; public static void saveLanguageToFile(Language language, File file) throws IOException { String content = getStandardSerialization().serializeTreesToJsonString(language); diff --git a/gradle.properties b/gradle.properties index 19664456..8da3944a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,5 +1,5 @@ version=0.2.17-SNAPSHOT -specsVersion=2023.1 +specsVersion=2024.1 jvmVersion=1.8 org.gradle.jvmargs=-Dfile.encoding=UTF-8 SONATYPE_CONNECT_TIMEOUT_SECONDS=200 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml new file mode 100644 index 00000000..9dce889b --- /dev/null +++ b/gradle/libs.versions.toml @@ -0,0 +1,5 @@ +[plugins] +buildConfig = { id = "com.github.gmazzo.buildconfig", version = "5.3.5" } +release = { id = "net.researchgate.release", version = "3.0.2" } +superPublish = { id = "com.vanniktech.maven.publish", version = "0.28.0" } + From dae11de2d1fdf2ca76111f68f343065be6a65234 Mon Sep 17 00:00:00 2001 From: Federico Tomassetti Date: Fri, 28 Jun 2024 09:02:48 +0200 Subject: [PATCH 2/4] Update Specs Version --- .../lioncore/java/language/LionCoreBuiltins.java | 3 ++- .../io/lionweb/lioncore/java/self/LionCore.java | 3 ++- .../java/serialization/JsonSerialization.java | 13 +++++++++++-- .../serialization/JsonSerializationTest.java | 8 ++++---- .../SerializationOfLionCoreTest.java | 2 +- .../SerializationOfPrimitiveValuesTest.java | 16 ++++++++-------- .../resources/serialization/bobslibrary.json | 2 +- .../resources/serialization/foo-library.json | 2 +- .../resources/serialization/langeng-library.json | 2 +- .../serialization/library-language.json | 2 +- .../test/resources/serialization/lioncore.json | 2 +- 11 files changed, 33 insertions(+), 22 deletions(-) diff --git a/core/src/main/java/io/lionweb/lioncore/java/language/LionCoreBuiltins.java b/core/src/main/java/io/lionweb/lioncore/java/language/LionCoreBuiltins.java index ffaf96df..48dd7e8d 100644 --- a/core/src/main/java/io/lionweb/lioncore/java/language/LionCoreBuiltins.java +++ b/core/src/main/java/io/lionweb/lioncore/java/language/LionCoreBuiltins.java @@ -10,7 +10,8 @@ private LionCoreBuiltins() { super("LionCore_builtins"); setID("LionCore-builtins"); setKey("LionCore-builtins"); - setVersion(JsonSerialization.DEFAULT_SERIALIZATION_FORMAT); + // TODO we should move to the current version + setVersion(JsonSerialization.SERIALIZATION_FORMAT_2023_1); PrimitiveType string = new PrimitiveType(this, "String"); new PrimitiveType(this, "Boolean"); new PrimitiveType(this, "Integer"); diff --git a/core/src/main/java/io/lionweb/lioncore/java/self/LionCore.java b/core/src/main/java/io/lionweb/lioncore/java/self/LionCore.java index 3107ae4f..44dc803b 100644 --- a/core/src/main/java/io/lionweb/lioncore/java/self/LionCore.java +++ b/core/src/main/java/io/lionweb/lioncore/java/self/LionCore.java @@ -78,7 +78,8 @@ public static Language getInstance() { INSTANCE = new Language("LionCore_M3"); INSTANCE.setID("-id-LionCore-M3"); INSTANCE.setKey("LionCore-M3"); - INSTANCE.setVersion(JsonSerialization.DEFAULT_SERIALIZATION_FORMAT); + // TODO we should move to the current version + INSTANCE.setVersion(JsonSerialization.SERIALIZATION_FORMAT_2023_1); // We first instantiate all Concepts and Interfaces // we add features only after as the features will have references to these elements diff --git a/core/src/main/java/io/lionweb/lioncore/java/serialization/JsonSerialization.java b/core/src/main/java/io/lionweb/lioncore/java/serialization/JsonSerialization.java index 0d0d035f..ac462542 100644 --- a/core/src/main/java/io/lionweb/lioncore/java/serialization/JsonSerialization.java +++ b/core/src/main/java/io/lionweb/lioncore/java/serialization/JsonSerialization.java @@ -41,6 +41,13 @@ */ public class JsonSerialization { public static final String DEFAULT_SERIALIZATION_FORMAT = BuildConfig.CURRENT_SPECS_VERSION; + public static final String SERIALIZATION_FORMAT_2023_1 = "2023.1"; + public static final Set SUPPORTED_FORMATS = + new HashSet<>(Arrays.asList(DEFAULT_SERIALIZATION_FORMAT, SERIALIZATION_FORMAT_2023_1)); + + public static boolean isFormatSupported(String format) { + return SUPPORTED_FORMATS.contains(format); + } public static void saveLanguageToFile(Language language, File file) throws IOException { String content = getStandardSerialization().serializeTreesToJsonString(language); @@ -485,9 +492,11 @@ private String serializePropertyValue(@Nonnull DataType dataType, @Nullable Obje } private void validateSerializationBlock(SerializedChunk serializationBlock) { - if (!serializationBlock.getSerializationFormatVersion().equals(DEFAULT_SERIALIZATION_FORMAT)) { + if (!isFormatSupported(serializationBlock.getSerializationFormatVersion())) { throw new IllegalArgumentException( - "Only serializationFormatVersion = '" + DEFAULT_SERIALIZATION_FORMAT + "' is supported"); + "Serialization format '" + + serializationBlock.getSerializationFormatVersion() + + "' is not supported"); } } diff --git a/core/src/test/java/io/lionweb/lioncore/java/serialization/JsonSerializationTest.java b/core/src/test/java/io/lionweb/lioncore/java/serialization/JsonSerializationTest.java index 4fa93350..3f3d559d 100644 --- a/core/src/test/java/io/lionweb/lioncore/java/serialization/JsonSerializationTest.java +++ b/core/src/test/java/io/lionweb/lioncore/java/serialization/JsonSerializationTest.java @@ -384,7 +384,7 @@ public void serializationOfEnumLiteralUsingEnumerationValueInstances() { assertEquals( JsonParser.parseString( "{\n" - + " \"serializationFormatVersion\": \"2023.1\",\n" + + " \"serializationFormatVersion\": \"2024.1\",\n" + " \"languages\": [{\n" + " \"version\": \"1\",\n" + " \"key\": \"mm_key\"\n" @@ -462,7 +462,7 @@ public void serializationOfEnumLiteralUsingEnumInstances() { assertEquals( JsonParser.parseString( "{\n" - + " \"serializationFormatVersion\": \"2023.1\",\n" + + " \"serializationFormatVersion\": \"2024.1\",\n" + " \"languages\": [{\n" + " \"version\": \"1\",\n" + " \"key\": \"mm_key\"\n" @@ -515,7 +515,7 @@ public void deserializeEnumerationLiteralsUsingEnumerationValueInstances() { JsonElement je = JsonParser.parseString( "{\n" - + " \"serializationFormatVersion\": \"2023.1\",\n" + + " \"serializationFormatVersion\": \"2024.1\",\n" + " \"languages\": [{\n" + " \"version\": \"1\",\n" + " \"key\": \"mm_key\"\n" @@ -589,7 +589,7 @@ public void deserializeEnumerationLiteralsUsingEnumInstances() { JsonElement je = JsonParser.parseString( "{\n" - + " \"serializationFormatVersion\": \"2023.1\",\n" + + " \"serializationFormatVersion\": \"2024.1\",\n" + " \"languages\": [{\n" + " \"version\": \"1\",\n" + " \"key\": \"mm_key\"\n" diff --git a/core/src/test/java/io/lionweb/lioncore/java/serialization/SerializationOfLionCoreTest.java b/core/src/test/java/io/lionweb/lioncore/java/serialization/SerializationOfLionCoreTest.java index 93a2cc51..fce831f0 100644 --- a/core/src/test/java/io/lionweb/lioncore/java/serialization/SerializationOfLionCoreTest.java +++ b/core/src/test/java/io/lionweb/lioncore/java/serialization/SerializationOfLionCoreTest.java @@ -30,7 +30,7 @@ public void serializeLionCoreToSerializedChunk() { SerializedChunk serializedChunk = jsonSerialization.serializeTreeToSerializationBlock(LionCore.getInstance()); - assertEquals("2023.1", serializedChunk.getSerializationFormatVersion()); + assertEquals("2024.1", serializedChunk.getSerializationFormatVersion()); assertEquals(2, serializedChunk.getLanguages().size()); Assert.assertEquals( diff --git a/core/src/test/java/io/lionweb/lioncore/java/serialization/SerializationOfPrimitiveValuesTest.java b/core/src/test/java/io/lionweb/lioncore/java/serialization/SerializationOfPrimitiveValuesTest.java index 2a146a83..aae6f7bb 100644 --- a/core/src/test/java/io/lionweb/lioncore/java/serialization/SerializationOfPrimitiveValuesTest.java +++ b/core/src/test/java/io/lionweb/lioncore/java/serialization/SerializationOfPrimitiveValuesTest.java @@ -24,7 +24,7 @@ public void serializeBoolean() { JsonObject expected = JsonParser.parseString( "{\n" - + " \"serializationFormatVersion\": \"2023.1\",\n" + + " \"serializationFormatVersion\": \"2024.1\",\n" + " \"languages\": [],\n" + " \"nodes\": [\n" + " {\n" @@ -89,7 +89,7 @@ public void deserializeBoolean() { JsonObject serialized = JsonParser.parseString( "{\n" - + " \"serializationFormatVersion\": \"2023.1\",\n" + + " \"serializationFormatVersion\": \"2024.1\",\n" + " \"languages\": [],\n" + " \"nodes\": [\n" + " {\n" @@ -161,7 +161,7 @@ public void serializeString() { JsonObject expected = JsonParser.parseString( "{\n" - + " \"serializationFormatVersion\": \"2023.1\",\n" + + " \"serializationFormatVersion\": \"2024.1\",\n" + " \"languages\": [],\n" + " \"nodes\": [\n" + " {\n" @@ -227,7 +227,7 @@ public void deserializeString() { JsonObject serialized = JsonParser.parseString( "{\n" - + " \"serializationFormatVersion\": \"2023.1\",\n" + + " \"serializationFormatVersion\": \"2024.1\",\n" + " \"languages\": [],\n" + " \"nodes\": [\n" + " {\n" @@ -298,7 +298,7 @@ public void serializeInteger() { JsonObject expected = JsonParser.parseString( "{\n" - + " \"serializationFormatVersion\": \"2023.1\",\n" + + " \"serializationFormatVersion\": \"2024.1\",\n" + " \"languages\": [],\n" + " \"nodes\": [\n" + " {\n" @@ -364,7 +364,7 @@ public void deserializeInteger() { JsonObject serialized = JsonParser.parseString( "{\n" - + " \"serializationFormatVersion\": \"2023.1\",\n" + + " \"serializationFormatVersion\": \"2024.1\",\n" + " \"languages\": [],\n" + " \"nodes\": [\n" + " {\n" @@ -439,7 +439,7 @@ public void serializeJSON() { JsonObject expected = JsonParser.parseString( "{\n" - + " \"serializationFormatVersion\": \"2023.1\",\n" + + " \"serializationFormatVersion\": \"2024.1\",\n" + " \"languages\": [],\n" + " \"nodes\": [\n" + " {\n" @@ -508,7 +508,7 @@ public void deserializeJSON() { JsonObject serialized = JsonParser.parseString( "{\n" - + " \"serializationFormatVersion\": \"2023.1\",\n" + + " \"serializationFormatVersion\": \"2024.1\",\n" + " \"languages\": [],\n" + " \"nodes\": [\n" + " {\n" diff --git a/core/src/test/resources/serialization/bobslibrary.json b/core/src/test/resources/serialization/bobslibrary.json index ce2a7ebf..16f38635 100644 --- a/core/src/test/resources/serialization/bobslibrary.json +++ b/core/src/test/resources/serialization/bobslibrary.json @@ -1,5 +1,5 @@ { - "serializationFormatVersion": "2023.1", + "serializationFormatVersion": "2024.1", "languages": [], "nodes": [ { diff --git a/core/src/test/resources/serialization/foo-library.json b/core/src/test/resources/serialization/foo-library.json index f34eed67..cc6ec834 100644 --- a/core/src/test/resources/serialization/foo-library.json +++ b/core/src/test/resources/serialization/foo-library.json @@ -1,5 +1,5 @@ { - "serializationFormatVersion": "2023.1", + "serializationFormatVersion": "2024.1", "languages": [], "nodes": [ { diff --git a/core/src/test/resources/serialization/langeng-library.json b/core/src/test/resources/serialization/langeng-library.json index 302acb69..bfa79c4b 100644 --- a/core/src/test/resources/serialization/langeng-library.json +++ b/core/src/test/resources/serialization/langeng-library.json @@ -1,5 +1,5 @@ { - "serializationFormatVersion": "2023.1", + "serializationFormatVersion": "2024.1", "languages": [], "nodes": [ { diff --git a/core/src/test/resources/serialization/library-language.json b/core/src/test/resources/serialization/library-language.json index b671e40b..074fda6d 100644 --- a/core/src/test/resources/serialization/library-language.json +++ b/core/src/test/resources/serialization/library-language.json @@ -1,5 +1,5 @@ { - "serializationFormatVersion": "2023.1", + "serializationFormatVersion": "2024.1", "languages": [], "nodes": [ { diff --git a/core/src/test/resources/serialization/lioncore.json b/core/src/test/resources/serialization/lioncore.json index f48de7f3..c6693656 100644 --- a/core/src/test/resources/serialization/lioncore.json +++ b/core/src/test/resources/serialization/lioncore.json @@ -1,5 +1,5 @@ { - "serializationFormatVersion": "2023.1", + "serializationFormatVersion": "2024.1", "languages": [ { "key": "LionCore-M3", From f091d548c3fe6ecf7426ad920e78b4c3ef2084f8 Mon Sep 17 00:00:00 2001 From: Federico Tomassetti Date: Fri, 28 Jun 2024 09:04:28 +0200 Subject: [PATCH 3/4] Update commit used for comparison with specs --- .../lioncore/java/self/CorrespondanceWithDocumentationTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/test/java/io/lionweb/lioncore/java/self/CorrespondanceWithDocumentationTest.java b/core/src/test/java/io/lionweb/lioncore/java/self/CorrespondanceWithDocumentationTest.java index 7df7c242..c51902d5 100644 --- a/core/src/test/java/io/lionweb/lioncore/java/self/CorrespondanceWithDocumentationTest.java +++ b/core/src/test/java/io/lionweb/lioncore/java/self/CorrespondanceWithDocumentationTest.java @@ -15,7 +15,7 @@ public class CorrespondanceWithDocumentationTest { private static final String SPECIFICATION_COMMIT_CONSIDERED = - "69ddbf4685acf1ef6d83c400570fb6c37efa4cfc"; + "d138a4f3f6ea86e4ff27ff5cc515488aef30bd1c"; @Test public void lioncoreIsTheSameAsInTheOrganizationRepo() throws IOException { From 999469d4e09f79285dd2ebe94e18683ae2ec1c09 Mon Sep 17 00:00:00 2001 From: Federico Tomassetti Date: Fri, 28 Jun 2024 09:06:56 +0200 Subject: [PATCH 4/4] Linting --- core/build.gradle.kts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 3f2e4d40..a956634a 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -1,7 +1,5 @@ import com.vanniktech.maven.publish.SonatypeHost import java.net.URI -import org.gradle.internal.impldep.org.junit.experimental.categories.Categories.CategoryFilter.exclude -import org.gradle.internal.impldep.org.junit.experimental.categories.Categories.CategoryFilter.include plugins { id("java-library") @@ -201,4 +199,4 @@ spotless { java { target("src/**/*.java") } -} \ No newline at end of file +}