Skip to content

Commit

Permalink
Merge pull request #1307 from warunalakshitha/syncJava21
Browse files Browse the repository at this point in the history
Migrate to Java21
  • Loading branch information
warunalakshitha authored Nov 18, 2024
2 parents 73be992 + 5848c7b commit 748274c
Show file tree
Hide file tree
Showing 13 changed files with 44 additions and 33 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ This repository only contains the source code for the module.

### 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/)

Expand Down
4 changes: 2 additions & 2 deletions ballerina/Ballerina.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,10 @@ icon = "icon.png"
license = ["Apache-2.0"]
distribution = "2201.11.0"

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

[[platform.java17.dependency]]
[[platform.java21.dependency]]
groupId = "io.ballerina.stdlib"
artifactId = "io-native"
path = "../native/build/libs/io-native-1.7.0-SNAPSHOT.jar"
Expand Down
2 changes: 1 addition & 1 deletion 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.11.0-20241111-172200-095db58f"
distribution-version = "2201.11.0-20241117-133400-a3054b77"

[[package]]
org = "ballerina"
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 @@ -9,17 +9,17 @@ icon = "icon.png"
license = ["Apache-2.0"]
distribution = "2201.11.0"

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

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


[[platform.java17.dependency]]
[[platform.java21.dependency]]
path = "../test-utils/build/libs/io-test-utils-@project.version@.jar"
scope = "testOnly"
version = "@project.version@"
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
org.gradle.caching=true
group=io.ballerina.stdlib
version=1.7.0-SNAPSHOT
ballerinaLangVersion=2201.11.0-20241111-172200-095db58f
ballerinaLangVersion=2201.11.0-20241117-133400-a3054b77
puppycrawlCheckstyleVersion=10.12.0
testngVersion=7.6.1
slf4jVersion=1.7.30
jacocoVersion=0.8.10
githubSpotbugsVersion=5.0.14
githubSpotbugsVersion=6.0.18
githubJohnrengelmanShadowVersion=8.1.1
underCouchDownloadVersion=5.4.0
researchgateReleaseVersion=2.8.0
Expand Down
7 changes: 5 additions & 2 deletions native/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -49,9 +49,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")
ignoreFailures = true
effort = "max"
reportLevel = "low"
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 @@ -18,12 +18,12 @@

package io.ballerina.stdlib.io.nativeimpl;

import io.ballerina.runtime.api.TypeTags;
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.StructureType;
import io.ballerina.runtime.api.types.Type;
import io.ballerina.runtime.api.types.TypeTags;
import io.ballerina.runtime.api.types.UnionType;
import io.ballerina.runtime.api.utils.StringUtils;
import io.ballerina.runtime.api.utils.TypeUtils;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,14 @@
package io.ballerina.stdlib.io.nativeimpl;

import io.ballerina.runtime.api.Environment;
import io.ballerina.runtime.api.Future;
import io.ballerina.runtime.api.creators.ErrorCreator;
import io.ballerina.runtime.api.utils.StringUtils;
import io.ballerina.runtime.api.values.BString;

import java.io.PrintStream;
import java.nio.charset.Charset;
import java.util.Scanner;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.CompletableFuture;

/**
* Extern function ballerina/io:readln.
Expand All @@ -36,15 +36,21 @@ public class ReadlnAny {

private static final Scanner sc = new Scanner(System.in, Charset.defaultCharset().displayName());
private static final PrintStream printStream = System.out;
private static final ExecutorService executor = Executors.newSingleThreadExecutor();

private ReadlnAny() {}

public static void readln(Environment env, Object result) {
public static BString readln(Environment env, Object result) {
if (result != null) {
printStream.print(result);
}
Future balFuture = env.markAsync();
executor.execute(() -> balFuture.complete(StringUtils.fromString(sc.nextLine())));
return env.yieldAndRun(() -> {
CompletableFuture<BString> future = new CompletableFuture<>();
Thread.startVirtualThread(() -> future.complete(StringUtils.fromString(sc.nextLine())));
try {
return future.get();
} catch (Throwable e) {
throw ErrorCreator.createError(e);
}
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,11 +18,11 @@

package io.ballerina.stdlib.io.nativeimpl;

import io.ballerina.runtime.api.TypeTags;
import io.ballerina.runtime.api.creators.TypeCreator;
import io.ballerina.runtime.api.creators.ValueCreator;
import io.ballerina.runtime.api.types.StructureType;
import io.ballerina.runtime.api.types.Type;
import io.ballerina.runtime.api.types.TypeTags;
import io.ballerina.runtime.api.utils.StringUtils;
import io.ballerina.runtime.api.utils.TypeUtils;
import io.ballerina.runtime.api.values.BArray;
Expand All @@ -44,7 +44,6 @@
import java.util.ArrayList;
import java.util.Map;


import static io.ballerina.stdlib.io.utils.IOConstants.CSV_RETURN_TYPE;
import static io.ballerina.stdlib.io.utils.IOConstants.HEADER_NAMES;
import static io.ballerina.stdlib.io.utils.IOConstants.ITERATOR_NAME;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,13 @@

package io.ballerina.stdlib.io.nativeimpl;

import io.ballerina.runtime.api.TypeTags;
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.StructureType;
import io.ballerina.runtime.api.types.TableType;
import io.ballerina.runtime.api.types.Type;
import io.ballerina.runtime.api.types.TypeTags;
import io.ballerina.runtime.api.types.UnionType;
import io.ballerina.runtime.api.utils.StringUtils;
import io.ballerina.runtime.api.values.BArray;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,10 +18,10 @@

package io.ballerina.stdlib.io.utils;

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.MapType;
import io.ballerina.runtime.api.types.PredefinedTypes;
import io.ballerina.runtime.api.utils.StringUtils;
import io.ballerina.runtime.api.values.BMap;
import io.ballerina.runtime.api.values.BMapInitialValueEntry;
Expand Down
16 changes: 8 additions & 8 deletions native/src/main/java/io/ballerina/stdlib/io/utils/Utils.java
Original file line number Diff line number Diff line change
Expand Up @@ -90,17 +90,17 @@ private static byte[] getByteArray(InputStream input) throws IOException {
@SuppressWarnings("unchecked")
public static Object encode(Object input, String charset, boolean isMimeSpecific) {
switch (TypeUtils.getReferredType(TypeUtils.getType(input)).getTag()) {
case io.ballerina.runtime.api.TypeTags.ARRAY_TAG:
case io.ballerina.runtime.api.types.TypeTags.ARRAY_TAG:
return encodeBlob(((BArray) input).getBytes(), isMimeSpecific);
case io.ballerina.runtime.api.TypeTags.OBJECT_TYPE_TAG:
case io.ballerina.runtime.api.TypeTags.RECORD_TYPE_TAG:
case io.ballerina.runtime.api.types.TypeTags.OBJECT_TYPE_TAG:
case io.ballerina.runtime.api.types.TypeTags.RECORD_TYPE_TAG:
//TODO : recheck following casing
BObject byteChannel = (BObject) input;
if (STRUCT_TYPE.equals(TypeUtils.getType(byteChannel).getName())) {
return encodeByteChannel(byteChannel, isMimeSpecific);
}
return Utils.createBase64Error(ENCODING_ERROR, "incompatible object", isMimeSpecific);
case io.ballerina.runtime.api.TypeTags.STRING_TAG:
case io.ballerina.runtime.api.types.TypeTags.STRING_TAG:
return encodeString(input.toString(), charset, isMimeSpecific);
default:
return Utils.createBase64Error(ENCODING_ERROR, "incompatible input", isMimeSpecific);
Expand All @@ -117,12 +117,12 @@ public static Object encode(Object input, String charset, boolean isMimeSpecific
*/
public static Object decode(Object encodedInput, String charset, boolean isMimeSpecific) {
switch (TypeUtils.getType(encodedInput).getTag()) {
case io.ballerina.runtime.api.TypeTags.ARRAY_TAG:
case io.ballerina.runtime.api.types.TypeTags.ARRAY_TAG:
return decodeBlob(((BArray) encodedInput).getBytes(), isMimeSpecific);
case io.ballerina.runtime.api.TypeTags.OBJECT_TYPE_TAG:
case io.ballerina.runtime.api.TypeTags.RECORD_TYPE_TAG:
case io.ballerina.runtime.api.types.TypeTags.OBJECT_TYPE_TAG:
case io.ballerina.runtime.api.types.TypeTags.RECORD_TYPE_TAG:
return decodeByteChannel((BObject) encodedInput, isMimeSpecific);
case io.ballerina.runtime.api.TypeTags.STRING_TAG:
case io.ballerina.runtime.api.types.TypeTags.STRING_TAG:
return decodeString(encodedInput, charset, isMimeSpecific);
default:
return Utils.createBase64Error(DECODING_ERROR, "incompatible input", isMimeSpecific);
Expand Down
7 changes: 5 additions & 2 deletions test-utils/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,12 @@ dependencies {
}

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")
ignoreFailures = true
effort = "max"
reportLevel = "low"
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

0 comments on commit 748274c

Please sign in to comment.