Skip to content

Commit

Permalink
Merge pull request #24 from warunalakshitha/syncJava21
Browse files Browse the repository at this point in the history
Migrate to Java21
  • Loading branch information
warunalakshitha authored Nov 26, 2024
2 parents 0cfebe0 + 232545f commit ca9484b
Show file tree
Hide file tree
Showing 11 changed files with 79 additions and 122 deletions.
6 changes: 3 additions & 3 deletions .github/workflows/build-timestamped-master.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,11 +17,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 All @@ -46,7 +46,7 @@ jobs:
- name: Generate CodeCov Report
uses: codecov/codecov-action@v2
- name: Upload Artifact
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v4
with:
name: ballerina-runtime
path: target/ballerina-runtime/
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: Give execute permission to gradlew
run: chmod +x ./gradlew
- name: Build with Gradle
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: Give execute permission to gradlew
run: chmod +x ./gradlew
- name: Build with Gradle
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/pull-request.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@ jobs:
uses: ballerina-platform/ballerina-library/.github/workflows/pull-request-build-template.yml@main
with:
additional-windows-test-flags: "-x test"
additional-ubuntu-test-flags: "-x test"
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,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
6 changes: 3 additions & 3 deletions ballerina/Ballerina.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,16 @@ repository = "https://github.com/ballerina-platform/module-ballerinax-persist.re
license = ["Apache-2.0"]
distribution = "2201.10.0"

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

[[platform.java17.dependency]]
[[platform.java21.dependency]]
groupId = "io.ballerina.lib"
artifactId = "persist.redis-native"
version = "0.2.0"
path = "../native/build/libs/persist.redis-native-0.2.0.jar"

[[platform.java17.dependency]]
[[platform.java21.dependency]]
groupId = "io.ballerina.stdlib"
artifactId = "persist-native"
version = "1.4.0"
Expand Down
6 changes: 3 additions & 3 deletions build-config/resources/Ballerina.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,16 @@ repository = "https://github.com/ballerina-platform/module-ballerinax-persist.re
license = ["Apache-2.0"]
distribution = "2201.10.0"

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

[[platform.java17.dependency]]
[[platform.java21.dependency]]
groupId = "io.ballerina.lib"
artifactId = "persist.redis-native"
version = "@toml.version@"
path = "../native/build/libs/[email protected]@.jar"

[[platform.java17.dependency]]
[[platform.java21.dependency]]
groupId = "io.ballerina.stdlib"
artifactId = "persist-native"
version = "@persist.version@"
Expand Down
42 changes: 21 additions & 21 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,50 +3,50 @@ version=0.2.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.11.0-20241117-133400-a3054b77

# Direct Dependencies
# Level 01
stdlibIoVersion=1.6.1
stdlibTimeVersion=2.4.0
stdlibUrlVersion=2.4.0
stdlibIoVersion=1.6.2-20241112-233100-995cf5f
stdlibTimeVersion=2.6.0-20241113-073800-201b904
stdlibUrlVersion=2.4.1-20241113-073900-335ff51

# Level 02
stdlibConstraintVersion=1.5.0
stdlibLogVersion=2.10.0
stdlibOsVersion=1.8.0
stdlibCryptoVersion=2.7.2
stdlibTaskVersion=2.5.0
stdlibPersistVersion=1.4.0
stdlibConstraintVersion=1.6.0-20241113-090900-d276ad5
stdlibLogVersion=2.10.1-20241113-120000-4577868
stdlibOsVersion=1.8.1-20241113-122000-cca973b
stdlibCryptoVersion=2.7.3-20241113-081400-d015a39
stdlibTaskVersion=2.5.1-20241113-123500-f905281
stdlibPersistVersion=1.4.1-20241113-122000-306cc63

# Level 03
stdlibFileVersion=1.10.0
stdlibCacheVersion=3.8.0
stdlibMimeVersion=2.10.0
stdlibUuidVersion=1.8.0
stdlibFileVersion=1.10.1-20241113-151700-e1a2e38
stdlibCacheVersion=3.8.1-20241113-125700-b75a1bf
stdlibMimeVersion=2.10.2-20241113-154200-d953747
stdlibUuidVersion=1.8.1-20241113-154400-443c67b

# Level 04
stdlibAuthVersion=2.12.0
stdlibJwtVersion=2.13.0
stdlibOAuth2Version=2.12.0
stdlibAuthVersion=2.12.1-20241113-162300-ded40eb
stdlibJwtVersion=2.13.1-20241113-162400-b59ccfa
stdlibOAuth2Version=2.12.1-20241113-162400-4c6ddfe

# Level 05
stdlibHttpVersion=2.12.0
stdlibHttpVersion=2.13.0-20241114-182900-7e9f66a

# Level 08
stdlibRedisVersion=3.0.1

# Ballerinax Observer
observeVersion=1.3.0
observeInternalVersion=1.3.0
observeVersion=1.4.0-20241113-092000-b83ae74
observeInternalVersion=1.3.1-20241113-101700-265054d

# 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 @@ -44,7 +44,7 @@ tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}

sourceCompatibility = JavaVersion.VERSION_17
sourceCompatibility = JavaVersion.VERSION_21

jacoco {
toolVersion = "0.8.8"
Expand Down Expand Up @@ -78,8 +78,11 @@ jacocoTestReport {

spotbugsMain {
ignoreFailures = true
effort = "max"
reportLevel = "low"
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
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,11 +19,11 @@
package io.ballerina.stdlib.persist.redis;

import io.ballerina.runtime.api.Environment;
import io.ballerina.runtime.api.PredefinedTypes;
import io.ballerina.runtime.api.creators.TypeCreator;
import io.ballerina.runtime.api.creators.ValueCreator;
import io.ballerina.runtime.api.types.Field;
import io.ballerina.runtime.api.types.MapType;
import io.ballerina.runtime.api.types.PredefinedTypes;
import io.ballerina.runtime.api.types.RecordType;
import io.ballerina.runtime.api.types.Type;
import io.ballerina.runtime.api.utils.StringUtils;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,8 @@
package io.ballerina.stdlib.persist.redis.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.creators.ValueCreator;
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.BMap;
Expand All @@ -36,12 +29,8 @@
import io.ballerina.runtime.api.values.BString;
import io.ballerina.runtime.api.values.BTypedesc;
import io.ballerina.stdlib.persist.Constants;
import io.ballerina.stdlib.persist.ModuleUtils;
import io.ballerina.stdlib.persist.redis.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.ErrorGenerator.wrapError;
Expand All @@ -50,7 +39,6 @@
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;
import static io.ballerina.stdlib.persist.redis.Utils.getFieldTypes;

public class RedisProcessor {
Expand All @@ -69,97 +57,62 @@ public static BStream query(Environment env, BObject client, BTypedesc targetTyp

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

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

BArray[] metadata = getMetadata(recordType);
BArray fields = metadata[0];
BArray includes = metadata[1];
BArray typeDescriptions = metadata[2];
BMap<BString, Object> typeMap = getFieldTypes(recordType);

Future balFuture = env.markAsync();
env.getRuntime().invokeMethodAsyncSequentially(
// Call `RedisClient.runReadQuery(
// typedesc<record {}> rowType, map<anydata> typeMap, string[] fields = [],
// string[] include = []
// )`
// which returns `stream<record{}|error?>|persist:Error`

persistClient, Constants.RUN_READ_QUERY_METHOD, strandName, env.getStrandMetadata(), new Callback() {
@Override
public void notifySuccess(Object o) {
if (o instanceof BStream) { // stream<record {}, redis:Error?>
BStream redisStream = (BStream) o;
balFuture.complete(Utils.createPersistRedisStreamValue(redisStream, targetType, fields,
includes, typeDescriptions, persistClient, null));
} else { // persist:Error
balFuture.complete(Utils.createPersistRedisStreamValue(null, targetType, fields, includes,
typeDescriptions, persistClient, (BError) o));
}
}

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

return null;
return env.yieldAndRun(() -> {
try {
Object result = env.getRuntime().callMethod(
// Call `RedisClient.runReadQuery(
// typedesc<record {}> rowType, map<anydata> typeMap, string[] fields = [],
// string[] include = []
// )`
// which returns `stream<record{}|error?>|persist:Error`
persistClient, Constants.RUN_READ_QUERY_METHOD, null, targetTypeWithIdFields, typeMap, fields
, includes);
if (result instanceof BStream bStream) { // stream<record {}, redis:Error?>
return Utils.createPersistRedisStreamValue(bStream, targetType, fields, includes,
typeDescriptions, persistClient, null);
}
// persist:Error
return Utils.createPersistRedisStreamValue(null, targetType, fields, includes, typeDescriptions,
persistClient, (BError) result);
} catch (BError bError) {
return Utils.createPersistRedisStreamValue(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];
BMap<BString, Object> typeMap = getFieldTypes(recordType);

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 `RedisClient.runReadByKeyQuery(
// typedesc<record {}> rowType, anydata key, string[] fields = [], string[]
// include = [],
// typedesc<record {}>[] typeDescriptions = []
// )`
// which returns `record {}|persist:Error`

persistClient, 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, typeMap, true, key, true, fields, true, includes, true,
typeDescriptions, true);

return null;
return env.yieldAndRun(() -> {
try {
return env.getRuntime().callMethod(
// Call `RedisClient.runReadQuery(
// typedesc<record {}> rowType, map<anydata> typeMap, string[] fields = [],
// string[] include = []
// )`
// which returns `stream<record{}|error?>|persist:Error`
persistClient, RUN_READ_BY_KEY_QUERY_METHOD, null, targetType, typeMap, key, fields, includes
, typeDescriptions);
} catch (BError bError) {
return wrapError(bError);
}
});
}
}

0 comments on commit ca9484b

Please sign in to comment.