Skip to content

Commit

Permalink
Merge pull request #51 from ravinperera00/java21_sync
Browse files Browse the repository at this point in the history
Migrate to Java 21
  • Loading branch information
warunalakshitha authored Nov 18, 2024
2 parents 048373b + 1618104 commit ed928d6
Show file tree
Hide file tree
Showing 18 changed files with 138 additions and 226 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -464,7 +464,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
14 changes: 7 additions & 7 deletions ballerina/Ballerina.toml
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
[package]
org = "ballerina"
name = "data.xmldata"
version = "1.0.0"
version = "1.0.1"
authors = ["Ballerina"]
keywords = ["xml"]
repository = "https://github.com/ballerina-platform/module-ballerina-data-xmldata"
license = ["Apache-2.0"]
distribution = "2201.10.0"
export = ["data.xmldata"]

[[platform.java17.dependency]]
[[platform.java21.dependency]]
groupId = "io.ballerina.lib"
artifactId = "data-native"
version = "1.0.0"
path = "../native/build/libs/data.xmldata-native-1.0.0.jar"
version = "1.0.1"
path = "../native/build/libs/data.xmldata-native-1.0.1-SNAPSHOT.jar"

[[platform.java17.dependency]]
[[platform.java21.dependency]]
groupId = "io.ballerina.stdlib"
artifactId = "constraint-native"
version = "1.5.0"
path = "./lib/constraint-native-1.5.0.jar"
version = "1.6.0"
path = "./lib/constraint-native-1.6.0-20241113-090900-d276ad5.jar"
2 changes: 1 addition & 1 deletion ballerina/CompilerPlugin.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ id = "constraint-compiler-plugin"
class = "io.ballerina.lib.data.xmldata.compiler.XmldataCompilerPlugin"

[[dependency]]
path = "../compiler-plugin/build/libs/data.xmldata-compiler-plugin-1.0.0.jar"
path = "../compiler-plugin/build/libs/data.xmldata-compiler-plugin-1.0.1-SNAPSHOT.jar"
8 changes: 4 additions & 4 deletions ballerina/Dependencies.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@

[ballerina]
dependencies-toml-version = "2"
distribution-version = "2201.10.0"
distribution-version = "2201.11.0-20241112-214900-6b80ab87"

[[package]]
org = "ballerina"
name = "constraint"
version = "1.5.0"
version = "1.6.0"
scope = "testOnly"
dependencies = [
{org = "ballerina", name = "jballerina.java"}
Expand All @@ -22,7 +22,7 @@ modules = [
[[package]]
org = "ballerina"
name = "data.xmldata"
version = "1.0.0"
version = "1.0.1"
dependencies = [
{org = "ballerina", name = "constraint"},
{org = "ballerina", name = "io"},
Expand Down Expand Up @@ -116,7 +116,7 @@ modules = [
[[package]]
org = "ballerina"
name = "time"
version = "2.4.1"
version = "2.6.0"
scope = "testOnly"
dependencies = [
{org = "ballerina", name = "jballerina.java"}
Expand Down
4 changes: 2 additions & 2 deletions build-config/resources/Ballerina.toml
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ license = ["Apache-2.0"]
distribution = "2201.10.0"
export = ["data.xmldata"]

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

[[platform.java17.dependency]]
[[platform.java21.dependency]]
groupId = "io.ballerina.stdlib"
artifactId = "constraint-native"
version = "@constraint.version@"
Expand Down
7 changes: 5 additions & 2 deletions compiler-plugin-test/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,11 @@ checkstyle {
checkstyleTest.dependsOn(":checkstyle:downloadCheckstyleRuleFiles")

spotbugsTest {
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")
reports {
html.enabled true
Expand Down
7 changes: 5 additions & 2 deletions compiler-plugin/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,11 @@ checkstyle {
checkstyleMain.dependsOn(":checkstyle:downloadCheckstyleRuleFiles")

spotbugsMain {
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")
reports {
html.enabled true
Expand Down
10 changes: 5 additions & 5 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
org.gradle.caching=true
group=io.ballerina.lib
version=1.0.1-SNAPSHOT
ballerinaLangVersion=2201.10.0
ballerinaLangVersion=2201.11.0-20241112-214900-6b80ab87

checkstyleToolVersion=10.12.0
puppycrawlCheckstyleVersion=10.12.0
testngVersion=7.6.1
slf4jVersion=2.0.7
githubSpotbugsVersion=5.0.14
githubSpotbugsVersion=6.0.18
githubJohnrengelmanShadowVersion=8.1.1
underCouchDownloadVersion=4.0.4
researchgateReleaseVersion=2.8.0
ballerinaGradlePluginVersion=2.0.1

stdlibIoVersion=1.6.1
stdlibTimeVersion=2.4.0
stdlibConstraintVersion=1.5.0
stdlibIoVersion=1.6.2-20241112-233100-995cf5f
stdlibTimeVersion=2.6.0-20241113-073800-201b904
stdlibConstraintVersion=1.6.0-20241113-090900-d276ad5
9 changes: 6 additions & 3 deletions native/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -51,9 +51,12 @@ tasks.withType(Checkstyle) {
}

spotbugsMain {
enabled=false
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")
enabled = false
effort = SpotBugsEffort.MAX
reportLevel = SpotBugsConfidence.LOW
reportsDir = file("$project.buildDir/reports/spotbugs")
reports {
html.enabled true
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,12 +20,12 @@

import io.ballerina.lib.data.xmldata.utils.DiagnosticErrorCode;
import io.ballerina.lib.data.xmldata.utils.DiagnosticLog;
import io.ballerina.runtime.api.PredefinedTypes;
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.PredefinedTypes;
import io.ballerina.runtime.api.types.ReferenceType;
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.TypeUtils;
import io.ballerina.runtime.api.values.BDecimal;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,10 +21,7 @@
import io.ballerina.lib.data.xmldata.utils.DiagnosticErrorCode;
import io.ballerina.lib.data.xmldata.utils.DiagnosticLog;
import io.ballerina.runtime.api.Environment;
import io.ballerina.runtime.api.async.Callback;
import io.ballerina.runtime.api.async.StrandMetadata;
import io.ballerina.runtime.api.types.MethodType;
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 @@ -34,10 +31,7 @@
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.Map;
import java.util.concurrent.Semaphore;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Consumer;

/**
* Java Input Stream based on Ballerina byte block stream. <code>stream<byte[], error?></code>
Expand All @@ -49,28 +43,19 @@ public class BallerinaByteBlockInputStream extends InputStream {
private final BObject iterator;
private final Environment env;
private final String nextMethodName;
private final Type returnType;
private final String strandName;
private final StrandMetadata metadata;
private final Map<String, Object> properties;
private final AtomicBoolean done = new AtomicBoolean(false);
private final MethodType closeMethod;
private final Consumer<Object> futureResultConsumer;
private BError error = null;

private byte[] currentChunk = new byte[0];
private int nextChunkIndex = 0;

public BallerinaByteBlockInputStream(Environment env, BObject iterator, MethodType nextMethod,
MethodType closeMethod, Consumer<Object> futureResultConsumer) {
MethodType closeMethod) {
this.env = env;
this.iterator = iterator;
this.nextMethodName = nextMethod.getName();
this.returnType = nextMethod.getReturnType();
this.closeMethod = closeMethod;
this.strandName = env.getStrandName().orElse("");
this.metadata = env.getStrandMetadata();
this.properties = Map.of();
this.futureResultConsumer = futureResultConsumer;
}

@Override
Expand All @@ -88,8 +73,7 @@ public int read() {
return read();
}
} catch (InterruptedException e) {
BError error = DiagnosticLog.error(DiagnosticErrorCode.CAN_NOT_READ_STREAM);
futureResultConsumer.accept(error);
this.error = DiagnosticLog.error(DiagnosticErrorCode.CAN_NOT_READ_STREAM);
return -1;
}
return -1;
Expand All @@ -98,25 +82,8 @@ public int read() {
@Override
public void close() throws IOException {
super.close();
Semaphore semaphore = new Semaphore(0);
if (closeMethod != null) {
env.getRuntime().invokeMethodAsyncSequentially(iterator, closeMethod.getName(), strandName, metadata,
new Callback() {
@Override
public void notifyFailure(BError bError) {
semaphore.release();
}

@Override
public void notifySuccess(Object result) {
semaphore.release();
}
}, properties, returnType);
}
try {
semaphore.acquire();
} catch (InterruptedException e) {
throw new IOException("Error while closing the stream", e);
env.getRuntime().callMethod(iterator, closeMethod.getName(), null);
}
}

Expand All @@ -125,44 +92,28 @@ private boolean hasBytesInCurrentChunk() {
}

private boolean readNextChunk() throws InterruptedException {
Semaphore semaphore = new Semaphore(0);
Callback callback = new Callback() {

@Override
public void notifyFailure(BError bError) {
// Panic with an error
try {
Object result = env.getRuntime().callMethod(iterator, nextMethodName, null);
if (result == null) {
done.set(true);
futureResultConsumer.accept(bError);
currentChunk = new byte[0];
semaphore.release();
// TODO : Should we panic here?
return true;
}

@Override
public void notifySuccess(Object result) {
if (result == null) {
done.set(true);
currentChunk = new byte[0];
semaphore.release();
return;
}
if (result instanceof BMap<?, ?>) {
BMap<BString, Object> valueRecord = (BMap<BString, Object>) result;
final BString value = Arrays.stream(valueRecord.getKeys()).findFirst().get();
final BArray arrayValue = valueRecord.getArrayValue(value);
currentChunk = arrayValue.getByteArray();
semaphore.release();
} else {
// Case where Completes with an error
done.set(true);
semaphore.release();
}
if (result instanceof BMap<?, ?>) {
BMap<BString, Object> valueRecord = (BMap<BString, Object>) result;
final BString value = Arrays.stream(valueRecord.getKeys()).findFirst().get();
final BArray arrayValue = valueRecord.getArrayValue(value);
currentChunk = arrayValue.getByteArray();
} else {
done.set(true);
}

};
env.getRuntime().invokeMethodAsyncSequentially(iterator, nextMethodName, strandName, metadata, callback,
properties, returnType);
semaphore.acquire();
} catch (BError bError) {
done.set(true);
currentChunk = new byte[0];
}
return !done.get();
}

public BError getError() {
return this.error;
}
}
Loading

0 comments on commit ed928d6

Please sign in to comment.