Skip to content

Commit

Permalink
Migrate to Java 21
Browse files Browse the repository at this point in the history
  • Loading branch information
ravinperera00 committed Oct 19, 2024
1 parent 47973b2 commit 33bbbef
Show file tree
Hide file tree
Showing 14 changed files with 66 additions and 116 deletions.
5 changes: 3 additions & 2 deletions .github/workflows/build-timestamped-master.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ on:
branches:
- main
- 2201.[0-9]+.x
- java21
paths-ignore:
- 'load-tests/**'
- '*.md'
Expand All @@ -17,11 +18,11 @@ jobs:
if: github.repository_owner == 'ballerina-platform'
steps:
- uses: actions/checkout@v2
- name: Set up JDK 17
- name: Set up JDK 21
uses: actions/setup-java@v2
with:
distribution: 'temurin'
java-version: 17.0.7
java-version: 21.0.3
- name: Change to Timestamped Version
run: |
initialVersion=$((grep -w 'version' | cut -d= -f2) < gradle.properties )
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/build-with-bal-test-graalvm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
call_stdlib_workflow:
name: Run StdLib Workflow
if: ${{ github.event_name != 'schedule' || (github.event_name == 'schedule' && github.repository_owner == 'ballerina-platform') }}
uses: ballerina-platform/ballerina-library/.github/workflows/build-with-bal-test-graalvm-template.yml@main
uses: ballerina-platform/ballerina-library/.github/workflows/build-with-bal-test-graalvm-template.yml@java21
with:
lang_tag: ${{ inputs.lang_tag }}
lang_version: ${{ inputs.lang_version }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/central-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@ jobs:
if: github.repository_owner == 'ballerina-platform'
steps:
- uses: actions/checkout@v2
- name: Set up JDK 17
- name: Set up JDK 21
uses: actions/setup-java@v2
with:
distribution: 'temurin'
java-version: 17.0.7
java-version: 21.0.3
- name: Build with Gradle
env:
packageUser: ${{ github.actor }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/publish-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@ jobs:
if: github.repository_owner == 'ballerina-platform'
steps:
- uses: actions/checkout@v2
- name: Set up JDK 17
- name: Set up JDK 21
uses: actions/setup-java@v2
with:
distribution: 'temurin'
java-version: 17.0.7
java-version: 21.0.3
- name: Build with Gradle
env:
packageUser: ${{ github.actor }}
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/publish-snapshot-nexus.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,11 +9,11 @@ jobs:
if: github.repository_owner == 'ballerina-platform'
steps:
- uses: actions/checkout@v2
- name: Set up JDK 17
- name: Set up JDK 21
uses: actions/setup-java@v2
with:
distribution: 'temurin'
java-version: 17.0.7
java-version: 21.0.3
- name: Build with Gradle
env:
packageUser: ${{ secrets.BALLERINA_BOT_USERNAME }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@ jobs:
call_workflow:
name: Run PR Build Workflow
if: ${{ github.repository_owner == 'ballerina-platform' }}
uses: ballerina-platform/ballerina-library/.github/workflows/pull-request-build-template.yml@main
uses: ballerina-platform/ballerina-library/.github/workflows/pull-request-build-template.yml@java21
with:
additional-windows-test-flags: "-x test"
4 changes: 2 additions & 2 deletions .github/workflows/trivy-scan.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Set up JDK 17
- name: Set up JDK 21
uses: actions/setup-java@v2
with:
distribution: 'temurin'
java-version: 17.0.7
java-version: 21.0.3
- name: Build with Gradle
env:
packageUser: ${{ github.actor }}
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ This repository only contains the source code for the package.

### Set up the prerequisites

1. Download and install Java SE Development Kit (JDK) version 17 (from one of the following locations).
1. Download and install Java SE Development Kit (JDK) version 21 (from one of the following locations).
* [Oracle](https://www.oracle.com/java/technologies/downloads/)
* [OpenJDK](https://adoptium.net/)

Expand Down
18 changes: 9 additions & 9 deletions ballerina/Ballerina.toml
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
[package]
org = "ballerinax"
name = "persist.inmemory"
version = "1.4.0"
version = "1.4.1"
authors = ["Ballerina"]
keywords = ["persist", "inmemory"]
repository = "https://github.com/ballerina-platform/module-ballerinax-persist.inmemory"
icon = "icon.png"
license = ["Apache-2.0"]
distribution = "2201.10.0"
distribution = "2201.10.0-20241011-161100-51978649"

[platform.java17]
[platform.java21]
graalvmCompatible = true

[[platform.java17.dependency]]
[[platform.java21.dependency]]
groupId = "io.ballerina.stdlib"
artifactId = "persist.inmemory-native"
version = "1.4.0"
path = "../native/build/libs/persist.inmemory-native-1.4.0.jar"
version = "1.4.1"
path = "../native/build/libs/persist.inmemory-native-1.4.1-SNAPSHOT.jar"

[[platform.java17.dependency]]
[[platform.java21.dependency]]
groupId = "io.ballerina.stdlib"
artifactId = "persist-native"
version = "1.4.0"
path = "./lib/persist-native-1.4.0.jar"
version = "1.4.1"
path = "./lib/persist-native-1.4.1-20241001-120600-2395f0f.jar"
6 changes: 3 additions & 3 deletions ballerina/Dependencies.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

[ballerina]
dependencies-toml-version = "2"
distribution-version = "2201.10.0"
distribution-version = "2201.10.0-20241011-161100-51978649"

[[package]]
org = "ballerina"
Expand Down Expand Up @@ -53,7 +53,7 @@ scope = "testOnly"
[[package]]
org = "ballerina"
name = "persist"
version = "1.4.0"
version = "1.4.1"
dependencies = [
{org = "ballerina", name = "jballerina.java"}
]
Expand Down Expand Up @@ -90,7 +90,7 @@ modules = [
[[package]]
org = "ballerinax"
name = "persist.inmemory"
version = "1.4.0"
version = "1.4.1"
dependencies = [
{org = "ballerina", name = "jballerina.java"},
{org = "ballerina", name = "persist"},
Expand Down
8 changes: 4 additions & 4 deletions build-config/resources/Ballerina.toml
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,18 @@ keywords = ["persist", "inmemory"]
repository = "https://github.com/ballerina-platform/module-ballerinax-persist.inmemory"
icon = "icon.png"
license = ["Apache-2.0"]
distribution = "2201.10.0"
distribution = "2201.10.0-20241011-161100-51978649"

[platform.java17]
[platform.java21]
graalvmCompatible = true

[[platform.java17.dependency]]
[[platform.java21.dependency]]
groupId = "io.ballerina.stdlib"
artifactId = "persist.inmemory-native"
version = "@toml.version@"
path = "../native/build/libs/persist.inmemory-native-@project.version@.jar"

[[platform.java17.dependency]]
[[platform.java21.dependency]]
groupId = "io.ballerina.stdlib"
artifactId = "persist-native"
version = "@persist.version@"
Expand Down
12 changes: 6 additions & 6 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,27 @@ version=1.4.1-SNAPSHOT

puppycrawlCheckstyleVersion=10.12.0
checkstyleToolVersion=10.12.0
githubSpotbugsVersion=5.0.14
githubSpotbugsVersion=6.0.18
githubJohnrengelmanShadowVersion=8.1.1
underCouchDownloadVersion=5.4.0
researchgateReleaseVersion=2.8.0
testngVersion=7.6.1
gsonVersion=2.10
ballerinaGradlePluginVersion=2.0.1

ballerinaLangVersion=2201.10.0
ballerinaLangVersion=2201.10.0-20241011-161100-51978649

# Direct Dependencies

# Level 01
stdlibTimeVersion=2.4.0
stdlibTimeVersion=2.5.1-20240930-120200-e59222b

# Level 08
stdlibPersistVersion=1.4.0
stdlibPersistVersion=1.4.1-20241001-120600-2395f0f

# Ballerinax Observer
observeVersion=1.3.0
observeInternalVersion=1.3.0
observeVersion=1.3.1-20241007-161000-645452d
observeInternalVersion=1.3.1-20241007-182700-a5f77a1

# Enabled publishing insecure checksums, due to fail to publish to maven central
# Refer https://github.com/gradle/gradle/issues/11308
Expand Down
9 changes: 6 additions & 3 deletions native/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}

sourceCompatibility = JavaVersion.VERSION_17
sourceCompatibility = JavaVersion.VERSION_21

jacoco {
toolVersion = "0.8.6"
Expand Down Expand Up @@ -76,9 +76,12 @@ jacocoTestReport {
}

spotbugsMain {
def classLoader = plugins["com.github.spotbugs"].class.classLoader
def SpotBugsConfidence = classLoader.findLoadedClass("com.github.spotbugs.snom.Confidence")
def SpotBugsEffort = classLoader.findLoadedClass("com.github.spotbugs.snom.Effort")
effort = SpotBugsEffort.MAX
reportLevel = SpotBugsConfidence.LOW
ignoreFailures = true
effort = "max"
reportLevel = "low"
reportsDir = file("$project.buildDir/reports/spotbugs")
def excludeFile = file("${rootDir}/build-config/spotbugs-exclude.xml")
if (excludeFile.exists()) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,36 +19,22 @@
package io.ballerina.stdlib.persist.inmemory.datastore;

import io.ballerina.runtime.api.Environment;
import io.ballerina.runtime.api.Future;
import io.ballerina.runtime.api.PredefinedTypes;
import io.ballerina.runtime.api.async.Callback;
import io.ballerina.runtime.api.creators.TypeCreator;
import io.ballerina.runtime.api.types.ErrorType;
import io.ballerina.runtime.api.types.RecordType;
import io.ballerina.runtime.api.types.StreamType;
import io.ballerina.runtime.api.types.Type;
import io.ballerina.runtime.api.values.BArray;
import io.ballerina.runtime.api.values.BError;
import io.ballerina.runtime.api.values.BObject;
import io.ballerina.runtime.api.values.BStream;
import io.ballerina.runtime.api.values.BString;
import io.ballerina.runtime.api.values.BTypedesc;
import io.ballerina.stdlib.persist.ModuleUtils;
import io.ballerina.stdlib.persist.inmemory.Utils;

import java.util.Map;

import static io.ballerina.stdlib.persist.Constants.ERROR;
import static io.ballerina.stdlib.persist.Constants.KEY_FIELDS;
import static io.ballerina.stdlib.persist.Constants.RUN_READ_BY_KEY_QUERY_METHOD;
import static io.ballerina.stdlib.persist.Constants.RUN_READ_QUERY_METHOD;
import static io.ballerina.stdlib.persist.ErrorGenerator.wrapError;
import static io.ballerina.stdlib.persist.Utils.getEntity;
import static io.ballerina.stdlib.persist.Utils.getKey;
import static io.ballerina.stdlib.persist.Utils.getMetadata;
import static io.ballerina.stdlib.persist.Utils.getPersistClient;
import static io.ballerina.stdlib.persist.Utils.getRecordTypeWithKeyFields;
import static io.ballerina.stdlib.persist.Utils.getTransactionContextProperties;

/**
* This class provides the in-memory query processing implementations for persistence.
Expand All @@ -65,91 +51,51 @@ public static BStream query(Environment env, BObject client, BTypedesc targetTyp

BString entity = getEntity(env);
BObject persistClient = getPersistClient(client, entity);
BArray keyFields = (BArray) persistClient.get(KEY_FIELDS);
RecordType recordType = (RecordType) targetType.getDescribingType();

RecordType recordTypeWithIdFields = getRecordTypeWithKeyFields(keyFields, recordType);
StreamType streamTypeWithIdFields = TypeCreator.createStreamType(recordTypeWithIdFields,
PredefinedTypes.TYPE_NULL);

BArray[] metadata = getMetadata(recordType);
BArray fields = metadata[0];
BArray includes = metadata[1];
BArray typeDescriptions = metadata[2];

Map<String, Object> trxContextProperties = getTransactionContextProperties();
String strandName = env.getStrandName().isPresent() ? env.getStrandName().get() : null;

Future balFuture = env.markAsync();
env.getRuntime().invokeMethodAsyncSequentially(
// Call `InMemoryClient.runReadQuery(string[] fields = [])`
// which returns `stream<record {}, persist:Error?>`

persistClient, RUN_READ_QUERY_METHOD, strandName, env.getStrandMetadata(), new Callback() {
@Override
public void notifySuccess(Object o) {
BStream stream = (BStream) o;
balFuture.complete(Utils.createPersistInMemoryStreamValue(stream, targetType, fields,
includes, typeDescriptions, persistClient, null));
}

@Override
public void notifyFailure(BError bError) {
balFuture.complete(Utils.createPersistInMemoryStreamValue(null, targetType, fields, includes,
typeDescriptions, persistClient, wrapError(bError)));
}
}, trxContextProperties, streamTypeWithIdFields, fields, true
);

return null;
return env.yieldAndRun(() -> {
try {
Object result = env.getRuntime().call(
// Call `InMemoryClient.runReadQuery(string[] fields = [])`
// which returns `stream<record {}, persist:Error?>`
persistClient, RUN_READ_QUERY_METHOD, fields
);
BStream stream = (BStream) result;
return Utils.createPersistInMemoryStreamValue(stream, targetType, fields,
includes, typeDescriptions, persistClient, null);
} catch (BError bError) {
return Utils.createPersistInMemoryStreamValue(null, targetType, fields, includes,
typeDescriptions, persistClient, wrapError(bError));
}

});
}

public static Object queryOne(Environment env, BObject client, BArray path, BTypedesc targetType) {
// This method will return `targetType|persist:Error`

BString entity = getEntity(env);
BObject persistClient = getPersistClient(client, entity);
BArray keyFields = (BArray) persistClient.get(KEY_FIELDS);
RecordType recordType = (RecordType) targetType.getDescribingType();

RecordType recordTypeWithIdFields = getRecordTypeWithKeyFields(keyFields, recordType);
ErrorType persistErrorType = TypeCreator.createErrorType(ERROR, ModuleUtils.getModule());
Type unionType = TypeCreator.createUnionType(recordTypeWithIdFields, persistErrorType);

BArray[] metadata = getMetadata(recordType);
BArray fields = metadata[0];
BArray includes = metadata[1];
BArray typeDescriptions = metadata[2];

Object key = getKey(env, path);

Map<String, Object> trxContextProperties = getTransactionContextProperties();
String strandName = env.getStrandName().isPresent() ? env.getStrandName().get() : null;

Future balFuture = env.markAsync();
env.getRuntime().invokeMethodAsyncSequentially(
// Call `InMemoryClient.runReadByKeyQuery(
// typedesc<record {}> rowType, anydata key, string[] fields = [], string[] include = [],
// typedesc<record {}>[] typeDescriptions = []
// )`
// which returns `record {}|persist:Error`

getPersistClient(client, entity), RUN_READ_BY_KEY_QUERY_METHOD, strandName, env.getStrandMetadata(),
new Callback() {
@Override
public void notifySuccess(Object o) {
balFuture.complete(o);
}

@Override
public void notifyFailure(BError bError) {
balFuture.complete(wrapError(bError));
}
}, trxContextProperties, unionType,
targetType, true, key, true, fields, true, includes, true,
typeDescriptions, true
);
return env.yieldAndRun(() -> {
try {
return env.getRuntime().call(getPersistClient(client, entity), RUN_READ_BY_KEY_QUERY_METHOD,
targetType, key, fields, includes, typeDescriptions);

return null;
} catch (BError bError) {
return wrapError(bError);
}
});
}
}

0 comments on commit 33bbbef

Please sign in to comment.