From 58b0110fe33228cca740c0f3aeda59851504dc70 Mon Sep 17 00:00:00 2001 From: Madhuravas reddy Date: Fri, 23 Jan 2026 15:30:52 +0530 Subject: [PATCH 1/3] RCF-1302 implemented logic for packet storage location Signed-off-by: Madhuravas reddy --- .../constant/RegistrationConstants.java | 1 + .../repository/GlobalParamRepository.java | 4 ++ .../service/RegistrationServiceImpl.java | 35 ++++++++--- .../impl/PreRegZipHandlingServiceImpl.java | 19 +----- .../assets/packetmanagerconfig.properties | 2 +- .../service/PosixAdapterServiceImpl.java | 33 +++++------ .../packetmanager/util/StorageUtils.java | 58 +++++++++++++++++++ assets/l10n/app_ar.arb | 2 +- assets/l10n/app_en.arb | 2 +- assets/l10n/app_fr.arb | 2 +- assets/l10n/app_hi.arb | 2 +- assets/l10n/app_kn.arb | 2 +- assets/l10n/app_ta.arb | 2 +- 13 files changed, 114 insertions(+), 50 deletions(-) create mode 100644 android/packetmanager/src/main/java/io/mosip/registration/packetmanager/util/StorageUtils.java diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/RegistrationConstants.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/RegistrationConstants.java index b5d9d030d..bbb6aa70a 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/RegistrationConstants.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/constant/RegistrationConstants.java @@ -146,4 +146,5 @@ public class RegistrationConstants { public static final String APP_ID = "mosip.registration.audit_application_id"; public static final String DEFAULT_HOST_IP = "mosip.registration.audit_default_host_ip"; public static final String DEFAULT_HOST_NAME = "mosip.registration.audit_default_host_name"; + public static final String PACKET_STORE_LOCATION = "mosip.registration.registration_packet_store_location"; } diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/repository/GlobalParamRepository.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/repository/GlobalParamRepository.java index e76bdb2a8..4f53d2261 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/repository/GlobalParamRepository.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/repository/GlobalParamRepository.java @@ -247,6 +247,10 @@ public String getCachedStringDefaultHostName() { return globalParamMap.get(RegistrationConstants.DEFAULT_HOST_NAME); } + public String getCachedStringPacketStoreLocation() { + return globalParamMap.get(RegistrationConstants.PACKET_STORE_LOCATION); + } + /** * Refresh configuration cache by merging global params with local preferences */ diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/RegistrationServiceImpl.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/RegistrationServiceImpl.java index c0b83600d..53e8e8994 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/RegistrationServiceImpl.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/RegistrationServiceImpl.java @@ -23,6 +23,7 @@ import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.DataInputStream; +import java.io.File; import java.io.IOException; import java.nio.charset.StandardCharsets; import java.time.LocalDateTime; @@ -91,6 +92,7 @@ import io.mosip.registration.packetmanager.spi.PacketWriterService; import io.mosip.registration.packetmanager.util.DateUtils; import io.mosip.registration.packetmanager.util.PacketManagerConstant; +import io.mosip.registration.packetmanager.util.StorageUtils; import lombok.NonNull; @Singleton @@ -643,14 +645,9 @@ public List> getAudits() { private void doPreChecksBeforeRegistration(CenterMachineDto centerMachineDto) throws Exception { //free space validation - int minSpaceRequiredMB = globalParamRepository.getCachedIntegerDiskSpaceSize(); - if (minSpaceRequiredMB == 0) { - minSpaceRequiredMB = DEFAULT_MIN_SPACE_REQUIRED_MB; + if (validatingDiskSpace()) { + throw new ClientCheckedException("PAK_DISK_SPACE_LOW"); } - - long externalSpace = context.getExternalCacheDir().getUsableSpace(); - if ((externalSpace / (1024 * 1024)) < minSpaceRequiredMB) - throw new ClientCheckedException(context, R.string.err_006); //is machine and center active if (centerMachineDto == null || !centerMachineDto.getCenterStatus() || !centerMachineDto.getMachineStatus()) @@ -672,6 +669,30 @@ private void doPreChecksBeforeRegistration(CenterMachineDto centerMachineDto) th } } + private boolean validatingDiskSpace() { + int minSpaceRequiredMB = globalParamRepository.getCachedIntegerDiskSpaceSize(); + if (minSpaceRequiredMB == 0) { + minSpaceRequiredMB = DEFAULT_MIN_SPACE_REQUIRED_MB; + } + long allowedDiskSpaceSizeInBytes = (long) minSpaceRequiredMB * 1024 * 1024; + + String packetStoreLocation = globalParamRepository.getCachedStringPacketStoreLocation(); + File actualDiskSpace = (packetStoreLocation != null && !packetStoreLocation.isEmpty()) + ? new File(packetStoreLocation) + : StorageUtils.getPacketStorageDir(context); + + long usableSpace = actualDiskSpace.getUsableSpace(); + + if (usableSpace == 0) { + actualDiskSpace = context.getFilesDir(); + usableSpace = actualDiskSpace.getUsableSpace(); + } + + return usableSpace < allowedDiskSpaceSizeInBytes; + } + + + private byte[] convertImageToPDF(List images) { try (PDDocument pdDocument = new PDDocument(); ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) { diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/external/impl/PreRegZipHandlingServiceImpl.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/external/impl/PreRegZipHandlingServiceImpl.java index 9d769bda6..693e2000a 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/external/impl/PreRegZipHandlingServiceImpl.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/external/impl/PreRegZipHandlingServiceImpl.java @@ -55,6 +55,7 @@ import io.mosip.registration.packetmanager.util.ConfigService; import io.mosip.registration.keymanager.util.CryptoUtil; import io.mosip.registration.packetmanager.util.PacketKeeper; +import io.mosip.registration.packetmanager.util.StorageUtils; @@ -487,22 +488,8 @@ private String validateFilename(String filename, String intendedDir) throws IOEx private void initPreRegAdapter(Context context) { this.appContext = context; - - String state = Environment.getExternalStorageState(); - if (Environment.MEDIA_MOUNTED.equals(state)) { - String location = ConfigService.getProperty("objectstore.base.location", context); - - File file = new File(Environment.getExternalStorageDirectory() + SEPARATOR + location); - - if (!file.exists()) { - file.mkdirs(); - } - - BASE_LOCATION = file.getAbsolutePath(); - } else { - Log.e(TAG, "External Storage not mounted"); - } - Log.i(TAG, "initLocalClientCryptoService: Initialization call successful"); + File baseDir = StorageUtils.getPacketStorageDir(context); + BASE_LOCATION = baseDir.getAbsolutePath(); } } diff --git a/android/packetmanager/src/main/assets/packetmanagerconfig.properties b/android/packetmanager/src/main/assets/packetmanagerconfig.properties index ca1856934..d355cadd7 100644 --- a/android/packetmanager/src/main/assets/packetmanagerconfig.properties +++ b/android/packetmanager/src/main/assets/packetmanagerconfig.properties @@ -1,6 +1,6 @@ #----------------------- Packet Manager -------------------------------------------------- #base location -objectstore.base.location=Documents +objectstore.base.location=packets #crypto name objectstore.crypto.name=ObjectStoreCryptoName; objectstore.adapter.name=PosixAdapter diff --git a/android/packetmanager/src/main/java/io/mosip/registration/packetmanager/service/PosixAdapterServiceImpl.java b/android/packetmanager/src/main/java/io/mosip/registration/packetmanager/service/PosixAdapterServiceImpl.java index be67312a3..d8c019cd0 100644 --- a/android/packetmanager/src/main/java/io/mosip/registration/packetmanager/service/PosixAdapterServiceImpl.java +++ b/android/packetmanager/src/main/java/io/mosip/registration/packetmanager/service/PosixAdapterServiceImpl.java @@ -35,8 +35,8 @@ import javax.inject.Singleton; import io.mosip.registration.packetmanager.spi.ObjectAdapterService; -import io.mosip.registration.packetmanager.util.ConfigService; import io.mosip.registration.packetmanager.util.ObjectStoreUtil; +import io.mosip.registration.packetmanager.util.StorageUtils; /** * @Author Anshul Vanawat @@ -72,22 +72,8 @@ public PosixAdapterServiceImpl(Context appContext, IPacketCryptoService iPacketC private void initPosixAdapterService(Context context) { this.appContext = context; - - String state = Environment.getExternalStorageState(); - if (Environment.MEDIA_MOUNTED.equals(state)) { - String location = ConfigService.getProperty("objectstore.base.location", context); - - File file = new File(Environment.getExternalStorageDirectory() + SEPARATOR + location); - - if (!file.exists()) { - file.mkdirs(); - } - - BASE_LOCATION = file.getAbsolutePath(); - } else { - Log.e(TAG, "External Storage not mounted"); - } - Log.i(TAG, "initLocalClientCryptoService: Initialization call successful"); + File baseDir = StorageUtils.getPacketStorageDir(context); + BASE_LOCATION = baseDir.getAbsolutePath(); } @Override @@ -218,12 +204,19 @@ private Map getAllExistingEntries(InputStream p private void createContainerZipWithSubPacket(String account, String container, String source, String process, String objectName, InputStream data) throws IOException { - String state = Environment.getExternalStorageState(); - //external storage availability check - if (!Environment.MEDIA_MOUNTED.equals(state)) { + if (BASE_LOCATION == null) { return; } + File baseDir = new File(BASE_LOCATION); + if (!baseDir.getAbsolutePath().startsWith(appContext.getFilesDir().getAbsolutePath())) { + String state = Environment.getExternalStorageState(baseDir); + //storage availability check + if (!Environment.MEDIA_MOUNTED.equals(state)) { + return; + } + } + File containerFolder = new File(BASE_LOCATION, account); if(!containerFolder.exists()) containerFolder.mkdirs(); diff --git a/android/packetmanager/src/main/java/io/mosip/registration/packetmanager/util/StorageUtils.java b/android/packetmanager/src/main/java/io/mosip/registration/packetmanager/util/StorageUtils.java new file mode 100644 index 000000000..1b8bc367b --- /dev/null +++ b/android/packetmanager/src/main/java/io/mosip/registration/packetmanager/util/StorageUtils.java @@ -0,0 +1,58 @@ +package io.mosip.registration.packetmanager.util; + +import android.content.Context; +import android.os.Environment; +import android.util.Log; + +import java.io.File; + +public class StorageUtils { + private static final String TAG = "StorageUtils"; + + public static File getPacketStorageDir(Context context) { + String location = ConfigService.getProperty("objectstore.base.location", context); + if (location == null) { + location = "packets"; + } + File baseDir = null; + + // 1. Try to find/create Documents folder on SD card + File[] externalFilesDirs = context.getExternalFilesDirs(null); + if (externalFilesDirs != null) { + for (File file : externalFilesDirs) { + if (file != null) { + try { + if (Environment.isExternalStorageRemovable(file)) { + // Extract the root path of the SD card (everything before /Android/data/...) + String path = file.getAbsolutePath(); + int androidIndex = path.indexOf("/Android/data/"); + if (androidIndex != -1) { + String sdRoot = path.substring(0, androidIndex); + File sdDocs = new File(sdRoot, "Documents"); + baseDir = new File(sdDocs, location); + break; + } + } + } catch (Exception e) { + Log.e(TAG, "Error calculating SD root: " + file.getAbsolutePath(), e); + } + } + } + } + + // 2. Fallback to Primary Internal Storage Documents folder (/storage/emulated/0/Documents) + if (baseDir == null) { + File publicDocs = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS); + baseDir = new File(publicDocs, location); + } + + if (!baseDir.exists()) { + boolean created = baseDir.mkdirs(); + if (!created) { + Log.e(TAG, "Failed to create directory: " + baseDir.getAbsolutePath() + ". Permission might be missing."); + } + } + + return baseDir; + } +} diff --git a/assets/l10n/app_ar.arb b/assets/l10n/app_ar.arb index cf8ae2b36..6df5dc5dc 100644 --- a/assets/l10n/app_ar.arb +++ b/assets/l10n/app_ar.arb @@ -302,7 +302,7 @@ "logout_success": "لقد تم تسجيل بنجاح!", "logout_failure": "حدث خطأ ما، يرجى المحاولة مرة أخرى بعد مرور بعض الوقت", "go_to_home": "اذهب إلى المنزل", - "errors": "{messages, select, REG_TRY_AGAIN{فشل تسجيل الدخول. حاول مرة أخرى!} REG_INVALID_REQUEST{كلمة المرور غير صحيحة!} REG_MACHINE_NOT_FOUND{لم يتم تسجيل هذا الجهاز بعد. يرجى التواصل مع المسؤول للحصول على المساعدة!} REG_NETWORK_ERROR{فشل تسجيل الدخول. تحقق من اتصال الشبكة!} REG_CRED_EXPIRED{لم يتم العثور على بيانات الاعتماد أو انتهت صلاحيتها. يرجى محاولة تسجيل الدخول عبر الإنترنت!} REG_MACHINE_INACTIVE{الآلة غير نشطة!} REG_CENTER_INACTIVE{المركز غير نشط!} REG_LOGIN_LOCKED{تم الوصول إلى الحد الأقصى لمحاولة تسجيل الدخول. حاول مرة أخرى لاحقا!} KER_SYN_AUTH_001{تعذر الحصول على رمز المصادقة!} PAK_APPRVL_MAX_TIME{الإجراء المطلوب: لقد تجاوزت الحزم المسجلة المعلقة وقت الموافقة المسموح به. يرجى مسح التراكم للمتابعة.} PAK_UPLOAD_MAX_TIME{الإجراء المطلوب: تحميل الحزم أو تصديرها إلى الخادم قبل متابعة التسجيل.} PAK_UPLOAD_MAX_COUNT{الإجراء المطلوب: تم الوصول إلى الحد الأقصى للحزمة. الرجاء تصدير أو تحميل الحزم الموجودة قبل إنشاء تسجيلات جديدة.} other{'Some error occurred!'}}", + "errors": "{messages, select, REG_TRY_AGAIN{فشل تسجيل الدخول. حاول مرة أخرى!} REG_INVALID_REQUEST{كلمة المرور غير صحيحة!} REG_MACHINE_NOT_FOUND{لم يتم تسجيل هذا الجهاز بعد. يرجى التواصل مع المسؤول للحصول على المساعدة!} REG_NETWORK_ERROR{فشل تسجيل الدخول. تحقق من اتصال الشبكة!} REG_CRED_EXPIRED{لم يتم العثور على بيانات الاعتماد أو انتهت صلاحيتها. يرجى محاولة تسجيل الدخول عبر الإنترنت!} REG_MACHINE_INACTIVE{الآلة غير نشطة!} REG_CENTER_INACTIVE{المركز غير نشط!} REG_LOGIN_LOCKED{تم الوصول إلى الحد الأقصى لمحاولة تسجيل الدخول. حاول مرة أخرى لاحقا!} KER_SYN_AUTH_001{تعذر الحصول على رمز المصادقة!} PAK_APPRVL_MAX_TIME{الإجراء المطلوب: لقد تجاوزت الحزم المسجلة المعلقة وقت الموافقة المسموح به. يرجى مسح التراكم للمتابعة.} PAK_UPLOAD_MAX_TIME{الإجراء المطلوب: تحميل الحزم أو تصديرها إلى الخادم قبل متابعة التسجيل.} PAK_UPLOAD_MAX_COUNT{الإجراء المطلوب: تم الوصول إلى الحد الأقصى للحزمة. الرجاء تصدير أو تحميل الحزم الموجودة قبل إنشاء تسجيلات جديدة.} PAK_DISK_SPACE_LOW{الحد الأدنى من المساحة المطلوبة غير متوفر لإنشاء الحزمة.} other{'Some error occurred!'}}", "@errors": { "description": "Error messages", "placeholders": { diff --git a/assets/l10n/app_en.arb b/assets/l10n/app_en.arb index efa7b6449..c1a0e005b 100644 --- a/assets/l10n/app_en.arb +++ b/assets/l10n/app_en.arb @@ -302,7 +302,7 @@ "logout_success": "You have been successfully logged out!", "logout_failure": "Something went wrong, please try again after some time", "go_to_home": "Go To Home", - "errors": "{messages, select, REG_TRY_AGAIN{Login Failed. Try Again!} REG_INVALID_REQUEST{Password incorrect!} REG_MACHINE_NOT_FOUND{This device has not been onboarded yet. Please reach out to your administrator for assistance!} REG_NETWORK_ERROR{Login failed. Check network connection!} REG_CRED_EXPIRED{Credentials not found or are expired. Please try online login!} REG_MACHINE_INACTIVE{Machine is not active!} REG_CENTER_INACTIVE{Center is not active!} REG_LOGIN_LOCKED{Maximum login attempt limit reached. Try again later!} KER_SYN_AUTH_001{Unable to get Authentication Token!} PAK_APPRVL_MAX_TIME{Action required: Pending registered packets have exceeded the allowed approval time. Please clear the backlog to continue.} PAK_UPLOAD_MAX_TIME{Action required: Upload or export the packets to the server before proceeding with registration.} PAK_UPLOAD_MAX_COUNT{Action required: Packet limit reached. Please export or upload existing packets before creating new registrations.} other{'Some error occurred!'}}", + "errors": "{messages, select, REG_TRY_AGAIN{Login Failed. Try Again!} REG_INVALID_REQUEST{Password incorrect!} REG_MACHINE_NOT_FOUND{This device has not been onboarded yet. Please reach out to your administrator for assistance!} REG_NETWORK_ERROR{Login failed. Check network connection!} REG_CRED_EXPIRED{Credentials not found or are expired. Please try online login!} REG_MACHINE_INACTIVE{Machine is not active!} REG_CENTER_INACTIVE{Center is not active!} REG_LOGIN_LOCKED{Maximum login attempt limit reached. Try again later!} KER_SYN_AUTH_001{Unable to get Authentication Token!} PAK_APPRVL_MAX_TIME{Action required: Pending registered packets have exceeded the allowed approval time. Please clear the backlog to continue.} PAK_UPLOAD_MAX_TIME{Action required: Upload or export the packets to the server before proceeding with registration.} PAK_UPLOAD_MAX_COUNT{Action required: Packet limit reached. Please export or upload existing packets before creating new registrations.} PAK_DISK_SPACE_LOW{Minimum required space is not available to create the packet.} other{'Some error occurred!'}}", "@errors": { "description": "Error messages", "placeholders": { diff --git a/assets/l10n/app_fr.arb b/assets/l10n/app_fr.arb index a85c0ed96..3c4cf68ec 100644 --- a/assets/l10n/app_fr.arb +++ b/assets/l10n/app_fr.arb @@ -302,7 +302,7 @@ "logout_success": "Vous avez été déconnecté avec succès!", "logout_failure": "Quelque chose s'est mal passé, veuillez réessayer après un certain temps", "go_to_home": "Aller à la maison", - "errors": "{messages, select, REG_TRY_AGAIN{Echec de la connexion.. Réessayez!} REG_INVALID_REQUEST{Mot de passe incorrect!} REG_MACHINE_NOT_FOUND{Cet appareil n’a pas encore été intégré. Veuillez contacter votre administrateur pour obtenir de l’aide !} REG_NETWORK_ERROR{Échec de la connexion. Vérifiez la connexion réseau!} REG_CRED_EXPIRED{Les informations d’identification sont introuvables ou ont expiré. S’il vous plaît essayer la connexion en ligne!} REG_MACHINE_INACTIVE{La machine n'est pas active!} REG_CENTER_INACTIVE{Le centre n'est pas actif!} REG_LOGIN_LOCKED{Limite maximale de tentatives de connexion atteinte. Réessayez plus tard!} KER_SYN_AUTH_001{Impossible d’obtenir le jeton d’authentification!} PAK_APPRVL_MAX_TIME{Action requise : les paquets enregistrés en attente ont dépassé le délai d'approbation autorisé. Veuillez éliminer l'arriéré pour continuer.} PAK_UPLOAD_MAX_TIME{Action requise : Téléchargez ou exportez les paquets vers le serveur avant de procéder à l'enregistrement.} PAK_UPLOAD_MAX_COUNT{Action requise : limite de paquets atteinte. Veuillez exporter ou télécharger les paquets existants avant de créer de nouvelles inscriptions.} other{'Some error occurred!'}}", + "errors": "{messages, select, REG_TRY_AGAIN{Echec de la connexion.. Réessayez!} REG_INVALID_REQUEST{Mot de passe incorrect!} REG_MACHINE_NOT_FOUND{Cet appareil n’a pas encore été intégré. Veuillez contacter votre administrateur pour obtenir de l’aide !} REG_NETWORK_ERROR{Échec de la connexion. Vérifiez la connexion réseau!} REG_CRED_EXPIRED{Les informations d’identification sont introuvables ou ont expiré. S’il vous plaît essayer la connexion en ligne!} REG_MACHINE_INACTIVE{La machine n'est pas active!} REG_CENTER_INACTIVE{Le centre n'est pas actif!} REG_LOGIN_LOCKED{Limite maximale de tentatives de connexion atteinte. Réessayez plus tard!} KER_SYN_AUTH_001{Impossible d’obtenir le jeton d’authentification!} PAK_APPRVL_MAX_TIME{Action requise : les paquets enregistrés en attente ont dépassé le délai d'approbation autorisé. Veuillez éliminer l'arriéré pour continuer.} PAK_UPLOAD_MAX_TIME{Action requise : Téléchargez ou exportez les paquets vers le serveur avant de procéder à l'enregistrement.} PAK_UPLOAD_MAX_COUNT{Action requise : limite de paquets atteinte. Veuillez exporter ou télécharger les paquets existants avant de créer de nouvelles inscriptions.} PAK_DISK_SPACE_LOW{L'espace minimum requis n'est pas disponible pour créer le paquet.} other{'Some error occurred!'}}", "@errors": { "description": "Error messages", "placeholders": { diff --git a/assets/l10n/app_hi.arb b/assets/l10n/app_hi.arb index 493e73d3d..c65670c4b 100644 --- a/assets/l10n/app_hi.arb +++ b/assets/l10n/app_hi.arb @@ -302,7 +302,7 @@ "logout_success": "आप सफलता पूर्वक लॉगआउट कर चुके हैं!", "logout_failure": "कुछ गलती हो गई है, कृपया कुछ समय बाद पुनः प्रयास करें", "go_to_home": "होम पर जाएं", -"errors": "{messages, select, REG_TRY_AGAIN{लॉगिन विफल रहा। फिर कोशिश करो!} REG_INVALID_REQUEST{पासवर्ड गलत है!} REG_MACHINE_NOT_FOUND{इस डिवाइस का ऑनबोर्डिंग अभी तक नहीं हुआ है। सहायता के लिए कृपया अपने प्रशासक से संपर्क करें!} REG_NETWORK_ERROR{लॉगिन विफल रहा। नेटवर्क कनेक्शन की जाँच करें!} REG_CRED_EXPIRED{क्रेडेंशियल्स नहीं मिले या समय सीमा समाप्त हो गई है. ऑनलाइन लॉगिन का प्रयास करें!} REG_MACHINE_INACTIVE{मशीन सक्रिय नहीं है!} REG_CENTER_INACTIVE{केंद्र सक्रिय नहीं है!} REG_LOGIN_LOCKED{अधिकतम लॉगिन प्रयास सीमा पूरी हो गई. बाद में पुन: प्रयास!} KER_SYN_AUTH_001{प्रमाणीकरण टोकन प्राप्त करने में असमर्थ!} PAK_APPRVL_MAX_TIME{कार्रवाई आवश्यक: लंबित पंजीकृत पैकेट स्वीकृत अनुमोदन समय से अधिक हो गए हैं। कृपया जारी रखने के लिए बैकलॉग साफ़ करें।} PAK_UPLOAD_MAX_TIME{कार्रवाई आवश्यक: पंजीकरण के साथ आगे बढ़ने से पहले पैकेट को सर्वर पर अपलोड या निर्यात करें।} PAK_UPLOAD_MAX_COUNT{कार्रवाई आवश्यक: पैकेट की सीमा पूरी हो गई. कृपया नए पंजीकरण बनाने से पहले मौजूदा पैकेट निर्यात या अपलोड करें।} other{'Some error occurred!'}}", +"errors": "{messages, select, REG_TRY_AGAIN{लॉगिन विफल रहा। फिर कोशिश करो!} REG_INVALID_REQUEST{पासवर्ड गलत है!} REG_MACHINE_NOT_FOUND{इस डिवाइस का ऑनबोर्डिंग अभी तक नहीं हुआ है। सहायता के लिए कृपया अपने प्रशासक से संपर्क करें!} REG_NETWORK_ERROR{लॉगिन विफल रहा। नेटवर्क कनेक्शन की जाँच करें!} REG_CRED_EXPIRED{क्रेडेंशियल्स नहीं मिले या समय सीमा समाप्त हो गई है. ऑनलाइन लॉगिन का प्रयास करें!} REG_MACHINE_INACTIVE{मशीन सक्रिय नहीं है!} REG_CENTER_INACTIVE{केंद्र सक्रिय नहीं है!} REG_LOGIN_LOCKED{अधिकतम लॉगिन प्रयास सीमा पूरी हो गई. बाद में पुन: प्रयास!} KER_SYN_AUTH_001{प्रमाणीकरण टोकन प्राप्त करने में असमर्थ!} PAK_APPRVL_MAX_TIME{कार्रवाई आवश्यक: लंबित पंजीकृत पैकेट स्वीकृत अनुमोदन समय से अधिक हो गए हैं। कृपया जारी रखने के लिए बैकलॉग साफ़ करें।} PAK_UPLOAD_MAX_TIME{कार्रवाई आवश्यक: पंजीकरण के साथ आगे बढ़ने से पहले पैकेट को सर्वर पर अपलोड या निर्यात करें।} PAK_UPLOAD_MAX_COUNT{कार्रवाई आवश्यक: पैकेट की सीमा पूरी हो गई. कृपया नए पंजीकरण बनाने से पहले मौजूदा पैकेट निर्यात या अपलोड करें।} PAK_DISK_SPACE_LOW{पैकेट बनाने के लिए न्यूनतम आवश्यक स्थान उपलब्ध नहीं है।} other{'Some error occurred!'}}", "@errors": { "description": "Error messages", "placeholders": { diff --git a/assets/l10n/app_kn.arb b/assets/l10n/app_kn.arb index 17b3fb116..528238e55 100644 --- a/assets/l10n/app_kn.arb +++ b/assets/l10n/app_kn.arb @@ -302,7 +302,7 @@ "logout_success": "ನೀವು ಯಶಸ್ವಿಯಾಗಿ ಲಾಗ್ ಔಟ್ ಆಗಿರುವಿರಿ!", "logout_failure": "ಏನೋ ತಪ್ಪಾಗಿದೆ, ದಯವಿಟ್ಟು ಸ್ವಲ್ಪ ಸಮಯದ ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ", "go_to_home": "ಮನೆಗೆ ಹೋಗು", -"errors": "{messages, select, REG_TRY_AGAIN{ಲಾಗಿನ್ ವಿಫಲವಾಗಿದೆ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸು!} REG_INVALID_REQUEST{ಪಾಸ್ ವರ್ಡ್ ತಪ್ಪಾಗಿದೆ!} REG_MACHINE_NOT_FOUND{ಈ ಸಾಧನವನ್ನು ಇನ್ನೂ ಆನ್‌ಬೋರ್ಡ್ ಮಾಡಿಲ್ಲ. ಸಹಾಯಕ್ಕಾಗಿ ದಯವಿಟ್ಟು ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ!} REG_NETWORK_ERROR{ಲಾಗಿನ್ ವಿಫಲವಾಗಿದೆ. ನೆಟ್ವರ್ಕ್ ಸಂಪರ್ಕ ಪರಿಶೀಲಿಸಿ!} REG_CRED_EXPIRED{ರುಜುವಾತುಗಳು ಸಿಗಲಿಲ್ಲ ಅಥವಾ ಅವಧಿ ಮೀರಿದವು. ದಯವಿಟ್ಟು ಆನ್ ಲೈನ್ ಲಾಗಿನ್ ಪ್ರಯತ್ನಿಸಿ!} REG_MACHINE_INACTIVE{ಯಂತ್ರ ಸಕ್ರಿಯವಾಗಿಲ್ಲ!} REG_CENTER_INACTIVE{ಕೇಂದ್ರವು ಸಕ್ರಿಯವಾಗಿಲ್ಲ!} REG_LOGIN_LOCKED{ಗರಿಷ್ಠ ಲಾಗಿನ್ ಪ್ರಯತ್ನದ ಮಿತಿಯನ್ನು ತಲುಪಿದೆ. ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ!} KER_SYN_AUTH_001{ದೃಢೀಕರಣ ಟೋಕನ್ ಪಡೆಯಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ!} PAK_APPRVL_MAX_TIME{ಕ್ರಮದ ಅಗತ್ಯವಿದೆ: ಬಾಕಿ ಉಳಿದಿರುವ ನೋಂದಾಯಿತ ಪ್ಯಾಕೆಟ್‌ಗಳು ಅನುಮತಿಸಲಾದ ಅನುಮೋದನೆ ಸಮಯವನ್ನು ಮೀರಿದೆ. ಮುಂದುವರಿಸಲು ದಯವಿಟ್ಟು ಬ್ಯಾಕ್‌ಲಾಗ್ ಅನ್ನು ತೆರವುಗೊಳಿಸಿ.} PAK_UPLOAD_MAX_TIME{ಕ್ರಮದ ಅಗತ್ಯವಿದೆ: ನೋಂದಣಿಯೊಂದಿಗೆ ಮುಂದುವರಿಯುವ ಮೊದಲು ಪ್ಯಾಕೆಟ್‌ಗಳನ್ನು ಸರ್ವರ್‌ಗೆ ಅಪ್‌ಲೋಡ್ ಮಾಡಿ ಅಥವಾ ರಫ್ತು ಮಾಡಿ.} PAK_UPLOAD_MAX_COUNT{ಕ್ರಮದ ಅಗತ್ಯವಿದೆ: ಪ್ಯಾಕೆಟ್ ಮಿತಿಯನ್ನು ತಲುಪಿದೆ. ಹೊಸ ನೋಂದಣಿಗಳನ್ನು ರಚಿಸುವ ಮೊದಲು ದಯವಿಟ್ಟು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಪ್ಯಾಕೆಟ್‌ಗಳನ್ನು ರಫ್ತು ಮಾಡಿ ಅಥವಾ ಅಪ್‌ಲೋಡ್ ಮಾಡಿ.} other{'Some error occurred!'}}", +"errors": "{messages, select, REG_TRY_AGAIN{ಲಾಗಿನ್ ವಿಫಲವಾಗಿದೆ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸು!} REG_INVALID_REQUEST{ಪಾಸ್ ವರ್ಡ್ ತಪ್ಪಾಗಿದೆ!} REG_MACHINE_NOT_FOUND{ಈ ಸಾಧನವನ್ನು ಇನ್ನೂ ಆನ್‌ಬೋರ್ಡ್ ಮಾಡಿಲ್ಲ. ಸಹಾಯಕ್ಕಾಗಿ ದಯವಿಟ್ಟು ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ!} REG_NETWORK_ERROR{ಲಾಗಿನ್ ವಿಫಲವಾಗಿದೆ. ನೆಟ್ವರ್ಕ್ ಸಂಪರ್ಕ ಪರಿಶೀಲಿಸಿ!} REG_CRED_EXPIRED{ರುಜುವಾತುಗಳು ಸಿಗಲಿಲ್ಲ ಅಥವಾ ಅವಧಿ ಮೀರಿದವು. ದಯವಿಟ್ಟು ಆನ್ ಲೈನ್ ಲಾಗಿನ್ ಪ್ರಯತ್ನಿಸಿ!} REG_MACHINE_INACTIVE{ಯಂತ್ರ ಸಕ್ರಿಯವಾಗಿಲ್ಲ!} REG_CENTER_INACTIVE{ಕೇಂದ್ರವು ಸಕ್ರಿಯವಾಗಿಲ್ಲ!} REG_LOGIN_LOCKED{ಗರಿಷ್ಠ ಲಾಗಿನ್ ಪ್ರಯತ್ನದ ಮಿತಿಯನ್ನು ತಲುಪಿದೆ. ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ!} KER_SYN_AUTH_001{ದೃಢೀಕರಣ ಟೋಕನ್ ಪಡೆಯಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ!} PAK_APPRVL_MAX_TIME{ಕ್ರಮದ ಅಗತ್ಯವಿದೆ: ಬಾಕಿ ಉಳಿದಿರುವ ನೋಂದಾಯಿತ ಪ್ಯಾಕೆಟ್‌ಗಳು ಅನುಮತಿಸಲಾದ ಅನುಮೋದನೆ ಸಮಯವನ್ನು ಮೀರಿದೆ. ಮುಂದುವರಿಸಲು ದಯವಿಟ್ಟು ಬ್ಯಾಕ್‌ಲಾಗ್ ಅನ್ನು ತೆರವುಗೊಳಿಸಿ.} PAK_UPLOAD_MAX_TIME{ಕ್ರಮದ ಅಗತ್ಯವಿದೆ: ನೋಂದಣಿಯೊಂದಿಗೆ ಮುಂದುವರಿಯುವ ಮೊದಲು ಪ್ಯಾಕೆಟ್‌ಗಳನ್ನು ಸರ್ವರ್‌ಗೆ ಅಪ್‌ಲೋಡ್ ಮಾಡಿ ಅಥವಾ ರಫ್ತು ಮಾಡಿ.} PAK_UPLOAD_MAX_COUNT{ಕ್ರಮದ ಅಗತ್ಯವಿದೆ: ಪ್ಯಾಕೆಟ್ ಮಿತಿಯನ್ನು ತಲುಪಿದೆ. ಹೊಸ ನೋಂದಣಿಗಳನ್ನು ರಚಿಸುವ ಮೊದಲು ದಯವಿಟ್ಟು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಪ್ಯಾಕೆಟ್‌ಗಳನ್ನು ರಫ್ತು ಮಾಡಿ ಅಥವಾ ಅಪ್‌ಲೋಡ್ ಮಾಡಿ.} PAK_DISK_SPACE_LOW{Minimum required space is not available to create the packet.} other{'Some error occurred!'}}", "@errors": { "description": "Error messages", "placeholders": { diff --git a/assets/l10n/app_ta.arb b/assets/l10n/app_ta.arb index 040863dc5..2293026b5 100644 --- a/assets/l10n/app_ta.arb +++ b/assets/l10n/app_ta.arb @@ -311,7 +311,7 @@ "logout_success": "நீங்கள் வெற்றிகரமாக வெளியேறிவிட்டீர்கள்!", "logout_failure": "ஏதோ தவறாகிவிட்டது, சிறிது நேரம் கழித்து மீண்டும் முயற்சிக்கவும்", "go_to_home": "வீட்டிற்கு போ", -"errors": "{messages, select, REG_TRY_AGAIN{உள்நுழைவு தோல்வியுற்றது. மீண்டும் முயற்சி செய்!} REG_INVALID_REQUEST{கடவுச்சொல் தவறானது!} REG_MACHINE_NOT_FOUND{இந்த சாதனம் இன்னும் பதிவுசெய்யப்படவில்லை. உதவிக்காக உங்கள் நிர்வாகியை தொடர்புகொள்ளுங்கள்!} REG_NETWORK_ERROR{உள்நுழைவு தோல்வியுற்றது. நெட்வொர்க் இணைப்பை சரிபார்க்கவும்!} REG_CRED_EXPIRED{நற்சான்றிதழ்கள் காணப்படவில்லை அல்லது காலாவதியாகவில்லை. ஆன்லைன் உள்நுழைவை முயற்சிக்கவும்!} REG_MACHINE_INACTIVE{இயந்திரம் செயலில் இல்லை!} REG_CENTER_INACTIVE{மையம் செயல்படவில்லை!} REG_LOGIN_LOCKED{அதிகபட்ச உள்நுழைவு முயற்சி வரம்பை அடைந்தது. பிறகு முயற்சிக்கவும்!} KER_SYN_AUTH_001{அங்கீகார டோக்கனை பெற முடியவில்லை!} PAK_APPRVL_MAX_TIME{நடவடிக்கை தேவை: நிலுவையிலுள்ள பதிவு செய்யப்பட்ட பாக்கெட்டுகள் அனுமதிக்கப்பட்ட அனுமதி நேரத்தை மீறியுள்ளன. தொடர, பின்னிணைப்பை அழிக்கவும்.} PAK_UPLOAD_MAX_TIME{நடவடிக்கை தேவை: பதிவைத் தொடர்வதற்கு முன், சர்வரில் பாக்கெட்டுகளைப் பதிவேற்றவும் அல்லது ஏற்றுமதி செய்யவும்.} PAK_UPLOAD_MAX_COUNT{நடவடிக்கை தேவை: பாக்கெட் வரம்பை அடைந்தது. புதிய பதிவுகளை உருவாக்கும் முன் ஏற்கனவே உள்ள பாக்கெட்டுகளை ஏற்றுமதி செய்யவும் அல்லது பதிவேற்றவும்.} other{'Some error occurred!'}}", +"errors": "{messages, select, REG_TRY_AGAIN{உள்நுழைவு தோல்வியுற்றது. மீண்டும் முயற்சி செய்!} REG_INVALID_REQUEST{கடவுச்சொல் தவறானது!} REG_MACHINE_NOT_FOUND{இந்த சாதனம் இன்னும் பதிவுசெய்யப்படவில்லை. உதவிக்காக உங்கள் நிர்வாகியை தொடர்புகொள்ளுங்கள்!} REG_NETWORK_ERROR{உள்நுழைவு தோல்வியுற்றது. நெட்வொர்க் இணைப்பை சரிபார்க்கவும்!} REG_CRED_EXPIRED{நற்சான்றிதழ்கள் காணப்படவில்லை அல்லது காலாவதியாகவில்லை. ஆன்லைன் உள்நுழைவை முயற்சிக்கவும்!} REG_MACHINE_INACTIVE{இயந்திரம் செயலில் இல்லை!} REG_CENTER_INACTIVE{மையம் செயல்படவில்லை!} REG_LOGIN_LOCKED{அதிகபட்ச உள்நுழைவு முயற்சி வரம்பை அடைந்தது. பிறகு முயற்சிக்கவும்!} KER_SYN_AUTH_001{அங்கீகார டோக்கனை பெற முடியவில்லை!} PAK_APPRVL_MAX_TIME{நடவடிக்கை தேவை: நிலுவையிலுள்ள பதிவு செய்யப்பட்ட பாக்கெட்டுகள் அனுமதிக்கப்பட்ட அனுமதி நேரத்தை மீறியுள்ளன. தொடர, பின்னிணைப்பை அழிக்கவும்.} PAK_UPLOAD_MAX_TIME{நடவடிக்கை தேவை: பதிவைத் தொடர்வதற்கு முன், சர்வரில் பாக்கெட்டுகளைப் பதிவேற்றவும் அல்லது ஏற்றுமதி செய்யவும்.} PAK_UPLOAD_MAX_COUNT{நடவடிக்கை தேவை: பாக்கெட் வரம்பை அடைந்தது. புதிய பதிவுகளை உருவாக்கும் முன் ஏற்கனவே உள்ள பாக்கெட்டுகளை ஏற்றுமதி செய்யவும் அல்லது பதிவேற்றவும்.} PAK_DISK_SPACE_LOW{பாக்கெட்டை உருவாக்க தேவையான குறைந்தபட்ச இடம் இல்லை.} other{'Some error occurred!'}}", "@errors": { "description": "Error messages", "placeholders": { From aaf2f8148c44898cdf93d007e4262a9acd448660 Mon Sep 17 00:00:00 2001 From: Madhuravas reddy Date: Fri, 23 Jan 2026 17:28:10 +0530 Subject: [PATCH 2/3] resolved code rabbit reviews Signed-off-by: Madhuravas reddy --- .../service/RegistrationServiceImpl.java | 15 +++-- .../service/PosixAdapterServiceImpl.java | 19 ++++-- .../packetmanager/util/StorageUtils.java | 66 ++++++++++++------- assets/l10n/app_kn.arb | 2 +- 4 files changed, 62 insertions(+), 40 deletions(-) diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/RegistrationServiceImpl.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/RegistrationServiceImpl.java index 53e8e8994..271de2666 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/RegistrationServiceImpl.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/RegistrationServiceImpl.java @@ -676,16 +676,17 @@ private boolean validatingDiskSpace() { } long allowedDiskSpaceSizeInBytes = (long) minSpaceRequiredMB * 1024 * 1024; - String packetStoreLocation = globalParamRepository.getCachedStringPacketStoreLocation(); - File actualDiskSpace = (packetStoreLocation != null && !packetStoreLocation.isEmpty()) - ? new File(packetStoreLocation) - : StorageUtils.getPacketStorageDir(context); + File actualDiskSpace = StorageUtils.getPacketStorageDir(context); - long usableSpace = actualDiskSpace.getUsableSpace(); + if (!actualDiskSpace.exists() && !actualDiskSpace.mkdirs()) { + Log.e(TAG, "Packet store directory not available: " + actualDiskSpace.getAbsolutePath()); + return true; // treat as low space/unavailable + } + long usableSpace = actualDiskSpace.getUsableSpace(); if (usableSpace == 0) { - actualDiskSpace = context.getFilesDir(); - usableSpace = actualDiskSpace.getUsableSpace(); + Log.e(TAG, "Usable space is 0 for path: " + actualDiskSpace.getAbsolutePath()); + return true; // treat as low space/unavailable } return usableSpace < allowedDiskSpaceSizeInBytes; diff --git a/android/packetmanager/src/main/java/io/mosip/registration/packetmanager/service/PosixAdapterServiceImpl.java b/android/packetmanager/src/main/java/io/mosip/registration/packetmanager/service/PosixAdapterServiceImpl.java index d8c019cd0..4fcafc2ba 100644 --- a/android/packetmanager/src/main/java/io/mosip/registration/packetmanager/service/PosixAdapterServiceImpl.java +++ b/android/packetmanager/src/main/java/io/mosip/registration/packetmanager/service/PosixAdapterServiceImpl.java @@ -73,7 +73,12 @@ public PosixAdapterServiceImpl(Context appContext, IPacketCryptoService iPacketC private void initPosixAdapterService(Context context) { this.appContext = context; File baseDir = StorageUtils.getPacketStorageDir(context); - BASE_LOCATION = baseDir.getAbsolutePath(); + if (baseDir.exists() || baseDir.mkdirs()) { + BASE_LOCATION = baseDir.getAbsolutePath(); + } else { + Log.e(TAG, "Failed to initialize packet storage directory: " + baseDir.getAbsolutePath()); + BASE_LOCATION = null; + } } @Override @@ -205,16 +210,16 @@ private void createContainerZipWithSubPacket(String account, String container, S throws IOException { if (BASE_LOCATION == null) { + Log.e(TAG, "BASE_LOCATION is not initialized"); return; } File baseDir = new File(BASE_LOCATION); - if (!baseDir.getAbsolutePath().startsWith(appContext.getFilesDir().getAbsolutePath())) { - String state = Environment.getExternalStorageState(baseDir); - //storage availability check - if (!Environment.MEDIA_MOUNTED.equals(state)) { - return; - } + String state = Environment.getExternalStorageState(baseDir); + //storage availability check + if (!Environment.MEDIA_MOUNTED.equals(state)) { + Log.e(TAG, "External storage not mounted. State: " + state + ", Path: " + baseDir.getAbsolutePath()); + return; } File containerFolder = new File(BASE_LOCATION, account); diff --git a/android/packetmanager/src/main/java/io/mosip/registration/packetmanager/util/StorageUtils.java b/android/packetmanager/src/main/java/io/mosip/registration/packetmanager/util/StorageUtils.java index 1b8bc367b..7134caba0 100644 --- a/android/packetmanager/src/main/java/io/mosip/registration/packetmanager/util/StorageUtils.java +++ b/android/packetmanager/src/main/java/io/mosip/registration/packetmanager/util/StorageUtils.java @@ -14,24 +14,42 @@ public static File getPacketStorageDir(Context context) { if (location == null) { location = "packets"; } - File baseDir = null; - // 1. Try to find/create Documents folder on SD card + // 1. Try SD card Documents folder + File baseDir = getSDCardDir(context, location); + if (baseDir != null && ensureDirWritable(baseDir)) { + return baseDir; + } + + // 2. Try Primary Shared Documents folder (Legacy/Scoped Storage might restrict this) + baseDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), location); + if (ensureDirWritable(baseDir)) { + return baseDir; + } + + // 3. Fallback to App-private external storage + baseDir = context.getExternalFilesDir(location); + if (baseDir != null && ensureDirWritable(baseDir)) { + return baseDir; + } + + // 4. Ultimate fallback to App internal storage + baseDir = new File(context.getFilesDir(), location); + ensureDirWritable(baseDir); + return baseDir; + } + + private static File getSDCardDir(Context context, String location) { File[] externalFilesDirs = context.getExternalFilesDirs(null); if (externalFilesDirs != null) { for (File file : externalFilesDirs) { - if (file != null) { + if (file != null && Environment.isExternalStorageRemovable(file)) { try { - if (Environment.isExternalStorageRemovable(file)) { - // Extract the root path of the SD card (everything before /Android/data/...) - String path = file.getAbsolutePath(); - int androidIndex = path.indexOf("/Android/data/"); - if (androidIndex != -1) { - String sdRoot = path.substring(0, androidIndex); - File sdDocs = new File(sdRoot, "Documents"); - baseDir = new File(sdDocs, location); - break; - } + String path = file.getAbsolutePath(); + int androidIndex = path.indexOf("/Android/data/"); + if (androidIndex != -1) { + String sdRoot = path.substring(0, androidIndex); + return new File(new File(sdRoot, "Documents"), location); } } catch (Exception e) { Log.e(TAG, "Error calculating SD root: " + file.getAbsolutePath(), e); @@ -39,20 +57,18 @@ public static File getPacketStorageDir(Context context) { } } } + return null; + } - // 2. Fallback to Primary Internal Storage Documents folder (/storage/emulated/0/Documents) - if (baseDir == null) { - File publicDocs = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS); - baseDir = new File(publicDocs, location); - } - - if (!baseDir.exists()) { - boolean created = baseDir.mkdirs(); - if (!created) { - Log.e(TAG, "Failed to create directory: " + baseDir.getAbsolutePath() + ". Permission might be missing."); + private static boolean ensureDirWritable(File dir) { + try { + if (!dir.exists() && !dir.mkdirs()) { + return false; } + return dir.canWrite(); + } catch (Exception e) { + Log.e(TAG, "Error ensuring directory writability: " + dir.getAbsolutePath(), e); + return false; } - - return baseDir; } } diff --git a/assets/l10n/app_kn.arb b/assets/l10n/app_kn.arb index 528238e55..cc49f8dc9 100644 --- a/assets/l10n/app_kn.arb +++ b/assets/l10n/app_kn.arb @@ -302,7 +302,7 @@ "logout_success": "ನೀವು ಯಶಸ್ವಿಯಾಗಿ ಲಾಗ್ ಔಟ್ ಆಗಿರುವಿರಿ!", "logout_failure": "ಏನೋ ತಪ್ಪಾಗಿದೆ, ದಯವಿಟ್ಟು ಸ್ವಲ್ಪ ಸಮಯದ ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ", "go_to_home": "ಮನೆಗೆ ಹೋಗು", -"errors": "{messages, select, REG_TRY_AGAIN{ಲಾಗಿನ್ ವಿಫಲವಾಗಿದೆ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸು!} REG_INVALID_REQUEST{ಪಾಸ್ ವರ್ಡ್ ತಪ್ಪಾಗಿದೆ!} REG_MACHINE_NOT_FOUND{ಈ ಸಾಧನವನ್ನು ಇನ್ನೂ ಆನ್‌ಬೋರ್ಡ್ ಮಾಡಿಲ್ಲ. ಸಹಾಯಕ್ಕಾಗಿ ದಯವಿಟ್ಟು ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ!} REG_NETWORK_ERROR{ಲಾಗಿನ್ ವಿಫಲವಾಗಿದೆ. ನೆಟ್ವರ್ಕ್ ಸಂಪರ್ಕ ಪರಿಶೀಲಿಸಿ!} REG_CRED_EXPIRED{ರುಜುವಾತುಗಳು ಸಿಗಲಿಲ್ಲ ಅಥವಾ ಅವಧಿ ಮೀರಿದವು. ದಯವಿಟ್ಟು ಆನ್ ಲೈನ್ ಲಾಗಿನ್ ಪ್ರಯತ್ನಿಸಿ!} REG_MACHINE_INACTIVE{ಯಂತ್ರ ಸಕ್ರಿಯವಾಗಿಲ್ಲ!} REG_CENTER_INACTIVE{ಕೇಂದ್ರವು ಸಕ್ರಿಯವಾಗಿಲ್ಲ!} REG_LOGIN_LOCKED{ಗರಿಷ್ಠ ಲಾಗಿನ್ ಪ್ರಯತ್ನದ ಮಿತಿಯನ್ನು ತಲುಪಿದೆ. ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ!} KER_SYN_AUTH_001{ದೃಢೀಕರಣ ಟೋಕನ್ ಪಡೆಯಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ!} PAK_APPRVL_MAX_TIME{ಕ್ರಮದ ಅಗತ್ಯವಿದೆ: ಬಾಕಿ ಉಳಿದಿರುವ ನೋಂದಾಯಿತ ಪ್ಯಾಕೆಟ್‌ಗಳು ಅನುಮತಿಸಲಾದ ಅನುಮೋದನೆ ಸಮಯವನ್ನು ಮೀರಿದೆ. ಮುಂದುವರಿಸಲು ದಯವಿಟ್ಟು ಬ್ಯಾಕ್‌ಲಾಗ್ ಅನ್ನು ತೆರವುಗೊಳಿಸಿ.} PAK_UPLOAD_MAX_TIME{ಕ್ರಮದ ಅಗತ್ಯವಿದೆ: ನೋಂದಣಿಯೊಂದಿಗೆ ಮುಂದುವರಿಯುವ ಮೊದಲು ಪ್ಯಾಕೆಟ್‌ಗಳನ್ನು ಸರ್ವರ್‌ಗೆ ಅಪ್‌ಲೋಡ್ ಮಾಡಿ ಅಥವಾ ರಫ್ತು ಮಾಡಿ.} PAK_UPLOAD_MAX_COUNT{ಕ್ರಮದ ಅಗತ್ಯವಿದೆ: ಪ್ಯಾಕೆಟ್ ಮಿತಿಯನ್ನು ತಲುಪಿದೆ. ಹೊಸ ನೋಂದಣಿಗಳನ್ನು ರಚಿಸುವ ಮೊದಲು ದಯವಿಟ್ಟು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಪ್ಯಾಕೆಟ್‌ಗಳನ್ನು ರಫ್ತು ಮಾಡಿ ಅಥವಾ ಅಪ್‌ಲೋಡ್ ಮಾಡಿ.} PAK_DISK_SPACE_LOW{Minimum required space is not available to create the packet.} other{'Some error occurred!'}}", +"errors": "{messages, select, REG_TRY_AGAIN{ಲಾಗಿನ್ ವಿಫಲವಾಗಿದೆ. ಮತ್ತೆ ಪ್ರಯತ್ನಿಸು!} REG_INVALID_REQUEST{ಪಾಸ್ ವರ್ಡ್ ತಪ್ಪಾಗಿದೆ!} REG_MACHINE_NOT_FOUND{ಈ ಸಾಧನವನ್ನು ಇನ್ನೂ ಆನ್‌ಬೋರ್ಡ್ ಮಾಡಿಲ್ಲ. ಸಹಾಯಕ್ಕಾಗಿ ದಯವಿಟ್ಟು ನಿಮ್ಮ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ!} REG_NETWORK_ERROR{ಲಾಗಿನ್ ವಿಫಲವಾಗಿದೆ. ನೆಟ್ವರ್ಕ್ ಸಂಪರ್ಕ ಪರಿಶೀಲಿಸಿ!} REG_CRED_EXPIRED{ರುಜುವಾತುಗಳು ಸಿಗಲಿಲ್ಲ ಅಥವಾ ಅವಧಿ ಮೀರಿದವು. ದಯವಿಟ್ಟು ಆನ್ ಲೈನ್ ಲಾಗಿನ್ ಪ್ರಯತ್ನಿಸಿ!} REG_MACHINE_INACTIVE{ಯಂತ್ರ ಸಕ್ರಿಯವಾಗಿಲ್ಲ!} REG_CENTER_INACTIVE{ಕೇಂದ್ರವು ಸಕ್ರಿಯವಾಗಿಲ್ಲ!} REG_LOGIN_LOCKED{ಗರಿಷ್ಠ ಲಾಗಿನ್ ಪ್ರಯತ್ನದ ಮಿತಿಯನ್ನು ತಲುಪಿದೆ. ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ!} KER_SYN_AUTH_001{ದೃಢೀಕರಣ ಟೋಕನ್ ಪಡೆಯಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ!} PAK_APPRVL_MAX_TIME{ಕ್ರಮದ ಅಗತ್ಯವಿದೆ: ಬಾಕಿ ಉಳಿದಿರುವ ನೋಂದಾಯಿತ ಪ್ಯಾಕೆಟ್‌ಗಳು ಅನುಮತಿಸಲಾದ ಅನುಮೋದನೆ ಸಮಯವನ್ನು ಮೀರಿದೆ. ಮುಂದುವರಿಸಲು ದಯವಿಟ್ಟು ಬ್ಯಾಕ್‌ಲಾಗ್ ಅನ್ನು ತೆರವುಗೊಳಿಸಿ.} PAK_UPLOAD_MAX_TIME{ಕ್ರಮದ ಅಗತ್ಯವಿದೆ: ನೋಂದಣಿಯೊಂದಿಗೆ ಮುಂದುವರಿಯುವ ಮೊದಲು ಪ್ಯಾಕೆಟ್‌ಗಳನ್ನು ಸರ್ವರ್‌ಗೆ ಅಪ್‌ಲೋಡ್ ಮಾಡಿ ಅಥವಾ ರಫ್ತು ಮಾಡಿ.} PAK_UPLOAD_MAX_COUNT{ಕ್ರಮದ ಅಗತ್ಯವಿದೆ: ಪ್ಯಾಕೆಟ್ ಮಿತಿಯನ್ನು ತಲುಪಿದೆ. ಹೊಸ ನೋಂದಣಿಗಳನ್ನು ರಚಿಸುವ ಮೊದಲು ದಯವಿಟ್ಟು ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಪ್ಯಾಕೆಟ್‌ಗಳನ್ನು ರಫ್ತು ಮಾಡಿ ಅಥವಾ ಅಪ್‌ಲೋಡ್ ಮಾಡಿ.} PAK_DISK_SPACE_LOW{ಪ್ಯಾಕೆಟ್ ರಚಿಸಲು ಅಗತ್ಯವಿರುವ ಕನಿಷ್ಟ ಸ್ಥಳಾವಕಾಶ ಲಭ್ಯವಿಲ್ಲ.} other{'Some error occurred!'}}", "@errors": { "description": "Error messages", "placeholders": { From a3c4e3162cb9e834488799e65974887bb2149634 Mon Sep 17 00:00:00 2001 From: Madhuravas reddy Date: Wed, 28 Jan 2026 12:31:08 +0530 Subject: [PATCH 3/3] Resolved coderabbit review comments Signed-off-by: Madhuravas reddy --- .../clientmanager/service/RegistrationServiceImpl.java | 6 +++++- .../service/external/impl/PreRegZipHandlingServiceImpl.java | 2 -- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/RegistrationServiceImpl.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/RegistrationServiceImpl.java index 2eaa1d439..86e595448 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/RegistrationServiceImpl.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/RegistrationServiceImpl.java @@ -676,7 +676,7 @@ private void doPreChecksBeforeRegistration(CenterMachineDto centerMachineDto) th private boolean validatingDiskSpace() { int minSpaceRequiredMB = globalParamRepository.getCachedIntegerDiskSpaceSize(); - if (minSpaceRequiredMB == 0) { + if (minSpaceRequiredMB <= 0) { minSpaceRequiredMB = DEFAULT_MIN_SPACE_REQUIRED_MB; } long allowedDiskSpaceSizeInBytes = (long) minSpaceRequiredMB * 1024 * 1024; @@ -687,6 +687,10 @@ private boolean validatingDiskSpace() { Log.e(TAG, "Packet store directory not available: " + actualDiskSpace.getAbsolutePath()); return true; // treat as low space/unavailable } + if (!actualDiskSpace.isDirectory() || !actualDiskSpace.canWrite()) { + Log.e(TAG, "Packet store directory not writable: " + actualDiskSpace.getAbsolutePath()); + return true; // treat as low space/unavailable + } long usableSpace = actualDiskSpace.getUsableSpace(); if (usableSpace == 0) { diff --git a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/external/impl/PreRegZipHandlingServiceImpl.java b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/external/impl/PreRegZipHandlingServiceImpl.java index 1406c0dfe..08e3e07b2 100644 --- a/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/external/impl/PreRegZipHandlingServiceImpl.java +++ b/android/clientmanager/src/main/java/io/mosip/registration/clientmanager/service/external/impl/PreRegZipHandlingServiceImpl.java @@ -487,8 +487,6 @@ private String validateFilename(String filename, String intendedDir) throws IOEx private void initPreRegAdapter(Context context) { this.appContext = context; - File baseDir = StorageUtils.getPacketStorageDir(context); - BASE_LOCATION = baseDir.getAbsolutePath(); } }