diff options
Diffstat (limited to 'src/main/java')
5 files changed, 39 insertions, 83 deletions
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<String, Object> 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<User, Actor> { - - private ProfileUriBuilder profileUriBuilder; - private KeystoreManager keystoreManager; - private WebApp webApp; - +public record UserToActorConverter(ProfileUriBuilder profileUriBuilder, KeystoreManager keystoreManager, WebApp webApp) + implements Converter<User, Actor> { @Override public Actor convert(User user) { Actor profile = user.isService() ? new Application() : new Person(); @@ -44,5 +37,4 @@ public class UserToActorConverter implements Converter<User, Actor> { 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(); |