diff --git a/ballerina/ping_message_job.bal b/ballerina/ping_message_job.bal index da785c757..22593d2ff 100644 --- a/ballerina/ping_message_job.bal +++ b/ballerina/ping_message_job.bal @@ -14,8 +14,8 @@ // specific language governing permissions and limitations // under the License. -import ballerina/websocket; import ballerina/task; +import ballerina/websocket; class PingMessageJob { *task:Job; @@ -49,18 +49,19 @@ class PingMessageJob { private isolated function sendPeriodicPingMessageRequests() { do { + task:JobId? id; lock { - task:JobId? id = self.id; - if id == () { - return; - } - if !self.caller.isOpen() { - check self.unschedule(); - return; - } - PingMessage message = {'type: WS_PING}; - check writeMessage(self.caller, message); + id = self.id; + } + if id == () { + return; + } + if !self.caller.isOpen() { + check self.unschedule(); + return; } + PingMessage message = {'type: WS_PING}; + check writeMessage(self.caller, message); } on fail error cause { string message = cause is websocket:Error ? "Failed to send ping message: " : "Failed to unschedule PingMessageJob: "; diff --git a/ballerina/place_holder.bal b/ballerina/place_holder.bal index 2fae8869c..1e1dd727a 100644 --- a/ballerina/place_holder.bal +++ b/ballerina/place_holder.bal @@ -24,17 +24,13 @@ isolated class Placeholder { self.setField('field); } - isolated function setValue(anydata value) { - lock { - self.value = value.clone(); - } - } + isolated function setValue(anydata value) = @java:Method { + 'class: "io.ballerina.stdlib.graphql.runtime.engine.Placeholder" + } external; - isolated function getValue() returns anydata { - lock { - return self.value.clone(); - } - } + isolated function getValue() returns anydata = @java:Method { + 'class: "io.ballerina.stdlib.graphql.runtime.engine.Placeholder" + } external; isolated function setField(Field 'field) = @java:Method { name: "setFieldValue", diff --git a/native/src/main/java/io/ballerina/stdlib/graphql/runtime/engine/Placeholder.java b/native/src/main/java/io/ballerina/stdlib/graphql/runtime/engine/Placeholder.java index 2cb6db734..fd21fe51d 100644 --- a/native/src/main/java/io/ballerina/stdlib/graphql/runtime/engine/Placeholder.java +++ b/native/src/main/java/io/ballerina/stdlib/graphql/runtime/engine/Placeholder.java @@ -26,11 +26,20 @@ * This class provides native implementations of the Ballerina Placeholder class. */ public class Placeholder { + private static final BString PLACE_HOLDER_VALUE_OBJECT = StringUtils.fromString("value"); private static final BString PLACE_HOLDER_FIELD_OBJECT = StringUtils.fromString("field"); private Placeholder() { } + public static void setValue(BObject placeholder, Object value) { + placeholder.set(PLACE_HOLDER_VALUE_OBJECT, value); + } + + public static Object getValue(BObject placeholder) { + return placeholder.get(PLACE_HOLDER_VALUE_OBJECT); + } + public static void setFieldValue(BObject placeholder, BObject field) { placeholder.set(PLACE_HOLDER_FIELD_OBJECT, field); }