From fb460d7215db9dbd0fb93614dabe2e24c9886137 Mon Sep 17 00:00:00 2001 From: Viacheslav Kukhtyn Date: Fri, 15 Jan 2021 16:34:06 +0200 Subject: [PATCH] Changes after code review --- .../credentials/CertPemCredentials.java | 5 ++-- .../engine/credentials/CredentialsType.java | 29 +++++++++++++++++++ .../rule/engine/mqtt/TbMqttNode.java | 22 +++++++------- .../mqtt/azure/AzureIotHubSasCredentials.java | 13 ++++++--- .../engine/mqtt/azure/TbAzureIotHubNode.java | 19 +++++++++--- .../credentials/MqttAnonymousCredentials.java | 5 ++++ .../credentials/MqttBasicCredentials.java | 6 ++++ .../credentials/MqttCertPemCredentials.java | 5 ++++ .../credentials/MqttClientCredentials.java | 11 ++++--- .../rule/engine/rest/TbHttpClient.java | 28 ++++++++++++++++-- .../credentials/HttpAnonymousCredentials.java | 5 ++++ .../credentials/HttpBasicCredentials.java | 10 +++++-- .../credentials/HttpCertPemCredentials.java | 5 ++++ .../credentials/HttpClientCredentials.java | 14 +++------ .../credentials/HttpBasicCredentialsTest.java | 4 +-- 15 files changed, 139 insertions(+), 42 deletions(-) create mode 100644 rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/credentials/CredentialsType.java diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/credentials/CertPemCredentials.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/credentials/CertPemCredentials.java index 64f08fac36..5aa1ede5e9 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/credentials/CertPemCredentials.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/credentials/CertPemCredentials.java @@ -49,7 +49,6 @@ import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; import java.security.spec.KeySpec; import java.security.spec.PKCS8EncodedKeySpec; -import java.util.Optional; @Data @Slf4j @@ -62,7 +61,7 @@ public class CertPemCredentials { private String privateKey; private String password; - public Optional initSslContext() { + public SslContext initSslContext() { try { Security.addProvider(new BouncyCastleProvider()); SslContextBuilder builder = SslContextBuilder.forClient(); @@ -72,7 +71,7 @@ public class CertPemCredentials { if (StringUtils.hasLength(cert) && StringUtils.hasLength(privateKey)) { builder.keyManager(createAndInitKeyManagerFactory()); } - return Optional.of(builder.build()); + return builder.build(); } catch (Exception e) { log.error("[{}:{}] Creating TLS factory failed!", caCert, cert, e); throw new RuntimeException("Creating TLS factory failed!", e); diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/credentials/CredentialsType.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/credentials/CredentialsType.java new file mode 100644 index 0000000000..a0d298a9be --- /dev/null +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/credentials/CredentialsType.java @@ -0,0 +1,29 @@ +/** + * Copyright © 2016-2021 The Thingsboard Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.thingsboard.rule.engine.credentials; + +public enum CredentialsType { + ANONYMOUS("anonymous"), + BASIC("basic"), + SAS("sas"), + CERT_PEM("cert.PEM"); + + private final String label; + + CredentialsType(String label) { + this.label = label; + } +} diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/TbMqttNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/TbMqttNode.java index 63fbb23fc1..47b950554a 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/TbMqttNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/TbMqttNode.java @@ -21,19 +21,22 @@ import io.netty.handler.ssl.SslContext; import io.netty.handler.ssl.SslContextBuilder; import io.netty.util.concurrent.Future; import lombok.extern.slf4j.Slf4j; +import org.springframework.util.StringUtils; import org.thingsboard.mqtt.MqttClient; import org.thingsboard.mqtt.MqttClientConfig; import org.thingsboard.mqtt.MqttConnectResult; -import org.springframework.util.StringUtils; +import org.thingsboard.rule.engine.api.RuleNode; +import org.thingsboard.rule.engine.api.TbContext; +import org.thingsboard.rule.engine.api.TbNode; +import org.thingsboard.rule.engine.api.TbNodeConfiguration; +import org.thingsboard.rule.engine.api.TbNodeException; import org.thingsboard.rule.engine.api.util.TbNodeUtils; -import org.thingsboard.rule.engine.api.*; import org.thingsboard.server.common.data.plugin.ComponentType; import org.thingsboard.server.common.msg.TbMsg; import org.thingsboard.server.common.msg.TbMsgMetaData; import javax.net.ssl.SSLException; import java.nio.charset.Charset; -import java.util.Optional; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; @@ -97,8 +100,7 @@ public class TbMqttNode implements TbNode { } protected MqttClient initClient(TbContext ctx) throws Exception { - Optional sslContextOpt = initSslContext(); - MqttClientConfig config = sslContextOpt.isPresent() ? new MqttClientConfig(sslContextOpt.get()) : new MqttClientConfig(); + MqttClientConfig config = new MqttClientConfig(getSslContext()); if (!StringUtils.isEmpty(this.mqttNodeConfiguration.getClientId())) { config.setClientId(this.mqttNodeConfiguration.getClientId()); } @@ -125,12 +127,12 @@ public class TbMqttNode implements TbNode { return client; } - private Optional initSslContext() throws SSLException { - Optional result = this.mqttNodeConfiguration.getCredentials().initSslContext(); - if (this.mqttNodeConfiguration.isSsl() && !result.isPresent()) { - result = Optional.of(SslContextBuilder.forClient().build()); + private SslContext getSslContext() throws SSLException { + SslContext sslContext = this.mqttNodeConfiguration.getCredentials().initSslContext(); + if (this.mqttNodeConfiguration.isSsl() && sslContext == null) { + sslContext = SslContextBuilder.forClient().build(); } - return result; + return sslContext; } } diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/azure/AzureIotHubSasCredentials.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/azure/AzureIotHubSasCredentials.java index 172e675ac8..b946b3f754 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/azure/AzureIotHubSasCredentials.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/azure/AzureIotHubSasCredentials.java @@ -24,6 +24,7 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.codec.binary.Base64; import org.bouncycastle.jce.provider.BouncyCastleProvider; import org.thingsboard.common.util.AzureIotHubUtil; +import org.thingsboard.rule.engine.credentials.CredentialsType; import org.thingsboard.rule.engine.mqtt.credentials.MqttClientCredentials; import javax.net.ssl.TrustManagerFactory; @@ -32,7 +33,6 @@ import java.security.KeyStore; import java.security.Security; import java.security.cert.CertificateFactory; import java.security.cert.X509Certificate; -import java.util.Optional; @Data @Slf4j @@ -42,22 +42,27 @@ public class AzureIotHubSasCredentials implements MqttClientCredentials { private String caCert; @Override - public Optional initSslContext() { + public SslContext initSslContext() { try { Security.addProvider(new BouncyCastleProvider()); if (caCert == null || caCert.isEmpty()) { caCert = AzureIotHubUtil.getDefaultCaCert(); } - return Optional.of(SslContextBuilder.forClient() + return SslContextBuilder.forClient() .trustManager(createAndInitTrustManagerFactory()) .clientAuth(ClientAuth.REQUIRE) - .build()); + .build(); } catch (Exception e) { log.error("[{}] Creating TLS factory failed!", caCert, e); throw new RuntimeException("Creating TLS factory failed!", e); } } + @Override + public CredentialsType getType() { + return CredentialsType.SAS; + } + private TrustManagerFactory createAndInitTrustManagerFactory() throws Exception { X509Certificate caCertHolder; caCertHolder = readCertFile(caCert); diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/azure/TbAzureIotHubNode.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/azure/TbAzureIotHubNode.java index 2ad0ce58bb..3e2b555a07 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/azure/TbAzureIotHubNode.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/azure/TbAzureIotHubNode.java @@ -25,14 +25,13 @@ import org.thingsboard.rule.engine.api.TbContext; import org.thingsboard.rule.engine.api.TbNodeConfiguration; import org.thingsboard.rule.engine.api.TbNodeException; import org.thingsboard.rule.engine.api.util.TbNodeUtils; +import org.thingsboard.rule.engine.credentials.CredentialsType; import org.thingsboard.rule.engine.mqtt.TbMqttNode; import org.thingsboard.rule.engine.mqtt.TbMqttNodeConfiguration; import org.thingsboard.rule.engine.mqtt.credentials.MqttCertPemCredentials; import org.thingsboard.rule.engine.mqtt.credentials.MqttClientCredentials; import org.thingsboard.server.common.data.plugin.ComponentType; -import java.util.Optional; - @Slf4j @RuleNode( type = ComponentType.EXTERNAL, @@ -53,7 +52,18 @@ public class TbAzureIotHubNode extends TbMqttNode { MqttClientCredentials credentials = mqttNodeConfiguration.getCredentials(); mqttNodeConfiguration.setCredentials(new MqttClientCredentials() { @Override - public Optional initSslContext() { + public CredentialsType getType() { + if (credentials instanceof AzureIotHubSasCredentials) { + return CredentialsType.SAS; + } else if (credentials instanceof MqttCertPemCredentials) { + return CredentialsType.CERT_PEM; + } else { + throw new IllegalArgumentException("[" + credentials.getType() + "] is not supported!"); + } + } + + @Override + public SslContext initSslContext() { if (credentials instanceof AzureIotHubSasCredentials) { AzureIotHubSasCredentials sasCredentials = (AzureIotHubSasCredentials) credentials; if (sasCredentials.getCaCert() == null || sasCredentials.getCaCert().isEmpty()) { @@ -82,5 +92,6 @@ public class TbAzureIotHubNode extends TbMqttNode { this.mqttClient = initClient(ctx); } catch (Exception e) { throw new TbNodeException(e); - } } + } + } } diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/credentials/MqttAnonymousCredentials.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/credentials/MqttAnonymousCredentials.java index dd827f12ce..1896dc2650 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/credentials/MqttAnonymousCredentials.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/credentials/MqttAnonymousCredentials.java @@ -16,6 +16,11 @@ package org.thingsboard.rule.engine.mqtt.credentials; import org.thingsboard.rule.engine.credentials.AnonymousCredentials; +import org.thingsboard.rule.engine.credentials.CredentialsType; public class MqttAnonymousCredentials extends AnonymousCredentials implements MqttClientCredentials { + @Override + public CredentialsType getType() { + return CredentialsType.ANONYMOUS; + } } diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/credentials/MqttBasicCredentials.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/credentials/MqttBasicCredentials.java index cb9e50c66b..188d25d4cd 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/credentials/MqttBasicCredentials.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/credentials/MqttBasicCredentials.java @@ -17,8 +17,14 @@ package org.thingsboard.rule.engine.mqtt.credentials; import org.thingsboard.mqtt.MqttClientConfig; import org.thingsboard.rule.engine.credentials.BasicCredentials; +import org.thingsboard.rule.engine.credentials.CredentialsType; public class MqttBasicCredentials extends BasicCredentials implements MqttClientCredentials { + @Override + public CredentialsType getType() { + return CredentialsType.BASIC; + } + @Override public void configure(MqttClientConfig config) { config.setUsername(getUsername()); diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/credentials/MqttCertPemCredentials.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/credentials/MqttCertPemCredentials.java index aaf5a1f927..b108d1dc48 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/credentials/MqttCertPemCredentials.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/credentials/MqttCertPemCredentials.java @@ -16,6 +16,11 @@ package org.thingsboard.rule.engine.mqtt.credentials; import org.thingsboard.rule.engine.credentials.CertPemCredentials; +import org.thingsboard.rule.engine.credentials.CredentialsType; public class MqttCertPemCredentials extends CertPemCredentials implements MqttClientCredentials { + @Override + public CredentialsType getType() { + return CredentialsType.CERT_PEM; + } } diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/credentials/MqttClientCredentials.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/credentials/MqttClientCredentials.java index 6d166eb223..e7c72b2ee7 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/credentials/MqttClientCredentials.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/mqtt/credentials/MqttClientCredentials.java @@ -15,14 +15,14 @@ */ package org.thingsboard.rule.engine.mqtt.credentials; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; import io.netty.handler.ssl.SslContext; import org.thingsboard.mqtt.MqttClientConfig; +import org.thingsboard.rule.engine.credentials.CredentialsType; import org.thingsboard.rule.engine.mqtt.azure.AzureIotHubSasCredentials; -import java.util.Optional; - @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type") @JsonSubTypes({ @JsonSubTypes.Type(value = MqttAnonymousCredentials.class, name = "anonymous"), @@ -30,8 +30,11 @@ import java.util.Optional; @JsonSubTypes.Type(value = AzureIotHubSasCredentials.class, name = "sas"), @JsonSubTypes.Type(value = MqttCertPemCredentials.class, name = "cert.PEM")}) public interface MqttClientCredentials { - default Optional initSslContext() { - return Optional.empty(); + @JsonIgnore + CredentialsType getType(); + + default SslContext initSslContext() { + return null; } default void configure(MqttClientConfig config) { diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rest/TbHttpClient.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rest/TbHttpClient.java index 5fd7486a4c..102d772056 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rest/TbHttpClient.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rest/TbHttpClient.java @@ -17,6 +17,7 @@ package org.thingsboard.rule.engine.rest; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEventLoopGroup; +import io.netty.handler.ssl.SslContext; import io.netty.handler.ssl.SslContextBuilder; import lombok.Data; import lombok.extern.slf4j.Slf4j; @@ -44,6 +45,10 @@ import org.thingsboard.rule.engine.api.TbContext; import org.thingsboard.rule.engine.api.TbNodeException; import org.thingsboard.rule.engine.api.TbRelationTypes; import org.thingsboard.rule.engine.api.util.TbNodeUtils; +import org.thingsboard.rule.engine.credentials.CredentialsType; +import org.thingsboard.rule.engine.rest.credentials.HttpBasicCredentials; +import org.thingsboard.rule.engine.rest.credentials.HttpCertPemCredentials; +import org.thingsboard.rule.engine.rest.credentials.HttpClientCredentials; import org.thingsboard.server.common.msg.TbMsg; import org.thingsboard.server.common.msg.TbMsgMetaData; @@ -133,7 +138,7 @@ public class TbHttpClient { } else { this.eventLoopGroup = new NioEventLoopGroup(); Netty4ClientHttpRequestFactory nettyFactory = new Netty4ClientHttpRequestFactory(this.eventLoopGroup); - nettyFactory.setSslContext(config.getCredentials().initSslContext().orElse(SslContextBuilder.forClient().build())); + nettyFactory.setSslContext(getSslContext(config.getCredentials())); nettyFactory.setReadTimeout(config.getReadTimeoutMs()); httpClient = new AsyncRestTemplate(nettyFactory); } @@ -142,6 +147,18 @@ public class TbHttpClient { } } + private SslContext getSslContext(HttpClientCredentials credentials) throws SSLException { + switch (credentials.getType()) { + case ANONYMOUS: + case BASIC: + return SslContextBuilder.forClient().build(); + case CERT_PEM: + return ((HttpCertPemCredentials) credentials).initSslContext(); + default: + throw new IllegalArgumentException("[" + credentials.getType() + "] is not supported!"); + } + } + private void checkSystemProxyProperties() throws TbNodeException { boolean useHttpProxy = !StringUtils.isEmpty(System.getProperty("http.proxyHost")) && !StringUtils.isEmpty(System.getProperty("http.proxyPort")); boolean useHttpsProxy = !StringUtils.isEmpty(System.getProperty("https.proxyHost")) && !StringUtils.isEmpty(System.getProperty("https.proxyPort")); @@ -226,7 +243,7 @@ public class TbHttpClient { private HttpHeaders prepareHeaders(TbMsgMetaData metaData) { HttpHeaders headers = new HttpHeaders(); config.getHeaders().forEach((k, v) -> headers.add(TbNodeUtils.processPattern(k, metaData), TbNodeUtils.processPattern(v, metaData))); - config.getCredentials().getBasicAuthHeaderValue().ifPresent(v -> headers.add("Authorization", v)); + addAuthorizationHeader(headers); return headers; } @@ -260,4 +277,11 @@ public class TbHttpClient { throw new TbNodeException("Proxy port out of range:" + proxyPort); } } + + private void addAuthorizationHeader(HttpHeaders headers) { + HttpClientCredentials credentials = config.getCredentials(); + if (CredentialsType.BASIC == credentials.getType()) { + headers.add("Authorization", ((HttpBasicCredentials) credentials).getPassword()); + } + } } diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rest/credentials/HttpAnonymousCredentials.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rest/credentials/HttpAnonymousCredentials.java index 3b7eb0b12b..87a2854e4b 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rest/credentials/HttpAnonymousCredentials.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rest/credentials/HttpAnonymousCredentials.java @@ -16,6 +16,11 @@ package org.thingsboard.rule.engine.rest.credentials; import org.thingsboard.rule.engine.credentials.AnonymousCredentials; +import org.thingsboard.rule.engine.credentials.CredentialsType; public class HttpAnonymousCredentials extends AnonymousCredentials implements HttpClientCredentials { + @Override + public CredentialsType getType() { + return CredentialsType.ANONYMOUS; + } } diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rest/credentials/HttpBasicCredentials.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rest/credentials/HttpBasicCredentials.java index cf29cd928a..f36d497c02 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rest/credentials/HttpBasicCredentials.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rest/credentials/HttpBasicCredentials.java @@ -17,15 +17,19 @@ package org.thingsboard.rule.engine.rest.credentials; import org.apache.commons.codec.binary.Base64; import org.thingsboard.rule.engine.credentials.BasicCredentials; +import org.thingsboard.rule.engine.credentials.CredentialsType; import java.nio.charset.StandardCharsets; -import java.util.Optional; public class HttpBasicCredentials extends BasicCredentials implements HttpClientCredentials { @Override - public Optional getBasicAuthHeaderValue() { + public CredentialsType getType() { + return CredentialsType.BASIC; + } + + public String getBasicAuthHeaderValue() { String authString = getUsername() + ":" + getPassword(); String encodedAuthString = new String(Base64.encodeBase64(authString.getBytes(StandardCharsets.UTF_8))); - return Optional.of("Basic " + encodedAuthString); + return "Basic " + encodedAuthString; } } diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rest/credentials/HttpCertPemCredentials.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rest/credentials/HttpCertPemCredentials.java index bdc1d3b264..f15d7d946d 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rest/credentials/HttpCertPemCredentials.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rest/credentials/HttpCertPemCredentials.java @@ -16,6 +16,11 @@ package org.thingsboard.rule.engine.rest.credentials; import org.thingsboard.rule.engine.credentials.CertPemCredentials; +import org.thingsboard.rule.engine.credentials.CredentialsType; public class HttpCertPemCredentials extends CertPemCredentials implements HttpClientCredentials { + @Override + public CredentialsType getType() { + return CredentialsType.CERT_PEM; + } } diff --git a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rest/credentials/HttpClientCredentials.java b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rest/credentials/HttpClientCredentials.java index 4e581354b1..0cf78e59e1 100644 --- a/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rest/credentials/HttpClientCredentials.java +++ b/rule-engine/rule-engine-components/src/main/java/org/thingsboard/rule/engine/rest/credentials/HttpClientCredentials.java @@ -15,11 +15,10 @@ */ package org.thingsboard.rule.engine.rest.credentials; +import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; -import io.netty.handler.ssl.SslContext; - -import java.util.Optional; +import org.thingsboard.rule.engine.credentials.CredentialsType; @JsonTypeInfo(use = JsonTypeInfo.Id.NAME, property = "type") @JsonSubTypes({ @@ -27,12 +26,7 @@ import java.util.Optional; @JsonSubTypes.Type(value = HttpBasicCredentials.class, name = "basic"), @JsonSubTypes.Type(value = HttpCertPemCredentials.class, name = "cert.PEM")}) public interface HttpClientCredentials { - default Optional initSslContext() { - return Optional.empty(); - } - - default Optional getBasicAuthHeaderValue() { - return Optional.empty(); - } + @JsonIgnore + CredentialsType getType(); } diff --git a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/rest/credentials/HttpBasicCredentialsTest.java b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/rest/credentials/HttpBasicCredentialsTest.java index 755735f1d7..59f0e7a72a 100644 --- a/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/rest/credentials/HttpBasicCredentialsTest.java +++ b/rule-engine/rule-engine-components/src/test/java/org/thingsboard/rule/engine/rest/credentials/HttpBasicCredentialsTest.java @@ -26,8 +26,8 @@ public class HttpBasicCredentialsTest { HttpBasicCredentials credentials = new HttpBasicCredentials(); credentials.setUsername("testUser"); credentials.setPassword("testPwd"); - Optional actualHeaderValue = credentials.getBasicAuthHeaderValue(); - Optional expectedHeaderValue = Optional.of("Basic dGVzdFVzZXI6dGVzdFB3ZA=="); + String actualHeaderValue = credentials.getBasicAuthHeaderValue(); + String expectedHeaderValue = "Basic dGVzdFVzZXI6dGVzdFB3ZA=="; Assert.assertEquals(expectedHeaderValue, actualHeaderValue); }