From a740c0e1d4e9f89ef7decfe4225e53555121f93b Mon Sep 17 00:00:00 2001
From: Vitaly Takmazov
Date: Wed, 21 Dec 2022 01:18:05 +0300
Subject: Switch from `lombok` to Java 17 `record`
---
pom.xml | 5 ---
src/main/java/com/juick/ActivityPubManager.java | 2 +-
src/main/java/com/juick/XMPPManager.java | 50 ++++++++++++++--------
src/main/java/com/juick/config/XMPPConfig.java | 48 ++-------------------
.../activity/converters/UserToActorConverter.java | 12 +-----
.../api/activity/helpers/ProfileUriBuilder.java | 10 +----
6 files changed, 39 insertions(+), 88 deletions(-)
diff --git a/pom.xml b/pom.xml
index b80f5e78..7ebf369c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -280,11 +280,6 @@
org.flywaydb
flyway-mysql
-
- org.projectlombok
- lombok
- provided
-
diff --git a/src/main/java/com/juick/ActivityPubManager.java b/src/main/java/com/juick/ActivityPubManager.java
index 0a1d957a..4324df11 100644
--- a/src/main/java/com/juick/ActivityPubManager.java
+++ b/src/main/java/com/juick/ActivityPubManager.java
@@ -307,7 +307,7 @@ public class ActivityPubManager implements ActivityListener, NotificationListene
PebbleTemplate noteTemplate = pebbleEngine.getTemplate("layouts/note");
Map context = new HashMap<>();
context.put("msg", msg);
- context.put("baseUri", profileUriBuilder.getBaseUri());
+ context.put("baseUri", profileUriBuilder.baseUri());
try {
Writer writer = new StringWriter();
noteTemplate.evaluate(writer, context);
diff --git a/src/main/java/com/juick/XMPPManager.java b/src/main/java/com/juick/XMPPManager.java
index 4ff99787..7b881420 100644
--- a/src/main/java/com/juick/XMPPManager.java
+++ b/src/main/java/com/juick/XMPPManager.java
@@ -32,15 +32,15 @@ import com.juick.util.xmpp.iq.MessageQuery;
import com.juick.www.WebApp;
import com.juick.www.api.SystemActivity;
import jakarta.annotation.PostConstruct;
-import jakarta.annotation.PreDestroy;
-import lombok.RequiredArgsConstructor;
import org.apache.commons.codec.digest.DigestUtils;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.io.Resource;
+import org.springframework.stereotype.Component;
import rocks.xmpp.addr.Jid;
import rocks.xmpp.core.XmppException;
import rocks.xmpp.core.session.Extension;
@@ -70,6 +70,7 @@ import rocks.xmpp.extensions.version.SoftwareVersionManager;
import rocks.xmpp.extensions.version.model.SoftwareVersion;
import javax.annotation.Nonnull;
+import javax.inject.Inject;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URI;
@@ -87,27 +88,41 @@ import java.util.concurrent.Executor;
/**
* @author ugnich
*/
-@RequiredArgsConstructor
public class XMPPManager implements NotificationListener {
private static final Logger logger = LoggerFactory.getLogger("XMPP");
private ExternalComponent xmpp;
- private final CommandsManager commandsManager;
- private final Jid jid;
- private final String componentName;
- private final int componentPort;
- private final String componentHost;
- private final String password;
- private final StorageService storageService;
- private final Resource vCardImage;
-
- private final MessagesService messagesService;
- private final UserService userService;
- private final PMQueriesService pmQueriesService;
- private final Executor applicationTaskExecutor;
- private final WebApp webApp;
+ @Value("${xmppbot_jid:juick@localhost}")
+ private String botJid;
+ @Value("${hostname:localhost}")
+ private String componentName;
+ @Value("${component_port:5347}")
+ private int componentPort;
+ @Value("${component_host:localhost}")
+ private String componentHost;
+ @Inject
+ private CommandsManager commandsManager;
+ @Value("${xmpp_password:secret}")
+ private String password;
+ @Value("classpath:juick.png")
+ private Resource vCardImage;
+ @Inject
+ private StorageService storageService;
+ @Inject
+ private MessagesService messagesService;
+ @Inject
+ private UserService userService;
+ @Inject
+ private PMQueriesService pmQueriesService;
+ @Inject
+ private Executor applicationTaskExecutor;
+ @Inject
+ private WebApp webApp;
+
+ private Jid jid;
@PostConstruct
public void init() {
+ jid = Jid.of(botJid);
logger.info("xmpp component start connecting to {}", componentPort);
XmppSessionConfiguration configuration = XmppSessionConfiguration.builder()
.extensions(Extension.of(com.juick.model.Message.class), Extension.of(MessageQuery.class))
@@ -615,7 +630,6 @@ public class XMPPManager implements NotificationListener {
});
}
- @PreDestroy
public void close() throws Exception {
broadcastPresence(Presence.Type.UNAVAILABLE);
if (xmpp != null) {
diff --git a/src/main/java/com/juick/config/XMPPConfig.java b/src/main/java/com/juick/config/XMPPConfig.java
index 534909a5..ee2abab4 100644
--- a/src/main/java/com/juick/config/XMPPConfig.java
+++ b/src/main/java/com/juick/config/XMPPConfig.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2008-2020, Juick
+ * Copyright (C) 2008-2022, Juick
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
@@ -17,58 +17,16 @@
package com.juick.config;
-import com.juick.CommandsManager;
import com.juick.XMPPManager;
-
-import com.juick.service.MessagesService;
-import com.juick.service.PMQueriesService;
-import com.juick.service.StorageService;
-import com.juick.service.UserService;
-import com.juick.www.WebApp;
-import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import org.springframework.core.io.Resource;
-import rocks.xmpp.addr.Jid;
-
-import javax.inject.Inject;
-import java.util.concurrent.Executor;
@Configuration
@ConditionalOnProperty("xmppbot_jid")
public class XMPPConfig {
- @Value("${xmppbot_jid:juick@localhost}")
- private String botJid;
- @Value("${hostname:localhost}")
- private String componentName;
- @Value("${component_port:5347}")
- private int componentPort;
- @Value("${component_host:localhost}")
- private String componentHost;
- @Inject
- private CommandsManager commandsManager;
- @Value("${xmpp_password:secret}")
- private String password;
- @Value("classpath:juick.png")
- private Resource vCardImage;
- @Inject
- private StorageService storageService;
- @Inject
- private MessagesService messagesService;
- @Inject
- private UserService userService;
- @Inject
- private PMQueriesService pmQueriesService;
- @Inject
- private Executor applicationTaskExecutor;
- @Inject
- private WebApp webApp;
-
- @Bean
+ @Bean(destroyMethod = "close")
XMPPManager xmppConnection() {
- return new XMPPManager(commandsManager, Jid.of(botJid), componentName, componentPort,
- componentHost, password, storageService, vCardImage, messagesService, userService, pmQueriesService,
- applicationTaskExecutor, webApp);
+ return new XMPPManager();
}
}
diff --git a/src/main/java/com/juick/www/api/activity/converters/UserToActorConverter.java b/src/main/java/com/juick/www/api/activity/converters/UserToActorConverter.java
index 435cb50d..0ba047b5 100644
--- a/src/main/java/com/juick/www/api/activity/converters/UserToActorConverter.java
+++ b/src/main/java/com/juick/www/api/activity/converters/UserToActorConverter.java
@@ -13,15 +13,8 @@ import com.juick.www.api.activity.model.objects.Image;
import com.juick.www.api.activity.model.objects.Key;
import com.juick.www.api.activity.model.objects.Person;
-import lombok.AllArgsConstructor;
-
-@AllArgsConstructor
-public class UserToActorConverter implements Converter {
-
- private ProfileUriBuilder profileUriBuilder;
- private KeystoreManager keystoreManager;
- private WebApp webApp;
-
+public record UserToActorConverter(ProfileUriBuilder profileUriBuilder, KeystoreManager keystoreManager, WebApp webApp)
+ implements Converter {
@Override
public Actor convert(User user) {
Actor profile = user.isService() ? new Application() : new Person();
@@ -44,5 +37,4 @@ public class UserToActorConverter implements Converter {
profile.setIcon(avatar);
return (Actor) Context.build(profile);
}
-
}
diff --git a/src/main/java/com/juick/www/api/activity/helpers/ProfileUriBuilder.java b/src/main/java/com/juick/www/api/activity/helpers/ProfileUriBuilder.java
index 8f5e7566..e10c3078 100644
--- a/src/main/java/com/juick/www/api/activity/helpers/ProfileUriBuilder.java
+++ b/src/main/java/com/juick/www/api/activity/helpers/ProfileUriBuilder.java
@@ -20,18 +20,10 @@ package com.juick.www.api.activity.helpers;
import com.juick.model.Message;
import com.juick.model.Tag;
import com.juick.model.User;
-import lombok.AllArgsConstructor;
import org.springframework.web.util.UriComponents;
import org.springframework.web.util.UriComponentsBuilder;
-@AllArgsConstructor
-public class ProfileUriBuilder {
- private String baseUri;
-
- public String getBaseUri() {
- return baseUri;
- }
-
+public record ProfileUriBuilder(String baseUri) {
public String inboxUri() {
UriComponentsBuilder uri = UriComponentsBuilder.fromUriString(baseUri);
return uri.replacePath("/api/inbox").toUriString();
--
cgit v1.2.3