This is an automated email from the ASF dual-hosted git repository. dominikriemer pushed a commit to branch migrate-configuration-storage in repository https://gitbox.apache.org/repos/asf/streampipes.git
commit ac4d35b1e8189bcb3e14fa914210e43ed5b16fb0 Author: Dominik Riemer <[email protected]> AuthorDate: Tue Jun 23 22:59:39 2026 +0200 Continue migration of configuration storage --- .../management/management/GuessManagement.java | 8 ++++++-- .../management/management/WorkerRestClient.java | 7 +++++-- .../dataexplorer/export/OutputFormat.java | 4 +++- .../streampipes/loadbalance/LoadManager.java | 3 +-- .../loadbalance/ResourceUnitMigration.java | 9 +++++---- .../loadbalance/unit/InvokeHttpRequest.java | 23 +++++++++++++--------- .../org/apache/streampipes/mail/MailSender.java | 15 +++++++------- .../org/apache/streampipes/mail/MailTester.java | 9 +++++++-- .../mail/template/AbstractMailTemplate.java | 16 ++++++++++----- .../template/AccountActiviationMailTemplate.java | 10 +++++++--- .../mail/template/CustomMailTemplate.java | 5 ++++- .../mail/template/InitialPasswordMailTemplate.java | 11 +++++++---- .../template/PasswordRecoveryMailTemplate.java | 10 +++++++--- .../mail/template/TestMailTemplate.java | 7 ++++++- .../mail/template/part/AbstractPart.java | 4 +++- .../mail/template/part/BaseUrlPart.java | 6 ++++-- .../streampipes/mail/template/part/LinkPart.java | 5 +++-- .../streampipes/mail/template/part/LogoPart.java | 10 +++------- .../api/extensions/ExtensionServiceRequests.java | 22 ++++++++++++++++----- .../manager/extensions/ExtensionItemInstaller.java | 4 ++-- .../migration/AbstractMigrationManager.java | 2 +- .../remote/ContainerProvidedOptionsHandler.java | 8 ++++++-- .../streampipes/manager/util/AuthTokenUtils.java | 15 +++++++------- .../verification/extractor/TypeExtractor.java | 14 ++++++------- .../resource/management/SpResourceManager.java | 2 +- .../resource/management/UserResourceManager.java | 10 +++++++--- .../rest/impl/ContainerProvidedOptions.java | 8 ++++++-- .../impl/admin/EmailConfigurationResource.java | 10 +++++++++- .../rest/impl/connect/CompactAdapterResource.java | 3 ++- .../rest/impl/connect/GuessResource.java | 10 ++++++++-- .../impl/connect/RuntimeResolvableResource.java | 9 +++++++-- .../CertificateExpiryEmailScheduler.java | 2 +- 32 files changed, 186 insertions(+), 95 deletions(-) diff --git a/streampipes-connect-management/src/main/java/org/apache/streampipes/connect/management/management/GuessManagement.java b/streampipes-connect-management/src/main/java/org/apache/streampipes/connect/management/management/GuessManagement.java index b62d5bfe0a..1cbde82a00 100644 --- a/streampipes-connect-management/src/main/java/org/apache/streampipes/connect/management/management/GuessManagement.java +++ b/streampipes-connect-management/src/main/java/org/apache/streampipes/connect/management/management/GuessManagement.java @@ -36,6 +36,7 @@ import org.apache.streampipes.model.connect.adapter.AdapterDescription; import org.apache.streampipes.model.connect.guess.SampleData; import org.apache.streampipes.model.monitoring.SpLogMessage; import org.apache.streampipes.model.schema.EventSchema; +import org.apache.streampipes.resource.management.SpResourceManager; import org.apache.streampipes.resource.management.secret.SecretProvider; import org.apache.streampipes.serializers.json.JacksonSerializer; import org.apache.streampipes.svcdiscovery.api.model.SpServiceUrlProvider; @@ -56,12 +57,15 @@ public class GuessManagement { private final ExtensionServiceRequestManager extensionRequestManager; private final IExtensionsServiceEndpointGenerator endpointGenerator; private final ObjectMapper objectMapper; + private final SpResourceManager resourceManager; public GuessManagement(IExtensionsServiceEndpointGenerator endpointGenerator, - ExtensionServiceRequestManager extensionRequestManager) { + ExtensionServiceRequestManager extensionRequestManager, + SpResourceManager resourceManager) { this.endpointGenerator = endpointGenerator; this.extensionRequestManager = extensionRequestManager; this.objectMapper = JacksonSerializer.getObjectMapper(); + this.resourceManager = resourceManager; } public EventSchema guessSchema(AdapterDescription adapterDescription) { @@ -88,7 +92,7 @@ public class GuessManagement { LOG.debug("Calling get sample data at service: {}", requestTarget.serviceId()); var response = extensionRequestManager.request( - ExtensionServiceRequests.sampleData(requestTarget, adapterDescriptionString) + ExtensionServiceRequests.sampleData(requestTarget, adapterDescriptionString, resourceManager) ); var responseString = response.responseBody(); diff --git a/streampipes-connect-management/src/main/java/org/apache/streampipes/connect/management/management/WorkerRestClient.java b/streampipes-connect-management/src/main/java/org/apache/streampipes/connect/management/management/WorkerRestClient.java index 92331c4c52..27df7db7a1 100644 --- a/streampipes-connect-management/src/main/java/org/apache/streampipes/connect/management/management/WorkerRestClient.java +++ b/streampipes-connect-management/src/main/java/org/apache/streampipes/connect/management/management/WorkerRestClient.java @@ -129,13 +129,16 @@ public class WorkerRestClient { public RuntimeOptionsResponse getConfiguration(SpServiceRegistration service, String appId, - RuntimeOptionsRequest runtimeOptionsRequest) + RuntimeOptionsRequest runtimeOptionsRequest, + SpResourceManager resourceManager) throws AdapterException, SpConfigurationException { try { String payload = JacksonSerializer.getObjectMapper().writeValueAsString(runtimeOptionsRequest); var requestTarget = ExtensionServiceRequestTargets.adapterRuntimeOptions(service, appId); - var response = requestManager.request(ExtensionServiceRequests.runtimeOptions(requestTarget, payload)); + var response = requestManager.request( + ExtensionServiceRequests.runtimeOptions(requestTarget, payload, resourceManager) + ); String responseString = response.responseBody(); if (response.statusCode() == HttpStatus.SC_OK) { diff --git a/streampipes-data-explorer-export/src/main/java/org/apache/streampipes/dataexplorer/export/OutputFormat.java b/streampipes-data-explorer-export/src/main/java/org/apache/streampipes/dataexplorer/export/OutputFormat.java index d1237afc23..f36409b105 100644 --- a/streampipes-data-explorer-export/src/main/java/org/apache/streampipes/dataexplorer/export/OutputFormat.java +++ b/streampipes-data-explorer-export/src/main/java/org/apache/streampipes/dataexplorer/export/OutputFormat.java @@ -26,7 +26,9 @@ import java.util.function.Supplier; public enum OutputFormat { JSON(ConfiguredJsonOutputWriter::new), CSV(ConfiguredCsvOutputWriter::new), - XLSX(() -> new ConfiguredExcelOutputWriter(StorageDispatcher.INSTANCE.getNoSqlStore().getFileMetadataStorage())); + XLSX(() -> new ConfiguredExcelOutputWriter( + StorageDispatcher.INSTANCE.getNoSqlStore().getFileMetadataStorage()) + ); private final Supplier<ConfiguredOutputWriter> writerSupplier; diff --git a/streampipes-load-balancer/src/main/java/org/apache/streampipes/loadbalance/LoadManager.java b/streampipes-load-balancer/src/main/java/org/apache/streampipes/loadbalance/LoadManager.java index 42228165bb..cfc1727e73 100644 --- a/streampipes-load-balancer/src/main/java/org/apache/streampipes/loadbalance/LoadManager.java +++ b/streampipes-load-balancer/src/main/java/org/apache/streampipes/loadbalance/LoadManager.java @@ -167,7 +167,6 @@ public class LoadManager { public static void migrateForHealthCheck(List<SpServiceRegistration> needDeletedServices, SpResourceManager resourceManager) { - var pipelineStorage = resourceManager.managePipelines().getDb(); if (!environment.getLoadManagerEnable().getValueOrDefault() || loadBalancer == null) { return; } @@ -201,7 +200,7 @@ public class LoadManager { loadBalanceResourceUnit.getLabels()); if (targetService != null) { ResourceUnitMigration.migrationForHealth(loadBalanceResourceUnit, targetService, - service, pipelineStorage); + service, resourceManager); } } } diff --git a/streampipes-load-balancer/src/main/java/org/apache/streampipes/loadbalance/ResourceUnitMigration.java b/streampipes-load-balancer/src/main/java/org/apache/streampipes/loadbalance/ResourceUnitMigration.java index 1b7df77431..2d3d064f54 100644 --- a/streampipes-load-balancer/src/main/java/org/apache/streampipes/loadbalance/ResourceUnitMigration.java +++ b/streampipes-load-balancer/src/main/java/org/apache/streampipes/loadbalance/ResourceUnitMigration.java @@ -52,7 +52,7 @@ public class ResourceUnitMigration { public static void migrationForHealth(LoadBalanceResourceUnit<InvocableStreamPipesEntity> resourceUnit, SpServiceRegistration targetService, SpServiceRegistration sourceService, - IPipelineStorage pipelineStorage) { + SpResourceManager resourceManager) { logger.info("Migrating pipeline resource unit {} to service {} for health recovery", resourceUnit.getId(), targetService.getSvcId()); @@ -68,11 +68,12 @@ public class ResourceUnitMigration { logger.debug("Invoking element {} on new endpoint {}", element.getElementId(), newEndpointUrl); - new InvokeHttpRequest().execute(element, newEndpointUrl, resourceUnit.getPipelineId()); + new InvokeHttpRequest().execute( + element, newEndpointUrl, resourceUnit.getPipelineId(), resourceManager.getCoreConfigurationStorage()); } // Update pipeline in storage with new endpoints - updatePipelineEndpoints(resourceUnit, pipelineStorage); + updatePipelineEndpoints(resourceUnit, resourceManager.managePipelines().getDb()); logger.info("Successfully migrated pipeline resource unit {} to service {}", resourceUnit.getId(), targetService.getSvcId()); @@ -296,7 +297,7 @@ public class ResourceUnitMigration { if (isAdapter) { migrateAdapterForHealth(matchingUnit, targetService, sourceService, resourceManager); } else { - migrationForHealth(matchingUnit, targetService, sourceService, pipelineStorage); + migrationForHealth(matchingUnit, targetService, sourceService, resourceManager); } transferredAmount += stats.getEventRateOut() + stats.getEventRateIn(); migratedCount++; diff --git a/streampipes-load-balancer/src/main/java/org/apache/streampipes/loadbalance/unit/InvokeHttpRequest.java b/streampipes-load-balancer/src/main/java/org/apache/streampipes/loadbalance/unit/InvokeHttpRequest.java index 0af6c20bcd..468ee2f783 100644 --- a/streampipes-load-balancer/src/main/java/org/apache/streampipes/loadbalance/unit/InvokeHttpRequest.java +++ b/streampipes-load-balancer/src/main/java/org/apache/streampipes/loadbalance/unit/InvokeHttpRequest.java @@ -23,6 +23,7 @@ import org.apache.streampipes.model.client.user.Permission; import org.apache.streampipes.model.client.user.Principal; import org.apache.streampipes.model.pipeline.PipelineElementStatus; import org.apache.streampipes.serializers.json.JacksonSerializer; +import org.apache.streampipes.storage.api.system.ISpCoreConfigurationStorage; import org.apache.streampipes.storage.couchdb.impl.user.PermissionStorageImpl; import org.apache.streampipes.storage.management.StorageDispatcher; import org.apache.streampipes.user.management.jwt.JwtTokenProvider; @@ -64,10 +65,11 @@ public class InvokeHttpRequest{ public PipelineElementStatus execute(EndpointSelectable pipelineElement, String endpointUrl, - String pipelineId) { + String pipelineId, + ISpCoreConfigurationStorage configurationStorage) { try { Response httpResp = initRequest(pipelineElement, endpointUrl) - .addHeader("Authorization", getAuthToken(pipelineId)) + .addHeader("Authorization", getAuthToken(pipelineId, configurationStorage)) .connectTimeout(10000) .execute(); return handleResponse(httpResp, pipelineElement, endpointUrl); @@ -94,27 +96,30 @@ public class InvokeHttpRequest{ response.getOptionalMessage()); } - public static String getAuthToken(String resourceId) { + public static String getAuthToken(String resourceId, + ISpCoreConfigurationStorage configurationStorage) { if (SecurityContextHolder.getContext().getAuthentication() != null) { Authentication auth = SecurityContextHolder.getContext().getAuthentication(); - return makeBearerToken(new JwtTokenProvider().createToken(auth)); + return makeBearerToken(new JwtTokenProvider(configurationStorage).createToken(auth)); } else { if (resourceId != null) { String ownerSid = getOwnerSid(resourceId); - return getAuthTokenForUser(ownerSid); + return getAuthTokenForUser(ownerSid, configurationStorage); } else { throw new IllegalArgumentException("No authenticated user found to associate with request"); } } } - public static String getAuthTokenForUser(String ownerSid) { + public static String getAuthTokenForUser(String ownerSid, + ISpCoreConfigurationStorage configurationStorage) { Principal correspondingUser = StorageDispatcher.INSTANCE.getNoSqlStore().getUserStorageAPI().getUserById(ownerSid); - return getAuthTokenForUser(correspondingUser); + return getAuthTokenForUser(correspondingUser, configurationStorage); } - public static String getAuthTokenForUser(Principal principal) { - return makeBearerToken(new JwtTokenProvider().createToken(principal)); + public static String getAuthTokenForUser(Principal principal, + ISpCoreConfigurationStorage configurationStorage) { + return makeBearerToken(new JwtTokenProvider(configurationStorage).createToken(principal)); } private static String makeBearerToken(String token) { diff --git a/streampipes-mail/src/main/java/org/apache/streampipes/mail/MailSender.java b/streampipes-mail/src/main/java/org/apache/streampipes/mail/MailSender.java index 145ef282d3..6f41f23f18 100644 --- a/streampipes-mail/src/main/java/org/apache/streampipes/mail/MailSender.java +++ b/streampipes-mail/src/main/java/org/apache/streampipes/mail/MailSender.java @@ -42,7 +42,8 @@ public class MailSender extends AbstractMailer { .appendTextHTML(new CustomMailTemplate( mail.getSubject(), mail.getPreheader(), - mail.getMessage()).generateTemplate(spCoreConfiguration.getEmailTemplateConfig())) + mail.getMessage(), + spCoreConfiguration).generateTemplate()) .buildEmail(); deliverMail(email); @@ -52,8 +53,8 @@ public class MailSender extends AbstractMailer { String activationCode) throws IOException { Email email = baseEmail() .withSubject(MailUtils.extractAppName(spCoreConfiguration) + " - Account Activation") - .appendTextHTML(new AccountActiviationMailTemplate(activationCode) - .generateTemplate(spCoreConfiguration.getEmailTemplateConfig())) + .appendTextHTML(new AccountActiviationMailTemplate(activationCode, spCoreConfiguration) + .generateTemplate()) .to(recipientAddress) .buildEmail(); @@ -64,8 +65,8 @@ public class MailSender extends AbstractMailer { String recoveryCode) throws IOException { Email email = baseEmail() .withSubject(MailUtils.extractAppName(spCoreConfiguration) + " - Password Recovery") - .appendTextHTML(new PasswordRecoveryMailTemplate(recoveryCode) - .generateTemplate(spCoreConfiguration.getEmailTemplateConfig())) + .appendTextHTML(new PasswordRecoveryMailTemplate(recoveryCode, spCoreConfiguration) + .generateTemplate()) .to(recipientAddress) .buildEmail(); @@ -76,8 +77,8 @@ public class MailSender extends AbstractMailer { String generatedProperty) throws IOException { Email email = baseEmail() .withSubject(MailUtils.extractAppName(spCoreConfiguration) + " - New Account") - .appendTextHTML(new InitialPasswordMailTemplate(generatedProperty) - .generateTemplate(spCoreConfiguration.getEmailTemplateConfig())) + .appendTextHTML(new InitialPasswordMailTemplate(generatedProperty, spCoreConfiguration) + .generateTemplate()) .to(recipientAddress) .buildEmail(); diff --git a/streampipes-mail/src/main/java/org/apache/streampipes/mail/MailTester.java b/streampipes-mail/src/main/java/org/apache/streampipes/mail/MailTester.java index 9a017e0297..1658b37ec3 100644 --- a/streampipes-mail/src/main/java/org/apache/streampipes/mail/MailTester.java +++ b/streampipes-mail/src/main/java/org/apache/streampipes/mail/MailTester.java @@ -20,6 +20,7 @@ package org.apache.streampipes.mail; import org.apache.streampipes.mail.template.TestMailTemplate; import org.apache.streampipes.mail.utils.MailUtils; import org.apache.streampipes.model.configuration.EmailConfig; +import org.apache.streampipes.model.configuration.SpCoreConfiguration; import org.simplejavamail.api.email.Email; @@ -27,14 +28,18 @@ import java.io.IOException; public class MailTester extends AbstractMailer { + public MailTester(SpCoreConfiguration configuration) { + super(configuration); + } + public void sendTestMail(EmailConfig emailConfig) throws IOException { deliverMail(emailConfig, makeTestMail(emailConfig)); } private Email makeTestMail(EmailConfig emailConfig) throws IOException { return baseEmail(emailConfig) - .withSubject("Hello from " + MailUtils.extractAppName()) - .appendTextHTML(new TestMailTemplate().generateTemplate()) + .withSubject("Hello from " + MailUtils.extractAppName(spCoreConfiguration)) + .appendTextHTML(new TestMailTemplate(spCoreConfiguration).generateTemplate()) .to(emailConfig.getTestRecipientAddress()) .buildEmail(); } diff --git a/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/AbstractMailTemplate.java b/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/AbstractMailTemplate.java index 51a6553ffe..01a65e41af 100644 --- a/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/AbstractMailTemplate.java +++ b/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/AbstractMailTemplate.java @@ -21,7 +21,7 @@ import org.apache.streampipes.mail.template.generation.DefaultPlaceholders; import org.apache.streampipes.mail.template.generation.MailTemplateBuilder; import org.apache.streampipes.mail.template.part.BaseUrlPart; import org.apache.streampipes.mail.template.part.LogoPart; -import org.apache.streampipes.model.configuration.EmailTemplateConfig; +import org.apache.streampipes.model.configuration.SpCoreConfiguration; import com.google.common.base.Charsets; @@ -32,6 +32,12 @@ import java.util.Map; public abstract class AbstractMailTemplate { + protected final SpCoreConfiguration configuration; + + public AbstractMailTemplate(SpCoreConfiguration configuration) { + this.configuration = configuration; + } + protected abstract String getTitle(); protected abstract String getPreHeader(); @@ -40,18 +46,18 @@ public abstract class AbstractMailTemplate { protected abstract void configureTemplate(MailTemplateBuilder builder); - public String generateTemplate(EmailTemplateConfig emailTemplateConfig) throws IOException { + public String generateTemplate() throws IOException { Map<String, String> placeholders = new HashMap<>(); addPlaceholders(placeholders); - var template = emailTemplateConfig + var template = configuration.getEmailTemplateConfig() .getTemplate(); var builder = MailTemplateBuilder.create(template) .withPlaceholder(DefaultPlaceholders.TITLE, getTitle()) .withPlaceholder(DefaultPlaceholders.PREHEADER, getPreHeader()) - .withPlaceholder(DefaultPlaceholders.LOGO, new LogoPart().generate()) - .withPlaceholder(DefaultPlaceholders.BASE_URL, new BaseUrlPart().generate()) + .withPlaceholder(DefaultPlaceholders.LOGO, new LogoPart().generate(configuration)) + .withPlaceholder(DefaultPlaceholders.BASE_URL, new BaseUrlPart().generate(configuration)) .withPlaceholders(placeholders); configureTemplate(builder); diff --git a/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/AccountActiviationMailTemplate.java b/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/AccountActiviationMailTemplate.java index 945b9fb174..ceb92a3fad 100644 --- a/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/AccountActiviationMailTemplate.java +++ b/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/AccountActiviationMailTemplate.java @@ -22,6 +22,7 @@ import org.apache.streampipes.mail.template.generation.MailTemplateBuilder; import org.apache.streampipes.mail.template.part.LinkPart; import org.apache.streampipes.mail.template.part.MailTemplatePart; import org.apache.streampipes.mail.utils.MailUtils; +import org.apache.streampipes.model.configuration.SpCoreConfiguration; import java.util.Map; @@ -29,7 +30,9 @@ public class AccountActiviationMailTemplate extends AbstractMailTemplate { private final String activationCode; - public AccountActiviationMailTemplate(String activationCode) { + public AccountActiviationMailTemplate(String activationCode, + SpCoreConfiguration configuration) { + super(configuration); this.activationCode = activationCode; } @@ -40,7 +43,7 @@ public class AccountActiviationMailTemplate extends AbstractMailTemplate { @Override protected String getPreHeader() { - return "Activate your " + MailUtils.extractAppName() + " account"; + return "Activate your " + MailUtils.extractAppName(configuration) + " account"; } @Override @@ -60,6 +63,7 @@ public class AccountActiviationMailTemplate extends AbstractMailTemplate { } private String makeLink() { - return new LinkPart("/#/activate-account?activationCode=" + encodeUrlPart(this.activationCode)).generate(); + return new LinkPart("/#/activate-account?activationCode=" + encodeUrlPart(this.activationCode)) + .generate(configuration); } } diff --git a/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/CustomMailTemplate.java b/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/CustomMailTemplate.java index 1ea53286d8..c868aa8eee 100644 --- a/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/CustomMailTemplate.java +++ b/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/CustomMailTemplate.java @@ -19,6 +19,7 @@ package org.apache.streampipes.mail.template; import org.apache.streampipes.mail.template.generation.MailTemplateBuilder; +import org.apache.streampipes.model.configuration.SpCoreConfiguration; import java.util.Map; @@ -30,7 +31,9 @@ public class CustomMailTemplate extends AbstractMailTemplate { public CustomMailTemplate(String title, String preheader, - String content) { + String content, + SpCoreConfiguration configuration) { + super(configuration); this.title = title; this.preheader = preheader; this.content = content; diff --git a/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/InitialPasswordMailTemplate.java b/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/InitialPasswordMailTemplate.java index f74f279f1f..53b7150e5e 100644 --- a/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/InitialPasswordMailTemplate.java +++ b/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/InitialPasswordMailTemplate.java @@ -22,14 +22,17 @@ import org.apache.streampipes.mail.template.generation.MailTemplateBuilder; import org.apache.streampipes.mail.template.part.LinkPart; import org.apache.streampipes.mail.template.part.MailTemplatePart; import org.apache.streampipes.mail.utils.MailUtils; +import org.apache.streampipes.model.configuration.SpCoreConfiguration; import java.util.Map; public class InitialPasswordMailTemplate extends AbstractMailTemplate { - private String initialPassword; + private final String initialPassword; - public InitialPasswordMailTemplate(String initialPassword) { + public InitialPasswordMailTemplate(String initialPassword, + SpCoreConfiguration configuration) { + super(configuration); this.initialPassword = initialPassword; } @@ -40,7 +43,7 @@ public class InitialPasswordMailTemplate extends AbstractMailTemplate { @Override protected String getPreHeader() { - return "A new account for " + MailUtils.extractAppName() + " has been created."; + return "A new account for " + MailUtils.extractAppName(configuration) + " has been created."; } @Override @@ -60,6 +63,6 @@ public class InitialPasswordMailTemplate extends AbstractMailTemplate { } private String makeLink() { - return new LinkPart("/#/login").generate(); + return new LinkPart("/#/login").generate(configuration); } } diff --git a/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/PasswordRecoveryMailTemplate.java b/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/PasswordRecoveryMailTemplate.java index 190cced8d1..90fbd1c109 100644 --- a/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/PasswordRecoveryMailTemplate.java +++ b/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/PasswordRecoveryMailTemplate.java @@ -22,6 +22,7 @@ import org.apache.streampipes.mail.template.generation.MailTemplateBuilder; import org.apache.streampipes.mail.template.part.LinkPart; import org.apache.streampipes.mail.template.part.MailTemplatePart; import org.apache.streampipes.mail.utils.MailUtils; +import org.apache.streampipes.model.configuration.SpCoreConfiguration; import java.util.Map; @@ -29,7 +30,9 @@ public class PasswordRecoveryMailTemplate extends AbstractMailTemplate { private final String recoveryCode; - public PasswordRecoveryMailTemplate(String recoveryCode) { + public PasswordRecoveryMailTemplate(String recoveryCode, + SpCoreConfiguration configuration) { + super(configuration); this.recoveryCode = recoveryCode; } @@ -40,7 +43,7 @@ public class PasswordRecoveryMailTemplate extends AbstractMailTemplate { @Override protected String getPreHeader() { - return "Restore your " + MailUtils.extractAppName() + " password"; + return "Restore your " + MailUtils.extractAppName(configuration) + " password"; } @Override @@ -60,6 +63,7 @@ public class PasswordRecoveryMailTemplate extends AbstractMailTemplate { } private String makeLink() { - return new LinkPart("/#/set-new-password?recoveryCode=" + encodeUrlPart(this.recoveryCode)).generate(); + return new LinkPart("/#/set-new-password?recoveryCode=" + encodeUrlPart(this.recoveryCode)) + .generate(configuration); } } diff --git a/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/TestMailTemplate.java b/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/TestMailTemplate.java index d6f913f4cf..2618be6f88 100644 --- a/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/TestMailTemplate.java +++ b/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/TestMailTemplate.java @@ -21,11 +21,16 @@ import org.apache.streampipes.mail.template.generation.DefaultPlaceholders; import org.apache.streampipes.mail.template.generation.MailTemplateBuilder; import org.apache.streampipes.mail.template.part.MailTemplatePart; import org.apache.streampipes.mail.utils.MailUtils; +import org.apache.streampipes.model.configuration.SpCoreConfiguration; import java.util.Map; public class TestMailTemplate extends AbstractMailTemplate { + public TestMailTemplate(SpCoreConfiguration configuration) { + super(configuration); + } + @Override protected String getTitle() { return "Mail settings verification"; @@ -33,7 +38,7 @@ public class TestMailTemplate extends AbstractMailTemplate { @Override protected String getPreHeader() { - return "Your " + MailUtils.extractAppName() + " mail configuration is working!"; + return "Your " + MailUtils.extractAppName(configuration) + " mail configuration is working!"; } @Override diff --git a/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/part/AbstractPart.java b/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/part/AbstractPart.java index 47cdc7628c..3918f20605 100644 --- a/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/part/AbstractPart.java +++ b/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/part/AbstractPart.java @@ -17,7 +17,9 @@ */ package org.apache.streampipes.mail.template.part; +import org.apache.streampipes.model.configuration.SpCoreConfiguration; + public abstract class AbstractPart { - public abstract String generate(); + public abstract String generate(SpCoreConfiguration configuration); } diff --git a/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/part/BaseUrlPart.java b/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/part/BaseUrlPart.java index 38c42fecab..3ada79d0bf 100644 --- a/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/part/BaseUrlPart.java +++ b/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/part/BaseUrlPart.java @@ -18,10 +18,12 @@ package org.apache.streampipes.mail.template.part; import org.apache.streampipes.mail.utils.MailUtils; +import org.apache.streampipes.model.configuration.SpCoreConfiguration; public class BaseUrlPart extends AbstractPart { + @Override - public String generate() { - return MailUtils.extractBaseUrl(); + public String generate(SpCoreConfiguration configuration) { + return MailUtils.extractBaseUrl(configuration); } } diff --git a/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/part/LinkPart.java b/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/part/LinkPart.java index 623d112958..e24e01bdac 100644 --- a/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/part/LinkPart.java +++ b/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/part/LinkPart.java @@ -18,6 +18,7 @@ package org.apache.streampipes.mail.template.part; import org.apache.streampipes.mail.utils.MailUtils; +import org.apache.streampipes.model.configuration.SpCoreConfiguration; public class LinkPart extends AbstractPart { @@ -27,7 +28,7 @@ public class LinkPart extends AbstractPart { this.path = path; } - public String generate() { - return MailUtils.extractBaseUrl() + path; + public String generate(SpCoreConfiguration configuration) { + return MailUtils.extractBaseUrl(configuration) + path; } } diff --git a/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/part/LogoPart.java b/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/part/LogoPart.java index 2e835f58cd..62d08eb3c9 100644 --- a/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/part/LogoPart.java +++ b/streampipes-mail/src/main/java/org/apache/streampipes/mail/template/part/LogoPart.java @@ -18,19 +18,15 @@ package org.apache.streampipes.mail.template.part; import org.apache.streampipes.mail.utils.MailUtils; +import org.apache.streampipes.model.configuration.SpCoreConfiguration; public class LogoPart extends AbstractPart { private static final String LOGO_PATH = "/assets/img/sp/logo.png"; - private final String baseUrl; - - public LogoPart() { - this.baseUrl = MailUtils.extractBaseUrl(); - } - @Override - public String generate() { + public String generate(SpCoreConfiguration configuration) { + var baseUrl = MailUtils.extractBaseUrl(configuration); return baseUrl + LOGO_PATH; } } diff --git a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/api/extensions/ExtensionServiceRequests.java b/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/api/extensions/ExtensionServiceRequests.java index aa411d839d..5acb784ecc 100644 --- a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/api/extensions/ExtensionServiceRequests.java +++ b/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/api/extensions/ExtensionServiceRequests.java @@ -84,12 +84,24 @@ public final class ExtensionServiceRequests { return post(target, payload, AuthTokenUtils.getAuthToken(elementId, resourceManager)); } - public static ExtensionServiceRequest runtimeOptions(ExtensionServiceRequestTarget target, String payload) { - return post(target, payload, AuthTokenUtils.getAuthTokenForCurrentUser()); + public static ExtensionServiceRequest runtimeOptions(ExtensionServiceRequestTarget target, + String payload, + SpResourceManager resourceManager) { + return post( + target, + payload, + AuthTokenUtils.getAuthTokenForCurrentUser(resourceManager.getCoreConfigurationStorage()) + ); } - public static ExtensionServiceRequest sampleData(ExtensionServiceRequestTarget target, String payload) { - return post(target, payload, AuthTokenUtils.getAuthTokenForCurrentUser()); + public static ExtensionServiceRequest sampleData(ExtensionServiceRequestTarget target, + String payload, + SpResourceManager resourceManager) { + return post( + target, + payload, + AuthTokenUtils.getAuthTokenForCurrentUser(resourceManager.getCoreConfigurationStorage()) + ); } public static ExtensionServiceRequest extensionInstanceHealth(ExtensionServiceRequestTarget target, @@ -146,6 +158,6 @@ public final class ExtensionServiceRequests { private static String serviceAdminToken(SpResourceManager resourceManager) { return AuthTokenUtils.getAuthTokenForUser( resourceManager.manageUsers().getServiceAdmin().getPrincipalId(), - resourceManager.manageUsers()); + resourceManager); } } diff --git a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/extensions/ExtensionItemInstaller.java b/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/extensions/ExtensionItemInstaller.java index 0420bebe86..00cd6906a9 100644 --- a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/extensions/ExtensionItemInstaller.java +++ b/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/extensions/ExtensionItemInstaller.java @@ -50,14 +50,14 @@ public class ExtensionItemInstaller { var requestTarget = getDescriptionRequestTarget(req); var description = fetchDescription(requestTarget); return new TypeExtractor(description, requestManager, - resourceManager.managePermissions()).getTypeVerifier().verifyAndAdd(principalSid, req.publicElement()); + resourceManager).getTypeVerifier().verifyAndAdd(principalSid, req.publicElement()); } public Message updateExtension(ExtensionItemInstallationRequest req) throws IOException, SepaParseException { var requestTarget = getDescriptionRequestTarget(req); var description = fetchDescription(requestTarget); return new TypeExtractor(description, requestManager, - resourceManager.managePermissions()).getTypeVerifier().verifyAndUpdate(); + resourceManager).getTypeVerifier().verifyAndUpdate(); } private ExtensionServiceRequestTarget getDescriptionRequestTarget(ExtensionItemInstallationRequest req) { diff --git a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/migration/AbstractMigrationManager.java b/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/migration/AbstractMigrationManager.java index 7af2a5598b..b8a1368def 100644 --- a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/migration/AbstractMigrationManager.java +++ b/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/migration/AbstractMigrationManager.java @@ -157,7 +157,7 @@ public abstract class AbstractMigrationManager { var entityPayload = requestManager .request(ExtensionServiceRequests.descriptionUpdate(requestTarget, resourceManager)) .responseBody(); - var updateResult = new TypeExtractor(entityPayload, requestManager, resourceManager.managePermissions()) + var updateResult = new TypeExtractor(entityPayload, requestManager, resourceManager) .getTypeVerifier().verifyAndUpdate(); if (!updateResult.isSuccess()) { LOG.error( diff --git a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/remote/ContainerProvidedOptionsHandler.java b/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/remote/ContainerProvidedOptionsHandler.java index 88b531524a..312d08957c 100644 --- a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/remote/ContainerProvidedOptionsHandler.java +++ b/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/remote/ContainerProvidedOptionsHandler.java @@ -27,6 +27,7 @@ import org.apache.streampipes.manager.execution.endpoint.ExtensionsServiceEndpoi import org.apache.streampipes.manager.util.AuthTokenUtils; import org.apache.streampipes.model.runtime.RuntimeOptionsRequest; import org.apache.streampipes.model.runtime.RuntimeOptionsResponse; +import org.apache.streampipes.resource.management.SpResourceManager; import org.apache.streampipes.serializers.json.JacksonSerializer; import org.apache.streampipes.svcdiscovery.api.model.SpServiceUrlProvider; @@ -38,9 +39,12 @@ import java.util.Set; public class ContainerProvidedOptionsHandler { private final ExtensionServiceRequestManager extensionRequestManager; + private final SpResourceManager resourceManager; - public ContainerProvidedOptionsHandler(ExtensionServiceRequestManager extensionRequestManager) { + public ContainerProvidedOptionsHandler(ExtensionServiceRequestManager extensionRequestManager, + SpResourceManager resourceManager) { this.extensionRequestManager = extensionRequestManager; + this.resourceManager = resourceManager; } public RuntimeOptionsResponse fetchRemoteOptions(RuntimeOptionsRequest request) { @@ -48,7 +52,7 @@ public class ContainerProvidedOptionsHandler { try { var payload = JacksonSerializer.getObjectMapper().writeValueAsString(request); var requestTarget = getEndpointRequestTarget(request.getAppId()); - var authToken = AuthTokenUtils.getAuthTokenForCurrentUser(); + var authToken = AuthTokenUtils.getAuthTokenForCurrentUser(resourceManager.getCoreConfigurationStorage()); var response = extensionRequestManager.request( ExtensionServiceRequests.containerProvidedOptions(requestTarget, payload, authToken) ); diff --git a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/util/AuthTokenUtils.java b/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/util/AuthTokenUtils.java index e34bd26f4e..b296d5f07a 100644 --- a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/util/AuthTokenUtils.java +++ b/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/util/AuthTokenUtils.java @@ -22,7 +22,6 @@ import org.apache.streampipes.model.client.user.Permission; import org.apache.streampipes.model.client.user.Principal; import org.apache.streampipes.resource.management.PermissionResourceManager; import org.apache.streampipes.resource.management.SpResourceManager; -import org.apache.streampipes.resource.management.UserResourceManager; import org.apache.streampipes.storage.api.system.ISpCoreConfigurationStorage; import org.apache.streampipes.user.management.jwt.JwtTokenProvider; @@ -43,20 +42,22 @@ public class AuthTokenUtils { } else { if (resourceId != null) { String ownerSid = getOwnerSid(resourceId, resourceManager.managePermissions()); - return getAuthTokenForUser(ownerSid, resourceManager.manageUsers()); + return getAuthTokenForUser(ownerSid, resourceManager); } else { throw new IllegalArgumentException("No authenticated user found to associate with request"); } } } - public static String getAuthTokenForUser(String ownerSid, UserResourceManager userResourceManager) { - Principal correspondingUser = userResourceManager.getPrincipalById(ownerSid); - return getAuthTokenForUser(correspondingUser); + public static String getAuthTokenForUser(String ownerSid, + SpResourceManager resourceManager) { + Principal correspondingUser = resourceManager.manageUsers().getPrincipalById(ownerSid); + return getAuthTokenForUser(correspondingUser, resourceManager.getCoreConfigurationStorage()); } - public static String getAuthTokenForUser(Principal principal) { - return makeBearerToken(new JwtTokenProvider().createToken(principal)); + public static String getAuthTokenForUser(Principal principal, + ISpCoreConfigurationStorage configurationStorage) { + return makeBearerToken(new JwtTokenProvider(configurationStorage).createToken(principal)); } private static String makeBearerToken(String token) { diff --git a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/verification/extractor/TypeExtractor.java b/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/verification/extractor/TypeExtractor.java index 7a0863bf2f..cb57bcc10c 100644 --- a/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/verification/extractor/TypeExtractor.java +++ b/streampipes-pipeline-management/src/main/java/org/apache/streampipes/manager/verification/extractor/TypeExtractor.java @@ -27,7 +27,7 @@ import org.apache.streampipes.model.base.NamedStreamPipesEntity; import org.apache.streampipes.model.connect.adapter.AdapterDescription; import org.apache.streampipes.model.graph.DataProcessorDescription; import org.apache.streampipes.model.graph.DataSinkDescription; -import org.apache.streampipes.resource.management.PermissionResourceManager; +import org.apache.streampipes.resource.management.SpResourceManager; import org.apache.streampipes.serializers.json.JacksonSerializer; import org.apache.streampipes.storage.api.pipeline.IPipelineElementDescriptionStorage; import org.apache.streampipes.storage.management.StorageDispatcher; @@ -50,24 +50,24 @@ public class TypeExtractor { private final String extensionElementDescription; private final IPipelineElementDescriptionStorage storageApi; private final ExtensionServiceRequestManager requestManager; - private final PermissionResourceManager permissionResourceManager; + private final SpResourceManager resourceManager; public TypeExtractor(String extensionElementDescription, ExtensionServiceRequestManager requestManager, - PermissionResourceManager permissionResourceManager) { - this(extensionElementDescription, defaultStorageApi(), requestManager, permissionResourceManager); + SpResourceManager resourceManager) { + this(extensionElementDescription, defaultStorageApi(), requestManager, resourceManager); } public TypeExtractor( String extensionElementDescription, IPipelineElementDescriptionStorage storageApi, ExtensionServiceRequestManager requestManager, - PermissionResourceManager permissionResourceManager + SpResourceManager resourceManager ) { this.extensionElementDescription = extensionElementDescription; this.storageApi = storageApi; this.requestManager = requestManager; - this.permissionResourceManager = permissionResourceManager; + this.resourceManager = resourceManager; } public ElementVerifier<?> getTypeVerifier() throws SepaParseException { @@ -140,7 +140,7 @@ public class TypeExtractor { updateOperation, serviceUrlProvider, requestManager, - permissionResourceManager + resourceManager ); } diff --git a/streampipes-resource-management/src/main/java/org/apache/streampipes/resource/management/SpResourceManager.java b/streampipes-resource-management/src/main/java/org/apache/streampipes/resource/management/SpResourceManager.java index 8d2653b1cb..03cb4d3ffb 100644 --- a/streampipes-resource-management/src/main/java/org/apache/streampipes/resource/management/SpResourceManager.java +++ b/streampipes-resource-management/src/main/java/org/apache/streampipes/resource/management/SpResourceManager.java @@ -107,6 +107,6 @@ public class SpResourceManager { } public UserResourceManager manageUsers() { - return new UserResourceManager(); + return new UserResourceManager(coreConfigurationStorage); } } diff --git a/streampipes-resource-management/src/main/java/org/apache/streampipes/resource/management/UserResourceManager.java b/streampipes-resource-management/src/main/java/org/apache/streampipes/resource/management/UserResourceManager.java index 02f958fc4e..aa1b043654 100644 --- a/streampipes-resource-management/src/main/java/org/apache/streampipes/resource/management/UserResourceManager.java +++ b/streampipes-resource-management/src/main/java/org/apache/streampipes/resource/management/UserResourceManager.java @@ -30,6 +30,7 @@ import org.apache.streampipes.model.client.user.Principal; import org.apache.streampipes.model.client.user.UserAccount; import org.apache.streampipes.model.client.user.UserActivationToken; import org.apache.streampipes.model.client.user.UserRegistrationData; +import org.apache.streampipes.storage.api.system.ISpCoreConfigurationStorage; import org.apache.streampipes.storage.api.user.IPasswordRecoveryTokenStorage; import org.apache.streampipes.storage.api.user.IUserActivationTokenStorage; import org.apache.streampipes.storage.api.user.IUserStorage; @@ -51,8 +52,11 @@ public class UserResourceManager extends AbstractResourceManager<IUserStorage> { private static final int RECOVERY_TOKEN_LENGTH = 40; private static final Logger LOG = LoggerFactory.getLogger(UserResourceManager.class); - public UserResourceManager() { + private final ISpCoreConfigurationStorage coreConfigurationStorage; + + public UserResourceManager(ISpCoreConfigurationStorage coreConfigurationStorage) { super(StorageDispatcher.INSTANCE.getNoSqlStore().getUserStorageAPI()); + this.coreConfigurationStorage = coreConfigurationStorage; } public static void setHideTutorial(String username, boolean hideTutorial) { @@ -147,7 +151,7 @@ public class UserResourceManager extends AbstractResourceManager<IUserStorage> { String activationCode) throws IOException { UserActivationToken token = UserActivationToken.create(activationCode, username); getUserActivationTokenStorage().persist(token); - new MailSender().sendAccountActivationMail(username, activationCode); + new MailSender(coreConfigurationStorage.get()).sendAccountActivationMail(username, activationCode); } public void sendPasswordRecoveryLink(String username) throws UserNotFoundException, IOException { @@ -155,7 +159,7 @@ public class UserResourceManager extends AbstractResourceManager<IUserStorage> { if (db.checkUserExists(username)) { String recoveryCode = TokenUtil.generateToken(RECOVERY_TOKEN_LENGTH); storeRecoveryCode(username, recoveryCode); - new MailSender().sendPasswordRecoveryMail(username, recoveryCode); + new MailSender(coreConfigurationStorage.get()).sendPasswordRecoveryMail(username, recoveryCode); } } diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/ContainerProvidedOptions.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/ContainerProvidedOptions.java index fa1b1d798b..b74c155537 100644 --- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/ContainerProvidedOptions.java +++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/ContainerProvidedOptions.java @@ -21,6 +21,7 @@ import org.apache.streampipes.manager.api.extensions.ExtensionServiceRequestMana import org.apache.streampipes.manager.remote.ContainerProvidedOptionsHandler; import org.apache.streampipes.model.runtime.RuntimeOptionsRequest; import org.apache.streampipes.model.runtime.RuntimeOptionsResponse; +import org.apache.streampipes.resource.management.SpResourceManager; import org.apache.streampipes.rest.core.base.impl.AbstractRestResource; import org.springframework.http.MediaType; @@ -36,8 +37,11 @@ public class ContainerProvidedOptions extends AbstractRestResource { private final ContainerProvidedOptionsHandler containerProvidedOptionsHandler; - public ContainerProvidedOptions(ExtensionServiceRequestManager extensionServiceRequestManager) { - this.containerProvidedOptionsHandler = new ContainerProvidedOptionsHandler(extensionServiceRequestManager); + public ContainerProvidedOptions(ExtensionServiceRequestManager extensionServiceRequestManager, + SpResourceManager resourceManager) { + this.containerProvidedOptionsHandler = new ContainerProvidedOptionsHandler( + extensionServiceRequestManager, resourceManager + ); } @PostMapping( diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/EmailConfigurationResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/EmailConfigurationResource.java index 7dc8bb077a..43f521c288 100644 --- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/EmailConfigurationResource.java +++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/admin/EmailConfigurationResource.java @@ -24,6 +24,7 @@ import org.apache.streampipes.model.message.Notifications; import org.apache.streampipes.rest.core.base.impl.AbstractAuthGuardedRestResource; import org.apache.streampipes.rest.security.AuthConstants; import org.apache.streampipes.rest.shared.exception.SpMessageException; +import org.apache.streampipes.storage.api.system.ISpCoreConfigurationStorage; import org.apache.streampipes.user.management.encryption.SecretEncryptionManager; import org.simplejavamail.MailException; @@ -44,6 +45,12 @@ import java.io.IOException; @RequestMapping("/api/v2/admin/mail-config") public class EmailConfigurationResource extends AbstractAuthGuardedRestResource { + private final ISpCoreConfigurationStorage configurationStorage; + + public EmailConfigurationResource(ISpCoreConfigurationStorage coreConfigurationStorage) { + this.configurationStorage = coreConfigurationStorage; + } + @GetMapping(produces = MediaType.APPLICATION_JSON_VALUE) @PreAuthorize(AuthConstants.IS_ADMIN_ROLE) public ResponseEntity<EmailConfig> getMailConfiguration() { @@ -90,7 +97,8 @@ public class EmailConfigurationResource extends AbstractAuthGuardedRestResource @PreAuthorize(AuthConstants.IS_ADMIN_ROLE) public ResponseEntity<Void> sendTestMail(@RequestBody EmailConfig config) { try { - new MailTester().sendTestMail(config); + var coreConfiguration = configurationStorage.get(); + new MailTester(coreConfiguration).sendTestMail(config); return ok(); } catch (MailException | IllegalArgumentException | IOException e) { throw new SpMessageException(HttpStatus.BAD_REQUEST, Notifications.error(e.getMessage())); diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/CompactAdapterResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/CompactAdapterResource.java index 8727c3336d..9d2cc76625 100644 --- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/CompactAdapterResource.java +++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/CompactAdapterResource.java @@ -77,7 +77,8 @@ public class CompactAdapterResource extends AbstractAdapterResource<AdapterMaste )); var guessManagement = new GuessManagement( new ExtensionsServiceEndpointGenerator(), - requestManager + requestManager, + resourceManager ); this.requestManager = requestManager; this.compactAdapterManagement = new CompactAdapterManagement( diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/GuessResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/GuessResource.java index 8dce2589a8..2da499d326 100644 --- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/GuessResource.java +++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/GuessResource.java @@ -27,6 +27,7 @@ import org.apache.streampipes.manager.execution.endpoint.ExtensionsServiceEndpoi import org.apache.streampipes.model.connect.adapter.AdapterDescription; import org.apache.streampipes.model.monitoring.SpLogMessage; import org.apache.streampipes.model.schema.EventSchema; +import org.apache.streampipes.resource.management.SpResourceManager; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -46,8 +47,13 @@ public class GuessResource extends AbstractAdapterResource<GuessManagement> { private static final Logger LOG = LoggerFactory.getLogger(GuessResource.class); - public GuessResource(ExtensionServiceRequestManager extensionServiceRequestManager) { - super(() -> new GuessManagement(new ExtensionsServiceEndpointGenerator(), extensionServiceRequestManager)); + public GuessResource(ExtensionServiceRequestManager extensionServiceRequestManager, + SpResourceManager resourceManager) { + super(() -> new GuessManagement( + new ExtensionsServiceEndpointGenerator(), + extensionServiceRequestManager, + resourceManager) + ); } diff --git a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/RuntimeResolvableResource.java b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/RuntimeResolvableResource.java index c9a66bc655..f4a560467c 100644 --- a/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/RuntimeResolvableResource.java +++ b/streampipes-rest/src/main/java/org/apache/streampipes/rest/impl/connect/RuntimeResolvableResource.java @@ -27,6 +27,7 @@ import org.apache.streampipes.manager.execution.endpoint.ExtensionsServiceEndpoi import org.apache.streampipes.model.monitoring.SpLogMessage; import org.apache.streampipes.model.runtime.RuntimeOptionsRequest; import org.apache.streampipes.model.runtime.RuntimeOptionsResponse; +import org.apache.streampipes.resource.management.SpResourceManager; import org.apache.streampipes.resource.management.secret.SecretProvider; import org.apache.streampipes.svcdiscovery.api.model.SpServiceUrlProvider; @@ -49,11 +50,14 @@ public class RuntimeResolvableResource extends AbstractAdapterResource<Void> { private final IExtensionsServiceEndpointGenerator endpointGenerator; private final WorkerRestClient workerRestClient; + private final SpResourceManager resourceManager; - public RuntimeResolvableResource(WorkerRestClient workerRestClient) { + public RuntimeResolvableResource(WorkerRestClient workerRestClient, + SpResourceManager resourceManager) { super(); this.endpointGenerator = new ExtensionsServiceEndpointGenerator(); this.workerRestClient = workerRestClient; + this.resourceManager = resourceManager; } @PostMapping( @@ -71,7 +75,8 @@ public class RuntimeResolvableResource extends AbstractAdapterResource<Void> { runtimeOptionsRequest.getDeploymentConfiguration().getDesiredServiceTags() ); SecretProvider.getDecryptionService().applyConfig(runtimeOptionsRequest.getStaticProperties()); - RuntimeOptionsResponse result = workerRestClient.getConfiguration(service, appId, runtimeOptionsRequest); + RuntimeOptionsResponse result = workerRestClient + .getConfiguration(service, appId, runtimeOptionsRequest, resourceManager); return ok(result); } catch (AdapterException | NoServiceEndpointsAvailableException e) { diff --git a/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/scheduler/certificates/CertificateExpiryEmailScheduler.java b/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/scheduler/certificates/CertificateExpiryEmailScheduler.java index df8d376d17..f12c2296f1 100644 --- a/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/scheduler/certificates/CertificateExpiryEmailScheduler.java +++ b/streampipes-service-core/src/main/java/org/apache/streampipes/service/core/scheduler/certificates/CertificateExpiryEmailScheduler.java @@ -121,7 +121,7 @@ public class CertificateExpiryEmailScheduler implements SchedulingConfigurer { private void sendEmail(List<String> recipients, String message) { var email = SpEmail.from(recipients, SUBJECT, message); try { - new MailSender().sendEmail(email); + new MailSender(coreConfigurationStorage.get()).sendEmail(email); } catch (IOException e) { LOG.error("Failed to send certificate expiry email to {}", recipients, e); }
