Skip to content

Commit

Permalink
Merge pull request #145 from ravinperera00/java21_2
Browse files Browse the repository at this point in the history
Migrate to new Runtime APIs
  • Loading branch information
warunalakshitha authored Nov 16, 2024
2 parents c51a901 + 267d6c5 commit 3dd2c94
Show file tree
Hide file tree
Showing 9 changed files with 122 additions and 50 deletions.
8 changes: 4 additions & 4 deletions ballerina/Ballerina.toml
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
[package]
org = "ballerina"
name = "soap"
version = "2.0.1"
version = "2.1.0"
authors = ["Ballerina"]
export=["soap", "soap.soap11", "soap.soap12"]
keywords = ["soap"]
repository = "https://github.com/ballerina-platform/module-ballerina-soap"
icon = "icon.png"
license = ["Apache-2.0"]
distribution = "2201.10.0-20241011-161100-51978649"
distribution = "2201.11.0-20241112-214900-6b80ab87"

[build-options]
observabilityIncluded = true
Expand All @@ -19,8 +19,8 @@ graalvmCompatible = true
[[platform.java21.dependency]]
groupId = "io.ballerina.stdlib"
artifactId = "soap-native"
version = "2.0.1"
path = "../native/build/libs/soap-native-2.0.1-SNAPSHOT.jar"
version = "2.1.0"
path = "../native/build/libs/soap-native-2.1.0-SNAPSHOT.jar"

[[platform.java21.dependency]]
groupId = "org.apache.wss4j"
Expand Down
31 changes: 22 additions & 9 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-20241011-161100-51978649"
distribution-version = "2201.11.0-20241112-214900-6b80ab87"

[[package]]
org = "ballerina"
Expand All @@ -26,13 +26,14 @@ version = "3.8.1"
dependencies = [
{org = "ballerina", name = "constraint"},
{org = "ballerina", name = "jballerina.java"},
{org = "ballerina", name = "task"}
{org = "ballerina", name = "task"},
{org = "ballerina", name = "time"}
]

[[package]]
org = "ballerina"
name = "constraint"
version = "1.5.1"
version = "1.6.0"
dependencies = [
{org = "ballerina", name = "jballerina.java"}
]
Expand All @@ -49,6 +50,15 @@ modules = [
{org = "ballerina", packageName = "crypto", moduleName = "crypto"}
]

[[package]]
org = "ballerina"
name = "data.jsondata"
version = "0.3.0"
dependencies = [
{org = "ballerina", name = "jballerina.java"},
{org = "ballerina", name = "lang.object"}
]

[[package]]
org = "ballerina"
name = "file"
Expand All @@ -63,12 +73,13 @@ dependencies = [
[[package]]
org = "ballerina"
name = "http"
version = "2.12.1"
version = "2.13.0"
dependencies = [
{org = "ballerina", name = "auth"},
{org = "ballerina", name = "cache"},
{org = "ballerina", name = "constraint"},
{org = "ballerina", name = "crypto"},
{org = "ballerina", name = "data.jsondata"},
{org = "ballerina", name = "file"},
{org = "ballerina", name = "io"},
{org = "ballerina", name = "jballerina.java"},
Expand Down Expand Up @@ -123,7 +134,8 @@ dependencies = [
{org = "ballerina", name = "jballerina.java"},
{org = "ballerina", name = "lang.int"},
{org = "ballerina", name = "lang.string"},
{org = "ballerina", name = "log"}
{org = "ballerina", name = "log"},
{org = "ballerina", name = "time"}
]

[[package]]
Expand Down Expand Up @@ -225,7 +237,7 @@ dependencies = [
[[package]]
org = "ballerina"
name = "mime"
version = "2.10.1"
version = "2.10.2"
dependencies = [
{org = "ballerina", name = "io"},
{org = "ballerina", name = "jballerina.java"},
Expand All @@ -245,13 +257,14 @@ dependencies = [
{org = "ballerina", name = "crypto"},
{org = "ballerina", name = "jballerina.java"},
{org = "ballerina", name = "log"},
{org = "ballerina", name = "time"},
{org = "ballerina", name = "url"}
]

[[package]]
org = "ballerina"
name = "observe"
version = "1.3.1"
version = "1.4.0"
dependencies = [
{org = "ballerina", name = "jballerina.java"}
]
Expand All @@ -268,7 +281,7 @@ dependencies = [
[[package]]
org = "ballerina"
name = "soap"
version = "2.0.1"
version = "2.1.0"
dependencies = [
{org = "ballerina", name = "crypto"},
{org = "ballerina", name = "http"},
Expand Down Expand Up @@ -311,7 +324,7 @@ modules = [
[[package]]
org = "ballerina"
name = "time"
version = "2.5.1"
version = "2.6.0"
dependencies = [
{org = "ballerina", name = "jballerina.java"}
]
Expand Down
5 changes: 4 additions & 1 deletion ballerina/modules/soap11/tests/soap11_client_test.bal
Original file line number Diff line number Diff line change
Expand Up @@ -387,7 +387,7 @@ function testSoapReceiveWithAsymmetricBindingAndInboundConfig() returns error? {
xmlns "http://schemas.xmlsoap.org/soap/envelope/" as soap11;
Client soapClient = check new ("http://localhost:9090",
{
outboundSecurity: {
outboundSecurity: [{
signatureConfig: {
keystore: {
path: KEY_STORE_PATH_2,
Expand All @@ -408,6 +408,9 @@ function testSoapReceiveWithAsymmetricBindingAndInboundConfig() returns error? {
encryptionAlgorithm: wssec:AES_128
}
},
{
timeToLive: 1
}],
inboundSecurity: {
decryptKeystore: {
path: KEY_STORE_PATH_2,
Expand Down
67 changes: 62 additions & 5 deletions ballerina/modules/soap12/tests/soap12_client_test.bal
Original file line number Diff line number Diff line change
Expand Up @@ -414,13 +414,13 @@ function testSoapEndpoint() returns error? {
}

@test:Config {
groups: ["soap12", "send_receive", "new2"]
groups: ["soap12", "send_receive"]
}
function testSoapReceiveWithAsymmetricBindingAndInboundConfig() returns error? {
xmlns "http://www.w3.org/2003/05/soap-envelope" as soap11;
xmlns "http://www.w3.org/2003/05/soap-envelope" as soap12;
Client soapClient = check new ("http://localhost:9091",
{
outboundSecurity: {
outboundSecurity: [{
signatureConfig: {
keystore: {
path: KEY_STORE_PATH_2,
Expand All @@ -440,7 +440,58 @@ function testSoapReceiveWithAsymmetricBindingAndInboundConfig() returns error? {
publicKeyAlias: ALIAS,
encryptionAlgorithm: wssec:AES_128
}
},
}],
inboundSecurity: {
decryptKeystore: {
path: KEY_STORE_PATH_2,
password: PASSWORD
},
signatureKeystore: {
path: KEY_STORE_PATH_2,
password: PASSWORD
}
}
}
);
xml body = xml `<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding/"><soap:Body xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-9fc31395-d908-4efa-96e5-754b03963236"><quer:Add xmlns:quer="http://tempuri.org/"><quer:intA>2</quer:intA><quer:intB>3</quer:intB></quer:Add></soap:Body></soap:Envelope>`;
xml response = check soapClient->sendReceive(body, "http://tempuri.org/Add");
test:assertEquals((response/<soap12:Body>).toString(), (body/<soap12:Body>).toString());
}

@test:Config {
groups: ["soap12", "send_receive"]
}
function testSoapReceiveWithArrayOfOutboundConfigAndInboundConfig() returns error? {
xmlns "http://www.w3.org/2003/05/soap-envelope" as soap12;
Client soapClient = check new ("http://localhost:9091",
{
outboundSecurity: [{
signatureConfig: {
keystore: {
path: KEY_STORE_PATH_2,
password: PASSWORD
},
privateKeyAlias: ALIAS,
privateKeyPassword: PASSWORD,
signatureAlgorithm: soap:RSA_SHA512,
canonicalizationAlgorithm: soap:C14N_EXCL_OMIT_COMMENTS,
digestAlgorithm: soap:SHA512
},
encryptionConfig: {
keystore: {
path: KEY_STORE_PATH_2,
password: PASSWORD
},
publicKeyAlias: ALIAS,
encryptionAlgorithm: wssec:AES_128
}
}, {
timeToLive: 1
}, {
username: "user",
password: "password",
passwordType: wssec:TEXT
}],
inboundSecurity: {
decryptKeystore: {
path: KEY_STORE_PATH_2,
Expand All @@ -455,5 +506,11 @@ function testSoapReceiveWithAsymmetricBindingAndInboundConfig() returns error? {
);
xml body = xml `<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding/"><soap:Body xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" wsu:Id="id-9fc31395-d908-4efa-96e5-754b03963236"><quer:Add xmlns:quer="http://tempuri.org/"><quer:intA>2</quer:intA><quer:intB>3</quer:intB></quer:Add></soap:Body></soap:Envelope>`;
xml response = check soapClient->sendReceive(body, "http://tempuri.org/Add");
test:assertEquals((response/<soap11:Body>).toString(), (body/<soap11:Body>).toString());
string:RegExp usernameTokenTag = re `<wsse:UsernameToken .*>.*</wsse:UsernameToken>`;
string:RegExp usernameTag = re `<wsse:Username>user</wsse:Username>`;
test:assertTrue(response.toString().includesMatch(usernameTokenTag));
test:assertTrue(response.toString().includesMatch(usernameTag));
string:RegExp passwordTag = re `<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">password</wsse:Password>`;
test:assertTrue(response.toString().includesMatch(passwordTag));
test:assertEquals((response/<soap12:Body>).toString(), (body/<soap12:Body>).toString());
}
2 changes: 1 addition & 1 deletion ballerina/soap_utils.bal
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public isolated function applySecurityPolicies(wssec:OutboundSecurityConfig|wsse
} else {
xml securedEnvelope = envelope.clone();
foreach wssec:OutboundSecurityConfig policy in security {
securedEnvelope = check applySecurityPolicies(policy, securedEnvelope);
securedEnvelope = check applySecurityPolicies(policy, securedEnvelope, soap12);
}
return securedEnvelope;
}
Expand Down
2 changes: 1 addition & 1 deletion build-config/resources/Ballerina.toml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ keywords = ["soap"]
repository = "https://github.com/ballerina-platform/module-ballerina-soap"
icon = "icon.png"
license = ["Apache-2.0"]
distribution = "2201.10.0-20241011-161100-51978649"
distribution = "2201.11.0-20241112-214900-6b80ab87"

[build-options]
observabilityIncluded = true
Expand Down
1 change: 1 addition & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ subprojects {
ballerinaStdLibs "io.ballerina.stdlib:os-ballerina:${project.stdlibOsVersion}"
ballerinaStdLibs "io.ballerina.stdlib:url-ballerina:${project.stdlibUrlVersion}"
ballerinaStdLibs "io.ballerina.stdlib:io-ballerina:${project.stdlibIoVersion}"
ballerinaStdLibs "io.ballerina.lib:data.jsondata-ballerina:${stdlibDataJsonDataVersion}"

externalJars (group: 'org.apache.wss4j', name: 'wss4j-ws-security-dom', version: "${wsSecurityDomVersion}") {
transitive = false
Expand Down
43 changes: 22 additions & 21 deletions gradle.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
org.gradle.caching=true
group=io.ballerina.stdlib
version=2.0.1-SNAPSHOT
version=2.1.0-SNAPSHOT

checkstylePluginVersion=10.12.0
spotbugsPluginVersion=6.0.18
Expand All @@ -9,35 +9,36 @@ downloadPluginVersion=5.4.0
releasePluginVersion=2.8.0
ballerinaGradlePluginVersion=2.2.4

ballerinaLangVersion=2201.10.0-20241011-161100-51978649
ballerinaLangVersion=2201.11.0-20241112-214900-6b80ab87

stdlibIoVersion=1.6.2-20240928-084100-656404f
stdlibTimeVersion=2.5.1-20240930-120200-e59222b
stdlibUrlVersion=2.4.1-20240930-120200-b7fb9e1
stdlibIoVersion=1.6.2-20241112-233100-995cf5f
stdlibTimeVersion=2.6.0-20241113-073800-201b904
stdlibUrlVersion=2.4.1-20241113-073900-335ff51

stdlibConstraintVersion=1.5.1-20240930-123400-5ecd396
stdlibCryptoVersion=2.7.3-20240930-132000-5ecc9ab
stdlibLogVersion=2.10.1-20240930-154200-5ab2aa4
stdlibOsVersion=1.8.1-20241001-120600-dd1626e
stdlibRandomVersion=1.5.1-20240930-193000-e5c6c0e
stdlibTaskVersion=2.5.1-20241002-145700-5bdb843
stdlibConstraintVersion=1.6.0-20241113-090900-d276ad5
stdlibCryptoVersion=2.7.3-20241113-081400-d015a39
stdlibLogVersion=2.10.1-20241113-120000-4577868
stdlibOsVersion=1.8.1-20241113-122000-cca973b
stdlibRandomVersion=1.5.1-20241113-122300-1bc770e
stdlibTaskVersion=2.5.1-20241113-123500-f905281

stdlibCacheVersion=3.8.1-20241007-154900-63f4403
stdlibFileVersion=1.10.1-20241007-160900-03f7b64
stdlibMimeVersion=2.10.1-20241009-141200-8b6c9f0
stdlibUuidVersion=1.8.1-20241009-134600-a05012b
stdlibCacheVersion=3.8.1-20241113-125700-b75a1bf
stdlibFileVersion=1.10.1-20241113-151700-e1a2e38
stdlibMimeVersion=2.10.2-20241113-154200-d953747
stdlibUuidVersion=1.8.1-20241113-154400-443c67b

stdlibAuthVersion=2.12.1-20241010-130800-733dbef
stdlibJwtVersion=2.13.1-20241010-123600-5ea6a94
stdlibOAuth2Version=2.12.1-20241010-123600-0e0cfcc
stdlibAuthVersion=2.12.1-20241113-162300-ded40eb
stdlibDataJsonDataVersion=0.3.0-20241113-163100-6d332e1
stdlibJwtVersion=2.13.1-20241113-162400-b59ccfa
stdlibOAuth2Version=2.12.1-20241113-162400-4c6ddfe

stdlibHttpVersion=2.12.1-20241018-081800-bb91312
stdlibHttpVersion=2.13.0-20241114-182900-7e9f66a

wsSecurityDomVersion=3.0.1
wsSecurityCommonVersion=3.0.1
xmlSecVersion=3.0.3
guavaVersion=32.1.1-jre

# Ballerinax Observer
observeVersion=1.3.1-20241007-161000-645452d
observeInternalVersion=1.3.1-20241015-172900-cdc3cb3
observeVersion=1.4.0-20241113-092000-b83ae74
observeInternalVersion=1.3.1-20241113-101700-265054d
13 changes: 5 additions & 8 deletions native/src/main/java/io/ballerina/lib/soap/Soap.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,36 +28,33 @@ public class Soap {

public static Object sendReceive11(Environment env, BObject soap11, Object body, BString action,
BMap<BString, BString[]> headers, BString path, BTypedesc typeDesc) {
env.yieldAndRun(() -> {
return env.yieldAndRun(() -> {
try {
Object[] arguments = new Object[]{body, action, headers, path};
Object result = env.getRuntime().call(soap11, REMOTE_FUNCTION, arguments);
Object result = env.getRuntime().callMethod(soap11, REMOTE_FUNCTION, null, arguments);
if (result instanceof BError) {
((BError) result).printStackTrace();
System.exit(1);

}
return result;
} catch (BError bError) {
bError.printStackTrace();
System.exit(1);
}
return null;
});
return null;
}

public static Object sendReceive12(Environment env, BObject soap12, Object body, Object action,
BMap<BString, BString[]> headers, BString path, BTypedesc typeDesc) {
env.yieldAndRun(() -> {
return env.yieldAndRun(() -> {
try {
Object[] arguments = new Object[]{body, action, headers, path};
env.getRuntime().call(soap12, REMOTE_FUNCTION, arguments);
return env.getRuntime().callMethod(soap12, REMOTE_FUNCTION, null, arguments);
} catch (BError bError) {
bError.printStackTrace();
System.exit(1);
}
return null;
});
return null;
}
}

0 comments on commit 3dd2c94

Please sign in to comment.