From 914f48c856e95cbc1510e7038cf29fffc4b86da1 Mon Sep 17 00:00:00 2001 From: Nuvindu Date: Tue, 16 Dec 2025 09:42:59 +0530 Subject: [PATCH] Handle propagating errors occurred while executing APIs --- .../stdlib/ftp/client/FtpClient.java | 47 +++++++++++++++---- 1 file changed, 38 insertions(+), 9 deletions(-) diff --git a/native/src/main/java/io/ballerina/stdlib/ftp/client/FtpClient.java b/native/src/main/java/io/ballerina/stdlib/ftp/client/FtpClient.java index 3be24560f..8cd5e17e7 100644 --- a/native/src/main/java/io/ballerina/stdlib/ftp/client/FtpClient.java +++ b/native/src/main/java/io/ballerina/stdlib/ftp/client/FtpClient.java @@ -185,7 +185,11 @@ public static Object getFirst(Environment env, BObject clientConnector, BString */ @Deprecated public static Object get(BObject clientConnector) { - return FtpClientHelper.generateInputStreamEntry((InputStream) clientConnector.getNativeData(READ_INPUT_STREAM)); + InputStream inputStream = (InputStream) clientConnector.getNativeData(READ_INPUT_STREAM); + if (inputStream == null) { + return FtpUtil.createError("Error while reading the file: ftp client is closed", FTP_ERROR); + } + return FtpClientHelper.generateInputStreamEntry(inputStream); } public static Object getBytes(Environment env, BObject clientConnector, BString filePath) { @@ -244,7 +248,12 @@ public static Object getBytesAsStream(Environment env, BObject clientConnector, VfsClientConnectorImpl connector = (VfsClientConnectorImpl) clientConnector. getNativeData(VFS_CLIENT_CONNECTOR); connector.addListener(connectorListener); - connector.send(null, FtpAction.GET, filePath.getValue(), null); + try { + connector.send(null, FtpAction.GET, filePath.getValue(), null); + } catch (Exception exception) { + balFuture.complete(FtpUtil.createError("Error while reading the file: " + + exception.getMessage(), exception, FTP_ERROR)); + } return getResult(balFuture); }); } @@ -261,7 +270,12 @@ public static Object getCsvAsStream(Environment env, BObject clientConnector, BS VfsClientConnectorImpl connector = (VfsClientConnectorImpl) clientConnector. getNativeData(VFS_CLIENT_CONNECTOR); connector.addListener(connectorListener); - connector.send(null, FtpAction.GET, filePath.getValue(), null); + try { + connector.send(null, FtpAction.GET, filePath.getValue(), null); + } catch (Exception exception) { + balFuture.complete(FtpUtil.createError("Error while reading the file: " + + exception.getMessage(), exception, FTP_ERROR)); + } return getResult(balFuture); }); } @@ -275,7 +289,12 @@ private static Object getAllContent(Environment env, BObject clientConnector, BS VfsClientConnectorImpl connector = (VfsClientConnectorImpl) clientConnector. getNativeData(VFS_CLIENT_CONNECTOR); connector.addListener(connectorListener); - connector.send(null, FtpAction.GET_ALL, filePath.getValue(), null); + try { + connector.send(null, FtpAction.GET_ALL, filePath.getValue(), null); + } catch (Exception exception) { + balFuture.complete(FtpUtil.createError("Error while reading the file: " + + exception.getMessage(), exception, FTP_ERROR)); + } return getResult(balFuture); }); } @@ -371,7 +390,12 @@ public static Object put(Environment env, BObject clientConnector, BMap