From 1d36259ab443824e728a3c4877da6f0d6720cad3 Mon Sep 17 00:00:00 2001 From: "baris.alis" Date: Tue, 19 Aug 2025 17:32:11 +0200 Subject: [PATCH 1/4] feat: Create sample Java project using SDK. WPB-19280 Extend WireEventsHandlerDefault Reply the message with the same content with a minimal addition to the end. --- sample-java/pom.xml | 52 +++++++++++++ .../main/java/org/example/ChatService.java | 48 ++++++++++++ .../org/example/CustomWireEventsHandler.java | 74 +++++++++++++++++++ .../src/main/java/org/example/Main.java | 38 ++++++++++ 4 files changed, 212 insertions(+) create mode 100644 sample-java/pom.xml create mode 100644 sample-java/src/main/java/org/example/ChatService.java create mode 100644 sample-java/src/main/java/org/example/CustomWireEventsHandler.java create mode 100644 sample-java/src/main/java/org/example/Main.java diff --git a/sample-java/pom.xml b/sample-java/pom.xml new file mode 100644 index 00000000..7da6c8d9 --- /dev/null +++ b/sample-java/pom.xml @@ -0,0 +1,52 @@ + + + + + 4.0.0 + + org.example + sample-java + 1.0-SNAPSHOT + + + 21 + 21 + UTF-8 + + + + + com.wire + wire-apps-jvm-sdk + 0.0.15 + + + + org.slf4j + slf4j-api + 2.0.17 + + + + ch.qos.logback + logback-classic + 1.5.18 + + + diff --git a/sample-java/src/main/java/org/example/ChatService.java b/sample-java/src/main/java/org/example/ChatService.java new file mode 100644 index 00000000..4bc1233c --- /dev/null +++ b/sample-java/src/main/java/org/example/ChatService.java @@ -0,0 +1,48 @@ +/* + * Wire + * Copyright (C) 2025 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + */ + +package org.example; + +import com.wire.integrations.jvm.model.QualifiedId; +import com.wire.integrations.jvm.model.WireMessage; +import com.wire.integrations.jvm.service.WireApplicationManager; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.List; + +public class ChatService { + private static final Logger logger = LoggerFactory.getLogger(ChatService.class); + private final WireApplicationManager applicationManager; + + public ChatService(WireApplicationManager applicationManager) { + this.applicationManager = applicationManager; + } + + void sendReply( + QualifiedId conversationId, + String newMessage, + List mentions, + List linkPreviews, + WireMessage originalMessage) { + + final WireMessage reply = WireMessage.Text.createReply( + conversationId, newMessage, mentions, linkPreviews, originalMessage, null); + + applicationManager.sendMessage(reply); + logger.info("Reply sent. conversationId:{}", conversationId); + } +} diff --git a/sample-java/src/main/java/org/example/CustomWireEventsHandler.java b/sample-java/src/main/java/org/example/CustomWireEventsHandler.java new file mode 100644 index 00000000..3bf13607 --- /dev/null +++ b/sample-java/src/main/java/org/example/CustomWireEventsHandler.java @@ -0,0 +1,74 @@ +/* + * Wire + * Copyright (C) 2025 Wire Swiss GmbH + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * You should have received a copy of the GNU General Public License + * along with this program. If not, see http://www.gnu.org/licenses/. + */ + +package org.example; + +import com.wire.integrations.jvm.WireEventsHandlerDefault; +import com.wire.integrations.jvm.model.WireMessage; +import org.jetbrains.annotations.NotNull; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class CustomWireEventsHandler extends WireEventsHandlerDefault { + + private static final Logger logger = LoggerFactory.getLogger(CustomWireEventsHandler.class); + private ChatService chatService = null; + + // We have this method just because Application Manager is lazy-loaded. + private ChatService getChatService() { + if (chatService == null) { + chatService = new ChatService(getManager()); + } + return chatService; + } + + @Override + public void onMessage(@NotNull WireMessage.Text wireMessage) { + logger.info("Message received. conversationId:{}", wireMessage.conversationId()); + + getChatService().sendReply( + wireMessage.conversationId(), + wireMessage.text() + " -- Sent from the Custom App (Java)", + wireMessage.mentions(), + wireMessage.linkPreviews(), + wireMessage + ); + } + +} + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sample-java/src/main/java/org/example/Main.java b/sample-java/src/main/java/org/example/Main.java new file mode 100644 index 00000000..4349a7fa --- /dev/null +++ b/sample-java/src/main/java/org/example/Main.java @@ -0,0 +1,38 @@ +package org.example; + +import com.wire.integrations.jvm.WireAppSdk; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import java.util.UUID; + +public class Main { + + private static final Logger logger = LoggerFactory.getLogger(Main.class); + + final static UUID MY_APPLICATION_ID = UUID.randomUUID(); + final static String WIRE_API_TOKEN = "myApiToken"; + final static String WIRE_API_HOST = "https://staging-nginz-https.zinfra.io"; + final static String WIRE_CRYPTOGRAPHY_STORAGE_PASSWORD = "myDummyPasswordOfRandom32BytesCH"; + + public static void main(String[] args) { + new Main().initApp(); + logger.info("Application started."); + } + + private void initApp() { + final var wireAppSdk = initSdkInstance(); + wireAppSdk.startListening(); + } + + private WireAppSdk initSdkInstance() { + return new WireAppSdk( + MY_APPLICATION_ID, + WIRE_API_TOKEN, + WIRE_API_HOST, + WIRE_CRYPTOGRAPHY_STORAGE_PASSWORD, + new CustomWireEventsHandler() + ); + } + +} From 82368a2e218c689de9f163137181feb2feefaae7 Mon Sep 17 00:00:00 2001 From: "baris.alis" Date: Wed, 20 Aug 2025 10:09:18 +0200 Subject: [PATCH 2/4] feat: Create sample Java project using SDK. WPB-19280 remove empty lines --- .../org/example/CustomWireEventsHandler.java | 23 ------------------- 1 file changed, 23 deletions(-) diff --git a/sample-java/src/main/java/org/example/CustomWireEventsHandler.java b/sample-java/src/main/java/org/example/CustomWireEventsHandler.java index 3bf13607..8e53a22a 100644 --- a/sample-java/src/main/java/org/example/CustomWireEventsHandler.java +++ b/sample-java/src/main/java/org/example/CustomWireEventsHandler.java @@ -49,26 +49,3 @@ public void onMessage(@NotNull WireMessage.Text wireMessage) { } } - - - - - - - - - - - - - - - - - - - - - - - From 37340d6fda40c9583e0f0f246d48454fcab984d6 Mon Sep 17 00:00:00 2001 From: "baris.alis" Date: Wed, 20 Aug 2025 11:04:13 +0200 Subject: [PATCH 3/4] feat: Create sample Java project using SDK. WPB-19280 Remove ChatService and simplify the flow. --- .../main/java/org/example/ChatService.java | 48 ------------------- .../org/example/CustomWireEventsHandler.java | 24 ++++------ 2 files changed, 10 insertions(+), 62 deletions(-) delete mode 100644 sample-java/src/main/java/org/example/ChatService.java diff --git a/sample-java/src/main/java/org/example/ChatService.java b/sample-java/src/main/java/org/example/ChatService.java deleted file mode 100644 index 4bc1233c..00000000 --- a/sample-java/src/main/java/org/example/ChatService.java +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Wire - * Copyright (C) 2025 Wire Swiss GmbH - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * You should have received a copy of the GNU General Public License - * along with this program. If not, see http://www.gnu.org/licenses/. - */ - -package org.example; - -import com.wire.integrations.jvm.model.QualifiedId; -import com.wire.integrations.jvm.model.WireMessage; -import com.wire.integrations.jvm.service.WireApplicationManager; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.util.List; - -public class ChatService { - private static final Logger logger = LoggerFactory.getLogger(ChatService.class); - private final WireApplicationManager applicationManager; - - public ChatService(WireApplicationManager applicationManager) { - this.applicationManager = applicationManager; - } - - void sendReply( - QualifiedId conversationId, - String newMessage, - List mentions, - List linkPreviews, - WireMessage originalMessage) { - - final WireMessage reply = WireMessage.Text.createReply( - conversationId, newMessage, mentions, linkPreviews, originalMessage, null); - - applicationManager.sendMessage(reply); - logger.info("Reply sent. conversationId:{}", conversationId); - } -} diff --git a/sample-java/src/main/java/org/example/CustomWireEventsHandler.java b/sample-java/src/main/java/org/example/CustomWireEventsHandler.java index 8e53a22a..b74c06a3 100644 --- a/sample-java/src/main/java/org/example/CustomWireEventsHandler.java +++ b/sample-java/src/main/java/org/example/CustomWireEventsHandler.java @@ -17,35 +17,31 @@ package org.example; import com.wire.integrations.jvm.WireEventsHandlerDefault; +import com.wire.integrations.jvm.model.QualifiedId; import com.wire.integrations.jvm.model.WireMessage; import org.jetbrains.annotations.NotNull; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.util.List; + public class CustomWireEventsHandler extends WireEventsHandlerDefault { private static final Logger logger = LoggerFactory.getLogger(CustomWireEventsHandler.class); - private ChatService chatService = null; - - // We have this method just because Application Manager is lazy-loaded. - private ChatService getChatService() { - if (chatService == null) { - chatService = new ChatService(getManager()); - } - return chatService; - } @Override public void onMessage(@NotNull WireMessage.Text wireMessage) { logger.info("Message received. conversationId:{}", wireMessage.conversationId()); - getChatService().sendReply( + final WireMessage reply = WireMessage.Text.createReply( wireMessage.conversationId(), - wireMessage.text() + " -- Sent from the Custom App (Java)", + wireMessage.text() + " -- Sent from the Sample-Java App", wireMessage.mentions(), wireMessage.linkPreviews(), - wireMessage - ); - } + wireMessage, + null); + getManager().sendMessage(reply); + logger.info("Reply sent. conversationId:{}", wireMessage.conversationId()); + } } From b563e866734798e4ce7cf5c57d2a27bcedabc868 Mon Sep 17 00:00:00 2001 From: "baris.alis" Date: Wed, 20 Aug 2025 14:48:10 +0200 Subject: [PATCH 4/4] Convert from Maven to Gradle Use Java 17 instead of 21 --- sample-java/build.gradle.kts | 22 +++++++++++++++ sample-java/pom.xml | 52 ------------------------------------ settings.gradle.kts | 2 +- 3 files changed, 23 insertions(+), 53 deletions(-) create mode 100644 sample-java/build.gradle.kts delete mode 100644 sample-java/pom.xml diff --git a/sample-java/build.gradle.kts b/sample-java/build.gradle.kts new file mode 100644 index 00000000..611ee1ea --- /dev/null +++ b/sample-java/build.gradle.kts @@ -0,0 +1,22 @@ +plugins { + id("java") +} + +group = "org.example" +version = "1.0-SNAPSHOT" + +java { + toolchain { + languageVersion.set(JavaLanguageVersion.of(17)) + } +} + +repositories { + mavenCentral() +} + +dependencies { + implementation("com.wire:wire-apps-jvm-sdk:0.0.15") + implementation("org.slf4j:slf4j-api:2.0.17") + implementation("ch.qos.logback:logback-classic:1.5.18") +} diff --git a/sample-java/pom.xml b/sample-java/pom.xml deleted file mode 100644 index 7da6c8d9..00000000 --- a/sample-java/pom.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - 4.0.0 - - org.example - sample-java - 1.0-SNAPSHOT - - - 21 - 21 - UTF-8 - - - - - com.wire - wire-apps-jvm-sdk - 0.0.15 - - - - org.slf4j - slf4j-api - 2.0.17 - - - - ch.qos.logback - logback-classic - 1.5.18 - - - diff --git a/settings.gradle.kts b/settings.gradle.kts index 34bf4272..99fbd28b 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -19,4 +19,4 @@ plugins { } rootProject.name = "wire-apps-jvm-sdk" -include("lib", "sample") +include("lib", "sample", "sample-java")