From 7db80706ca968a7090d7f6ebe75f67f71f6a489a Mon Sep 17 00:00:00 2001 From: Andrii-Opti Date: Fri, 1 Aug 2025 15:09:19 +0300 Subject: [PATCH 1/4] dependencies fix + version update --- pom.xml | 9 +++++++-- readme.md | 2 +- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index ee79d13..1fb54fb 100644 --- a/pom.xml +++ b/pom.xml @@ -62,7 +62,7 @@ org.apache.avro avro - 1.11.3 + 1.11.4 org.apache.commons @@ -94,9 +94,14 @@ org.mockito mockito-core - 5.11.0 + 5.18.0 test + + com.google.protobuf + protobuf-java + 3.25.5 + diff --git a/readme.md b/readme.md index d35f276..fb6d790 100644 --- a/readme.md +++ b/readme.md @@ -10,7 +10,7 @@ To use this SDK in your project, you'll need to add it as a dependency in your M io.github.maryan-opti Optimove-SDK-Engagement-java - 1.0.3 + 1.0.4 ``` Then, you can import the necessary classes from the SDK into your Java code: From 382b35d9763eee739e7f3929270ec1dd86735d2d Mon Sep 17 00:00:00 2001 From: Andrii-Opti Date: Tue, 12 Aug 2025 15:47:43 +0300 Subject: [PATCH 2/4] Add snappy-java dependency and refactor Engagement class to avoid resource closing issues --- pom.xml | 5 +++++ .../java/optimove/sdk/engagement/Engagement.java | 13 +++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 1fb54fb..94dbbad 100644 --- a/pom.xml +++ b/pom.xml @@ -102,6 +102,11 @@ protobuf-java 3.25.5 + + org.xerial.snappy + snappy-java + 1.1.10.5 + diff --git a/src/main/java/optimove/sdk/engagement/Engagement.java b/src/main/java/optimove/sdk/engagement/Engagement.java index 4f89d8b..929bee0 100644 --- a/src/main/java/optimove/sdk/engagement/Engagement.java +++ b/src/main/java/optimove/sdk/engagement/Engagement.java @@ -66,8 +66,17 @@ public DataFileStream getCustomersFileStream(String srcFileName) throw new IllegalArgumentException("srcFileName is null or empty"); } - try (ReadChannel readChanel = StorageSingleton.getReadChanel(this.settings.getBucketName(), srcFileName, this.settings.getDecryptionKey()); - InputStream targetStream = Channels.newInputStream(readChanel)) { + try { + // Do NOT wrap the ReadChannel and InputStream in try-with-resources here – + // doing so would close them immediately, making the returned DataFileStream unusable + // and causing a ClosedChannelException when the caller tries to read. + + ReadChannel readChannel = StorageSingleton.getReadChanel( + this.settings.getBucketName(), + srcFileName, + this.settings.getDecryptionKey()); + + InputStream targetStream = Channels.newInputStream(readChannel); DatumReader datumReader = new GenericDatumReader<>(); return new DataFileStream<>(targetStream, datumReader); From c3beed297f96e48a2dcb7663d1f7c0bcc497a7dc Mon Sep 17 00:00:00 2001 From: Andrii-Opti <163288637+Andrii-Opti@users.noreply.github.com> Date: Tue, 12 Aug 2025 16:03:10 +0300 Subject: [PATCH 3/4] Update readme.md --- readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/readme.md b/readme.md index fb6d790..94bfd7d 100644 --- a/readme.md +++ b/readme.md @@ -1,4 +1,4 @@ -# Optimove Java SDK +# Optimove Java SDK This SDK provides a Java library for working with customer engagement data. The library includes classes for getting engagement data, as well as metadata about the engagement. @@ -136,4 +136,4 @@ DataFileStream dataFileStream = engagement.getCustomersFileStream logger.error("Invalid file path: " + e.getMessage(), e); // handle error } -``` \ No newline at end of file +``` From 5b0b6119f81e7d455cdbfe9f6e45bc5a4f80ebaa Mon Sep 17 00:00:00 2001 From: Denys Pilguiev Date: Tue, 12 Aug 2025 17:39:15 +0400 Subject: [PATCH 4/4] remove ws --- settings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/settings.xml b/settings.xml index 934c85e..4c1c365 100644 --- a/settings.xml +++ b/settings.xml @@ -6,4 +6,4 @@ v1g4IfBrB5oOjsWQNrd3EsMJmwzELR9qZ4t4i5J5qNNx - + \ No newline at end of file