From 0f75c63878e6b919dd1dab38662bce158d43acd4 Mon Sep 17 00:00:00 2001 From: SirWayne Date: Thu, 19 May 2016 14:20:32 +0200 Subject: [PATCH 01/26] Some clean code refactorings Signed-off-by: SirWayne --- 3rd-dependencies/listDeps.sh | 0 .../api/ArtifactUrlHandlerProperties.java | 214 ++---------------- .../api/DefaultProtocolProperties.java | 79 +++++++ .../api/PropertyBasedArtifactUrlHandler.java | 3 +- .../hawkbit/api/ProtocolProperties.java | 40 ++++ .../hawkbit/cache/TenancyCacheManager.java | 2 +- .../cache/TenantAwareCacheManager.java | 2 +- .../tenancy/configuration/DurationHelper.java | 2 +- .../amqp/AmqpMessageDispatcherService.java | 4 +- .../amqp/AmqpMessageHandlerService.java | 4 +- .../eclipse/hawkbit/amqp/BaseAmqpService.java | 12 +- 11 files changed, 144 insertions(+), 218 deletions(-) mode change 100644 => 100755 3rd-dependencies/listDeps.sh create mode 100644 hawkbit-core/src/main/java/org/eclipse/hawkbit/api/DefaultProtocolProperties.java create mode 100644 hawkbit-core/src/main/java/org/eclipse/hawkbit/api/ProtocolProperties.java diff --git a/3rd-dependencies/listDeps.sh b/3rd-dependencies/listDeps.sh old mode 100644 new mode 100755 diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/api/ArtifactUrlHandlerProperties.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/api/ArtifactUrlHandlerProperties.java index 50f3f4cad..490b2d102 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/api/ArtifactUrlHandlerProperties.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/api/ArtifactUrlHandlerProperties.java @@ -16,8 +16,6 @@ import org.springframework.boot.context.properties.ConfigurationProperties; */ @ConfigurationProperties("hawkbit.artifact.url") public class ArtifactUrlHandlerProperties { - private static final String DEFAULT_IP_LOCALHOST = "127.0.0.1"; - private static final String LOCALHOST = "localhost"; private final Http http = new Http(); private final Https https = new Https(); @@ -54,227 +52,45 @@ public class ArtifactUrlHandlerProperties { } } - /** - * Interface for declaring common properties through all supported protocols - * pattern. - */ - public interface ProtocolProperties { - /** - * @return the hostname value to resolve in the pattern. - */ - String getHostname(); - - /** - * @return the IP address value to resolve in the pattern. - */ - String getIp(); - - /** - * @return the port value to resolve in the pattern. - */ - String getPort(); - - /** - * @return the pattern to build the URL. - */ - String getPattern(); - - /** - * @return true if the {@link ProtocolProperties} is - * enabled. - */ - boolean isEnabled(); - } - /** * Object to hold the properties for the HTTP protocol. */ - public static class Http implements ProtocolProperties { - private String hostname = LOCALHOST; - private String ip = DEFAULT_IP_LOCALHOST; - private String port = ""; - /** - * An ant-URL pattern with placeholder to build the URL on. The URL can - * have specific artifact placeholder. - */ - private String pattern = "{protocol}://{hostname}:{port}/{tenant}/controller/v1/{targetId}/softwaremodules/{softwareModuleId}/artifacts/{artifactFileName}"; + public static class Http extends DefaultProtocolProperties { /** - * Enables HTTP URI generation in DDI and DMF. + * Constructor. */ - private boolean enabled = true; - - @Override - public boolean isEnabled() { - return enabled; - } - - public void setEnabled(final boolean enabled) { - this.enabled = enabled; - } - - @Override - public String getHostname() { - return hostname; - } - - public void setHostname(final String hostname) { - this.hostname = hostname; - } - - @Override - public String getIp() { - return ip; - } - - public void setIp(final String ip) { - this.ip = ip; - } - - @Override - public String getPattern() { - return pattern; - } - - public void setPattern(final String urlPattern) { - this.pattern = urlPattern; - } - - @Override - public String getPort() { - return port; - } - - public void setPort(final String port) { - this.port = port; + public Http() { + setPattern( + "{protocol}://{hostname}:{port}/{tenant}/controller/v1/{targetId}/softwaremodules/{softwareModuleId}/artifacts/{artifactFileName}"); } } /** * Object to hold the properties for the HTTP protocol. */ - public static class Https implements ProtocolProperties { - private String hostname = LOCALHOST; - private String ip = DEFAULT_IP_LOCALHOST; - private String port = ""; - /** - * An ant-URL pattern with placeholder to build the URL on. The URL can - * have specific artifact placeholder. - */ - private String pattern = "{protocol}://{hostname}:{port}/{tenant}/controller/v1/{targetId}/softwaremodules/{softwareModuleId}/artifacts/{artifactFileName}"; + public static class Https extends DefaultProtocolProperties { /** - * Enables HTTPS URI generation in DDI and DMF. + * Constructor. */ - private boolean enabled = true; - - @Override - public boolean isEnabled() { - return enabled; - } - - public void setEnabled(final boolean enabled) { - this.enabled = enabled; - } - - @Override - public String getHostname() { - return hostname; - } - - public void setHostname(final String hostname) { - this.hostname = hostname; - } - - @Override - public String getIp() { - return ip; - } - - public void setIp(final String ip) { - this.ip = ip; - } - - @Override - public String getPattern() { - return pattern; - } - - public void setPattern(final String urlPattern) { - this.pattern = urlPattern; - } - - @Override - public String getPort() { - return port; - } - - public void setPort(final String port) { - this.port = port; + public Https() { + setPattern( + "{protocol}://{hostname}:{port}/{tenant}/controller/v1/{targetId}/softwaremodules/{softwareModuleId}/artifacts/{artifactFileName}"); } } /** * Object to hold the properties for the HTTP protocol. */ - public static class Coap implements ProtocolProperties { - private String hostname = LOCALHOST; - private String ip = DEFAULT_IP_LOCALHOST; - private String port = "5683"; - /** - * An ant-URL pattern with placeholder to build the URL on. The URL can - * have specific artifact placeholder. - */ - private String pattern = "{protocol}://{ip}:{port}/fw/{tenant}/{targetId}/sha1/{artifactSHA1}"; + public static class Coap extends DefaultProtocolProperties { /** - * Enables CoAP URI generation in DMF. + * Constructor. */ - private boolean enabled = true; - - @Override - public boolean isEnabled() { - return enabled; - } - - public void setEnabled(final boolean enabled) { - this.enabled = enabled; - } - - @Override - public String getHostname() { - return hostname; - } - - public void setHostname(final String hostname) { - this.hostname = hostname; - } - - @Override - public String getIp() { - return ip; - } - - public void setIp(final String ip) { - this.ip = ip; - } - - @Override - public String getPattern() { - return pattern; - } - - public void setPattern(final String urlPattern) { - this.pattern = urlPattern; - } - - @Override - public String getPort() { - return port; - } - - public void setPort(final String port) { - this.port = port; + public Coap() { + setPattern("{protocol}://{ip}:{port}/fw/{tenant}/{targetId}/sha1/{artifactSHA1}"); + setPort("5683"); } } diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/api/DefaultProtocolProperties.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/api/DefaultProtocolProperties.java new file mode 100644 index 000000000..9d053104c --- /dev/null +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/api/DefaultProtocolProperties.java @@ -0,0 +1,79 @@ +/** + * Copyright (c) 2015 Bosch Software Innovations GmbH and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.eclipse.hawkbit.api; + +/** + * Object to hold the properties for the base protocols. + */ +public class DefaultProtocolProperties implements ProtocolProperties { + // The IP address is not hardcoded. It's the default value, if the IP + // address is not configured. + @SuppressWarnings("squid:S1313") + private static final String DEFAULT_IP_LOCALHOST = "127.0.0.1"; + private static final String LOCALHOST = "localhost"; + + private String hostname = LOCALHOST; + private String ip = DEFAULT_IP_LOCALHOST; + private String port = ""; + /** + * An ant-URL pattern with placeholder to build the URL on. The URL can have + * specific artifact placeholder. + */ + private String pattern; + + /** + * Enables protocol. + */ + private boolean enabled = true; + + @Override + public boolean isEnabled() { + return enabled; + } + + public void setEnabled(final boolean enabled) { + this.enabled = enabled; + } + + @Override + public String getHostname() { + return hostname; + } + + public void setHostname(final String hostname) { + this.hostname = hostname; + } + + @Override + public String getIp() { + return ip; + } + + public void setIp(final String ip) { + this.ip = ip; + } + + @Override + public String getPattern() { + return pattern; + } + + public void setPattern(final String urlPattern) { + this.pattern = urlPattern; + } + + @Override + public String getPort() { + return port; + } + + public void setPort(final String port) { + this.port = port; + } +} \ No newline at end of file diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/api/PropertyBasedArtifactUrlHandler.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/api/PropertyBasedArtifactUrlHandler.java index 0072f2fbd..53f6492d1 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/api/PropertyBasedArtifactUrlHandler.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/api/PropertyBasedArtifactUrlHandler.java @@ -13,7 +13,6 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import org.eclipse.hawkbit.api.ArtifactUrlHandlerProperties.ProtocolProperties; import org.eclipse.hawkbit.tenancy.TenantAware; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.EnableConfigurationProperties; @@ -61,7 +60,7 @@ public class PropertyBasedArtifactUrlHandler implements ArtifactUrlHandler { for (final Entry entry : entrySet) { if (entry.getKey().equals(PORT_PLACEHOLDER)) { urlPattern = urlPattern.replace(":{" + entry.getKey() + "}", - Strings.isNullOrEmpty(entry.getValue()) ? "" : ":" + entry.getValue()); + Strings.isNullOrEmpty(entry.getValue()) ? "" : (":" + entry.getValue())); } else { urlPattern = urlPattern.replace("{" + entry.getKey() + "}", entry.getValue()); } diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/api/ProtocolProperties.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/api/ProtocolProperties.java new file mode 100644 index 000000000..c4a9556b7 --- /dev/null +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/api/ProtocolProperties.java @@ -0,0 +1,40 @@ +/** + * Copyright (c) 2015 Bosch Software Innovations GmbH and others. + * + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + */ +package org.eclipse.hawkbit.api; + +/** + * Interface for declaring common properties through all supported protocols + * pattern. + */ +public interface ProtocolProperties { + /** + * @return the hostname value to resolve in the pattern. + */ + String getHostname(); + + /** + * @return the IP address value to resolve in the pattern. + */ + String getIp(); + + /** + * @return the port value to resolve in the pattern. + */ + String getPort(); + + /** + * @return the pattern to build the URL. + */ + String getPattern(); + + /** + * @return true if the {@link ProtocolProperties} is enabled. + */ + boolean isEnabled(); +} \ No newline at end of file diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/cache/TenancyCacheManager.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/cache/TenancyCacheManager.java index 5b58ea53e..9338bcbe7 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/cache/TenancyCacheManager.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/cache/TenancyCacheManager.java @@ -13,7 +13,7 @@ import org.springframework.cache.CacheManager; /** * - * + * A cache interface which handles multi tenancy. */ public interface TenancyCacheManager extends CacheManager { diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/cache/TenantAwareCacheManager.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/cache/TenantAwareCacheManager.java index 435f1b2e1..055d9bf6c 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/cache/TenantAwareCacheManager.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/cache/TenantAwareCacheManager.java @@ -67,7 +67,7 @@ public class TenantAwareCacheManager implements TenancyCacheManager { public Collection getCacheNames() { String currentTenant = tenantAware.getCurrentTenant(); if (currentTenant == null) { - return null; + return Collections.emptyList(); } currentTenant = currentTenant.toUpperCase(); diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/configuration/DurationHelper.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/configuration/DurationHelper.java index 5968f4420..befd00c5d 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/configuration/DurationHelper.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/configuration/DurationHelper.java @@ -27,7 +27,7 @@ public final class DurationHelper { * the defined min/max range. * */ - public static class DurationRangeValidator { + public static final class DurationRangeValidator { final Duration min; final Duration max; diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageDispatcherService.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageDispatcherService.java index dae5772e6..bbd7b6b48 100644 --- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageDispatcherService.java +++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageDispatcherService.java @@ -55,8 +55,8 @@ public class AmqpMessageDispatcherService extends BaseAmqpService { /** * Constructor. * - * @param messageConverter - * message converter + * @param rabbitTemplate + * the rabbitTemplate */ @Autowired public AmqpMessageDispatcherService(final RabbitTemplate rabbitTemplate) { diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java index f26d7f3f7..7a452c603 100644 --- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java +++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java @@ -107,6 +107,8 @@ public class AmqpMessageHandlerService extends BaseAmqpService { super(defaultTemplate); } + // Method is not unused. It is called by the spring rabbit listener. + @SuppressWarnings("squid:UnusedPrivateMethod") @RabbitListener(queues = "${hawkbit.dmf.rabbitmq.receiverQueue}", containerFactory = "listenerContainerFactory") private Message onMessage(final Message message, @Header(MessageHeaderKey.TYPE) final String type, @Header(MessageHeaderKey.TENANT) final String tenant) { @@ -417,7 +419,7 @@ public class AmqpMessageHandlerService extends BaseAmqpService { } } - private void checkContentTypeJson(final Message message) { + private static void checkContentTypeJson(final Message message) { final MessageProperties messageProperties = message.getMessageProperties(); if (messageProperties.getContentType() != null && messageProperties.getContentType().contains("json")) { return; diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/BaseAmqpService.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/BaseAmqpService.java index 76870ac93..3c5b78e01 100644 --- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/BaseAmqpService.java +++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/BaseAmqpService.java @@ -38,16 +38,6 @@ public class BaseAmqpService { this.rabbitTemplate = rabbitTemplate; } - /** - * Clean message properties before sending a message. - * - * @param message - * the message to cleaned up - */ - protected void cleanMessageHeaderProperties(final Message message) { - message.getMessageProperties().getHeaders().remove(AbstractJavaTypeMapper.DEFAULT_CLASSID_FIELD_NAME); - } - /** * Is needed to convert a incoming message to is originally object type. * @@ -67,7 +57,7 @@ public class BaseAmqpService { return (T) rabbitTemplate.getMessageConverter().fromMessage(message); } - private boolean isMessageBodyEmpty(final Message message) { + private static boolean isMessageBodyEmpty(final Message message) { return message == null || message.getBody() == null || message.getBody().length == 0; } From 79d604ca0b795ee967f3e0491f00af704fd7abb7 Mon Sep 17 00:00:00 2001 From: SirWayne Date: Thu, 19 May 2016 17:28:45 +0200 Subject: [PATCH 02/26] Some clean code refactorings Signed-off-by: SirWayne --- .../AmqpControllerAuthenticationTest.java | 12 +-- .../amqp/AmqpMessageHandlerServiceTest.java | 6 +- .../dmf/json/model/TenantSecurityToken.java | 4 +- ...actHttpControllerAuthenticationFilter.java | 27 ++++--- ...enantAwareAuthenticationDetailsSource.java | 15 +--- .../HttpDownloadAuthenticationFilter.java | 4 +- .../eventbus/CacheFieldEntityListener.java | 81 +++++++++---------- .../org/eclipse/hawkbit/ui/HawkbitUI.java | 30 ++++--- .../ui/artifacts/UploadArtifactView.java | 22 ++--- .../artifacts/details/ArtifactBeanQuery.java | 6 +- 10 files changed, 102 insertions(+), 105 deletions(-) diff --git a/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/amqp/AmqpControllerAuthenticationTest.java b/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/amqp/AmqpControllerAuthenticationTest.java index 881260579..898647bc6 100644 --- a/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/amqp/AmqpControllerAuthenticationTest.java +++ b/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/amqp/AmqpControllerAuthenticationTest.java @@ -114,7 +114,7 @@ public class AmqpControllerAuthenticationTest { @Description("Tests authentication manager without principal") public void testAuthenticationeBadCredantialsWithoutPricipal() { final TenantSecurityToken securityToken = new TenantSecurityToken(TENANT, CONTROLLLER_ID, - FileResource.sha1("12345")); + FileResource.createFileResourceBySha1("12345")); try { authenticationManager.doAuthenticate(securityToken); fail("BadCredentialsException was excepeted since principal was missing"); @@ -128,7 +128,7 @@ public class AmqpControllerAuthenticationTest { @Description("Tests authentication manager without wrong credential") public void testAuthenticationBadCredantialsWithWrongCredential() { final TenantSecurityToken securityToken = new TenantSecurityToken(TENANT, CONTROLLLER_ID, - FileResource.sha1("12345")); + FileResource.createFileResourceBySha1("12345")); when(tenantConfigurationManagement.getConfigurationValue( eq(TenantConfigurationKey.AUTHENTICATION_MODE_TARGET_SECURITY_TOKEN_ENABLED), eq(Boolean.class))) .thenReturn(CONFIG_VALUE_TRUE); @@ -146,7 +146,7 @@ public class AmqpControllerAuthenticationTest { @Description("Tests authentication successfull") public void testSuccessfullAuthentication() { final TenantSecurityToken securityToken = new TenantSecurityToken(TENANT, CONTROLLLER_ID, - FileResource.sha1("12345")); + FileResource.createFileResourceBySha1("12345")); when(tenantConfigurationManagement.getConfigurationValue( eq(TenantConfigurationKey.AUTHENTICATION_MODE_TARGET_SECURITY_TOKEN_ENABLED), eq(Boolean.class))) .thenReturn(CONFIG_VALUE_TRUE); @@ -161,7 +161,7 @@ public class AmqpControllerAuthenticationTest { final MessageProperties messageProperties = createMessageProperties(MessageType.AUTHENTIFICATION); final TenantSecurityToken securityToken = new TenantSecurityToken(TENANT, CONTROLLLER_ID, - FileResource.sha1("12345")); + FileResource.createFileResourceBySha1("12345")); final Message message = amqpMessageHandlerService.getMessageConverter().toMessage(securityToken, messageProperties); @@ -180,7 +180,7 @@ public class AmqpControllerAuthenticationTest { public void testAuthenticationMessageBadCredantialsWithWrongCredential() { final MessageProperties messageProperties = createMessageProperties(MessageType.AUTHENTIFICATION); final TenantSecurityToken securityToken = new TenantSecurityToken(TENANT, CONTROLLLER_ID, - FileResource.sha1("12345")); + FileResource.createFileResourceBySha1("12345")); when(tenantConfigurationManagement.getConfigurationValue( eq(TenantConfigurationKey.AUTHENTICATION_MODE_TARGET_SECURITY_TOKEN_ENABLED), eq(Boolean.class))) .thenReturn(CONFIG_VALUE_TRUE); @@ -203,7 +203,7 @@ public class AmqpControllerAuthenticationTest { public void testSuccessfullMessageAuthentication() { final MessageProperties messageProperties = createMessageProperties(MessageType.AUTHENTIFICATION); final TenantSecurityToken securityToken = new TenantSecurityToken(TENANT, CONTROLLLER_ID, - FileResource.sha1("12345")); + FileResource.createFileResourceBySha1("12345")); when(tenantConfigurationManagement.getConfigurationValue( eq(TenantConfigurationKey.AUTHENTICATION_MODE_TARGET_SECURITY_TOKEN_ENABLED), eq(Boolean.class))) .thenReturn(CONFIG_VALUE_TRUE); diff --git a/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerServiceTest.java b/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerServiceTest.java index 3051e4e22..bfa47455b 100644 --- a/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerServiceTest.java +++ b/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerServiceTest.java @@ -264,7 +264,7 @@ public class AmqpMessageHandlerServiceTest { @Description("Tests that an download request is denied for an artifact which does not exists") public void authenticationRequestDeniedForArtifactWhichDoesNotExists() { final MessageProperties messageProperties = createMessageProperties(MessageType.AUTHENTIFICATION); - final TenantSecurityToken securityToken = new TenantSecurityToken(TENANT, "123", FileResource.sha1("12345")); + final TenantSecurityToken securityToken = new TenantSecurityToken(TENANT, "123", FileResource.createFileResourceBySha1("12345")); final Message message = amqpMessageHandlerService.getMessageConverter().toMessage(securityToken, messageProperties); @@ -283,7 +283,7 @@ public class AmqpMessageHandlerServiceTest { @Description("Tests that an download request is denied for an artifact which is not assigned to the requested target") public void authenticationRequestDeniedForArtifactWhichIsNotAssignedToTarget() { final MessageProperties messageProperties = createMessageProperties(MessageType.AUTHENTIFICATION); - final TenantSecurityToken securityToken = new TenantSecurityToken(TENANT, "123", FileResource.sha1("12345")); + final TenantSecurityToken securityToken = new TenantSecurityToken(TENANT, "123", FileResource.createFileResourceBySha1("12345")); final Message message = amqpMessageHandlerService.getMessageConverter().toMessage(securityToken, messageProperties); @@ -307,7 +307,7 @@ public class AmqpMessageHandlerServiceTest { @Description("Tests that an download request is allowed for an artifact which exists and assigned to the requested target") public void authenticationRequestAllowedForArtifactWhichExistsAndAssignedToTarget() throws MalformedURLException { final MessageProperties messageProperties = createMessageProperties(MessageType.AUTHENTIFICATION); - final TenantSecurityToken securityToken = new TenantSecurityToken(TENANT, "123", FileResource.sha1("12345")); + final TenantSecurityToken securityToken = new TenantSecurityToken(TENANT, "123", FileResource.createFileResourceBySha1("12345")); final Message message = amqpMessageHandlerService.getMessageConverter().toMessage(securityToken, messageProperties); diff --git a/hawkbit-dmf-api/src/main/java/org/eclipse/hawkbit/dmf/json/model/TenantSecurityToken.java b/hawkbit-dmf-api/src/main/java/org/eclipse/hawkbit/dmf/json/model/TenantSecurityToken.java index e4f41bc46..19293f3eb 100644 --- a/hawkbit-dmf-api/src/main/java/org/eclipse/hawkbit/dmf/json/model/TenantSecurityToken.java +++ b/hawkbit-dmf-api/src/main/java/org/eclipse/hawkbit/dmf/json/model/TenantSecurityToken.java @@ -135,7 +135,7 @@ public class TenantSecurityToken { * the SHA1 key of the file to obtain * @return the {@link FileResource} with SHA1 key set */ - public static FileResource sha1(final String sha1) { + public static FileResource createFileResourceBySha1(final String sha1) { final FileResource resource = new FileResource(); resource.sha1 = sha1; return resource; @@ -148,7 +148,7 @@ public class TenantSecurityToken { * the filename of the file to obtain * @return the {@link FileResource} with filename set */ - public static FileResource filename(final String filename) { + public static FileResource createFileResourceByFilename(final String filename) { final FileResource resource = new FileResource(); resource.filename = filename; return resource; diff --git a/hawkbit-http-security/src/main/java/org/eclipse/hawkbit/security/AbstractHttpControllerAuthenticationFilter.java b/hawkbit-http-security/src/main/java/org/eclipse/hawkbit/security/AbstractHttpControllerAuthenticationFilter.java index 0e67489ea..0a4ad0b72 100644 --- a/hawkbit-http-security/src/main/java/org/eclipse/hawkbit/security/AbstractHttpControllerAuthenticationFilter.java +++ b/hawkbit-http-security/src/main/java/org/eclipse/hawkbit/security/AbstractHttpControllerAuthenticationFilter.java @@ -47,7 +47,7 @@ import com.google.common.collect.UnmodifiableIterator; */ public abstract class AbstractHttpControllerAuthenticationFilter extends AbstractPreAuthenticatedProcessingFilter { - private static final Logger LOGGER = LoggerFactory.getLogger(AbstractHttpControllerAuthenticationFilter.class); + private static final Logger LOG = LoggerFactory.getLogger(AbstractHttpControllerAuthenticationFilter.class); private static final String TENANT_PLACE_HOLDER = "tenant"; private static final String CONTROLLER_ID_PLACE_HOLDER = "controllerId"; @@ -73,10 +73,12 @@ public abstract class AbstractHttpControllerAuthenticationFilter extends Abstrac /** * Constructor for sub-classes. * - * @param systemManagement - * the system management service + * @param tenantConfigurationManagement + * the tenant configuration service * @param tenantAware * the tenant aware service + * @param systemSecurityContext + * the system secruity context */ public AbstractHttpControllerAuthenticationFilter(final TenantConfigurationManagement tenantConfigurationManagement, final TenantAware tenantAware, final SystemSecurityContext systemSecurityContext) { @@ -136,28 +138,28 @@ public abstract class AbstractHttpControllerAuthenticationFilter extends Abstrac final String requestURI = request.getRequestURI(); if (pathExtractor.match(request.getContextPath() + CONTROLLER_REQUEST_ANT_PATTERN, requestURI)) { - LOGGER.debug("retrieving principal from URI request {}", requestURI); + LOG.debug("retrieving principal from URI request {}", requestURI); final Map extractUriTemplateVariables = pathExtractor .extractUriTemplateVariables(request.getContextPath() + CONTROLLER_REQUEST_ANT_PATTERN, requestURI); final String controllerId = extractUriTemplateVariables.get(CONTROLLER_ID_PLACE_HOLDER); final String tenant = extractUriTemplateVariables.get(TENANT_PLACE_HOLDER); - if (LOGGER.isTraceEnabled()) { - LOGGER.trace("Parsed tenant {} and controllerId {} from path request {}", tenant, controllerId, + if (LOG.isTraceEnabled()) { + LOG.trace("Parsed tenant {} and controllerId {} from path request {}", tenant, controllerId, requestURI); } return createTenantSecruityTokenVariables(request, tenant, controllerId); } else if (pathExtractor.match(request.getContextPath() + CONTROLLER_DL_REQUEST_ANT_PATTERN, requestURI)) { - LOGGER.debug("retrieving path variables from URI request {}", requestURI); + LOG.debug("retrieving path variables from URI request {}", requestURI); final Map extractUriTemplateVariables = pathExtractor.extractUriTemplateVariables( request.getContextPath() + CONTROLLER_DL_REQUEST_ANT_PATTERN, requestURI); final String tenant = extractUriTemplateVariables.get(TENANT_PLACE_HOLDER); - if (LOGGER.isTraceEnabled()) { - LOGGER.trace("Parsed tenant {} from path request {}", tenant, requestURI); + if (LOG.isTraceEnabled()) { + LOG.trace("Parsed tenant {} from path request {}", tenant, requestURI); } return createTenantSecruityTokenVariables(request, tenant, "anonymous"); } else { - if (LOGGER.isTraceEnabled()) { - LOGGER.trace("request {} does not match the path pattern {}, request gets ignored", requestURI, + if (LOG.isTraceEnabled()) { + LOG.trace("request {} does not match the path pattern {}, request gets ignored", requestURI, CONTROLLER_REQUEST_ANT_PATTERN); } return null; @@ -166,7 +168,8 @@ public abstract class AbstractHttpControllerAuthenticationFilter extends Abstrac private TenantSecurityToken createTenantSecruityTokenVariables(final HttpServletRequest request, final String tenant, final String controllerId) { - final TenantSecurityToken secruityToken = new TenantSecurityToken(tenant, controllerId, FileResource.sha1("")); + final TenantSecurityToken secruityToken = new TenantSecurityToken(tenant, controllerId, + FileResource.createFileResourceBySha1("")); final UnmodifiableIterator forEnumeration = Iterators.forEnumeration(request.getHeaderNames()); forEnumeration.forEachRemaining(header -> secruityToken.getHeaders().put(header, request.getHeader(header))); return secruityToken; diff --git a/hawkbit-http-security/src/main/java/org/eclipse/hawkbit/security/ControllerTenantAwareAuthenticationDetailsSource.java b/hawkbit-http-security/src/main/java/org/eclipse/hawkbit/security/ControllerTenantAwareAuthenticationDetailsSource.java index 80d50112f..ae514c07b 100644 --- a/hawkbit-http-security/src/main/java/org/eclipse/hawkbit/security/ControllerTenantAwareAuthenticationDetailsSource.java +++ b/hawkbit-http-security/src/main/java/org/eclipse/hawkbit/security/ControllerTenantAwareAuthenticationDetailsSource.java @@ -22,15 +22,11 @@ import org.springframework.util.AntPathMatcher; * An {@link AuthenticationDetailsSource} implementation which retrieves the * tenant from a request pattern {@link #TENANT_AWARE_CONTROLLER_PATTERN} and * stores the retrieved tenant in the {@link TenantAwareAuthenticationDetails}. - * * */ public class ControllerTenantAwareAuthenticationDetailsSource implements AuthenticationDetailsSource { - /** - * - */ private static final String TENANT_AWARE_CONTROLLER_PATTERN = "/{tenant}/controller/**"; private static final Logger LOGGER = LoggerFactory .getLogger(ControllerTenantAwareAuthenticationDetailsSource.class); @@ -38,19 +34,12 @@ public class ControllerTenantAwareAuthenticationDetailsSource private final AntPathMatcher pathExtractor; /** - * - */ + * Constructor. + */ public ControllerTenantAwareAuthenticationDetailsSource() { pathExtractor = new AntPathMatcher(); } - /* - * (non-Javadoc) - * - * @see - * org.springframework.security.authentication.AuthenticationDetailsSource# - * buildDetails(java. lang.Object) - */ @Override public TenantAwareAuthenticationDetails buildDetails(final HttpServletRequest request) { return new TenantAwareWebAuthenticationDetails(getTenantFromRequestUri(request), request.getRemoteAddr(), true); diff --git a/hawkbit-http-security/src/main/java/org/eclipse/hawkbit/security/HttpDownloadAuthenticationFilter.java b/hawkbit-http-security/src/main/java/org/eclipse/hawkbit/security/HttpDownloadAuthenticationFilter.java index 4a4bf2f5c..4185c9b83 100644 --- a/hawkbit-http-security/src/main/java/org/eclipse/hawkbit/security/HttpDownloadAuthenticationFilter.java +++ b/hawkbit-http-security/src/main/java/org/eclipse/hawkbit/security/HttpDownloadAuthenticationFilter.java @@ -28,7 +28,7 @@ import org.springframework.security.web.authentication.preauth.AbstractPreAuthen public class HttpDownloadAuthenticationFilter extends AbstractPreAuthenticatedProcessingFilter { public static final String REQUEST_ID_REGEX_PATTERN = ".*\\/downloadId\\/.*"; - private static final Logger LOGGER = LoggerFactory.getLogger(HttpDownloadAuthenticationFilter.class); + private static final Logger LOG = LoggerFactory.getLogger(HttpDownloadAuthenticationFilter.class); private final Pattern pattern; private final Cache cache; @@ -50,7 +50,7 @@ public class HttpDownloadAuthenticationFilter extends AbstractPreAuthenticatedPr if (!matcher.matches()) { return null; } - LOGGER.debug("retrieving id from URI request {}", requestURI); + LOG.debug("retrieving id from URI request {}", requestURI); final String[] groups = requestURI.split("\\/"); final String id = groups[groups.length - 1]; if (id == null) { diff --git a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/CacheFieldEntityListener.java b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/CacheFieldEntityListener.java index 7275cb4ec..902462028 100644 --- a/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/CacheFieldEntityListener.java +++ b/hawkbit-repository/src/main/java/org/eclipse/hawkbit/eventbus/CacheFieldEntityListener.java @@ -32,9 +32,6 @@ import org.springframework.hateoas.Identifiable; * by this entity listener cause the cache keys are calculated with the ID of * the entity. * - * - * - * */ public class CacheFieldEntityListener { @@ -48,24 +45,21 @@ public class CacheFieldEntityListener { */ @PostLoad public void postLoad(final Object target) { - if (target instanceof Identifiable) { - final CacheManager cacheManager = CacheManagerHolder.getInstance().getCacheManager(); - @SuppressWarnings("rawtypes") - final String id = ((Identifiable) target).getId().toString(); - final Class type = target.getClass(); - findCacheFields(type, id, new CacheFieldCallback() { - @Override - public void fromCache(final Field field, final String cacheKey, final Serializable id) - throws IllegalAccessException { - final Cache cache = cacheManager.getCache(type.getName()); - final ValueWrapper valueWrapper = cache - .get(CacheKeys.entitySpecificCacheKey(id.toString(), cacheKey)); - if (valueWrapper != null && valueWrapper.get() != null) { - FieldUtils.writeField(field, target, valueWrapper.get(), true); - } - } - }); + if (!isIdentifiable(target)) { + return; } + + final CacheFieldCallback cacheFieldCallback = (type, field, cacheKey, entityId) -> { + final CacheManager cacheManager = CacheManagerHolder.getInstance().getCacheManager(); + final Cache cache = cacheManager.getCache(type.getName()); + final ValueWrapper valueWrapper = cache + .get(CacheKeys.entitySpecificCacheKey(entityId.toString(), cacheKey)); + if (valueWrapper != null && valueWrapper.get() != null) { + FieldUtils.writeField(field, target, valueWrapper.get(), true); + } + }; + + findCacheFields((Identifiable) target, cacheFieldCallback); } /** @@ -77,30 +71,32 @@ public class CacheFieldEntityListener { */ @PostRemove public void postDelete(final Object target) { - if (target instanceof Identifiable) { - final CacheManager cacheManager = CacheManagerHolder.getInstance().getCacheManager(); - @SuppressWarnings("rawtypes") - final String id = ((Identifiable) target).getId().toString(); - final Class type = target.getClass(); - findCacheFields(type, id, new CacheFieldCallback() { - @Override - public void fromCache(final Field field, final String cacheKey, final Serializable id) - throws IllegalAccessException { - final Cache cache = cacheManager.getCache(type.getName()); - cache.evict(CacheKeys.entitySpecificCacheKey(id.toString(), cacheKey)); - } - }); + if (!isIdentifiable(target)) { + return; } + final CacheFieldCallback cacheFieldCallback = (type, field, cacheKey, entityId) -> { + final CacheManager cacheManager = CacheManagerHolder.getInstance().getCacheManager(); + final Cache cache = cacheManager.getCache(type.getName()); + cache.evict(CacheKeys.entitySpecificCacheKey(entityId.toString(), cacheKey)); + }; + + findCacheFields((Identifiable) target, cacheFieldCallback); } - private void findCacheFields(final Class type, final Serializable id, - final CacheFieldCallback callback) { + private boolean isIdentifiable(final Object target) { + return target instanceof Identifiable; + } + + private void findCacheFields(final Identifiable target, final CacheFieldCallback callback) { + final String id = target.getId().toString(); + final Class type = target.getClass(); + final Field[] declaredFields = type.getDeclaredFields(); for (final Field field : declaredFields) { if (field.getAnnotation(CacheField.class) != null) { try { final CacheField annotation = field.getAnnotation(CacheField.class); - callback.fromCache(field, annotation.key(), id); + callback.fromCache(type, field, annotation.key(), id); } catch (final IllegalAccessException e) { LOGGER.error("cannot access the field {} for the entity {}, ignoring the cacheable field", field, type, e); @@ -109,23 +105,26 @@ public class CacheFieldEntityListener { } } + @FunctionalInterface private interface CacheFieldCallback { /** - * callback methods which is called by the - * {@link CacheFieldEntityListener#findCacheFields(Class, Serializable, CacheFieldCallback)} - * in case a field is annotated with {@link CacheField}. + * callback methods which is called when a field is annotated with + * {@link CacheField}. * + * @param type + * the type of the target. * @param field * the field which is annotaed with {@link CacheField} * @param cacheKey * the configured cache key in the annotation * {@link CacheField#key()} - * @param id + * @param entityId * the ID of the entity * @throws IllegalAccessException * in case the field cannot be accessed */ - void fromCache(final Field field, final String cacheKey, Serializable id) throws IllegalAccessException; + void fromCache(Class type, final Field field, final String cacheKey, Serializable entityId) + throws IllegalAccessException; } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitUI.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitUI.java index f4c26a960..de750173e 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitUI.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/HawkbitUI.java @@ -50,13 +50,11 @@ import com.vaadin.ui.themes.ValoTheme; /** * Vaadin management UI. * - * - * - * */ -@SuppressWarnings("serial") @Title("hawkBit Update Server") public class HawkbitUI extends DefaultHawkbitUI implements DetachListener { + private static final long serialVersionUID = 1L; + private static final Logger LOG = LoggerFactory.getLogger(HawkbitUI.class); private static final String EMPTY_VIEW = ""; @@ -139,7 +137,7 @@ public class HawkbitUI extends DefaultHawkbitUI implements DetachListener { contentVerticalLayout.addComponent(content); content.setStyleName("view-content"); content.setSizeFull(); - rootLayout.setExpandRatio(contentVerticalLayout, 1.0f); + rootLayout.setExpandRatio(contentVerticalLayout, 1.0F); contentVerticalLayout.setStyleName("main-content"); contentVerticalLayout.setExpandRatio(content, 1.0F); setContent(rootLayout); @@ -154,6 +152,8 @@ public class HawkbitUI extends DefaultHawkbitUI implements DetachListener { } final Navigator navigator = new Navigator(this, content); navigator.addViewChangeListener(new ViewChangeListener() { + private static final long serialVersionUID = 1L; + @Override public boolean beforeViewChange(final ViewChangeEvent event) { return true; @@ -197,7 +197,7 @@ public class HawkbitUI extends DefaultHawkbitUI implements DetachListener { * as set * @return String as preferred locale */ - private String getLocaleId(final Set availableLocalesInApp) { + private static String getLocaleId(final Set availableLocalesInApp) { final String[] localeChain = getLocaleChain(); String spLocale = SPUIDefinitions.DEFAULT_LOCALE; if (null != localeChain) { @@ -217,16 +217,18 @@ public class HawkbitUI extends DefaultHawkbitUI implements DetachListener { * * @return String as locales */ - private String[] getLocaleChain() { + private static String[] getLocaleChain() { String[] localeChain = null; // Fetch all cookies from the request final Cookie[] cookies = VaadinService.getCurrentRequest().getCookies(); - if (cookies != null) { - for (final Cookie c : cookies) { - if (c.getName().equals(SPUIDefinitions.COOKIE_NAME) && !c.getValue().isEmpty()) { - localeChain = c.getValue().split("#"); - break; - } + if (cookies == null) { + return localeChain; + } + + for (final Cookie c : cookies) { + if (c.getName().equals(SPUIDefinitions.COOKIE_NAME) && !c.getValue().isEmpty()) { + localeChain = c.getValue().split("#"); + break; } } return localeChain; @@ -234,6 +236,8 @@ public class HawkbitUI extends DefaultHawkbitUI implements DetachListener { private class ManagementViewProvider implements ViewProvider { + private static final long serialVersionUID = 1L; + @Override public String getViewName(final String viewAndParameters) { return viewProvider.getViewName(getStartView(viewAndParameters)); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/UploadArtifactView.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/UploadArtifactView.java index b07aa0276..ffbb3b7bd 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/UploadArtifactView.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/UploadArtifactView.java @@ -158,7 +158,7 @@ public class UploadArtifactView extends VerticalLayout implements View, BrowserW detailAndUploadLayout.setComponentAlignment(dadw, Alignment.MIDDLE_CENTER); } - detailAndUploadLayout.setExpandRatio(artifactDetailsLayout, 1.0f); + detailAndUploadLayout.setExpandRatio(artifactDetailsLayout, 1.0F); detailAndUploadLayout.setSizeFull(); detailAndUploadLayout.addStyleName("group"); detailAndUploadLayout.setSpacing(true); @@ -177,9 +177,9 @@ public class UploadArtifactView extends VerticalLayout implements View, BrowserW mainLayout.addComponent(detailAndUploadLayout, 2, 0); mainLayout.addComponent(deleteActionsLayout, 1, 1); mainLayout.addComponent(uplaodButtonsLayout, 2, 1); - mainLayout.setRowExpandRatio(0, 1.0f); - mainLayout.setColumnExpandRatio(1, 0.5f); - mainLayout.setColumnExpandRatio(2, 0.5f); + mainLayout.setRowExpandRatio(0, 1.0F); + mainLayout.setColumnExpandRatio(1, 0.5F); + mainLayout.setColumnExpandRatio(2, 0.5F); mainLayout.setComponentAlignment(deleteActionsLayout, Alignment.BOTTOM_CENTER); mainLayout.setComponentAlignment(uplaodButtonsLayout, Alignment.BOTTOM_CENTER); return mainLayout; @@ -201,8 +201,8 @@ public class UploadArtifactView extends VerticalLayout implements View, BrowserW private void maximizeSwTable() { mainLayout.removeComponent(detailAndUploadLayout); removeOtherComponents(); - mainLayout.setColumnExpandRatio(1, 1f); - mainLayout.setColumnExpandRatio(2, 0f); + mainLayout.setColumnExpandRatio(1, 1F); + mainLayout.setColumnExpandRatio(2, 0F); } private void minimizeArtifactoryDetails() { @@ -219,15 +219,15 @@ public class UploadArtifactView extends VerticalLayout implements View, BrowserW mainLayout.removeComponent(smTableLayout); detailAndUploadLayout.removeComponent(dadw); removeOtherComponents(); - mainLayout.setColumnExpandRatio(1, 0f); - mainLayout.setColumnExpandRatio(2, 1f); + mainLayout.setColumnExpandRatio(1, 0F); + mainLayout.setColumnExpandRatio(2, 1F); } private void addOtherComponents() { mainLayout.addComponent(deleteActionsLayout, 1, 1); mainLayout.addComponent(uplaodButtonsLayout, 2, 1); - mainLayout.setColumnExpandRatio(1, 0.5f); - mainLayout.setColumnExpandRatio(2, 0.5f); + mainLayout.setColumnExpandRatio(1, 0.5F); + mainLayout.setColumnExpandRatio(2, 0.5F); mainLayout.setComponentAlignment(deleteActionsLayout, Alignment.BOTTOM_CENTER); mainLayout.setComponentAlignment(uplaodButtonsLayout, Alignment.BOTTOM_CENTER); } @@ -240,6 +240,8 @@ public class UploadArtifactView extends VerticalLayout implements View, BrowserW private void hideDropHints() { UI.getCurrent().addClickListener(new ClickListener() { + private static final long serialVersionUID = 1L; + @Override public void click(final com.vaadin.event.MouseEvents.ClickEvent event) { eventBus.publish(this, DragEvent.HIDE_DROP_HINT); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/details/ArtifactBeanQuery.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/details/ArtifactBeanQuery.java index 2fa3763fd..017bda863 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/details/ArtifactBeanQuery.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/details/ArtifactBeanQuery.java @@ -36,9 +36,9 @@ import org.vaadin.addons.lazyquerycontainer.QueryDefinition; public class ArtifactBeanQuery extends AbstractBeanQuery { private static final long serialVersionUID = -333786310371208962L; private Sort sort = new Sort(Direction.DESC, "filename"); - private transient ArtifactManagement artifactManagement = null; - private transient Page firstPagetArtifacts = null; - private Long baseSwModuleId = null; + private transient ArtifactManagement artifactManagement; + private transient Page firstPagetArtifacts; + private Long baseSwModuleId; /** * Parametric Constructor. From 27ae06775881e7e8deaaa135ab2cd103dd3efe99 Mon Sep 17 00:00:00 2001 From: SirWayne Date: Fri, 20 May 2016 08:41:47 +0200 Subject: [PATCH 03/26] Some clean code refactorings Signed-off-by: SirWayne --- .../hawkbit/api/DefaultProtocolProperties.java | 2 +- .../hawkbit/security/SystemSecurityContext.java | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/api/DefaultProtocolProperties.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/api/DefaultProtocolProperties.java index 9d053104c..07eac8db1 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/api/DefaultProtocolProperties.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/api/DefaultProtocolProperties.java @@ -76,4 +76,4 @@ public class DefaultProtocolProperties implements ProtocolProperties { public void setPort(final String port) { this.port = port; } -} \ No newline at end of file +} diff --git a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SystemSecurityContext.java b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SystemSecurityContext.java index f849eb541..abe921473 100644 --- a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SystemSecurityContext.java +++ b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SystemSecurityContext.java @@ -29,12 +29,12 @@ import org.springframework.stereotype.Service; import com.google.common.base.Throwables; /** - * + * A Service which provide to run system code. */ @Service public class SystemSecurityContext { - private static final Logger logger = LoggerFactory.getLogger(SystemSecurityContext.class); + private static final Logger LOGGER = LoggerFactory.getLogger(SystemSecurityContext.class); private final TenantAware tenantAware; @@ -67,19 +67,20 @@ public class SystemSecurityContext { public T runAsSystem(final Callable callable) { final SecurityContext oldContext = SecurityContextHolder.getContext(); try { - logger.debug("entering system code execution"); + LOGGER.debug("entering system code execution"); return tenantAware.runAsTenant(tenantAware.getCurrentTenant(), () -> { try { setSystemContext(); return callable.call(); - } catch (final Exception e) { + // The callable API throws a Exception ant to specific + } catch (@SuppressWarnings("squid:S2221") final Exception e) { throw Throwables.propagate(e); } }); } finally { SecurityContextHolder.setContext(oldContext); - logger.debug("leaving system code execution"); + LOGGER.debug("leaving system code execution"); } } @@ -97,6 +98,9 @@ public class SystemSecurityContext { SecurityContextHolder.setContext(securityContextImpl); } + /** + * Authentication with the system role. + */ public static class SystemCodeAuthentication implements Authentication { private static final long serialVersionUID = 1L; From d2826a21c20f5512031e0acb9ca36a87556e73a4 Mon Sep 17 00:00:00 2001 From: SirWayne Date: Fri, 20 May 2016 08:52:29 +0200 Subject: [PATCH 04/26] Some clean code refactorings Signed-off-by: SirWayne --- .../org/eclipse/hawkbit/security/SystemSecurityContext.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SystemSecurityContext.java b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SystemSecurityContext.java index abe921473..e0f3ca8c7 100644 --- a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SystemSecurityContext.java +++ b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SystemSecurityContext.java @@ -72,7 +72,7 @@ public class SystemSecurityContext { try { setSystemContext(); return callable.call(); - // The callable API throws a Exception ant to specific + // The callable API throws a Exception and not a specific } catch (@SuppressWarnings("squid:S2221") final Exception e) { throw Throwables.propagate(e); } From 82fa485ddceb7be6e2913dea552954bf6214e20e Mon Sep 17 00:00:00 2001 From: Michael Hirsch Date: Mon, 25 Jul 2016 10:13:07 +0200 Subject: [PATCH 05/26] suppress warning squid:S2221 Signed-off-by: Michael Hirsch --- .../org/eclipse/hawkbit/security/SystemSecurityContext.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SystemSecurityContext.java b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SystemSecurityContext.java index 979080344..0e3863d97 100644 --- a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SystemSecurityContext.java +++ b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SystemSecurityContext.java @@ -101,7 +101,9 @@ public class SystemSecurityContext { try { setSystemContext(SecurityContextHolder.getContext()); return callable.call(); - } catch (final Exception e) { + // The callable API throws a Exception and not a specific + // one + } catch (@SuppressWarnings("squid:S2221") final Exception e) { throw Throwables.propagate(e); } }); From 812498d2fe0b25e4e0fc1cd5ea4b91c0dc8a2c67 Mon Sep 17 00:00:00 2001 From: Michael Hirsch Date: Mon, 25 Jul 2016 10:22:35 +0200 Subject: [PATCH 06/26] don't use constructor using default encoding Signed-off-by: Michael Hirsch --- .../org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java index d1bf85103..19ceb123f 100644 --- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java +++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java @@ -10,6 +10,7 @@ package org.eclipse.hawkbit.amqp; import java.net.URI; import java.net.URISyntaxException; +import java.nio.charset.StandardCharsets; import java.util.Collections; import java.util.List; import java.util.UUID; @@ -417,7 +418,7 @@ public class AmqpMessageHandlerService extends BaseAmqpService { } private static String convertCorrelationId(final Message message) { - return new String(message.getMessageProperties().getCorrelationId()); + return new String(message.getMessageProperties().getCorrelationId(), StandardCharsets.UTF_8); } private Action getUpdateActionStatus(final ActionStatus actionStatus) { From 928ad1520b5088cd51629e8771e280f71d82ace5 Mon Sep 17 00:00:00 2001 From: Michael Hirsch Date: Mon, 25 Jul 2016 10:39:55 +0200 Subject: [PATCH 07/26] remove port 8080 to fix tests Signed-off-by: Michael Hirsch --- .../hawkbit/ddi/rest/resource/DdiDeploymentBaseTest.java | 4 ++-- .../hawkbit/util/PropertyBasedArtifactUrlHandlerTest.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiDeploymentBaseTest.java b/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiDeploymentBaseTest.java index 0ec0d0d7e..584c774d5 100644 --- a/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiDeploymentBaseTest.java +++ b/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiDeploymentBaseTest.java @@ -60,8 +60,8 @@ import ru.yandex.qatools.allure.annotations.Stories; @Stories("Deployment Action Resource") public class DdiDeploymentBaseTest extends AbstractRestIntegrationTestWithMongoDB { - private static final String HTTP_LOCALHOST = "http://localhost:8080/"; - private static final String HTTPS_LOCALHOST = "https://localhost:8080/"; + private static final String HTTP_LOCALHOST = "http://localhost/"; + private static final String HTTPS_LOCALHOST = "https://localhost/"; @Test() @Description("Ensures that artifacts are not found, when softare module does not exists.") diff --git a/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/util/PropertyBasedArtifactUrlHandlerTest.java b/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/util/PropertyBasedArtifactUrlHandlerTest.java index 8cd92d2bd..92e8f390d 100644 --- a/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/util/PropertyBasedArtifactUrlHandlerTest.java +++ b/hawkbit-dmf-amqp/src/test/java/org/eclipse/hawkbit/util/PropertyBasedArtifactUrlHandlerTest.java @@ -35,8 +35,8 @@ import ru.yandex.qatools.allure.annotations.Stories; org.eclipse.hawkbit.RepositoryApplicationConfiguration.class }) public class PropertyBasedArtifactUrlHandlerTest extends AbstractIntegrationTestWithMongoDB { - private static final String HTTPS_LOCALHOST = "https://localhost:8080/"; - private static final String HTTP_LOCALHOST = "http://localhost:8080/"; + private static final String HTTPS_LOCALHOST = "https://localhost/"; + private static final String HTTP_LOCALHOST = "http://localhost/"; @Autowired private ArtifactUrlHandler urlHandlerProperties; From 9727af7a993746310bcb6990871adead703eae3f Mon Sep 17 00:00:00 2001 From: Michael Hirsch Date: Mon, 25 Jul 2016 10:54:05 +0200 Subject: [PATCH 08/26] don't use getBytes using default encoding Signed-off-by: Michael Hirsch --- .../java/org/eclipse/hawkbit/simulator/amqp/SenderService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/SenderService.java b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/SenderService.java index f2c0e7fcb..d7f81be4e 100644 --- a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/SenderService.java +++ b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/SenderService.java @@ -8,6 +8,7 @@ */ package org.eclipse.hawkbit.simulator.amqp; +import java.nio.charset.StandardCharsets; import java.util.UUID; import org.slf4j.Logger; @@ -58,7 +59,7 @@ public abstract class SenderService extends MessageService { } message.getMessageProperties().getHeaders().remove(AbstractJavaTypeMapper.DEFAULT_CLASSID_FIELD_NAME); final String correlationId = UUID.randomUUID().toString(); - message.getMessageProperties().setCorrelationId(correlationId.getBytes()); + message.getMessageProperties().setCorrelationId(correlationId.getBytes(StandardCharsets.UTF_8)); if (LOGGER.isTraceEnabled()) { LOGGER.trace("Sending message {} to exchange {} with correlationId {}", message, address, correlationId); From 400c8bafcf51f6190a492f7af06ffecd36e2599e Mon Sep 17 00:00:00 2001 From: Michael Hirsch Date: Mon, 25 Jul 2016 11:10:59 +0200 Subject: [PATCH 09/26] move method to the right inner class Signed-off-by: Michael Hirsch --- .../hawkbit/ui/common/tagdetails/AbstractTagToken.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/AbstractTagToken.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/AbstractTagToken.java index 9d36e3de0..042492613 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/AbstractTagToken.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/AbstractTagToken.java @@ -211,11 +211,11 @@ public abstract class AbstractTagToken implements Serializ unassignTag(tagDetails.get(tokenId).getName()); } - } + private Property getItemNameProperty(final Object tokenId) { + final Item item = tokenField.getContainerDataSource().getItem(tokenId); + return item.getItemProperty("name"); + } - private Property getItemNameProperty(final Object tokenId) { - final Item item = tokenField.getContainerDataSource().getItem(tokenId); - return item.getItemProperty("name"); } private String getColor(final Object tokenId) { From 40a12c0321144bc6ed779e17e6932b91c9497134 Mon Sep 17 00:00:00 2001 From: Michael Hirsch Date: Mon, 25 Jul 2016 11:16:37 +0200 Subject: [PATCH 10/26] remove unnecessary IOException from method signature Signed-off-by: Michael Hirsch --- .../im/authentication/UserAuthenticationFilter.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/im/authentication/UserAuthenticationFilter.java b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/im/authentication/UserAuthenticationFilter.java index ecd980b03..fd59f1d30 100644 --- a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/im/authentication/UserAuthenticationFilter.java +++ b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/im/authentication/UserAuthenticationFilter.java @@ -8,8 +8,6 @@ */ package org.eclipse.hawkbit.im.authentication; -import java.io.IOException; - import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; @@ -46,14 +44,11 @@ public interface UserAuthenticationFilter { * the servlet response * @param chain * the filterchain - * @throws IOException - * cannot read from request * @throws ServletException * servlet exception */ - void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) - throws IOException, ServletException; + void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException; /** * @see Filter#destroy() From 227267af880c9ecd5597f97c0756870ea75d6044 Mon Sep 17 00:00:00 2001 From: Michael Hirsch Date: Mon, 25 Jul 2016 11:18:05 +0200 Subject: [PATCH 11/26] avoid more than 3 nested if/switch/try blocks Signed-off-by: Michael Hirsch --- .../hawkbit/im/authentication/SpPermission.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/im/authentication/SpPermission.java b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/im/authentication/SpPermission.java index daf5f0dd9..52935a0cb 100644 --- a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/im/authentication/SpPermission.java +++ b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/im/authentication/SpPermission.java @@ -185,18 +185,22 @@ public final class SpPermission { field.setAccessible(true); try { final String role = (String) field.get(null); - if (!(exclusionRoles.contains(role))) { - allPermissions.add(role); - } + addIfNotExcluded(exclusionRoles, allPermissions, role); } catch (final IllegalAccessException e) { LOGGER.error(e.getMessage(), e); } - } } return allPermissions; } + private static void addIfNotExcluded(final Collection exclusionRoles, final List allPermissions, + final String role) { + if (!(exclusionRoles.contains(role))) { + allPermissions.add(role); + } + } + /** * Contains all the spring security evaluation expressions for the * {@link PreAuthorize} annotation for method security. From 7e94c9f68447ddcb79b3619eb328c4d2ebbe8506 Mon Sep 17 00:00:00 2001 From: Michael Hirsch Date: Mon, 25 Jul 2016 11:58:11 +0200 Subject: [PATCH 12/26] write comment in constructor why necessary Signed-off-by: Michael Hirsch --- .../hawkbit/mgmt/json/model/artifact/MgmtArtifactHash.java | 1 + 1 file changed, 1 insertion(+) diff --git a/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/artifact/MgmtArtifactHash.java b/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/artifact/MgmtArtifactHash.java index d43ae4339..770c8ffcf 100644 --- a/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/artifact/MgmtArtifactHash.java +++ b/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/json/model/artifact/MgmtArtifactHash.java @@ -27,6 +27,7 @@ public class MgmtArtifactHash { * Default constructor. */ public MgmtArtifactHash() { + // used for jackson to instantiate } /** From 2f263faca0d553bcdd615a022f114a8aaaabfdc6 Mon Sep 17 00:00:00 2001 From: Michael Hirsch Date: Mon, 25 Jul 2016 12:01:28 +0200 Subject: [PATCH 13/26] suppress warning for multiple checked exception declaration Signed-off-by: Michael Hirsch --- .../im/authentication/UserAuthenticationFilter.java | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/im/authentication/UserAuthenticationFilter.java b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/im/authentication/UserAuthenticationFilter.java index fd59f1d30..deaff089f 100644 --- a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/im/authentication/UserAuthenticationFilter.java +++ b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/im/authentication/UserAuthenticationFilter.java @@ -8,6 +8,8 @@ */ package org.eclipse.hawkbit.im.authentication; +import java.io.IOException; + import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; @@ -44,11 +46,16 @@ public interface UserAuthenticationFilter { * the servlet response * @param chain * the filterchain + * @throws IOException + * cannot read from request * @throws ServletException * servlet exception */ - - void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws ServletException; + // this declaration of multiple checked exception is necessary so it's + // aligned with the servlet API. + @SuppressWarnings("squid:S1160") + void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) + throws IOException, ServletException; /** * @see Filter#destroy() From ebf2c15da91442e43a684f51b7033ac3c9087645 Mon Sep 17 00:00:00 2001 From: Michael Hirsch Date: Mon, 25 Jul 2016 12:07:35 +0200 Subject: [PATCH 14/26] use private method getEntityFactory() Signed-off-by: Michael Hirsch --- .../eclipse/hawkbit/ui/artifacts/details/ArtifactBeanQuery.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/details/ArtifactBeanQuery.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/details/ArtifactBeanQuery.java index cb869714b..4ba722284 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/details/ArtifactBeanQuery.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/details/ArtifactBeanQuery.java @@ -69,7 +69,7 @@ public class ArtifactBeanQuery extends AbstractBeanQuery { @Override protected LocalArtifact constructBean() { - return entityFactory.generateLocalArtifact(); + return getEntityFactory().generateLocalArtifact(); } @Override From a04333b393dd09fed27b29883fe4075f3598cdb8 Mon Sep 17 00:00:00 2001 From: Michael Hirsch Date: Mon, 25 Jul 2016 13:30:58 +0200 Subject: [PATCH 15/26] re-insert the method cleanMessageHeaderProperties Signed-off-by: Michael Hirsch --- .../java/org/eclipse/hawkbit/amqp/BaseAmqpService.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/BaseAmqpService.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/BaseAmqpService.java index 1d9693ed7..b9314ac27 100644 --- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/BaseAmqpService.java +++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/BaseAmqpService.java @@ -107,4 +107,14 @@ public class BaseAmqpService { protected RabbitTemplate getRabbitTemplate() { return rabbitTemplate; } + + /** + * Clean message properties before sending a message. + * + * @param message + * the message to cleaned up + */ + protected void cleanMessageHeaderProperties(final Message message) { + message.getMessageProperties().getHeaders().remove(AbstractJavaTypeMapper.DEFAULT_CLASSID_FIELD_NAME); + } } From 2ad6f6946f879cce8cbadd16a7a2dc7d9db01160 Mon Sep 17 00:00:00 2001 From: Michael Hirsch Date: Mon, 25 Jul 2016 16:01:32 +0200 Subject: [PATCH 16/26] improve code quality Signed-off-by: Michael Hirsch --- .../amqp/DefaultAmqpSenderService.java | 3 +- .../smtable/SoftwareModuleDetails.java | 80 +++---- .../common/AbstractMetadataPopupLayout.java | 75 +++--- .../hawkbit/ui/common/CommonDialogWindow.java | 18 +- .../AbstractTableDetailsLayout.java | 18 +- .../SoftwareModuleMetadatadetailslayout.java | 222 +++++++++--------- .../dstable/DistributionSetDetails.java | 76 +++--- .../dstable/DsMetadataPopupLayout.java | 30 +-- .../smtable/SwModuleDetails.java | 64 +++-- .../CreateOrUpdateFilterHeader.java | 9 +- .../dstable/DistributionDetails.java | 78 +++--- .../management/targettable/TargetDetails.java | 14 +- .../ui/rollout/rollout/RolloutListGrid.java | 2 +- 13 files changed, 335 insertions(+), 354 deletions(-) diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/DefaultAmqpSenderService.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/DefaultAmqpSenderService.java index d951cce5d..1eb6d31f2 100644 --- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/DefaultAmqpSenderService.java +++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/DefaultAmqpSenderService.java @@ -9,6 +9,7 @@ package org.eclipse.hawkbit.amqp; import java.net.URI; +import java.nio.charset.StandardCharsets; import java.util.UUID; import org.eclipse.hawkbit.util.IpUtil; @@ -46,7 +47,7 @@ public class DefaultAmqpSenderService implements AmqpSenderService { final String correlationId = UUID.randomUUID().toString(); final String exchange = extractExchange(replyTo); - message.getMessageProperties().setCorrelationId(correlationId.getBytes()); + message.getMessageProperties().setCorrelationId(correlationId.getBytes(StandardCharsets.UTF_8)); if (LOGGER.isTraceEnabled()) { LOGGER.trace("Sending message {} to exchange {} with correlationId {}", message, exchange, correlationId); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleDetails.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleDetails.java index 15904169d..a9a14700d 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleDetails.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtable/SoftwareModuleDetails.java @@ -53,42 +53,42 @@ public class SoftwareModuleDetails extends AbstractNamedVersionedEntityTableDeta @Autowired private transient SoftwareManagement softwareManagement; - + @Autowired private SwMetadataPopupLayout swMetadataPopupLayout; - + @Autowired - private EntityFactory entityFactory; - + private transient EntityFactory entityFactory; + private SoftwareModuleMetadatadetailslayout swmMetadataTable; - + /** * softwareLayout Initialize the component. */ @Override protected void init() { swmMetadataTable = new SoftwareModuleMetadatadetailslayout(); - swmMetadataTable.init(getI18n(), getPermissionChecker(),softwareManagement,swMetadataPopupLayout,entityFactory); + swmMetadataTable.init(getI18n(), getPermissionChecker(), softwareManagement, swMetadataPopupLayout, + entityFactory); super.init(); } - + @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final MetadataEvent event) { - UI.getCurrent() - .access(() -> { - SoftwareModuleMetadata softwareModuleMetadata = event.getSoftwareModuleMetadata(); - if (softwareModuleMetadata != null - && isSoftwareModuleSelected(softwareModuleMetadata.getSoftwareModule())) { - if (event.getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.CREATE_SOFTWARE_MODULE_METADATA) { - swmMetadataTable.createMetadata(event.getSoftwareModuleMetadata().getKey()); - } else if (event.getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.DELETE_SOFTWARE_MODULE_METADATA) { - swmMetadataTable.deleteMetadata(event.getSoftwareModuleMetadata().getKey()); - } - } - }); + UI.getCurrent().access(() -> { + final SoftwareModuleMetadata softwareModuleMetadata = event.getSoftwareModuleMetadata(); + if (softwareModuleMetadata != null + && isSoftwareModuleSelected(softwareModuleMetadata.getSoftwareModule())) { + if (event.getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.CREATE_SOFTWARE_MODULE_METADATA) { + swmMetadataTable.createMetadata(event.getSoftwareModuleMetadata().getKey()); + } else if (event + .getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.DELETE_SOFTWARE_MODULE_METADATA) { + swmMetadataTable.deleteMetadata(event.getSoftwareModuleMetadata().getKey()); + } + } + }); } - - + @Override protected String getEditButtonId() { return SPUIComponentIdProvider.UPLOAD_SW_MODULE_EDIT_BUTTON; @@ -101,7 +101,7 @@ public class SoftwareModuleDetails extends AbstractNamedVersionedEntityTableDeta detailsTab.addTab(createLogLayout(), getI18n().get("caption.logs.tab"), null); detailsTab.addTab(swmMetadataTable, getI18n().get("caption.metadata"), null); } - + @Override protected void onEdit(final ClickEvent event) { final Window addSoftwareModule = softwareModuleAddUpdateWindow @@ -126,7 +126,7 @@ public class SoftwareModuleDetails extends AbstractNamedVersionedEntityTableDeta updateSoftwareModuleDetailsLayout(HawkbitCommonUtil.SP_STRING_EMPTY, HawkbitCommonUtil.SP_STRING_EMPTY, maxAssign); } - + populateMetadataDetails(); } @@ -188,38 +188,30 @@ public class SoftwareModuleDetails extends AbstractNamedVersionedEntityTableDeta protected String getDetailsHeaderCaptionId() { return SPUIComponentIdProvider.TARGET_DETAILS_HEADER_LABEL_ID; } - - + @Override - protected void populateMetadataDetails(){ + protected void populateMetadataDetails() { swmMetadataTable.populateSMMetadata(getSelectedBaseEntity()); - } - - private boolean isSoftwareModuleSelected(SoftwareModule softwareModule) { - final SoftwareModule selectedUploadSWModule = artifactUploadState.getSelectedBaseSoftwareModule().isPresent() ? artifactUploadState - .getSelectedBaseSoftwareModule().get() : null; + } + + private boolean isSoftwareModuleSelected(final SoftwareModule softwareModule) { + final SoftwareModule selectedUploadSWModule = artifactUploadState.getSelectedBaseSoftwareModule().isPresent() + ? artifactUploadState.getSelectedBaseSoftwareModule().get() : null; return softwareModule != null && selectedUploadSWModule != null && selectedUploadSWModule.getName().equals(softwareModule.getName()) && selectedUploadSWModule.getVersion().equals(softwareModule.getVersion()); } - + @Override protected Boolean isMetadataIconToBeDisplayed() { return true; } - - @Override - protected String getShowMetadataButtonId() { - SoftwareModule selectedBaseEntity = getSelectedBaseEntity(); - return SPUIComponentIdProvider.SW_TABLE_MANAGE_METADATA_ID + "." + selectedBaseEntity.getName() + "." - + selectedBaseEntity.getVersion(); - } @Override - protected void showMetadata(ClickEvent event) { - SoftwareModule swmodule = softwareManagement.findSoftwareModuleWithDetails(getSelectedBaseEntityId()); - /* display the window */ - UI.getCurrent().addWindow(swMetadataPopupLayout.getWindow(swmodule,null)); + protected void showMetadata(final ClickEvent event) { + final SoftwareModule swmodule = softwareManagement.findSoftwareModuleWithDetails(getSelectedBaseEntityId()); + /* display the window */ + UI.getCurrent().addWindow(swMetadataPopupLayout.getWindow(swmodule, null)); } - + } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/AbstractMetadataPopupLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/AbstractMetadataPopupLayout.java index 050d7c79f..ff1cc3db1 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/AbstractMetadataPopupLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/AbstractMetadataPopupLayout.java @@ -38,7 +38,6 @@ import com.vaadin.server.FontAwesome; import com.vaadin.ui.AbstractTextField.TextChangeEventMode; import com.vaadin.ui.Alignment; import com.vaadin.ui.Button; -import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.CustomComponent; import com.vaadin.ui.Grid; import com.vaadin.ui.Grid.SelectionMode; @@ -98,7 +97,7 @@ public abstract class AbstractMetadataPopupLayout { if (ok) { - deleteMetadata(getSelectedEntity(), key, value); - uiNotification.displaySuccess(i18n.get("message.metadata.deleted.successfully", key)); - final Object selectedRow = metaDataGrid.getSelectedRow(); - metaDataGrid.getContainerDataSource().removeItem(event.getItemId()); - // force grid to refresh - metaDataGrid.clearSortOrder(); - if (!metaDataGrid.getContainerDataSource().getItemIds().isEmpty()) { - if (selectedRow != null) { - if (selectedRow.equals(event.getItemId())) { - metaDataGrid.select(metaDataGrid.getContainerDataSource().getIdByIndex(0)); - } else { - metaDataGrid.select(selectedRow); - } - } - } else { - keyTextField.clear(); - valueTextArea.clear(); - metaDataGrid.select(null); - if (hasCreatePermission()) { - keyTextField.setEnabled(true); - valueTextArea.setEnabled(true); - addIcon.setEnabled(false); - } - } + handleOkDeleteMetadata(event, key, value); } }); UI.getCurrent().addWindow(confirmDialog.getWindow()); confirmDialog.getWindow().bringToFront(); } + private void handleOkDeleteMetadata(final RendererClickEvent event, final String key, final String value) { + deleteMetadata(getSelectedEntity(), key, value); + uiNotification.displaySuccess(i18n.get("message.metadata.deleted.successfully", key)); + final Object selectedRow = metaDataGrid.getSelectedRow(); + metaDataGrid.getContainerDataSource().removeItem(event.getItemId()); + // force grid to refresh + metaDataGrid.clearSortOrder(); + if (!metaDataGrid.getContainerDataSource().getItemIds().isEmpty()) { + if (selectedRow != null) { + if (selectedRow.equals(event.getItemId())) { + metaDataGrid.select(metaDataGrid.getContainerDataSource().getIdByIndex(0)); + } else { + metaDataGrid.select(selectedRow); + } + } + } else { + clearTextFields(); + } + } + + private void clearTextFields() { + keyTextField.clear(); + valueTextArea.clear(); + metaDataGrid.select(null); + if (hasCreatePermission()) { + keyTextField.setEnabled(true); + valueTextArea.setEnabled(true); + addIcon.setEnabled(false); + } + } + private Button createAddIcon() { addIcon = SPUIComponentProvider.getButton(SPUIComponentIdProvider.METADTA_ADD_ICON_ID, i18n.get("button.save"), null, null, false, FontAwesome.PLUS, SPUIButtonStyleSmallNoBorder.class); - addIcon.addClickListener(event -> onAdd(event)); + addIcon.addClickListener(event -> onAdd()); return addIcon; } private Label createHeaderCaption() { - final Label captionLabel = SPUIComponentProvider.getLabel(i18n.get("caption.metadata"), - SPUILabelDefinitions.SP_WIDGET_CAPTION); - return captionLabel; + return SPUIComponentProvider.getLabel(i18n.get("caption.metadata"), SPUILabelDefinitions.SP_WIDGET_CAPTION); } - private IndexedContainer getMetadataContainer() { + private static IndexedContainer getMetadataContainer() { final IndexedContainer swcontactContainer = new IndexedContainer(); swcontactContainer.addContainerProperty(KEY, String.class, ""); swcontactContainer.addContainerProperty(VALUE, String.class, ""); @@ -340,7 +344,7 @@ public abstract class AbstractMetadataPopupLayout close(); + private final ClickListener closeClickListener = event -> close(); private final transient Map orginalValues; @@ -115,6 +115,10 @@ public class CommonDialogWindow extends Window implements Serializable { * the saveButtonClickListener * @param cancelButtonClickListener * the cancelButtonClickListener + * @param layout + * the abstract layout + * @param i18n + * the i18n service */ public CommonDialogWindow(final String caption, final Component content, final String helpLink, final ClickListener saveButtonClickListener, final ClickListener cancelButtonClickListener, @@ -233,11 +237,11 @@ public class CommonDialogWindow extends Window implements Serializable { } protected void addCloseListenerForSaveButton() { - saveButton.addClickListener(close); + saveButton.addClickListener(closeClickListener); } protected void addCloseListenerForCancelButton() { - cancelButton.addClickListener(close); + cancelButton.addClickListener(closeClickListener); } protected void addComponenetListeners() { @@ -275,7 +279,8 @@ public class CommonDialogWindow extends Window implements Serializable { return false; } - private boolean isValueEquals(final AbstractField field, final Object orginalValue, final Object currentValue) { + private static boolean isValueEquals(final AbstractField field, final Object orginalValue, + final Object currentValue) { if (Set.class.equals(field.getType())) { return CollectionUtils.isEqualCollection(CollectionUtils.emptyIfNull((Collection) orginalValue), CollectionUtils.emptyIfNull((Collection) currentValue)); @@ -289,7 +294,7 @@ public class CommonDialogWindow extends Window implements Serializable { return Objects.equals(orginalValue, currentValue); } - private Object getCurrentVaue(final Component currentChangedComponent, final Object newValue, + private static Object getCurrentVaue(final Component currentChangedComponent, final Object newValue, final AbstractField field) { Object currentValue = field.getValue(); if (field instanceof Table) { @@ -365,7 +370,7 @@ public class CommonDialogWindow extends Window implements Serializable { return false; } - private List> getAllComponents(final AbstractLayout abstractLayout) { + private static List> getAllComponents(final AbstractLayout abstractLayout) { final List> components = new ArrayList<>(); final Iterator iterate = abstractLayout.iterator(); @@ -464,6 +469,7 @@ public class CommonDialogWindow extends Window implements Serializable { private class ChangeListener implements ValueChangeListener, TextChangeListener, ItemSetChangeListener { + private static final long serialVersionUID = 1L; private final Field field; public ChangeListener(final Field field) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/AbstractTableDetailsLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/AbstractTableDetailsLayout.java index b6475f647..b0b563f0e 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/AbstractTableDetailsLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/AbstractTableDetailsLayout.java @@ -64,7 +64,7 @@ public abstract class AbstractTableDetailsLayout extends private Button editButton; private Button manageMetadataBtn; - + private TabSheet detailsTab; private VerticalLayout detailsLayout; @@ -140,11 +140,11 @@ public abstract class AbstractTableDetailsLayout extends editButton.addClickListener(this::onEdit); editButton.setEnabled(false); - manageMetadataBtn = SPUIComponentProvider.getButton("", "", "", null, false, - FontAwesome.LIST_ALT, SPUIButtonStyleSmallNoBorder.class); + manageMetadataBtn = SPUIComponentProvider.getButton("", "", "", null, false, FontAwesome.LIST_ALT, + SPUIButtonStyleSmallNoBorder.class); manageMetadataBtn.setId(getEditButtonId()); manageMetadataBtn.setDescription(i18n.get("tooltip.metadata.icon")); - manageMetadataBtn.addClickListener(this::showMetadata); + manageMetadataBtn.addClickListener(this::showMetadata); manageMetadataBtn.setEnabled(false); detailsTab = SPUIComponentProvider.getDetailsTabSheet(); @@ -295,8 +295,8 @@ public abstract class AbstractTableDetailsLayout extends descriptionLayout = getTabLayout(); return descriptionLayout; } - - /** + + /** * Default caption of header to be displayed when no data row selected in * table. * @@ -341,7 +341,7 @@ public abstract class AbstractTableDetailsLayout extends } protected abstract void populateDetailsWidget(); - + protected abstract void populateMetadataDetails(); protected Long getSelectedBaseEntityId() { @@ -352,10 +352,8 @@ public abstract class AbstractTableDetailsLayout extends protected abstract String getName(); - protected abstract String getShowMetadataButtonId(); - protected abstract Boolean isMetadataIconToBeDisplayed(); - + protected abstract void showMetadata(Button.ClickEvent event); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/SoftwareModuleMetadatadetailslayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/SoftwareModuleMetadatadetailslayout.java index 854347c11..d5753c033 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/SoftwareModuleMetadatadetailslayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/detailslayout/SoftwareModuleMetadatadetailslayout.java @@ -41,130 +41,142 @@ import com.vaadin.ui.themes.ValoTheme; @ViewScope public class SoftwareModuleMetadatadetailslayout extends Table { - private static final long serialVersionUID = 2913758299611838818L; + private static final long serialVersionUID = 2913758299611838818L; - private static final String METADATA_KEY = "Key"; + private static final String METADATA_KEY = "Key"; - private SpPermissionChecker permissionChecker; + private SpPermissionChecker permissionChecker; - private SoftwareManagement softwareManagement; + private transient SoftwareManagement softwareManagement; - private SwMetadataPopupLayout swMetadataPopupLayout; + private SwMetadataPopupLayout swMetadataPopupLayout; - private I18N i18n; + private I18N i18n; - private Long selectedSWModuleId; + private Long selectedSWModuleId; - private transient EntityFactory entityFactory; + private transient EntityFactory entityFactory; - public void init(final I18N i18n, final SpPermissionChecker permissionChecker, - final SoftwareManagement softwareManagement, final SwMetadataPopupLayout swMetadataPopupLayout, - final EntityFactory entityFactory) { - this.i18n = i18n; - this.permissionChecker = permissionChecker; - this.softwareManagement = softwareManagement; - this.swMetadataPopupLayout = swMetadataPopupLayout; - this.entityFactory = entityFactory; - createSWMMetadataTable(); - addCustomGeneratedColumns(); - } + /** + * Initialize the layout. + * + * @param i18n + * the i18n service + * @param permissionChecker + * the permission checker service + * @param softwareManagement + * the software management service + * @param swMetadataPopupLayout + * the software module metadata popup layout + * @param entityFactory + * the entity factory service + */ + public void init(final I18N i18n, final SpPermissionChecker permissionChecker, + final SoftwareManagement softwareManagement, final SwMetadataPopupLayout swMetadataPopupLayout, + final EntityFactory entityFactory) { + this.i18n = i18n; + this.permissionChecker = permissionChecker; + this.softwareManagement = softwareManagement; + this.swMetadataPopupLayout = swMetadataPopupLayout; + this.entityFactory = entityFactory; + createSWMMetadataTable(); + addCustomGeneratedColumns(); + } - /** - * Populate software module metadata table. - * - * @param swModule - */ - public void populateSMMetadata(final SoftwareModule swModule) { - removeAllItems(); - if (null == swModule) { - return; - } - selectedSWModuleId = swModule.getId(); - final List swMetadataList = swModule.getMetadata(); - if (null != swMetadataList && !swMetadataList.isEmpty()) { - swMetadataList.forEach(swMetadata -> setSWMetadataProperties(swMetadata)); - } - } + /** + * Populate software module metadata table. + * + * @param swModule + */ + public void populateSMMetadata(final SoftwareModule swModule) { + removeAllItems(); + if (null == swModule) { + return; + } + selectedSWModuleId = swModule.getId(); + final List swMetadataList = swModule.getMetadata(); + if (null != swMetadataList && !swMetadataList.isEmpty()) { + swMetadataList.forEach(swMetadata -> setSWMetadataProperties(swMetadata)); + } + } - /** - * Create metadata. - * - * @param metadataKeyName - */ - public void createMetadata(final String metadataKeyName) { - final IndexedContainer metadataContainer = (IndexedContainer) getContainerDataSource(); - final Item item = metadataContainer.addItem(metadataKeyName); - item.getItemProperty(METADATA_KEY).setValue(metadataKeyName); + /** + * Create metadata. + * + * @param metadataKeyName + */ + public void createMetadata(final String metadataKeyName) { + final IndexedContainer metadataContainer = (IndexedContainer) getContainerDataSource(); + final Item item = metadataContainer.addItem(metadataKeyName); + item.getItemProperty(METADATA_KEY).setValue(metadataKeyName); - } + } - /** - * Delete metadata. - * - * @param metadataKeyName - */ - public void deleteMetadata(final String metadataKeyName) { - final IndexedContainer metadataContainer = (IndexedContainer) getContainerDataSource(); - metadataContainer.removeItem(metadataKeyName); - } + /** + * Delete metadata. + * + * @param metadataKeyName + */ + public void deleteMetadata(final String metadataKeyName) { + final IndexedContainer metadataContainer = (IndexedContainer) getContainerDataSource(); + metadataContainer.removeItem(metadataKeyName); + } - private void createSWMMetadataTable() { - addStyleName(ValoTheme.TABLE_NO_HORIZONTAL_LINES); - addStyleName(ValoTheme.TABLE_NO_STRIPES); - addStyleName(SPUIStyleDefinitions.SW_MODULE_TABLE); - setSelectable(false); - setImmediate(true); - setContainerDataSource(getSwModuleMetadataContainer()); - setColumnHeaderMode(ColumnHeaderMode.EXPLICIT); - addSMMetadataTableHeader(); - setSizeFull(); - //same as height of other tabs in details tabsheet - setHeight(116,Unit.PIXELS); - } + private void createSWMMetadataTable() { + addStyleName(ValoTheme.TABLE_NO_HORIZONTAL_LINES); + addStyleName(ValoTheme.TABLE_NO_STRIPES); + addStyleName(SPUIStyleDefinitions.SW_MODULE_TABLE); + setSelectable(false); + setImmediate(true); + setContainerDataSource(getSwModuleMetadataContainer()); + setColumnHeaderMode(ColumnHeaderMode.EXPLICIT); + addSMMetadataTableHeader(); + setSizeFull(); + // same as height of other tabs in details tabsheet + setHeight(116, Unit.PIXELS); + } - private IndexedContainer getSwModuleMetadataContainer() { - final IndexedContainer container = new IndexedContainer(); - container.addContainerProperty(METADATA_KEY, String.class, ""); - setColumnAlignment(METADATA_KEY, Align.LEFT); - return container; - } + private IndexedContainer getSwModuleMetadataContainer() { + final IndexedContainer container = new IndexedContainer(); + container.addContainerProperty(METADATA_KEY, String.class, ""); + setColumnAlignment(METADATA_KEY, Align.LEFT); + return container; + } - private void addSMMetadataTableHeader() { - setColumnHeader(METADATA_KEY, i18n.get("header.key")); - } + private void addSMMetadataTableHeader() { + setColumnHeader(METADATA_KEY, i18n.get("header.key")); + } + private void setSWMetadataProperties(final SoftwareModuleMetadata swMetadata) { + final Item item = getContainerDataSource().addItem(swMetadata.getKey()); + item.getItemProperty(METADATA_KEY).setValue(swMetadata.getKey()); + } - private void setSWMetadataProperties(final SoftwareModuleMetadata swMetadata) { - final Item item = getContainerDataSource().addItem(swMetadata.getKey()); - item.getItemProperty(METADATA_KEY).setValue(swMetadata.getKey()); - } + private void addCustomGeneratedColumns() { + addGeneratedColumn(METADATA_KEY, (source, itemId, columnId) -> customMetadataDetailButton((String) itemId)); + } - private void addCustomGeneratedColumns() { - addGeneratedColumn(METADATA_KEY, (source, itemId, columnId) -> customMetadataDetailButton((String) itemId)); - } + private Button customMetadataDetailButton(final String metadataKey) { + final Button viewLink = SPUIComponentProvider.getButton(getDetailLinkId(metadataKey), metadataKey, + "View" + metadataKey + " Metadata details", null, false, null, SPUIButtonStyleSmallNoBorder.class); + viewLink.setData(metadataKey); + if (permissionChecker.hasUpdateDistributionPermission()) { + viewLink.addStyleName(ValoTheme.BUTTON_TINY + " " + ValoTheme.BUTTON_LINK + " " + "on-focus-no-border link" + + " " + "text-style"); + viewLink.addClickListener(event -> showMetadataDetails(selectedSWModuleId, metadataKey)); + } + return viewLink; + } - private Button customMetadataDetailButton(final String metadataKey) { - final Button viewLink = SPUIComponentProvider.getButton(getDetailLinkId(metadataKey), metadataKey, "View" - + metadataKey + " Metadata details", null, false, null, SPUIButtonStyleSmallNoBorder.class); - viewLink.setData(metadataKey); - if (permissionChecker.hasUpdateDistributionPermission()) { - viewLink.addStyleName(ValoTheme.BUTTON_TINY + " " + ValoTheme.BUTTON_LINK + " " + "on-focus-no-border link" - + " " + "text-style"); - viewLink.addClickListener(event -> showMetadataDetails(selectedSWModuleId, metadataKey)); - } - return viewLink; - } + private static String getDetailLinkId(final String name) { + return new StringBuilder(SPUIComponentIdProvider.SW_METADATA_DETAIL_LINK).append('.').append(name).toString(); + } - private static String getDetailLinkId(final String name) { - return new StringBuilder(SPUIComponentIdProvider.SW_METADATA_DETAIL_LINK).append('.').append(name).toString(); - } - - private void showMetadataDetails(final Long selectedSWModuleId, final String metadataKey) { - SoftwareModule swmodule = softwareManagement.findSoftwareModuleById(selectedSWModuleId); - /* display the window */ - UI.getCurrent().addWindow( - swMetadataPopupLayout.getWindow(swmodule, - entityFactory.generateSoftwareModuleMetadata(swmodule, metadataKey, ""))); - } + private void showMetadataDetails(final Long selectedSWModuleId, final String metadataKey) { + final SoftwareModule swmodule = softwareManagement.findSoftwareModuleById(selectedSWModuleId); + /* display the window */ + UI.getCurrent().addWindow(swMetadataPopupLayout.getWindow(swmodule, + entityFactory.generateSoftwareModuleMetadata(swmodule, metadataKey, ""))); + } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetDetails.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetDetails.java index 03a86c44d..6e428ffba 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetDetails.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DistributionSetDetails.java @@ -68,7 +68,7 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet private static final String SOFT_MODULE = "softwareModule"; private static final String UNASSIGN_SOFT_MODULE = "unassignSoftModule"; - + @Autowired private ManageDistUIState manageDistUIState; @@ -83,37 +83,35 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet @Autowired private transient DistributionSetManagement distributionSetManagement; - + @Autowired private DsMetadataPopupLayout dsMetadataPopupLayout; - + @Autowired - private EntityFactory entityFactory; + private transient EntityFactory entityFactory; private SoftwareModuleDetailsTable softwareModuleTable; - + private DistributionSetMetadatadetailslayout dsMetadataTable; private VerticalLayout tagsLayout; - + private final Map assignedSWModule = new HashMap<>(); - - + @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final MetadataEvent event) { - UI.getCurrent() - .access(() -> { - DistributionSetMetadata dsMetadata = event.getDistributionSetMetadata(); - if (dsMetadata != null && isDistributionSetSelected(dsMetadata.getDistributionSet())) { - if (event.getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.CREATE_DISTRIBUTION_SET_METADATA) { - dsMetadataTable.createMetadata(event.getDistributionSetMetadata().getKey()); - } else if (event.getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.DELETE_DISTRIBUTION_SET_METADATA) { - dsMetadataTable.deleteMetadata(event.getDistributionSetMetadata().getKey()); - } - } - }); + UI.getCurrent().access(() -> { + final DistributionSetMetadata dsMetadata = event.getDistributionSetMetadata(); + if (dsMetadata != null && isDistributionSetSelected(dsMetadata.getDistributionSet())) { + if (event.getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.CREATE_DISTRIBUTION_SET_METADATA) { + dsMetadataTable.createMetadata(event.getDistributionSetMetadata().getKey()); + } else if (event + .getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.DELETE_DISTRIBUTION_SET_METADATA) { + dsMetadataTable.deleteMetadata(event.getDistributionSetMetadata().getKey()); + } + } + }); } - /** * softwareLayout Initialize the component. @@ -124,8 +122,8 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet softwareModuleTable.init(getI18n(), true, getPermissionChecker(), distributionSetManagement, getEventBus(), manageDistUIState); dsMetadataTable = new DistributionSetMetadatadetailslayout(); - dsMetadataTable.init(getI18n(), getPermissionChecker(),distributionSetManagement, - dsMetadataPopupLayout,entityFactory); + dsMetadataTable.init(getI18n(), getPermissionChecker(), distributionSetManagement, dsMetadataPopupLayout, + entityFactory); super.init(); } @@ -141,7 +139,7 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet populateTags(); populateMetadataDetails(); } - + private void populateModule() { softwareModuleTable.populateModule(getSelectedBaseEntity()); showUnsavedAssignment(); @@ -271,12 +269,12 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet updateDistributionSetDetailsLayout(null, null); } } - + @Override - protected void populateMetadataDetails(){ + protected void populateMetadataDetails() { dsMetadataTable.populateDSMetadata(getSelectedBaseEntity()); - } - + } + private void updateDistributionSetDetailsLayout(final String type, final Boolean isMigrationRequired) { final VerticalLayout detailsTabLayout = getDetailsLayout(); detailsTabLayout.removeAllComponents(); @@ -403,26 +401,18 @@ public class DistributionSetDetails extends AbstractNamedVersionedEntityTableDet protected Boolean isMetadataIconToBeDisplayed() { return true; } - - @Override - protected String getShowMetadataButtonId() { - DistributionSetIdName lastselectedDistDS = manageDistUIState.getLastSelectedDistribution().isPresent() ? manageDistUIState - .getLastSelectedDistribution().get() : null; - return SPUIComponentIdProvider.DS_TABLE_MANAGE_METADATA_ID + "." + lastselectedDistDS.getName() + "." - + lastselectedDistDS.getVersion(); - } - - private boolean isDistributionSetSelected(DistributionSet ds) { - DistributionSetIdName lastselectedDistDS = manageDistUIState.getLastSelectedDistribution().isPresent() ? manageDistUIState - .getLastSelectedDistribution().get() : null; + + private boolean isDistributionSetSelected(final DistributionSet ds) { + final DistributionSetIdName lastselectedDistDS = manageDistUIState.getLastSelectedDistribution().isPresent() + ? manageDistUIState.getLastSelectedDistribution().get() : null; return ds != null && lastselectedDistDS != null && lastselectedDistDS.getName().equals(ds.getName()) && lastselectedDistDS.getVersion().endsWith(ds.getVersion()); } - @Override - protected void showMetadata(ClickEvent event) { - DistributionSet ds = distributionSetManagement.findDistributionSetByIdWithDetails(getSelectedBaseEntityId()); - UI.getCurrent().addWindow(dsMetadataPopupLayout.getWindow(ds,null)); + protected void showMetadata(final ClickEvent event) { + final DistributionSet ds = distributionSetManagement + .findDistributionSetByIdWithDetails(getSelectedBaseEntityId()); + UI.getCurrent().addWindow(dsMetadataPopupLayout.getWindow(ds, null)); } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DsMetadataPopupLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DsMetadataPopupLayout.java index 2041944d4..26eecab8f 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DsMetadataPopupLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/dstable/DsMetadataPopupLayout.java @@ -36,23 +36,24 @@ public class DsMetadataPopupLayout extends AbstractMetadataPopupLayout getMetadataList() { return getSelectedEntity().getMetadata(); } - + /** * Update metadata for DistributionSet. */ @Override - protected void deleteMetadata(DistributionSet entity, String key, String value) { - DistributionSetMetadata dsMetaData = entityFactory.generateDistributionSetMetadata(entity, key, value); + protected void deleteMetadata(final DistributionSet entity, final String key, final String value) { + final DistributionSetMetadata dsMetaData = entityFactory.generateDistributionSetMetadata(entity, key, value); distributionSetManagement.deleteDistributionSetMetadata(entity, key); eventBus.publish(this, new MetadataEvent(MetadataUIEvent.DELETE_DISTRIBUTION_SET_METADATA, dsMetaData)); } - + @Override protected boolean hasCreatePermission() { return permChecker.hasCreateDistributionPermission(); } - + @Override protected boolean hasUpdatePermission() { return permChecker.hasUpdateDistributionPermission(); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleDetails.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleDetails.java index 6cec80028..04a651b5e 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleDetails.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/smtable/SwModuleDetails.java @@ -49,49 +49,50 @@ public class SwModuleDetails extends AbstractNamedVersionedEntityTableDetailsLay @Autowired private ManageDistUIState manageDistUIState; - + @Autowired private transient SoftwareManagement softwareManagement; - + @Autowired private SwMetadataPopupLayout swMetadataPopupLayout; - + @Autowired - private EntityFactory entityFactory; - + private transient EntityFactory entityFactory; + private SoftwareModuleMetadatadetailslayout swmMetadataTable; - /** + /** * softwareLayout Initialize the component. */ @Override protected void init() { swmMetadataTable = new SoftwareModuleMetadatadetailslayout(); - swmMetadataTable.init(getI18n(), getPermissionChecker(),softwareManagement,swMetadataPopupLayout,entityFactory); + swmMetadataTable.init(getI18n(), getPermissionChecker(), softwareManagement, swMetadataPopupLayout, + entityFactory); super.init(); } - + /** * MetadataEvent. * * @param event * as instance of {@link MetadataEvent} */ - + @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final MetadataEvent event) { - UI.getCurrent() - .access(() -> { - SoftwareModuleMetadata softwareModuleMetadata = event.getSoftwareModuleMetadata(); - if (softwareModuleMetadata != null - && isSoftwareModuleSelected(softwareModuleMetadata.getSoftwareModule())) { - if (event.getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.CREATE_SOFTWARE_MODULE_METADATA) { - swmMetadataTable.createMetadata(event.getSoftwareModuleMetadata().getKey()); - } else if (event.getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.DELETE_SOFTWARE_MODULE_METADATA) { - swmMetadataTable.deleteMetadata(event.getSoftwareModuleMetadata().getKey()); - } - } - }); + UI.getCurrent().access(() -> { + final SoftwareModuleMetadata softwareModuleMetadata = event.getSoftwareModuleMetadata(); + if (softwareModuleMetadata != null + && isSoftwareModuleSelected(softwareModuleMetadata.getSoftwareModule())) { + if (event.getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.CREATE_SOFTWARE_MODULE_METADATA) { + swmMetadataTable.createMetadata(event.getSoftwareModuleMetadata().getKey()); + } else if (event + .getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.DELETE_SOFTWARE_MODULE_METADATA) { + swmMetadataTable.deleteMetadata(event.getSoftwareModuleMetadata().getKey()); + } + } + }); } @EventBusListenerMethod(scope = EventScope.SESSION) @@ -119,7 +120,7 @@ public class SwModuleDetails extends AbstractNamedVersionedEntityTableDetailsLay detailsTab.addTab(createDescriptionLayout(), getI18n().get("caption.tab.description"), null); detailsTab.addTab(createLogLayout(), getI18n().get("caption.logs.tab"), null); detailsTab.addTab(swmMetadataTable, getI18n().get("caption.metadata"), null); - } + } @Override protected String getDefaultCaption() { @@ -196,15 +197,15 @@ public class SwModuleDetails extends AbstractNamedVersionedEntityTableDetailsLay protected String getDetailsHeaderCaptionId() { return SPUIComponentIdProvider.TARGET_DETAILS_HEADER_LABEL_ID; } - + @Override protected void populateMetadataDetails() { swmMetadataTable.populateSMMetadata(getSelectedBaseEntity()); } - private boolean isSoftwareModuleSelected(SoftwareModule softwareModule) { - final Long selectedDistSWModuleId = manageDistUIState.getSelectedBaseSwModuleId().isPresent() ? manageDistUIState - .getSelectedBaseSwModuleId().get() : null; + private boolean isSoftwareModuleSelected(final SoftwareModule softwareModule) { + final Long selectedDistSWModuleId = manageDistUIState.getSelectedBaseSwModuleId().isPresent() + ? manageDistUIState.getSelectedBaseSwModuleId().get() : null; return softwareModule != null && selectedDistSWModuleId != null && selectedDistSWModuleId.equals(softwareModule.getId()); } @@ -213,17 +214,10 @@ public class SwModuleDetails extends AbstractNamedVersionedEntityTableDetailsLay protected Boolean isMetadataIconToBeDisplayed() { return true; } - - @Override - protected String getShowMetadataButtonId() { - SoftwareModule selectedBaseEntity = getSelectedBaseEntity(); - return SPUIComponentIdProvider.SW_TABLE_MANAGE_METADATA_ID + "." + selectedBaseEntity.getName() + "." - + selectedBaseEntity.getVersion(); - } @Override - protected void showMetadata(ClickEvent event) { - SoftwareModule swmodule = softwareManagement.findSoftwareModuleWithDetails(getSelectedBaseEntityId()); + protected void showMetadata(final ClickEvent event) { + final SoftwareModule swmodule = softwareManagement.findSoftwareModuleWithDetails(getSelectedBaseEntityId()); UI.getCurrent().addWindow(swMetadataPopupLayout.getWindow(swmodule, null)); } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/CreateOrUpdateFilterHeader.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/CreateOrUpdateFilterHeader.java index b785ae8b6..1023d98ed 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/CreateOrUpdateFilterHeader.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filtermanagement/CreateOrUpdateFilterHeader.java @@ -60,8 +60,7 @@ import com.vaadin.ui.VerticalLayout; import com.vaadin.ui.themes.ValoTheme; /** - * - * + * A Vaadin layout for create or update the target filter. */ @SpringComponent @ViewScope @@ -494,11 +493,7 @@ public class CreateOrUpdateFilterHeader extends VerticalLayout implements Button if (filterManagementUIState.isCreateFilterViewDisplayed() && !doesAlreadyExists()) { createTargetFilterQuery(); } else { - if (!nameTextField.getValue().equals(oldFilterName) && !doesAlreadyExists()) { - updateCustomFilter(); - } else { - updateCustomFilter(); - } + updateCustomFilter(); } } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionDetails.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionDetails.java index e59820e9c..4765e9ac1 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionDetails.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionDetails.java @@ -53,48 +53,47 @@ public class DistributionDetails extends AbstractNamedVersionedEntityTableDetail @Autowired private DistributionTagToken distributionTagToken; - + @Autowired - private transient DistributionSetManagement distributionSetManagement; - + private transient DistributionSetManagement distributionSetManagement; + @Autowired private DsMetadataPopupLayout dsMetadataPopupLayout; - + @Autowired - private EntityFactory entityFactory; + private transient EntityFactory entityFactory; private SoftwareModuleDetailsTable softwareModuleTable; private DistributionSetMetadatadetailslayout dsMetadataTable; - + @Override protected void init() { softwareModuleTable = new SoftwareModuleDetailsTable(); softwareModuleTable.init(getI18n(), false, getPermissionChecker(), null, null, null); - + dsMetadataTable = new DistributionSetMetadatadetailslayout(); - dsMetadataTable.init(getI18n(), getPermissionChecker(),distributionSetManagement, - dsMetadataPopupLayout,entityFactory); - + dsMetadataTable.init(getI18n(), getPermissionChecker(), distributionSetManagement, dsMetadataPopupLayout, + entityFactory); + super.init(); } @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final MetadataEvent event) { - UI.getCurrent() - .access(() -> { - DistributionSetMetadata dsMetadata = event.getDistributionSetMetadata(); - if (dsMetadata != null && isDistributionSetSelected(dsMetadata.getDistributionSet())) { - if (event.getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.CREATE_DISTRIBUTION_SET_METADATA) { - dsMetadataTable.createMetadata(event.getDistributionSetMetadata().getKey()); - } else if (event.getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.DELETE_DISTRIBUTION_SET_METADATA) { - dsMetadataTable.deleteMetadata(event.getDistributionSetMetadata().getKey()); - } - } - }); + UI.getCurrent().access(() -> { + final DistributionSetMetadata dsMetadata = event.getDistributionSetMetadata(); + if (dsMetadata != null && isDistributionSetSelected(dsMetadata.getDistributionSet())) { + if (event.getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.CREATE_DISTRIBUTION_SET_METADATA) { + dsMetadataTable.createMetadata(event.getDistributionSetMetadata().getKey()); + } else if (event + .getMetadataUIEvent() == MetadataEvent.MetadataUIEvent.DELETE_DISTRIBUTION_SET_METADATA) { + dsMetadataTable.deleteMetadata(event.getDistributionSetMetadata().getKey()); + } + } + }); } - @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final DistributionTableEvent distributionTableEvent) { onBaseEntityEvent(distributionTableEvent); @@ -156,12 +155,11 @@ public class DistributionDetails extends AbstractNamedVersionedEntityTableDetail populateMetadataDetails(); } - - + @Override - protected void populateMetadataDetails(){ + protected void populateMetadataDetails() { dsMetadataTable.populateDSMetadata(getSelectedBaseEntity()); - } + } private void populateDetails(final DistributionSet ds) { if (ds != null) { @@ -206,30 +204,24 @@ public class DistributionDetails extends AbstractNamedVersionedEntityTableDetail protected String getDetailsHeaderCaptionId() { return SPUIComponentIdProvider.DISTRIBUTION_DETAILS_HEADER_LABEL_ID; } - + @Override protected Boolean isMetadataIconToBeDisplayed() { return true; } - - @Override - protected String getShowMetadataButtonId() { - DistributionSetIdName lastselectedDistDS = managementUIState.getLastSelectedDistribution().isPresent() ? managementUIState - .getLastSelectedDistribution().get() : null; - return SPUIComponentIdProvider.DS_TABLE_MANAGE_METADATA_ID + "." + lastselectedDistDS.getName() + "." - + lastselectedDistDS.getVersion(); - } - private boolean isDistributionSetSelected(DistributionSet ds) { - DistributionSetIdName lastselectedManageDS = managementUIState.getLastSelectedDistribution().isPresent() ? managementUIState - .getLastSelectedDistribution().get() : null; - return ds!=null && lastselectedManageDS != null && lastselectedManageDS.getName().equals(ds.getName()) + + private boolean isDistributionSetSelected(final DistributionSet ds) { + final DistributionSetIdName lastselectedManageDS = managementUIState.getLastSelectedDistribution().isPresent() + ? managementUIState.getLastSelectedDistribution().get() : null; + return ds != null && lastselectedManageDS != null && lastselectedManageDS.getName().equals(ds.getName()) && lastselectedManageDS.getVersion().endsWith(ds.getVersion()); } @Override - protected void showMetadata(ClickEvent event) { - DistributionSet ds = distributionSetManagement.findDistributionSetByIdWithDetails(getSelectedBaseEntityId()); - UI.getCurrent().addWindow(dsMetadataPopupLayout.getWindow(ds,null)); + protected void showMetadata(final ClickEvent event) { + final DistributionSet ds = distributionSetManagement + .findDistributionSetByIdWithDetails(getSelectedBaseEntityId()); + UI.getCurrent().addWindow(dsMetadataPopupLayout.getWindow(ds, null)); } - + } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetDetails.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetDetails.java index ebb2ef185..f398c460c 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetDetails.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetDetails.java @@ -107,7 +107,6 @@ public class TargetDetails extends AbstractTableDetailsLayout { return; } targetAddUpdateWindowLayout.getWindow(getSelectedBaseEntity().getControllerId()); - // targetAddUpdateWindowLayout.populateValuesOfTarget(getSelectedBaseEntity().getControllerId()); openWindow(); } @@ -229,7 +228,7 @@ public class TargetDetails extends AbstractTableDetailsLayout { * as Module (JVM|OS|AH) * @return Label as UI */ - private Label getSWModlabel(final String labelName, final SoftwareModule swModule) { + private static Label getSWModlabel(final String labelName, final SoftwareModule swModule) { return SPUIComponentProvider.createNameValueLabel(labelName + " : ", swModule.getName(), swModule.getVersion()); } @@ -253,24 +252,19 @@ public class TargetDetails extends AbstractTableDetailsLayout { return SPUIComponentIdProvider.TARGET_DETAILS_HEADER_LABEL_ID; } - @Override - protected String getShowMetadataButtonId() { - return null; - } - @Override protected Boolean isMetadataIconToBeDisplayed() { return false; } @Override - protected void showMetadata(ClickEvent event) { - //No implementation required + protected void showMetadata(final ClickEvent event) { + // No implementation required } @Override protected void populateMetadataDetails() { - //No implementation required + // No implementation required } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java index b58e2e7b8..9ebb1d065 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/RolloutListGrid.java @@ -443,7 +443,7 @@ public class RolloutListGrid extends AbstractGrid { return null; } - private String getDSDetails(final Item rolloutItem) { + private static String getDSDetails(final Item rolloutItem) { final StringBuilder swModuleNames = new StringBuilder(); final StringBuilder swModuleVendors = new StringBuilder(); final Set swModules = (Set) rolloutItem.getItemProperty(SW_MODULES).getValue(); From 5ae190c8c3120ac907996e261c11db2006719aa5 Mon Sep 17 00:00:00 2001 From: Michael Hirsch Date: Mon, 25 Jul 2016 17:11:04 +0200 Subject: [PATCH 17/26] improve code quality Signed-off-by: Michael Hirsch --- .../hawkbit/ui/common/table/AbstractTable.java | 15 ++++++++++----- .../ui/management/targettable/TargetTable.java | 3 ++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTable.java index b3b74836c..e8bb18e90 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/table/AbstractTable.java @@ -26,8 +26,6 @@ import org.eclipse.hawkbit.ui.utils.SPDateTimeUtil; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; import org.eclipse.hawkbit.ui.utils.TableColumn; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.vaadin.spring.events.EventBus; @@ -49,9 +47,9 @@ import com.vaadin.ui.themes.ValoTheme; */ public abstract class AbstractTable extends Table { - private static final long serialVersionUID = 4856562746502217630L; + private static final float DEFAULT_COLUMN_NAME_MIN_SIZE = 0.8F; - private static final Logger LOG = LoggerFactory.getLogger(AbstractTable.class); + private static final long serialVersionUID = 4856562746502217630L; @Autowired protected transient EventBus.SessionEventBus eventBus; @@ -89,6 +87,13 @@ public abstract class AbstractTable extends Table { eventBus.unsubscribe(this); } + /** + * Gets the selected item id or in multiselect mode a set of selected ids. + * + * @param table + * the table to retrieve the selected ID(s) + * @return the ID(s) which are selected in the table + */ public static Set getTableValue(final Table table) { @SuppressWarnings("unchecked") Set values = (Set) table.getValue(); @@ -351,7 +356,7 @@ public abstract class AbstractTable extends Table { } protected float getColumnNameMinimizedSize() { - return 0.8F; + return DEFAULT_COLUMN_NAME_MIN_SIZE; } /** diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java index 0a70f60d5..4e43ea39b 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetTable.java @@ -899,6 +899,7 @@ public class TargetTable extends AbstractTable { /** * Select all rows in the table. */ + @Override public void selectAll() { // As Vaadin Table only returns the current ItemIds which are visible @@ -999,4 +1000,4 @@ public class TargetTable extends AbstractTable { private boolean isFilteredByTags() { return !managementUIState.getTargetTableFilters().getClickedTargetTags().isEmpty(); } -} \ No newline at end of file +} From 7a32d931b5bec0e8e122e076f5ea9acbab527962 Mon Sep 17 00:00:00 2001 From: Michael Hirsch Date: Mon, 25 Jul 2016 17:12:56 +0200 Subject: [PATCH 18/26] improve code quality Signed-off-by: Michael Hirsch --- .../management/dstable/DistributionTable.java | 47 +++++++++---------- 1 file changed, 21 insertions(+), 26 deletions(-) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTable.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTable.java index f6cd80853..ed69ee9a2 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTable.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/dstable/DistributionTable.java @@ -18,7 +18,6 @@ import java.util.stream.Collectors; import org.apache.commons.lang3.StringUtils; import org.eclipse.hawkbit.repository.DistributionSetManagement; -import org.eclipse.hawkbit.repository.EntityFactory; import org.eclipse.hawkbit.repository.SpPermissionChecker; import org.eclipse.hawkbit.repository.TargetManagement; import org.eclipse.hawkbit.repository.model.DistributionSet; @@ -90,18 +89,15 @@ public class DistributionTable extends AbstractNamedVersionTable showMetadataDetails(itemId)); - iconLayout.addComponent((Button)getPinButton(itemId)); + iconLayout.addComponent((Button) getPinButton(itemId)); iconLayout.addComponent(manageMetaDataBtn); return iconLayout; } - + }); } - - + private String getNameAndVerion(final Object itemId) { final Item item = getItem(itemId); final String name = (String) item.getItemProperty(SPUILabelDefinitions.VAR_NAME).getValue(); final String version = (String) item.getItemProperty(SPUILabelDefinitions.VAR_VERSION).getValue(); return name + "." + version; } - - private Button createManageMetadataButton(String nameVersionStr) { + + private Button createManageMetadataButton(final String nameVersionStr) { final Button manageMetadataBtn = SPUIComponentProvider.getButton( SPUIComponentIdProvider.DS_TABLE_MANAGE_METADATA_ID + "." + nameVersionStr, "", "", null, false, FontAwesome.LIST_ALT, SPUIButtonStyleSmallNoBorder.class); @@ -281,9 +276,9 @@ public class DistributionTable extends AbstractNamedVersionTable Date: Fri, 5 Aug 2016 08:56:38 +0200 Subject: [PATCH 19/26] Fix sonar issues Signed-off-by: SirWayne --- .../simulator/DeviceSimulatorUpdater.java | 125 ++++++++------ .../simulator/amqp/SpReceiverService.java | 11 +- .../hawkbit/simulator/ui/GenerateDialog.java | 27 ++- .../hawkbit/simulator/ui/SimulatorView.java | 156 +++++++++--------- .../eventbus/EventBusAutoConfiguration.java | 2 +- .../AsyncConfigurerAutoConfiguration.java | 2 +- .../SecurityManagedConfiguration.java | 2 + .../hawkbit/cache/RedisConfiguration.java | 4 + .../cache/eventbus/EventDistributor.java | 6 +- .../hawkbit/api/ProtocolProperties.java | 2 +- .../event/CancelTargetAssignmentEvent.java | 2 +- .../{AbstractEvent.java => DefaultEvent.java} | 5 +- .../eventbus/event/TargetDeletedEvent.java | 4 +- ...on.java => AbstractServerRtException.java} | 11 +- .../exception/GenericSpServerException.java | 2 +- .../hawkbit/repository/ActionFields.java | 18 +- .../hawkbit/repository/FieldNameProvider.java | 21 ++- ...nvalidTenantConfigurationKeyException.java | 4 +- .../TenantConfigurationValidator.java | 2 +- ...TenantConfigurationValidatorException.java | 4 +- .../ddi/json/model/DdiArtifactHash.java | 1 + .../hawkbit/ddi/json/model/DdiChunk.java | 2 +- .../hawkbit/ddi/json/model/DdiConfig.java | 5 +- .../ddi/json/model/DdiControllerBase.java | 2 +- .../hawkbit/ddi/json/model/DdiDeployment.java | 5 +- .../ddi/json/model/DdiDeploymentBase.java | 10 +- .../hawkbit/ddi/json/model/DdiPolling.java | 6 +- .../amqp/AmqpControllerAuthentfication.java | 2 +- .../amqp/AmqpMessageHandlerService.java | 20 +++ .../eclipse/hawkbit/amqp/BaseAmqpService.java | 4 +- .../rest/api/MgmtDownloadArtifactRestApi.java | 1 + .../mgmt/rest/api/MgmtDownloadRestApi.java | 1 + .../rest/resource/MgmtDownloadResource.java | 10 +- .../repository/DistributionSetManagement.java | 6 +- .../eventbus/event/RolloutChangeEvent.java | 4 +- .../event/RolloutGroupChangeEvent.java | 4 +- .../TargetAssignDistributionSetEvent.java | 4 +- .../ArtifactDeleteFailedException.java | 4 +- .../ArtifactUploadFailedException.java | 4 +- .../CancelActionNotAllowedException.java | 4 +- .../ConcurrentModificationException.java | 4 +- ...FailedMissingMandatoryModuleException.java | 4 +- ...DistributionSetTypeUndefinedException.java | 4 +- .../EntityAlreadyExistsException.java | 4 +- .../exception/EntityLockedException.java | 4 +- .../exception/EntityNotFoundException.java | 4 +- .../exception/EntityReadOnlyException.java | 4 +- .../ForceQuitActionNotAllowedException.java | 4 +- .../GridFSDBFileNotFoundException.java | 4 +- .../IncompleteDistributionSetException.java | 4 +- .../InsufficientPermissionException.java | 4 +- .../exception/InvalidMD5HashException.java | 4 +- .../exception/InvalidSHA1HashException.java | 4 +- .../InvalidTargetAddressException.java | 4 +- .../MultiPartFileUploadException.java | 4 +- .../RSQLParameterSyntaxException.java | 4 +- ...SQLParameterUnsupportedFieldException.java | 4 +- .../RolloutIllegalStateException.java | 4 +- .../exception/TenantNotExistException.java | 4 +- .../ToManyAttributeEntriesException.java | 4 +- .../ToManyStatusEntriesException.java | 4 +- ...ModuleForThisDistributionSetException.java | 4 +- .../MessageNotReadableException.java | 4 +- .../exception/ResponseExceptionHandler.java | 14 +- .../SortParameterSyntaxErrorException.java | 4 +- ...arameterUnsupportedDirectionException.java | 4 +- ...ortParameterUnsupportedFieldException.java | 4 +- .../util/FileSteamingFailedException.java | 4 +- 68 files changed, 341 insertions(+), 290 deletions(-) rename hawkbit-core/src/main/java/org/eclipse/hawkbit/eventbus/event/{AbstractEvent.java => DefaultEvent.java} (87%) rename hawkbit-core/src/main/java/org/eclipse/hawkbit/exception/{SpServerRtException.java => AbstractServerRtException.java} (79%) diff --git a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/DeviceSimulatorUpdater.java b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/DeviceSimulatorUpdater.java index 69ed4fd4a..b7423e899 100644 --- a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/DeviceSimulatorUpdater.java +++ b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/DeviceSimulatorUpdater.java @@ -118,6 +118,16 @@ public class DeviceSimulatorUpdater { } private static final class DeviceSimulatorUpdateThread implements Runnable { + /** + * + */ + private static final String BUT_GOT_LOG_MESSAGE = " but got: "; + + /** + * + */ + private static final String DOWNLOAD_LOG_MESSAGE = "Download "; + private static final int MINIMUM_TOKENLENGTH_FOR_HINT = 6; private static final Random rndSleep = new SecureRandom(); @@ -212,60 +222,73 @@ public class DeviceSimulatorUpdater { LOGGER.debug("Downloading {} with token {}, expected sha1 hash {} and size {}", url, hideTokenDetails(targetToken), sha1Hash, size); - long overallread = 0; try { - final CloseableHttpClient httpclient = createHttpClientThatAcceptsAllServerCerts(); - final HttpGet request = new HttpGet(url); - request.addHeader(HttpHeaders.AUTHORIZATION, "TargetToken " + targetToken); - - final String sha1HashResult; - try (final CloseableHttpResponse response = httpclient.execute(request)) { - - if (response.getStatusLine().getStatusCode() != HttpStatus.OK.value()) { - final String message = wrongStatusCode(url, response); - return new UpdateStatus(ResponseStatus.ERROR, message); - } - - if (response.getEntity().getContentLength() != size) { - final String message = wrongContentLength(url, size, response); - return new UpdateStatus(ResponseStatus.ERROR, message); - } - - // Exception squid:S2070 - not used for hashing sensitive - // data - @SuppressWarnings("squid:S2070") - final MessageDigest md = MessageDigest.getInstance("SHA-1"); - - try (final BufferedOutputStream bdos = new BufferedOutputStream( - new DigestOutputStream(ByteStreams.nullOutputStream(), md))) { - try (BufferedInputStream bis = new BufferedInputStream(response.getEntity().getContent())) { - overallread = ByteStreams.copy(bis, bdos); - } - } - - if (overallread != size) { - final String message = incompleteRead(url, size, overallread); - return new UpdateStatus(ResponseStatus.ERROR, message); - } - - sha1HashResult = BaseEncoding.base16().lowerCase().encode(md.digest()); - } - - if (!sha1Hash.equalsIgnoreCase(sha1HashResult)) { - final String message = wrongHash(url, sha1Hash, overallread, sha1HashResult); - return new UpdateStatus(ResponseStatus.ERROR, message); - } - + return readAndCheckDownloadUrl(url, targetToken, sha1Hash, size); } catch (IOException | KeyManagementException | NoSuchAlgorithmException | KeyStoreException e) { LOGGER.error("Failed to download" + url, e); return new UpdateStatus(ResponseStatus.ERROR, "Failed to download " + url + ": " + e.getMessage()); } + } + + private static UpdateStatus readAndCheckDownloadUrl(final String url, final String targetToken, + final String sha1Hash, final long size) + throws NoSuchAlgorithmException, KeyStoreException, KeyManagementException, IOException { + long overallread; + final CloseableHttpClient httpclient = createHttpClientThatAcceptsAllServerCerts(); + final HttpGet request = new HttpGet(url); + request.addHeader(HttpHeaders.AUTHORIZATION, "TargetToken " + targetToken); + + final String sha1HashResult; + try (final CloseableHttpResponse response = httpclient.execute(request)) { + + if (response.getStatusLine().getStatusCode() != HttpStatus.OK.value()) { + final String message = wrongStatusCode(url, response); + return new UpdateStatus(ResponseStatus.ERROR, message); + } + + if (response.getEntity().getContentLength() != size) { + final String message = wrongContentLength(url, size, response); + return new UpdateStatus(ResponseStatus.ERROR, message); + } + + // Exception squid:S2070 - not used for hashing sensitive + // data + @SuppressWarnings("squid:S2070") + final MessageDigest md = MessageDigest.getInstance("SHA-1"); + + overallread = getOverallRead(response, md); + + if (overallread != size) { + final String message = incompleteRead(url, size, overallread); + return new UpdateStatus(ResponseStatus.ERROR, message); + } + + sha1HashResult = BaseEncoding.base16().lowerCase().encode(md.digest()); + } + + if (!sha1Hash.equalsIgnoreCase(sha1HashResult)) { + final String message = wrongHash(url, sha1Hash, overallread, sha1HashResult); + return new UpdateStatus(ResponseStatus.ERROR, message); + } + final String message = "Downloaded " + url + " (" + overallread + " bytes)"; LOGGER.debug(message); return new UpdateStatus(ResponseStatus.SUCCESSFUL, message); } + private static long getOverallRead(final CloseableHttpResponse response, final MessageDigest md) + throws IOException { + long overallread; + try (final BufferedOutputStream bdos = new BufferedOutputStream( + new DigestOutputStream(ByteStreams.nullOutputStream(), md))) { + try (BufferedInputStream bis = new BufferedInputStream(response.getEntity().getContent())) { + overallread = ByteStreams.copy(bis, bdos); + } + } + return overallread; + } + private static String hideTokenDetails(final String targetToken) { if (targetToken == null) { return ""; @@ -285,29 +308,30 @@ public class DeviceSimulatorUpdater { private static String wrongHash(final String url, final String sha1Hash, final long overallread, final String sha1HashResult) { - final String message = "Download " + url + " failed with SHA1 hash missmatch (Expected: " + sha1Hash - + " but got: " + sha1HashResult + ") (" + overallread + " bytes)"; + final String message = DOWNLOAD_LOG_MESSAGE + url + " failed with SHA1 hash missmatch (Expected: " + + sha1Hash + BUT_GOT_LOG_MESSAGE + sha1HashResult + ") (" + overallread + " bytes)"; LOGGER.error(message); return message; } private static String incompleteRead(final String url, final long size, final long overallread) { - final String message = "Download " + url + " is incomplete (Expected: " + size + " but got: " + overallread - + ")"; + final String message = DOWNLOAD_LOG_MESSAGE + url + " is incomplete (Expected: " + size + + BUT_GOT_LOG_MESSAGE + overallread + ")"; LOGGER.error(message); return message; } private static String wrongContentLength(final String url, final long size, final CloseableHttpResponse response) { - final String message = "Download " + url + " has wrong content length (Expected: " + size + " but got: " - + response.getEntity().getContentLength() + ")"; + final String message = DOWNLOAD_LOG_MESSAGE + url + " has wrong content length (Expected: " + size + + BUT_GOT_LOG_MESSAGE + response.getEntity().getContentLength() + ")"; LOGGER.error(message); return message; } private static String wrongStatusCode(final String url, final CloseableHttpResponse response) { - final String message = "Download " + url + " failed (" + response.getStatusLine().getStatusCode() + ")"; + final String message = DOWNLOAD_LOG_MESSAGE + url + " failed (" + response.getStatusLine().getStatusCode() + + ")"; LOGGER.error(message); return message; } @@ -339,4 +363,5 @@ public class DeviceSimulatorUpdater { */ void updateFinished(AbstractSimulatedDevice device, final Long actionId); } + } diff --git a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/SpReceiverService.java b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/SpReceiverService.java index 4f2981be1..7d55fb375 100644 --- a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/SpReceiverService.java +++ b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/amqp/SpReceiverService.java @@ -67,8 +67,6 @@ public class SpReceiverService extends ReceiverService { * the incoming message * @param type * the action type - * @param contentType - * the content type in message header * @param thingId * the thing id in message header */ @@ -82,14 +80,11 @@ public class SpReceiverService extends ReceiverService { private void delegateMessage(final Message message, final String type, final String thingId) { final MessageType messageType = MessageType.valueOf(type); - switch (messageType) { - case EVENT: + if (MessageType.EVENT.equals(messageType)) { handleEventMessage(message, thingId); - break; - default: - LOGGER.info("No valid message type property."); - break; + return; } + LOGGER.info("No valid message type property."); } private void handleEventMessage(final Message message, final String thingId) { diff --git a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/ui/GenerateDialog.java b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/ui/GenerateDialog.java index 272531407..b50098829 100644 --- a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/ui/GenerateDialog.java +++ b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/ui/GenerateDialog.java @@ -33,9 +33,10 @@ import com.vaadin.ui.Window; * Popup dialog window for setting the values of generating the simulated * devices, e.g. the amount. * - * @author Michael Hirsch * */ +// Vaadin Inheritance +@SuppressWarnings("squid:MaximumInheritanceDepth") public class GenerateDialog extends Window { private static final long serialVersionUID = 1L; @@ -49,8 +50,8 @@ public class GenerateDialog extends Window { private final TextField pollDelayTextField; private final TextField pollUrlTextField; private final TextField gatewayTokenTextField; - private final OptionGroup protocolGroup; - private final Button buttonOk; + private OptionGroup protocolGroup; + private Button buttonOk; /** * Creates a new pop window for setting the configuration of simulating @@ -87,8 +88,8 @@ public class GenerateDialog extends Window { gatewayTokenTextField.setColumns(50); gatewayTokenTextField.setVisible(false); - protocolGroup = createProtocolGroup(); - buttonOk = createOkButton(callback); + createProtocolGroup(); + createOkButton(callback); namePrefixTextField.addValueChangeListener(event -> checkValid()); amountTextField.addValueChangeListener(event -> checkValid()); @@ -181,9 +182,9 @@ public class GenerateDialog extends Window { final URL basePollURL, final String gatewayToken, final Protocol protocol); } - private OptionGroup createProtocolGroup() { + private void createProtocolGroup() { - final OptionGroup protocolGroup = new OptionGroup("Simulated Device Protocol"); + this.protocolGroup = new OptionGroup("Simulated Device Protocol"); protocolGroup.addItem(Protocol.DMF_AMQP); protocolGroup.addItem(Protocol.DDI_HTTP); protocolGroup.setItemCaption(Protocol.DMF_AMQP, "Device Management Federation API (AMQP push)"); @@ -195,12 +196,11 @@ public class GenerateDialog extends Window { pollUrlTextField.setVisible(directDeviceOptionSelected); gatewayTokenTextField.setVisible(directDeviceOptionSelected); }); - return protocolGroup; } - private Button createOkButton(final GenerateDialogCallback callback) { + private void createOkButton(final GenerateDialogCallback callback) { - final Button buttonOk = new Button("generate"); + this.buttonOk = new Button("generate"); buttonOk.setImmediate(true); buttonOk.setIcon(FontAwesome.GEARS); buttonOk.addClickListener(event -> { @@ -210,14 +210,11 @@ public class GenerateDialog extends Window { Integer.valueOf(pollDelayTextField.getValue().replace(".", "")), new URL(pollUrlTextField.getValue()), gatewayTokenTextField.getValue(), (Protocol) protocolGroup.getValue()); - } catch (final NumberFormatException e) { - LOGGER.info(e.getMessage(), e); - } catch (final MalformedURLException e) { + } catch (final NumberFormatException | MalformedURLException e) { LOGGER.info(e.getMessage(), e); } GenerateDialog.this.close(); }); - return buttonOk; } private TextField createRequiredTextfield(final String caption, final String value, final Resource icon, @@ -226,7 +223,7 @@ public class GenerateDialog extends Window { return addTextFieldValues(textField, icon, validator); } - private TextField createRequiredTextfield(final String caption, final Property dataSource, final Resource icon, + private TextField createRequiredTextfield(final String caption, final Property dataSource, final Resource icon, final Validator validator) { final TextField textField = new TextField(caption, dataSource); return addTextFieldValues(textField, icon, validator); diff --git a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/ui/SimulatorView.java b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/ui/SimulatorView.java index 9405edd2b..686945407 100644 --- a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/ui/SimulatorView.java +++ b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/ui/SimulatorView.java @@ -57,6 +57,11 @@ import com.vaadin.ui.renderers.ProgressBarRenderer; @SuppressWarnings("squid:MaximumInheritanceDepth") public class SimulatorView extends VerticalLayout implements View { + /** + * + */ + private static final String HTML_SPAN = ";"; + private static final String NEXT_POLL_COUNTER_SEC_COL = "nextPollCounterSec"; private static final String RESPONSE_STATUS_COL = "updateStatus"; @@ -266,89 +271,90 @@ public class SimulatorView extends VerticalLayout implements View { })); } - private Converter createProtocolConverter() { - - return new Converter() { - - private static final long serialVersionUID = 1L; - - @Override - public Protocol convertToModel(final String value, final Class targetType, - final Locale locale) { - return null; - } - - @Override - public String convertToPresentation(final Protocol value, final Class targetType, - final Locale locale) { - switch (value) { - case DDI_HTTP: - return "DDI API (http)"; - case DMF_AMQP: - return "DMF API (amqp)"; - default: - return "unknown"; - } - } - - @Override - public Class getModelType() { - return Protocol.class; - } - - @Override - public Class getPresentationType() { - return String.class; - } - }; - + private ProtocolConverter createProtocolConverter() { + return new ProtocolConverter(); } - private Converter createStatusConverter() { - return new Converter() { - private static final long serialVersionUID = 1L; + private StatusConverter createStatusConverter() { + return new StatusConverter(); + } - @Override - public Status convertToModel(final String value, final Class targetType, - final Locale locale) { - return null; - } + public static final class ProtocolConverter implements Converter { + private static final long serialVersionUID = 1L; - @Override - public String convertToPresentation(final Status value, final Class targetType, - final Locale locale) { - switch (value) { - case UNKNWON: - return "&#x" - + Integer.toHexString(FontAwesome.QUESTION_CIRCLE.getCodepoint()) + ";"; - case PEDNING: - return "&#x" + Integer.toHexString(FontAwesome.REFRESH.getCodepoint()) - + ";"; - case FINISH: - return "&#x" - + Integer.toHexString(FontAwesome.CHECK_CIRCLE.getCodepoint()) + ";"; - case ERROR: - return "&#x" - + Integer.toHexString(FontAwesome.EXCLAMATION_CIRCLE.getCodepoint()) + ";"; - default: - throw new IllegalStateException("unknown value"); - } - } + @Override + public Protocol convertToModel(final String value, final Class targetType, + final Locale locale) { + return null; + } - @Override - public Class getModelType() { - return Status.class; + @Override + public String convertToPresentation(final Protocol value, final Class targetType, + final Locale locale) { + switch (value) { + case DDI_HTTP: + return "DDI API (http)"; + case DMF_AMQP: + return "DMF API (amqp)"; + default: + return "unknown"; } + } - @Override - public Class getPresentationType() { - return String.class; + @Override + public Class getModelType() { + return Protocol.class; + } + + @Override + public Class getPresentationType() { + return String.class; + } + } + + private static final class StatusConverter implements Converter { + private static final long serialVersionUID = 1L; + + @Override + public Status convertToModel(final String value, final Class targetType, + final Locale locale) { + return null; + } + + @Override + public String convertToPresentation(final Status value, final Class targetType, + final Locale locale) { + switch (value) { + case UNKNWON: + return "&#x" + Integer.toHexString(FontAwesome.QUESTION_CIRCLE.getCodepoint()) + + HTML_SPAN; + case PEDNING: + return "&#x" + Integer.toHexString(FontAwesome.REFRESH.getCodepoint()) + + HTML_SPAN; + case FINISH: + return "&#x" + Integer.toHexString(FontAwesome.CHECK_CIRCLE.getCodepoint()) + + HTML_SPAN; + case ERROR: + return "&#x" + + Integer.toHexString(FontAwesome.EXCLAMATION_CIRCLE.getCodepoint()) + HTML_SPAN; + default: + throw new IllegalStateException("unknown value"); } - }; + } + + @Override + public Class getModelType() { + return Status.class; + } + + @Override + public Class getPresentationType() { + return String.class; + } } } diff --git a/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/eventbus/EventBusAutoConfiguration.java b/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/eventbus/EventBusAutoConfiguration.java index d4cc32825..c0cbabb08 100644 --- a/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/eventbus/EventBusAutoConfiguration.java +++ b/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/eventbus/EventBusAutoConfiguration.java @@ -23,7 +23,7 @@ import com.google.common.eventbus.AsyncEventBus; import com.google.common.eventbus.EventBus; /** - * + * Auto configuration for the event bus. * */ @Configuration diff --git a/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/AsyncConfigurerAutoConfiguration.java b/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/AsyncConfigurerAutoConfiguration.java index 7e2b780b4..eebfac6b0 100644 --- a/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/AsyncConfigurerAutoConfiguration.java +++ b/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/scheduling/AsyncConfigurerAutoConfiguration.java @@ -21,7 +21,7 @@ import org.springframework.scheduling.annotation.EnableAsync; /** * - * + * Auto config fot the exception handler. */ @Configuration @EnableAsync diff --git a/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/security/SecurityManagedConfiguration.java b/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/security/SecurityManagedConfiguration.java index 1e4dbfb27..07ea15a8a 100644 --- a/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/security/SecurityManagedConfiguration.java +++ b/hawkbit-autoconfigure/src/main/java/org/eclipse/hawkbit/autoconfigure/security/SecurityManagedConfiguration.java @@ -119,6 +119,8 @@ public class SecurityManagedConfiguration { */ @Bean @ConditionalOnMissingBean + // Exception squid:S00112 - Is aspectJ proxy + @SuppressWarnings({ "squid:S00112" }) public UserAuthenticationFilter userAuthenticationFilter() throws Exception { return new UserAuthenticationFilterBasicAuth(configuration.getAuthenticationManager()); } diff --git a/hawkbit-cache-redis/src/main/java/org/eclipse/hawkbit/cache/RedisConfiguration.java b/hawkbit-cache-redis/src/main/java/org/eclipse/hawkbit/cache/RedisConfiguration.java index fc3364d81..d9f759da3 100644 --- a/hawkbit-cache-redis/src/main/java/org/eclipse/hawkbit/cache/RedisConfiguration.java +++ b/hawkbit-cache-redis/src/main/java/org/eclipse/hawkbit/cache/RedisConfiguration.java @@ -56,6 +56,10 @@ public class RedisConfiguration { return new TenantAwareCacheManager(directCacheManager(), tenantAware); } + /** + * + * @return bean for the direct cache manager. + */ @Bean(name = "directCacheManager") public CacheManager directCacheManager() { return new RedisCacheManager(redisTemplate()); diff --git a/hawkbit-cache-redis/src/main/java/org/eclipse/hawkbit/cache/eventbus/EventDistributor.java b/hawkbit-cache-redis/src/main/java/org/eclipse/hawkbit/cache/eventbus/EventDistributor.java index 8749340f0..973dcb6d6 100644 --- a/hawkbit-cache-redis/src/main/java/org/eclipse/hawkbit/cache/eventbus/EventDistributor.java +++ b/hawkbit-cache-redis/src/main/java/org/eclipse/hawkbit/cache/eventbus/EventDistributor.java @@ -28,7 +28,7 @@ import com.google.common.eventbus.EventBus; import com.google.common.eventbus.Subscribe; /** - * + * The distributor for events. * */ @EventSubscriber @@ -100,11 +100,11 @@ public class EventDistributor { return topics; } - private void logDistributingEvent(final Event event, final String channel) { + private static void logDistributingEvent(final Event event, final String channel) { LOGGER.trace("distributing event {} from node {} to topic {}", event, NODE_ID, channel); } - private void logNotDistributingEvent(final Event event, final String channel) { + private static void logNotDistributingEvent(final Event event, final String channel) { LOGGER.debug("no redis template configured, event {} will not be distributed to channel {} from node {}", event, channel, NODE_ID); } diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/api/ProtocolProperties.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/api/ProtocolProperties.java index c4a9556b7..57f376c4e 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/api/ProtocolProperties.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/api/ProtocolProperties.java @@ -37,4 +37,4 @@ public interface ProtocolProperties { * @return true if the {@link ProtocolProperties} is enabled. */ boolean isEnabled(); -} \ No newline at end of file +} diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/eventbus/event/CancelTargetAssignmentEvent.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/eventbus/event/CancelTargetAssignmentEvent.java index da93cc1a3..78c718f36 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/eventbus/event/CancelTargetAssignmentEvent.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/eventbus/event/CancelTargetAssignmentEvent.java @@ -17,7 +17,7 @@ import java.net.URI; * * */ -public class CancelTargetAssignmentEvent extends AbstractEvent { +public class CancelTargetAssignmentEvent extends DefaultEvent { private final String controllerId; private final Long actionId; diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/eventbus/event/AbstractEvent.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/eventbus/event/DefaultEvent.java similarity index 87% rename from hawkbit-core/src/main/java/org/eclipse/hawkbit/eventbus/event/AbstractEvent.java rename to hawkbit-core/src/main/java/org/eclipse/hawkbit/eventbus/event/DefaultEvent.java index 498418169..1874fc01f 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/eventbus/event/AbstractEvent.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/eventbus/event/DefaultEvent.java @@ -12,11 +12,10 @@ package org.eclipse.hawkbit.eventbus.event; * Abstract event definition class which holds the necessary revsion and tenant * information which every event needs. * - * @author Michael Hirsch * @see AbstractDistributedEvent for events which should be distributed to other * cluster nodes */ -public class AbstractEvent implements Event { +public class DefaultEvent implements Event { private final long revision; private final String tenant; @@ -27,7 +26,7 @@ public class AbstractEvent implements Event { * @param tenant * the tenant of the event */ - protected AbstractEvent(final long revision, final String tenant) { + protected DefaultEvent(final long revision, final String tenant) { this.revision = revision; this.tenant = tenant; } diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/eventbus/event/TargetDeletedEvent.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/eventbus/event/TargetDeletedEvent.java index e6fcac135..048274abc 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/eventbus/event/TargetDeletedEvent.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/eventbus/event/TargetDeletedEvent.java @@ -9,9 +9,7 @@ package org.eclipse.hawkbit.eventbus.event; /** - * - * - * + * The event when a target is deleted. */ public class TargetDeletedEvent extends AbstractDistributedEvent { diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/exception/SpServerRtException.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/exception/AbstractServerRtException.java similarity index 79% rename from hawkbit-core/src/main/java/org/eclipse/hawkbit/exception/SpServerRtException.java rename to hawkbit-core/src/main/java/org/eclipse/hawkbit/exception/AbstractServerRtException.java index ba691bb5f..cb695d2f7 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/exception/SpServerRtException.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/exception/AbstractServerRtException.java @@ -15,8 +15,7 @@ package org.eclipse.hawkbit.exception; * Generic Custom Exception to wrap the Runtime and checked exception * */ - -public abstract class SpServerRtException extends RuntimeException { +public abstract class AbstractServerRtException extends RuntimeException { private static final long serialVersionUID = 1L; @@ -28,7 +27,7 @@ public abstract class SpServerRtException extends RuntimeException { * @param error * detail */ - public SpServerRtException(final SpServerError error) { + public AbstractServerRtException(final SpServerError error) { super(error.getMessage()); this.error = error; } @@ -41,7 +40,7 @@ public abstract class SpServerRtException extends RuntimeException { * @param error * detail */ - public SpServerRtException(final String message, final SpServerError error) { + public AbstractServerRtException(final String message, final SpServerError error) { super(message); this.error = error; } @@ -56,7 +55,7 @@ public abstract class SpServerRtException extends RuntimeException { * @param cause * of the exception */ - public SpServerRtException(final String message, final SpServerError error, final Throwable cause) { + public AbstractServerRtException(final String message, final SpServerError error, final Throwable cause) { super(message, cause); this.error = error; } @@ -69,7 +68,7 @@ public abstract class SpServerRtException extends RuntimeException { * @param cause * of the exception */ - public SpServerRtException(final SpServerError error, final Throwable cause) { + public AbstractServerRtException(final SpServerError error, final Throwable cause) { super(error.getMessage(), cause); this.error = error; } diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/exception/GenericSpServerException.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/exception/GenericSpServerException.java index f0a3f4d1f..4ac02e081 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/exception/GenericSpServerException.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/exception/GenericSpServerException.java @@ -16,7 +16,7 @@ package org.eclipse.hawkbit.exception; * * */ -public class GenericSpServerException extends SpServerRtException { +public class GenericSpServerException extends AbstractServerRtException { private static final long serialVersionUID = 1L; private static final SpServerError THIS_ERROR = SpServerError.SP_REPO_GENERIC_ERROR; diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/ActionFields.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/ActionFields.java index c2d8ec49d..237fed978 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/ActionFields.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/repository/ActionFields.java @@ -11,11 +11,8 @@ package org.eclipse.hawkbit.repository; /** * Sort fields for {@link ActionRest}. * - * - * - * */ -public enum ActionFields implements FieldNameProvider,FieldValueConverter { +public enum ActionFields implements FieldNameProvider, FieldValueConverter { /** * The status field. @@ -42,13 +39,10 @@ public enum ActionFields implements FieldNameProvider,FieldValueConverter contains contains not + */ default boolean containsSubEntityAttribute(final String propertyField) { return FieldNameProvider.containsSubEntityAttribute(propertyField, getSubEntityAttributes()); - }; + } + /** + * + * @return all sub entities attributes. + */ default List getSubEntityAttributes() { return Collections.emptyList(); - }; + } /** * the database column for the key @@ -59,11 +70,11 @@ public interface FieldNameProvider { /** * Is the entity field a {@link Map}. * - * @return + * @return is a map is not a map */ default boolean isMap() { return getKeyFieldName() != null; - }; + } /** * Check if a sub attribute exists. diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/configuration/InvalidTenantConfigurationKeyException.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/configuration/InvalidTenantConfigurationKeyException.java index dcc42065c..977b66a6a 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/configuration/InvalidTenantConfigurationKeyException.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/configuration/InvalidTenantConfigurationKeyException.java @@ -9,14 +9,14 @@ package org.eclipse.hawkbit.tenancy.configuration; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * The {@link #InvalidTenantConfigurationKeyException} is thrown when an invalid * configuration key is used. * */ -public class InvalidTenantConfigurationKeyException extends SpServerRtException { +public class InvalidTenantConfigurationKeyException extends AbstractServerRtException { private static final long serialVersionUID = 1L; private static final SpServerError THIS_ERROR = SpServerError.SP_CONFIGURATION_KEY_INVALID; diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/configuration/validator/TenantConfigurationValidator.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/configuration/validator/TenantConfigurationValidator.java index dccf515e6..bb61f1ec5 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/configuration/validator/TenantConfigurationValidator.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/configuration/validator/TenantConfigurationValidator.java @@ -22,7 +22,7 @@ public interface TenantConfigurationValidator { * @throws TenantConfigurationValidatorException * is thrown, when parameter is invalid. */ - default void validate(final Object tenantConfigurationValue) throws TenantConfigurationValidatorException { + default void validate(final Object tenantConfigurationValue) { if (tenantConfigurationValue != null && validateToClass().isAssignableFrom(tenantConfigurationValue.getClass())) { return; diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/configuration/validator/TenantConfigurationValidatorException.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/configuration/validator/TenantConfigurationValidatorException.java index dffc13dcb..4cc545287 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/configuration/validator/TenantConfigurationValidatorException.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/tenancy/configuration/validator/TenantConfigurationValidatorException.java @@ -9,14 +9,14 @@ package org.eclipse.hawkbit.tenancy.configuration.validator; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * Exception which is thrown, when the validation of the configuration value has * not been successful. * */ -public class TenantConfigurationValidatorException extends SpServerRtException { +public class TenantConfigurationValidatorException extends AbstractServerRtException { private static final long serialVersionUID = 1L; private static final SpServerError THIS_ERROR = SpServerError.SP_CONFIGURATION_VALUE_INVALID; diff --git a/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiArtifactHash.java b/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiArtifactHash.java index 9541055f8..898ee244a 100644 --- a/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiArtifactHash.java +++ b/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiArtifactHash.java @@ -27,6 +27,7 @@ public class DdiArtifactHash { * Default constructor. */ public DdiArtifactHash() { + // needed for json create } /** diff --git a/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiChunk.java b/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiChunk.java index 78de8591d..cf146b597 100644 --- a/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiChunk.java +++ b/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiChunk.java @@ -29,7 +29,7 @@ public class DdiChunk { private List artifacts; public DdiChunk() { - + // needed for json create } /** diff --git a/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiConfig.java b/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiConfig.java index 5ec1b4dde..0dfed6e79 100644 --- a/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiConfig.java +++ b/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiConfig.java @@ -34,8 +34,11 @@ public class DdiConfig { this.polling = polling; } + /** + * Constructor. + */ public DdiConfig() { - + // needed for json create. } public DdiPolling getPolling() { diff --git a/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiControllerBase.java b/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiControllerBase.java index 3f160157c..526227601 100644 --- a/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiControllerBase.java +++ b/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiControllerBase.java @@ -37,7 +37,7 @@ public class DdiControllerBase extends ResourceSupport { } public DdiControllerBase() { - + // needed for json create } public DdiConfig getConfig() { diff --git a/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiDeployment.java b/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiDeployment.java index f72083d7a..c7e364b36 100644 --- a/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiDeployment.java +++ b/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiDeployment.java @@ -23,8 +23,11 @@ public class DdiDeployment { private List chunks; + /** + * Constructor. + */ public DdiDeployment() { - + // needed for json create. } /** diff --git a/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiDeploymentBase.java b/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiDeploymentBase.java index 8f1116b1b..a058fd24a 100644 --- a/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiDeploymentBase.java +++ b/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiDeploymentBase.java @@ -21,10 +21,10 @@ public class DdiDeploymentBase extends ResourceSupport { @JsonProperty("id") @NotNull - private String deplyomentId; + private final String deplyomentId; @NotNull - private DdiDeployment deployment; + private final DdiDeployment deployment; /** * Constructor. @@ -35,14 +35,10 @@ public class DdiDeploymentBase extends ResourceSupport { * details. */ public DdiDeploymentBase(final String id, final DdiDeployment deployment) { - deplyomentId = id; + this.deplyomentId = id; this.deployment = deployment; } - public DdiDeploymentBase() { - - } - public DdiDeployment getDeployment() { return deployment; } diff --git a/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiPolling.java b/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiPolling.java index 489178be8..81427510a 100644 --- a/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiPolling.java +++ b/hawkbit-ddi-api/src/main/java/org/eclipse/hawkbit/ddi/json/model/DdiPolling.java @@ -30,11 +30,15 @@ public class DdiPolling { * between polls */ public DdiPolling(final String sleep) { - super(); this.sleep = sleep; } + /** + * Constructor. + * + */ public DdiPolling() { + // needed for json create } public String getSleep() { diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpControllerAuthentfication.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpControllerAuthentfication.java index 91d07de37..788d1d8d8 100644 --- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpControllerAuthentfication.java +++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpControllerAuthentfication.java @@ -36,7 +36,7 @@ import org.springframework.stereotype.Component; /** * - * + * A controller which handles the amqp authentfication. */ @Component public class AmqpControllerAuthentfication { diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java index 19ceb123f..8906bc96c 100644 --- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java +++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageHandlerService.java @@ -138,6 +138,13 @@ public class AmqpMessageHandlerService extends BaseAmqpService { return onMessage(message, type, tenant, getRabbitTemplate().getConnectionFactory().getVirtualHost()); } + /** + * Executed on a authentication request. + * + * @param message + * the amqp message + * @return the rpc message back to supplier. + */ @RabbitListener(queues = "${hawkbit.dmf.rabbitmq.authenticationReceiverQueue}", containerFactory = "listenerContainerFactory") public Message onAuthenticationRequest(final Message message) { checkContentTypeJson(message); @@ -153,6 +160,19 @@ public class AmqpMessageHandlerService extends BaseAmqpService { } } + /** + * * Executed if a amqp message arrives. + * + * @param message + * the message + * @param type + * the type + * @param tenant + * the tenant + * @param virtualHost + * the virtual host + * @return the rpc message back to supplier. + */ public Message onMessage(final Message message, final String type, final String tenant, final String virtualHost) { checkContentTypeJson(message); final SecurityContext oldContext = SecurityContextHolder.getContext(); diff --git a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/BaseAmqpService.java b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/BaseAmqpService.java index b9314ac27..b11d5a437 100644 --- a/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/BaseAmqpService.java +++ b/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/BaseAmqpService.java @@ -88,8 +88,7 @@ public class BaseAmqpService { return rabbitTemplate.getMessageConverter(); } - protected final String getStringHeaderKey(final Message message, final String key, - final String errorMessageIfNull) { + protected String getStringHeaderKey(final Message message, final String key, final String errorMessageIfNull) { final Map header = message.getMessageProperties().getHeaders(); final Object value = header.get(key); if (value == null) { @@ -117,4 +116,5 @@ public class BaseAmqpService { protected void cleanMessageHeaderProperties(final Message message) { message.getMessageProperties().getHeaders().remove(AbstractJavaTypeMapper.DEFAULT_CLASSID_FIELD_NAME); } + } diff --git a/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/rest/api/MgmtDownloadArtifactRestApi.java b/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/rest/api/MgmtDownloadArtifactRestApi.java index ea6dccc7e..9053af8c8 100644 --- a/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/rest/api/MgmtDownloadArtifactRestApi.java +++ b/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/rest/api/MgmtDownloadArtifactRestApi.java @@ -20,6 +20,7 @@ import org.springframework.web.bind.annotation.ResponseBody; * */ @RequestMapping(MgmtRestConstants.SOFTWAREMODULE_V1_REQUEST_MAPPING) +@FunctionalInterface public interface MgmtDownloadArtifactRestApi { /** diff --git a/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/rest/api/MgmtDownloadRestApi.java b/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/rest/api/MgmtDownloadRestApi.java index 52cd1c991..ea179b830 100644 --- a/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/rest/api/MgmtDownloadRestApi.java +++ b/hawkbit-mgmt-api/src/main/java/org/eclipse/hawkbit/mgmt/rest/api/MgmtDownloadRestApi.java @@ -20,6 +20,7 @@ import org.springframework.web.bind.annotation.ResponseBody; * */ @RequestMapping(MgmtRestConstants.DOWNLOAD_ID_V1_REQUEST_MAPPING_BASE) +@FunctionalInterface public interface MgmtDownloadRestApi { /** diff --git a/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDownloadResource.java b/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDownloadResource.java index 87a215183..b6f9f27c8 100644 --- a/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDownloadResource.java +++ b/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDownloadResource.java @@ -15,6 +15,7 @@ import org.eclipse.hawkbit.artifact.repository.ArtifactRepository; import org.eclipse.hawkbit.artifact.repository.model.DbArtifact; import org.eclipse.hawkbit.cache.CacheConstants; import org.eclipse.hawkbit.cache.DownloadArtifactCache; +import org.eclipse.hawkbit.cache.DownloadType; import org.eclipse.hawkbit.mgmt.rest.api.MgmtDownloadRestApi; import org.eclipse.hawkbit.rest.util.RequestResponseContextHolder; import org.slf4j.Logger; @@ -73,14 +74,11 @@ public class MgmtDownloadResource implements MgmtDownloadRestApi { final DownloadArtifactCache artifactCache = (DownloadArtifactCache) cacheWrapper.get(); DbArtifact artifact = null; - switch (artifactCache.getDownloadType()) { - case BY_SHA1: - artifact = artifactRepository.getArtifactBySha1(artifactCache.getId()); - break; - default: + if (DownloadType.BY_SHA1.equals(artifactCache.getDownloadType())) { + artifact = artifactRepository.getArtifactBySha1(artifactCache.getId()); + } else { LOGGER.warn("Download Type {} not supported", artifactCache.getDownloadType()); - break; } if (artifact == null) { diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/DistributionSetManagement.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/DistributionSetManagement.java index a2e7e5213..1784606bd 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/DistributionSetManagement.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/DistributionSetManagement.java @@ -24,6 +24,7 @@ import org.eclipse.hawkbit.repository.exception.RSQLParameterUnsupportedFieldExc import org.eclipse.hawkbit.repository.model.Action; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.DistributionSetFilter; +import org.eclipse.hawkbit.repository.model.DistributionSetFilter.DistributionSetFilterBuilder; import org.eclipse.hawkbit.repository.model.DistributionSetMetadata; import org.eclipse.hawkbit.repository.model.DistributionSetTag; import org.eclipse.hawkbit.repository.model.DistributionSetTagAssignmentResult; @@ -32,7 +33,6 @@ import org.eclipse.hawkbit.repository.model.SoftwareModule; import org.eclipse.hawkbit.repository.model.SoftwareModuleType; import org.eclipse.hawkbit.repository.model.Tag; import org.eclipse.hawkbit.repository.model.Target; -import org.eclipse.hawkbit.repository.model.DistributionSetFilter.DistributionSetFilterBuilder; import org.hibernate.validator.constraints.NotEmpty; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; @@ -44,9 +44,6 @@ import org.springframework.security.access.prepost.PreAuthorize; */ public interface DistributionSetManagement { - // TODO rename/document the whole with details thing (document what the - // details are and maybe find a better name, e.g. with dependencies?) - /** * Assigns {@link SoftwareModule} to existing {@link DistributionSet}. * @@ -320,7 +317,6 @@ public interface DistributionSetManagement { @PreAuthorize(SpringEvalExpressions.HAS_AUTH_READ_REPOSITORY) List findDistributionSetsAll(Collection dist); - // TODO discuss: use enum instead of the true,false,null switch ? /** * finds all {@link DistributionSet}s. * diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/eventbus/event/RolloutChangeEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/eventbus/event/RolloutChangeEvent.java index 2ff739726..05960938f 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/eventbus/event/RolloutChangeEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/eventbus/event/RolloutChangeEvent.java @@ -8,7 +8,7 @@ */ package org.eclipse.hawkbit.repository.eventbus.event; -import org.eclipse.hawkbit.eventbus.event.AbstractEvent; +import org.eclipse.hawkbit.eventbus.event.DefaultEvent; /** * Event declaration for the UI to notify the UI that a rollout has been @@ -17,7 +17,7 @@ import org.eclipse.hawkbit.eventbus.event.AbstractEvent; * @author Michael Hirsch * */ -public class RolloutChangeEvent extends AbstractEvent { +public class RolloutChangeEvent extends DefaultEvent { private final Long rolloutId; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/eventbus/event/RolloutGroupChangeEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/eventbus/event/RolloutGroupChangeEvent.java index 5c36ab61f..686625d03 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/eventbus/event/RolloutGroupChangeEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/eventbus/event/RolloutGroupChangeEvent.java @@ -8,7 +8,7 @@ */ package org.eclipse.hawkbit.repository.eventbus.event; -import org.eclipse.hawkbit.eventbus.event.AbstractEvent; +import org.eclipse.hawkbit.eventbus.event.DefaultEvent; /** * Event declaration for the UI to notify the UI that a rollout has been @@ -17,7 +17,7 @@ import org.eclipse.hawkbit.eventbus.event.AbstractEvent; * @author Michael Hirsch * */ -public class RolloutGroupChangeEvent extends AbstractEvent { +public class RolloutGroupChangeEvent extends DefaultEvent { private final Long rolloutId; private final Long rolloutGroupId; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/eventbus/event/TargetAssignDistributionSetEvent.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/eventbus/event/TargetAssignDistributionSetEvent.java index 077e05462..586a4b9d2 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/eventbus/event/TargetAssignDistributionSetEvent.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/eventbus/event/TargetAssignDistributionSetEvent.java @@ -11,14 +11,14 @@ package org.eclipse.hawkbit.repository.eventbus.event; import java.net.URI; import java.util.Collection; -import org.eclipse.hawkbit.eventbus.event.AbstractEvent; +import org.eclipse.hawkbit.eventbus.event.DefaultEvent; import org.eclipse.hawkbit.repository.model.SoftwareModule; /** * Event that gets sent when a distribution set gets assigned to a target. * */ -public class TargetAssignDistributionSetEvent extends AbstractEvent { +public class TargetAssignDistributionSetEvent extends DefaultEvent { private final Collection softwareModules; private final String controllerId; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ArtifactDeleteFailedException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ArtifactDeleteFailedException.java index 7b7975d78..c7ed8637e 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ArtifactDeleteFailedException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ArtifactDeleteFailedException.java @@ -9,7 +9,7 @@ package org.eclipse.hawkbit.repository.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * Thrown if artifact deletion failed. @@ -18,7 +18,7 @@ import org.eclipse.hawkbit.exception.SpServerRtException; * * */ -public final class ArtifactDeleteFailedException extends SpServerRtException { +public final class ArtifactDeleteFailedException extends AbstractServerRtException { /** * */ diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ArtifactUploadFailedException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ArtifactUploadFailedException.java index d83f80e64..6f762b56c 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ArtifactUploadFailedException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ArtifactUploadFailedException.java @@ -9,14 +9,14 @@ package org.eclipse.hawkbit.repository.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * * * */ -public final class ArtifactUploadFailedException extends SpServerRtException { +public final class ArtifactUploadFailedException extends AbstractServerRtException { /** * diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/CancelActionNotAllowedException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/CancelActionNotAllowedException.java index 0a787e5bb..1afd994cf 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/CancelActionNotAllowedException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/CancelActionNotAllowedException.java @@ -9,7 +9,7 @@ package org.eclipse.hawkbit.repository.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * Thrown if cancelation of actions is performened where the action is not @@ -19,7 +19,7 @@ import org.eclipse.hawkbit.exception.SpServerRtException; * * */ -public final class CancelActionNotAllowedException extends SpServerRtException { +public final class CancelActionNotAllowedException extends AbstractServerRtException { /** * */ diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ConcurrentModificationException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ConcurrentModificationException.java index c2a3b4456..ec2691e52 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ConcurrentModificationException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ConcurrentModificationException.java @@ -9,7 +9,7 @@ package org.eclipse.hawkbit.repository.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * {@link ConcurrentModificationException} is thrown when a given entity in's @@ -19,7 +19,7 @@ import org.eclipse.hawkbit.exception.SpServerRtException; * * */ -public class ConcurrentModificationException extends SpServerRtException { +public class ConcurrentModificationException extends AbstractServerRtException { private static final long serialVersionUID = 1L; private static final SpServerError THIS_ERROR = SpServerError.SP_REPO_CONCURRENT_MODIFICATION; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/DistributionSetCreationFailedMissingMandatoryModuleException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/DistributionSetCreationFailedMissingMandatoryModuleException.java index 0dc2f9752..936d3e5d2 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/DistributionSetCreationFailedMissingMandatoryModuleException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/DistributionSetCreationFailedMissingMandatoryModuleException.java @@ -9,7 +9,7 @@ package org.eclipse.hawkbit.repository.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * Thrown if DS creation failed. @@ -18,7 +18,7 @@ import org.eclipse.hawkbit.exception.SpServerRtException; * * */ -public final class DistributionSetCreationFailedMissingMandatoryModuleException extends SpServerRtException { +public final class DistributionSetCreationFailedMissingMandatoryModuleException extends AbstractServerRtException { /** * */ diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/DistributionSetTypeUndefinedException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/DistributionSetTypeUndefinedException.java index d3e10b213..8cf3c6162 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/DistributionSetTypeUndefinedException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/DistributionSetTypeUndefinedException.java @@ -9,7 +9,7 @@ package org.eclipse.hawkbit.repository.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.DistributionSetType; @@ -21,7 +21,7 @@ import org.eclipse.hawkbit.repository.model.DistributionSetType; * * */ -public class DistributionSetTypeUndefinedException extends SpServerRtException { +public class DistributionSetTypeUndefinedException extends AbstractServerRtException { /** * */ diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/EntityAlreadyExistsException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/EntityAlreadyExistsException.java index a38ec5bb6..73b14c57a 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/EntityAlreadyExistsException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/EntityAlreadyExistsException.java @@ -9,7 +9,7 @@ package org.eclipse.hawkbit.repository.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * the {@link EntityAlreadyExistsException} is thrown when a entity is tried to @@ -18,7 +18,7 @@ import org.eclipse.hawkbit.exception.SpServerRtException; * * */ -public class EntityAlreadyExistsException extends SpServerRtException { +public class EntityAlreadyExistsException extends AbstractServerRtException { private static final long serialVersionUID = 1L; private static final SpServerError THIS_ERROR = SpServerError.SP_REPO_ENTITY_ALRREADY_EXISTS; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/EntityLockedException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/EntityLockedException.java index 1d55bdc34..23c372410 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/EntityLockedException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/EntityLockedException.java @@ -9,7 +9,7 @@ package org.eclipse.hawkbit.repository.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * The {@link EntityLockedException} is thrown when an entity has been locked by @@ -18,7 +18,7 @@ import org.eclipse.hawkbit.exception.SpServerRtException; * * */ -public class EntityLockedException extends SpServerRtException { +public class EntityLockedException extends AbstractServerRtException { private static final long serialVersionUID = 1L; private static final SpServerError THIS_ERROR = SpServerError.SP_ENTITY_LOCKED; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/EntityNotFoundException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/EntityNotFoundException.java index 280436d3b..ce1446f67 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/EntityNotFoundException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/EntityNotFoundException.java @@ -9,7 +9,7 @@ package org.eclipse.hawkbit.repository.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * the {@link EntityNotFoundException} is thrown when a entity is tried find but @@ -18,7 +18,7 @@ import org.eclipse.hawkbit.exception.SpServerRtException; * * */ -public class EntityNotFoundException extends SpServerRtException { +public class EntityNotFoundException extends AbstractServerRtException { private static final long serialVersionUID = 1L; private static final SpServerError THIS_ERROR = SpServerError.SP_REPO_ENTITY_NOT_EXISTS; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/EntityReadOnlyException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/EntityReadOnlyException.java index 7908c4db5..f2686abb1 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/EntityReadOnlyException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/EntityReadOnlyException.java @@ -9,13 +9,13 @@ package org.eclipse.hawkbit.repository.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * the {@link EntityReadOnlyException} is thrown when a entity is in read only * mode and a user tries to change it. */ -public class EntityReadOnlyException extends SpServerRtException { +public class EntityReadOnlyException extends AbstractServerRtException { private static final long serialVersionUID = 1L; private static final SpServerError THIS_ERROR = SpServerError.SP_REPO_ENTITY_READ_ONLY; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ForceQuitActionNotAllowedException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ForceQuitActionNotAllowedException.java index 23b5f7067..83957739a 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ForceQuitActionNotAllowedException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ForceQuitActionNotAllowedException.java @@ -9,14 +9,14 @@ package org.eclipse.hawkbit.repository.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * Thrown when force quitting an actions is not allowed. e.g. the action is not * active or it is not canceled before. * */ -public final class ForceQuitActionNotAllowedException extends SpServerRtException { +public final class ForceQuitActionNotAllowedException extends AbstractServerRtException { /** * */ diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/GridFSDBFileNotFoundException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/GridFSDBFileNotFoundException.java index d22fe2b6e..3f3c49e03 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/GridFSDBFileNotFoundException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/GridFSDBFileNotFoundException.java @@ -9,14 +9,14 @@ package org.eclipse.hawkbit.repository.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * * * */ -public final class GridFSDBFileNotFoundException extends SpServerRtException { +public final class GridFSDBFileNotFoundException extends AbstractServerRtException { /** * diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/IncompleteDistributionSetException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/IncompleteDistributionSetException.java index 51b95afbd..10bc5bba4 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/IncompleteDistributionSetException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/IncompleteDistributionSetException.java @@ -9,7 +9,7 @@ package org.eclipse.hawkbit.repository.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * Thrown if a distribution set is assigned to a a target that is incomplete @@ -19,7 +19,7 @@ import org.eclipse.hawkbit.exception.SpServerRtException; * * */ -public final class IncompleteDistributionSetException extends SpServerRtException { +public final class IncompleteDistributionSetException extends AbstractServerRtException { /** * */ diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/InsufficientPermissionException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/InsufficientPermissionException.java index e15ba43ee..d3802300a 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/InsufficientPermissionException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/InsufficientPermissionException.java @@ -9,7 +9,7 @@ package org.eclipse.hawkbit.repository.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * Exception which is thrown in case the current security context object does @@ -18,7 +18,7 @@ import org.eclipse.hawkbit.exception.SpServerRtException; * * */ -public class InsufficientPermissionException extends SpServerRtException { +public class InsufficientPermissionException extends AbstractServerRtException { private static final long serialVersionUID = 1L; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/InvalidMD5HashException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/InvalidMD5HashException.java index c08673164..f6083a612 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/InvalidMD5HashException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/InvalidMD5HashException.java @@ -9,7 +9,7 @@ package org.eclipse.hawkbit.repository.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * Thrown if MD5 checksum check fails. @@ -18,7 +18,7 @@ import org.eclipse.hawkbit.exception.SpServerRtException; * * */ -public class InvalidMD5HashException extends SpServerRtException { +public class InvalidMD5HashException extends AbstractServerRtException { /** * */ diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/InvalidSHA1HashException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/InvalidSHA1HashException.java index e4136cd82..4cc26c571 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/InvalidSHA1HashException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/InvalidSHA1HashException.java @@ -9,7 +9,7 @@ package org.eclipse.hawkbit.repository.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * Thrown if SHA1 checksum check fails. @@ -18,7 +18,7 @@ import org.eclipse.hawkbit.exception.SpServerRtException; * * */ -public class InvalidSHA1HashException extends SpServerRtException { +public class InvalidSHA1HashException extends AbstractServerRtException { /** * */ diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/InvalidTargetAddressException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/InvalidTargetAddressException.java index 70b890483..160d5c07b 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/InvalidTargetAddressException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/InvalidTargetAddressException.java @@ -9,12 +9,12 @@ package org.eclipse.hawkbit.repository.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * Exception which is thrown when trying to set an invalid target address. */ -public class InvalidTargetAddressException extends SpServerRtException { +public class InvalidTargetAddressException extends AbstractServerRtException { /** * diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/MultiPartFileUploadException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/MultiPartFileUploadException.java index e37786e19..7b554982e 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/MultiPartFileUploadException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/MultiPartFileUploadException.java @@ -9,13 +9,13 @@ package org.eclipse.hawkbit.repository.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * Thrown if a multi part exception occurred. * */ -public final class MultiPartFileUploadException extends SpServerRtException { +public final class MultiPartFileUploadException extends AbstractServerRtException { private static final long serialVersionUID = 1L; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/RSQLParameterSyntaxException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/RSQLParameterSyntaxException.java index 268ab02ba..d46f6d827 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/RSQLParameterSyntaxException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/RSQLParameterSyntaxException.java @@ -9,7 +9,7 @@ package org.eclipse.hawkbit.repository.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * Exception used by the REST API in case of RSQL search filter query. @@ -18,7 +18,7 @@ import org.eclipse.hawkbit.exception.SpServerRtException; * * */ -public class RSQLParameterSyntaxException extends SpServerRtException { +public class RSQLParameterSyntaxException extends AbstractServerRtException { /** * diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/RSQLParameterUnsupportedFieldException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/RSQLParameterUnsupportedFieldException.java index df58ecc8b..402a3eee7 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/RSQLParameterUnsupportedFieldException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/RSQLParameterUnsupportedFieldException.java @@ -9,7 +9,7 @@ package org.eclipse.hawkbit.repository.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * Exception used by the REST API in case of invalid field name in the rsql @@ -19,7 +19,7 @@ import org.eclipse.hawkbit.exception.SpServerRtException; * * */ -public class RSQLParameterUnsupportedFieldException extends SpServerRtException { +public class RSQLParameterUnsupportedFieldException extends AbstractServerRtException { /** * diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/RolloutIllegalStateException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/RolloutIllegalStateException.java index f2920c18d..2f1937008 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/RolloutIllegalStateException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/RolloutIllegalStateException.java @@ -9,7 +9,7 @@ package org.eclipse.hawkbit.repository.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * the {@link RolloutIllegalStateException} is thrown when a rollout is changing @@ -17,7 +17,7 @@ import org.eclipse.hawkbit.exception.SpServerRtException; * rollout, or trying to resume a already finished rollout. * */ -public class RolloutIllegalStateException extends SpServerRtException { +public class RolloutIllegalStateException extends AbstractServerRtException { private static final long serialVersionUID = 1L; private static final SpServerError THIS_ERROR = SpServerError.SP_ROLLOUT_ILLEGAL_STATE; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/TenantNotExistException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/TenantNotExistException.java index 95aab39a8..810054e93 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/TenantNotExistException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/TenantNotExistException.java @@ -9,7 +9,7 @@ package org.eclipse.hawkbit.repository.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * the {@link TenantNotExistException} is thrown when e.g. a controller tries to @@ -20,7 +20,7 @@ import org.eclipse.hawkbit.exception.SpServerRtException; * * */ -public class TenantNotExistException extends SpServerRtException { +public class TenantNotExistException extends AbstractServerRtException { private static final long serialVersionUID = 1L; private static final SpServerError THIS_ERROR = SpServerError.SP_REPO_TENANT_NOT_EXISTS; diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ToManyAttributeEntriesException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ToManyAttributeEntriesException.java index 78da0b9f3..6004bc2e7 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ToManyAttributeEntriesException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ToManyAttributeEntriesException.java @@ -9,7 +9,7 @@ package org.eclipse.hawkbit.repository.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * Thrown if too many status entries have been inserted. @@ -18,7 +18,7 @@ import org.eclipse.hawkbit.exception.SpServerRtException; * * */ -public final class ToManyAttributeEntriesException extends SpServerRtException { +public final class ToManyAttributeEntriesException extends AbstractServerRtException { /** * */ diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ToManyStatusEntriesException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ToManyStatusEntriesException.java index 5d4367924..7b8f4a1b0 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ToManyStatusEntriesException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/ToManyStatusEntriesException.java @@ -9,7 +9,7 @@ package org.eclipse.hawkbit.repository.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * Thrown if too many status entries have been inserted. @@ -18,7 +18,7 @@ import org.eclipse.hawkbit.exception.SpServerRtException; * * */ -public final class ToManyStatusEntriesException extends SpServerRtException { +public final class ToManyStatusEntriesException extends AbstractServerRtException { /** * */ diff --git a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/UnsupportedSoftwareModuleForThisDistributionSetException.java b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/UnsupportedSoftwareModuleForThisDistributionSetException.java index 3726e3188..2ed76dfbc 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/UnsupportedSoftwareModuleForThisDistributionSetException.java +++ b/hawkbit-repository/hawkbit-repository-api/src/main/java/org/eclipse/hawkbit/repository/exception/UnsupportedSoftwareModuleForThisDistributionSetException.java @@ -9,7 +9,7 @@ package org.eclipse.hawkbit.repository.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.DistributionSetType; import org.eclipse.hawkbit.repository.model.SoftwareModule; @@ -23,7 +23,7 @@ import org.eclipse.hawkbit.repository.model.SoftwareModule; * * */ -public class UnsupportedSoftwareModuleForThisDistributionSetException extends SpServerRtException { +public class UnsupportedSoftwareModuleForThisDistributionSetException extends AbstractServerRtException { /** * */ diff --git a/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/exception/MessageNotReadableException.java b/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/exception/MessageNotReadableException.java index 3c5e0aee3..319ac9a38 100644 --- a/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/exception/MessageNotReadableException.java +++ b/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/exception/MessageNotReadableException.java @@ -9,7 +9,7 @@ package org.eclipse.hawkbit.rest.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * Exception which is thrown in case an request body is not well formaned and @@ -19,7 +19,7 @@ import org.eclipse.hawkbit.exception.SpServerRtException; * * */ -public class MessageNotReadableException extends SpServerRtException { +public class MessageNotReadableException extends AbstractServerRtException { /** * diff --git a/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/exception/ResponseExceptionHandler.java b/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/exception/ResponseExceptionHandler.java index 02a48ef78..81d70103b 100644 --- a/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/exception/ResponseExceptionHandler.java +++ b/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/exception/ResponseExceptionHandler.java @@ -16,7 +16,7 @@ import javax.servlet.http.HttpServletRequest; import org.apache.commons.lang3.exception.ExceptionUtils; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; import org.eclipse.hawkbit.repository.exception.MultiPartFileUploadException; import org.eclipse.hawkbit.rest.json.model.ExceptionInfo; import org.slf4j.Logger; @@ -75,7 +75,7 @@ public class ResponseExceptionHandler { } /** - * method for handling exception of type SpServerRtException. Called by the + * method for handling exception of type AbstractServerRtException. Called by the * Spring-Framework for exception handling. * * @param request @@ -86,14 +86,14 @@ public class ResponseExceptionHandler { * @return the entity to be responded containing the exception information * as entity. */ - @ExceptionHandler(SpServerRtException.class) + @ExceptionHandler(AbstractServerRtException.class) public ResponseEntity handleSpServerRtExceptions(final HttpServletRequest request, final Exception ex) { logRequest(request, ex); final ExceptionInfo response = createExceptionInfo(ex); final HttpStatus responseStatus; - if (ex instanceof SpServerRtException) { - responseStatus = getStatusOrDefault(((SpServerRtException) ex).getError()); + if (ex instanceof AbstractServerRtException) { + responseStatus = getStatusOrDefault(((AbstractServerRtException) ex).getError()); } else { responseStatus = DEFAULT_RESPONSE_STATUS; } @@ -152,8 +152,8 @@ public class ResponseExceptionHandler { final ExceptionInfo response = new ExceptionInfo(); response.setMessage(ex.getMessage()); response.setExceptionClass(ex.getClass().getName()); - if (ex instanceof SpServerRtException) { - response.setErrorCode(((SpServerRtException) ex).getError().getKey()); + if (ex instanceof AbstractServerRtException) { + response.setErrorCode(((AbstractServerRtException) ex).getError().getKey()); } return response; diff --git a/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/exception/SortParameterSyntaxErrorException.java b/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/exception/SortParameterSyntaxErrorException.java index a8d476ac1..d43cec066 100644 --- a/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/exception/SortParameterSyntaxErrorException.java +++ b/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/exception/SortParameterSyntaxErrorException.java @@ -9,7 +9,7 @@ package org.eclipse.hawkbit.rest.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * Exception used by the REST API in case of invalid sort parameter syntax. @@ -18,7 +18,7 @@ import org.eclipse.hawkbit.exception.SpServerRtException; * * */ -public class SortParameterSyntaxErrorException extends SpServerRtException { +public class SortParameterSyntaxErrorException extends AbstractServerRtException { /** * diff --git a/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/exception/SortParameterUnsupportedDirectionException.java b/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/exception/SortParameterUnsupportedDirectionException.java index b44b94917..6a79e8abe 100644 --- a/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/exception/SortParameterUnsupportedDirectionException.java +++ b/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/exception/SortParameterUnsupportedDirectionException.java @@ -9,7 +9,7 @@ package org.eclipse.hawkbit.rest.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * Exception used by the REST API in case of invalid sort parameter direction @@ -19,7 +19,7 @@ import org.eclipse.hawkbit.exception.SpServerRtException; * * */ -public class SortParameterUnsupportedDirectionException extends SpServerRtException { +public class SortParameterUnsupportedDirectionException extends AbstractServerRtException { /** * diff --git a/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/exception/SortParameterUnsupportedFieldException.java b/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/exception/SortParameterUnsupportedFieldException.java index c9ce0dcdd..a00d245ab 100644 --- a/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/exception/SortParameterUnsupportedFieldException.java +++ b/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/exception/SortParameterUnsupportedFieldException.java @@ -9,7 +9,7 @@ package org.eclipse.hawkbit.rest.exception; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * Exception used by the REST API in case of invalid field name in the sort @@ -19,7 +19,7 @@ import org.eclipse.hawkbit.exception.SpServerRtException; * * */ -public class SortParameterUnsupportedFieldException extends SpServerRtException { +public class SortParameterUnsupportedFieldException extends AbstractServerRtException { /** * diff --git a/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/util/FileSteamingFailedException.java b/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/util/FileSteamingFailedException.java index abf7c0245..472c78c2a 100644 --- a/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/util/FileSteamingFailedException.java +++ b/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/util/FileSteamingFailedException.java @@ -9,12 +9,12 @@ package org.eclipse.hawkbit.rest.util; import org.eclipse.hawkbit.exception.SpServerError; -import org.eclipse.hawkbit.exception.SpServerRtException; +import org.eclipse.hawkbit.exception.AbstractServerRtException; /** * Thrown if artifact content streaming to client failed. */ -public final class FileSteamingFailedException extends SpServerRtException { +public final class FileSteamingFailedException extends AbstractServerRtException { private static final long serialVersionUID = 1L; From 88e5bdf8f454977038d3fd4dfdf135a00b71ece9 Mon Sep 17 00:00:00 2001 From: SirWayne Date: Fri, 5 Aug 2016 10:51:11 +0200 Subject: [PATCH 20/26] Fix criticals sonar issues Signed-off-by: SirWayne --- .../hawkbit/artifact/FreePortFileWriter.java | 33 +++---- .../test/util/AbstractIntegrationTest.java | 2 +- .../util/JpaTestRepositoryManagement.java | 6 +- .../repository/test/util/TestdataFactory.java | 13 +-- .../test/util/WithSpringAuthorityRule.java | 99 +++++-------------- .../common/tagdetails/AbstractTagToken.java | 6 ++ 6 files changed, 57 insertions(+), 102 deletions(-) diff --git a/hawkbit-artifact-repository-mongo/src/test/java/org/eclipse/hawkbit/artifact/FreePortFileWriter.java b/hawkbit-artifact-repository-mongo/src/test/java/org/eclipse/hawkbit/artifact/FreePortFileWriter.java index 257c85076..0e957d83a 100644 --- a/hawkbit-artifact-repository-mongo/src/test/java/org/eclipse/hawkbit/artifact/FreePortFileWriter.java +++ b/hawkbit-artifact-repository-mongo/src/test/java/org/eclipse/hawkbit/artifact/FreePortFileWriter.java @@ -14,7 +14,7 @@ import java.net.ServerSocket; /** * - * + * Look for a free port. */ public class FreePortFileWriter { @@ -24,7 +24,9 @@ public class FreePortFileWriter { /** * @param from + * port range from (start point) * @param to + * port range to (end point) */ public FreePortFileWriter(final int from, final int to, final String filePortPath) { this.from = from; @@ -51,23 +53,20 @@ public class FreePortFileWriter { portFile.getParentFile().mkdirs(); if (portFile.exists()) { return false; - } else { - boolean isFree = false; - final ServerSocket sock = new ServerSocket(); - sock.setReuseAddress(true); - sock.bind(new InetSocketAddress(port)); - if (portFile.createNewFile()) { - portFile.deleteOnExit(); - isFree = true; - } - sock.close(); - // is free: - return isFree; - // We rely on an exception thrown to determine availability or - // not availability. } - } catch (final Exception e) { - // not free. + boolean isFree = false; + final ServerSocket sock = new ServerSocket(); + sock.setReuseAddress(true); + sock.bind(new InetSocketAddress(port)); + if (portFile.createNewFile()) { + portFile.deleteOnExit(); + isFree = true; + } + sock.close(); + return isFree; + // We rely on an exception thrown to determine availability or + // not availability and don't want to log the exception. + } catch (@SuppressWarnings({ "squid:S2221", "squid:S1166" }) final Exception e) { return false; } } diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/AbstractIntegrationTest.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/AbstractIntegrationTest.java index 3d09fabc3..650a16c96 100644 --- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/AbstractIntegrationTest.java +++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/AbstractIntegrationTest.java @@ -223,7 +223,7 @@ public abstract class AbstractIntegrationTest implements EnvironmentAware { createTestdatabaseAndStart(); } - private static void createTestdatabaseAndStart() { + private static synchronized void createTestdatabaseAndStart() { if ("MYSQL".equals(System.getProperty("spring.jpa.database"))) { tesdatabase = new CIMySqlTestDatabase(); tesdatabase.before(); diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/JpaTestRepositoryManagement.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/JpaTestRepositoryManagement.java index eae0b9a7d..7d7908d6e 100644 --- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/JpaTestRepositoryManagement.java +++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/JpaTestRepositoryManagement.java @@ -13,11 +13,14 @@ import java.util.List; import org.eclipse.hawkbit.cache.TenantAwareCacheManager; import org.eclipse.hawkbit.repository.SystemManagement; import org.eclipse.hawkbit.security.SystemSecurityContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; public class JpaTestRepositoryManagement implements TestRepositoryManagement { + private static final Logger LOGGER = LoggerFactory.getLogger(JpaTestRepositoryManagement.class); @Autowired private TenantAwareCacheManager cacheManager; @@ -28,6 +31,7 @@ public class JpaTestRepositoryManagement implements TestRepositoryManagement { private SystemManagement systemManagement; @Override + @Transactional public void clearTestRepository() { deleteAllRepos(); cacheManager.getDirectCacheNames().forEach(name -> cacheManager.getDirectCache(name).clear()); @@ -43,7 +47,7 @@ public class JpaTestRepositoryManagement implements TestRepositoryManagement { return null; }); } catch (final Exception e) { - e.printStackTrace(); + LOGGER.error("Error hile delete tenant", e); } }); } diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/TestdataFactory.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/TestdataFactory.java index 81e2c1daf..34031639d 100644 --- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/TestdataFactory.java +++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/TestdataFactory.java @@ -10,10 +10,10 @@ package org.eclipse.hawkbit.repository.test.util; import java.io.InputStream; import java.nio.charset.Charset; +import java.security.SecureRandom; import java.util.ArrayList; import java.util.Collection; import java.util.List; -import java.util.Random; import java.util.UUID; import org.apache.commons.io.IOUtils; @@ -191,16 +191,17 @@ public class TestdataFactory { public DistributionSet createDistributionSet(final String prefix, final String version, final boolean isRequiredMigrationStep) { - final SoftwareModule appMod = softwareManagement.createSoftwareModule(entityFactory.generateSoftwareModule( - findOrCreateSoftwareModuleType(SM_TYPE_APP, Integer.MAX_VALUE), prefix + SM_TYPE_APP, - version + "." + new Random().nextInt(100), LOREM.words(20), prefix + " vendor Limited, California")); + final SoftwareModule appMod = softwareManagement.createSoftwareModule( + entityFactory.generateSoftwareModule(findOrCreateSoftwareModuleType(SM_TYPE_APP, Integer.MAX_VALUE), + prefix + SM_TYPE_APP, version + "." + new SecureRandom().nextInt(100), LOREM.words(20), + prefix + " vendor Limited, California")); final SoftwareModule runtimeMod = softwareManagement .createSoftwareModule(entityFactory.generateSoftwareModule(findOrCreateSoftwareModuleType(SM_TYPE_RT), - prefix + "app runtime", version + "." + new Random().nextInt(100), LOREM.words(20), + prefix + "app runtime", version + "." + new SecureRandom().nextInt(100), LOREM.words(20), prefix + " vendor GmbH, Stuttgart, Germany")); final SoftwareModule osMod = softwareManagement .createSoftwareModule(entityFactory.generateSoftwareModule(findOrCreateSoftwareModuleType(SM_TYPE_OS), - prefix + " Firmware", version + "." + new Random().nextInt(100), LOREM.words(20), + prefix + " Firmware", version + "." + new SecureRandom().nextInt(100), LOREM.words(20), prefix + " vendor Limited Inc, California")); return distributionSetManagement diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/WithSpringAuthorityRule.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/WithSpringAuthorityRule.java index a2bc90555..7c588febe 100644 --- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/WithSpringAuthorityRule.java +++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/WithSpringAuthorityRule.java @@ -28,16 +28,12 @@ import org.springframework.security.core.context.SecurityContextHolder; public class WithSpringAuthorityRule implements TestRule { - /* - * (non-Javadoc) - * - * @see org.junit.rules.TestRule#apply(org.junit.runners.model.Statement, - * org.junit.runner.Description) - */ @Override public Statement apply(final Statement base, final Description description) { return new Statement() { @Override + // throwable comes from jnuit evaluate signature + @SuppressWarnings("squid:S00112") public void evaluate() throws Throwable { final SecurityContext oldContext = before(description); try { @@ -49,7 +45,7 @@ public class WithSpringAuthorityRule implements TestRule { }; } - private SecurityContext before(final Description description) throws Throwable { + private SecurityContext before(final Description description) { final SecurityContext oldContext = SecurityContextHolder.getContext(); WithUser annotation = description.getAnnotation(WithUser.class); if (annotation == null) { @@ -63,19 +59,14 @@ public class WithSpringAuthorityRule implements TestRule { } return oldContext; } - - /** - * @param annotation - */ + private void setSecurityContext(final WithUser annotation) { SecurityContextHolder.setContext(new SecurityContext() { - /** - * - */ private static final long serialVersionUID = 1L; @Override public void setAuthentication(final Authentication authentication) { + // nothing todo } @Override @@ -113,7 +104,8 @@ public class WithSpringAuthorityRule implements TestRule { if (addPermission) { allPermissions.add(permissionName); } - } catch (IllegalArgumentException | IllegalAccessException e) { + // don't want to log this exceptions. + } catch (@SuppressWarnings("squid:S1166") IllegalArgumentException | IllegalAccessException e) { // nope } } @@ -129,18 +121,17 @@ public class WithSpringAuthorityRule implements TestRule { private void after(final SecurityContext oldContext) { SecurityContextHolder.setContext(oldContext); } - + /** * Clears the current security context. */ - public void clear() - { + public void clear() { SecurityContextHolder.clearContext(); } /** * @param callable - * @return + * @return the callable result * @throws Exception */ public T runAsPrivileged(final Callable callable) throws Exception { @@ -151,7 +142,7 @@ public class WithSpringAuthorityRule implements TestRule { * * @param withUser * @param callable - * @return + * @return callable result * @throws Exception */ public T runAs(final WithUser withUser, final Callable callable) throws Exception { @@ -170,7 +161,7 @@ public class WithSpringAuthorityRule implements TestRule { public static WithUser withUser(final String principal, final String... authorities) { return withUserAndTenant(principal, "default", true, true, authorities); } - + public static WithUser withUser(final String principal, final boolean allSpPermision, final String... authorities) { return withUserAndTenant(principal, "default", true, allSpPermision, authorities); } @@ -185,6 +176,15 @@ public class WithSpringAuthorityRule implements TestRule { public static WithUser withUserAndTenant(final String principal, final String tenant, final boolean autoCreateTenant, final boolean allSpPermission, final String... authorities) { + return createWithUser(principal, tenant, autoCreateTenant, allSpPermission, authorities); + } + + private static WithUser privilegedUser() { + return createWithUser("bumlux", "default", true, true, new String[] { "ROLE_CONTROLLER" }); + } + + private static WithUser createWithUser(final String principal, final String tenant, final boolean autoCreateTenant, + final boolean allSpPermission, final String... authorities) { return new WithUser() { @Override @@ -214,7 +214,7 @@ public class WithSpringAuthorityRule implements TestRule { @Override public String[] removeFromAllPermission() { - return null; + return new String[0]; } @Override @@ -222,65 +222,10 @@ public class WithSpringAuthorityRule implements TestRule { return tenant; } - /* - * (non-Javadoc) - * - * @see org.eclipse.hawkbit.WithUser#autoCreateTenant() - */ @Override public boolean autoCreateTenant() { return autoCreateTenant; } }; } - - private static WithUser privilegedUser() { - return new WithUser() { - - @Override - public Class annotationType() { - return WithUser.class; - } - - @Override - public String principal() { - return "bumlux"; - } - - @Override - public String credentials() { - return null; - } - - @Override - public String[] authorities() { - return new String[] { "ROLE_CONTROLLER" }; - } - - @Override - public boolean allSpPermissions() { - return true; - } - - @Override - public String[] removeFromAllPermission() { - return null; - } - - @Override - public String tenantId() { - return "default"; - } - - /* - * (non-Javadoc) - * - * @see org.eclipse.hawkbit.WithUser#autoCreateTenant() - */ - @Override - public boolean autoCreateTenant() { - return true; - } - }; - } } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/AbstractTagToken.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/AbstractTagToken.java index 042492613..2160bdac2 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/AbstractTagToken.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/AbstractTagToken.java @@ -43,6 +43,9 @@ import com.vaadin.ui.themes.ValoTheme; /** * Abstract class for target/ds tag token layout. + * + * @param + * the special entity */ public abstract class AbstractTagToken implements Serializable { @@ -75,6 +78,9 @@ public abstract class AbstractTagToken implements Serializ @Autowired protected ManagementUIState managementUIState; + // BaseEntity implements Serializable so this entity is serializable. Maybe + // a sonar bug + @SuppressWarnings("squid:S1948") protected T selectedEntity; @PostConstruct From 41e7c16713f61faaec6e1fe647322827ba0b8b75 Mon Sep 17 00:00:00 2001 From: SirWayne Date: Fri, 5 Aug 2016 11:29:14 +0200 Subject: [PATCH 21/26] Fix criticals sonar issues Signed-off-by: SirWayne --- .../test/util/FreePortFileWriter.java | 34 +++++++++---------- 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/FreePortFileWriter.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/FreePortFileWriter.java index 149cdf2b5..635cc9d6e 100644 --- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/FreePortFileWriter.java +++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/FreePortFileWriter.java @@ -14,7 +14,7 @@ import java.net.ServerSocket; /** * - * + * Look for a free port. */ public class FreePortFileWriter { @@ -24,7 +24,9 @@ public class FreePortFileWriter { /** * @param from + * port range from (start point) * @param to + * port range to (end point) */ public FreePortFileWriter(final int from, final int to, final String filePortPath) { this.from = from; @@ -51,25 +53,21 @@ public class FreePortFileWriter { portFile.getParentFile().mkdirs(); if (portFile.exists()) { return false; - } else { - boolean isFree = false; - final ServerSocket sock = new ServerSocket(); - sock.setReuseAddress(true); - sock.bind(new InetSocketAddress(port)); - if (portFile.createNewFile()) { - portFile.deleteOnExit(); - isFree = true; - } - sock.close(); - // is free: - return isFree; - // We rely on an exception thrown to determine availability or - // not availability. } - } catch (final Exception e) { - // not free. + boolean isFree = false; + final ServerSocket sock = new ServerSocket(); + sock.setReuseAddress(true); + sock.bind(new InetSocketAddress(port)); + if (portFile.createNewFile()) { + portFile.deleteOnExit(); + isFree = true; + } + sock.close(); + return isFree; + // We rely on an exception thrown to determine availability or + // not availability and don't want to log the exception. + } catch (@SuppressWarnings({ "squid:S2221", "squid:S1166" }) final Exception e) { return false; } } - } From 222f06d9bb961208a35027887f5b2d6055c9d2d8 Mon Sep 17 00:00:00 2001 From: Dominic Schabel Date: Fri, 5 Aug 2016 14:12:27 +0200 Subject: [PATCH 22/26] JavaDoc comments added and method visibility raised to public Signed-off-by: Dominic Schabel --- .../jpa/model/EntityInterceptorListener.java | 57 ++++++++++++++++--- 1 file changed, 49 insertions(+), 8 deletions(-) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListener.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListener.java index 1e9c39237..c3a4e6552 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListener.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListener.java @@ -27,43 +27,84 @@ import org.eclipse.hawkbit.repository.model.EntityInterceptor; */ public class EntityInterceptorListener { + /** + * Callback for lifecyle event pre persist. + * + * @param entity + * the JPA entity which this listener is associated with + */ @PrePersist - protected void prePersist(final Object entity) { + public void prePersist(final Object entity) { notifyAll(interceptor -> interceptor.prePersist(entity)); } + /** + * Callback for lifecyle event post persist. + * + * @param entity + * the JPA entity which this listener is associated with + */ @PostPersist - protected void postPersist(final Object entity) { + public void postPersist(final Object entity) { notifyAll(interceptor -> interceptor.postPersist(entity)); } + /** + * Callback for lifecyle event post remove. + * + * @param entity + * the JPA entity which this listener is associated with + */ @PostRemove - protected void postRemove(final Object entity) { + public void postRemove(final Object entity) { notifyAll(interceptor -> interceptor.postRemove(entity)); } + /** + * Callback for lifecyle event pre remove. + * + * @param entity + * the JPA entity which this listener is associated with + */ @PreRemove - protected void preRemove(final Object entity) { + public void preRemove(final Object entity) { notifyAll(interceptor -> interceptor.preRemove(entity)); } + /** + * Callback for lifecyle event post load. + * + * @param entity + * the JPA entity which this listener is associated with + */ @PostLoad - protected void postLoad(final Object entity) { + public void postLoad(final Object entity) { notifyAll(interceptor -> interceptor.postLoad(entity)); } + /** + * Callback for lifecyle event pre update. + * + * @param entity + * the JPA entity which this listener is associated with + */ @PreUpdate - protected void preUpdate(final Object entity) { + public void preUpdate(final Object entity) { notifyAll(interceptor -> interceptor.preUpdate(entity)); } + /** + * Callback for lifecyle event post update. + * + * @param entity + * the JPA entity which this listener is associated with + */ @PostUpdate - protected void postUpdate(final Object entity) { + public void postUpdate(final Object entity) { notifyAll(interceptor -> interceptor.postUpdate(entity)); } private void notifyAll(final Consumer action) { EntityInterceptorHolder.getInstance().getEntityInterceptors().forEach(action); } - } From 59490d80cdc1db1713697ab632c08fa052098f31 Mon Sep 17 00:00:00 2001 From: SirWayne Date: Fri, 5 Aug 2016 14:26:32 +0200 Subject: [PATCH 23/26] Fix sonar issues Signed-off-by: SirWayne --- .../org/eclipse/hawkbit/simulator/DeviceSimulatorUpdater.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/DeviceSimulatorUpdater.java b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/DeviceSimulatorUpdater.java index b7423e899..9c4c43ad2 100644 --- a/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/DeviceSimulatorUpdater.java +++ b/examples/hawkbit-device-simulator/src/main/java/org/eclipse/hawkbit/simulator/DeviceSimulatorUpdater.java @@ -197,7 +197,7 @@ public class DeviceSimulatorUpdater { return result; } - private boolean isErrorResponse(final UpdateStatus status) { + private static boolean isErrorResponse(final UpdateStatus status) { if (status == null) { return false; } From c71cf4852ab53de90ecd3d11fab820aca0ee7d5d Mon Sep 17 00:00:00 2001 From: SirWayne Date: Fri, 5 Aug 2016 14:58:17 +0200 Subject: [PATCH 24/26] fix sonar issues Signed-off-by: SirWayne --- .../jpa/model/EntityInterceptorListener.java | 2 +- .../eclipse/hawkbit/rest/util/ByteRange.java | 14 ++----- .../artifacts/smtype/SMTypeFilterButtons.java | 10 +++-- .../upload/UploadConfirmationwindow.java | 38 ++++++++----------- .../tagdetails/DistributionTagToken.java | 15 +------- 5 files changed, 26 insertions(+), 53 deletions(-) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListener.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListener.java index c3a4e6552..75f1411ef 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListener.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/EntityInterceptorListener.java @@ -104,7 +104,7 @@ public class EntityInterceptorListener { notifyAll(interceptor -> interceptor.postUpdate(entity)); } - private void notifyAll(final Consumer action) { + private static void notifyAll(final Consumer action) { EntityInterceptorHolder.getInstance().getEntityInterceptors().forEach(action); } } diff --git a/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/util/ByteRange.java b/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/util/ByteRange.java index 667fc197d..0811ac312 100644 --- a/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/util/ByteRange.java +++ b/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/util/ByteRange.java @@ -69,13 +69,10 @@ public class ByteRange { return total; } - /* - * (non-Javadoc) - * - * @see java.lang.Object#hashCode() - */ @Override - public int hashCode() { // NOSONAR - as this is generated + // NOSONAR - as this is generated + @SuppressWarnings("squid:S864") + public int hashCode() { final int prime = 31; int result = 1; result = prime * result + (int) (end ^ end >>> 32); @@ -85,11 +82,6 @@ public class ByteRange { return result; } - /* - * (non-Javadoc) - * - * @see java.lang.Object#equals(java.lang.Object) - */ @Override public boolean equals(final Object obj) { // NOSONAR - as this is generated if (this == obj) { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/SMTypeFilterButtons.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/SMTypeFilterButtons.java index d627a6dd0..88a9fa779 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/SMTypeFilterButtons.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/smtype/SMTypeFilterButtons.java @@ -8,7 +8,10 @@ */ package org.eclipse.hawkbit.ui.artifacts.smtype; +import java.util.EnumSet; + import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleTypeEvent; +import org.eclipse.hawkbit.ui.artifacts.event.SoftwareModuleTypeEvent.SoftwareModuleTypeEnum; import org.eclipse.hawkbit.ui.artifacts.event.UploadArtifactUIEvent; import org.eclipse.hawkbit.ui.artifacts.event.UploadViewAcceptCriteria; import org.eclipse.hawkbit.ui.artifacts.state.ArtifactUploadState; @@ -46,12 +49,11 @@ public class SMTypeFilterButtons extends AbstractFilterButtons { @EventBusListenerMethod(scope = EventScope.SESSION) void onEvent(final SoftwareModuleTypeEvent event) { - if (event.getSoftwareModuleTypeEnum() == SoftwareModuleTypeEvent.SoftwareModuleTypeEnum.ADD_SOFTWARE_MODULE_TYPE - || event.getSoftwareModuleTypeEnum() == SoftwareModuleTypeEvent.SoftwareModuleTypeEnum.UPDATE_SOFTWARE_MODULE_TYPE - || event.getSoftwareModuleTypeEnum() == SoftwareModuleTypeEvent.SoftwareModuleTypeEnum.DELETE_SOFTWARE_MODULE_TYPE - && event.getSoftwareModuleType() != null) { + if (event.getSoftwareModuleType() != null + && EnumSet.allOf(SoftwareModuleTypeEnum.class).contains(event.getSoftwareModuleTypeEnum())) { refreshTable(); } + } @EventBusListenerMethod(scope = EventScope.SESSION) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadConfirmationwindow.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadConfirmationwindow.java index 8455dea69..915aee48a 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadConfirmationwindow.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadConfirmationwindow.java @@ -108,7 +108,7 @@ public class UploadConfirmationwindow implements Button.ClickListener { private UploadResultWindow currentUploadResultWindow; - private int redErrorLabelCount = 0; + private int redErrorLabelCount; private final ArtifactUploadState artifactUploadState; @@ -353,11 +353,8 @@ public class UploadConfirmationwindow implements Button.ClickListener { * label * @return Boolean */ - private Boolean isWarningIcon(final Label icon) { - if (icon.isVisible() && !icon.getStyleName().contains(SPUIStyleDefinitions.ERROR_LABEL)) { - return true; - } - return false; + private static Boolean isWarningIcon(final Label icon) { + return !isErrorIcon(icon); } /** @@ -367,14 +364,11 @@ public class UploadConfirmationwindow implements Button.ClickListener { * label * @return Boolean */ - private Boolean isErrorIcon(final Label icon) { - if (icon.isVisible() && icon.getStyleName().contains(SPUIStyleDefinitions.ERROR_LABEL)) { - return true; - } - return false; + private static Boolean isErrorIcon(final Label icon) { + return icon.isVisible() && icon.getStyleName().contains(SPUIStyleDefinitions.ERROR_LABEL); } - private Label getWarningLabel() { + private static Label getWarningLabel() { final Label warningIconLabel = new Label(); warningIconLabel.addStyleName(ValoTheme.LABEL_SMALL); warningIconLabel.setHeightUndefined(); @@ -436,7 +430,7 @@ public class UploadConfirmationwindow implements Button.ClickListener { private void hideErrorIcon(final Label warningLabel, final int errorLabelCount, final int duplicateCount, final Label errorLabel, final String oldFileName, final Long currentSwId) { - if (warningLabel == null && (errorLabelCount > 1 || duplicateCount == 1 && errorLabelCount == 1)) { + if (warningLabel == null && (errorLabelCount > 1 || (duplicateCount == 1 && errorLabelCount == 1))) { final ArtifactManagement artifactManagement = SpringContextHelper.getBean(ArtifactManagement.class); final List artifactList = artifactManagement.findByFilenameAndSoftwareModule(oldFileName, currentSwId); @@ -486,12 +480,12 @@ public class UploadConfirmationwindow implements Button.ClickListener { uploadDetailsTable.setColumnHeader(SIZE, i18n.get("upload.size")); uploadDetailsTable.setColumnHeader(ACTION, i18n.get("upload.action")); - uploadDetailsTable.setColumnExpandRatio(FILE_NAME_LAYOUT, 0.25f); - uploadDetailsTable.setColumnExpandRatio(SW_MODULE_NAME, 0.17f); - uploadDetailsTable.setColumnExpandRatio(SHA1_CHECKSUM, 0.2f); - uploadDetailsTable.setColumnExpandRatio(MD5_CHECKSUM, 0.2f); - uploadDetailsTable.setColumnExpandRatio(SIZE, 0.12f); - uploadDetailsTable.setColumnExpandRatio(ACTION, 0.06f); + uploadDetailsTable.setColumnExpandRatio(FILE_NAME_LAYOUT, 0.25F); + uploadDetailsTable.setColumnExpandRatio(SW_MODULE_NAME, 0.17F); + uploadDetailsTable.setColumnExpandRatio(SHA1_CHECKSUM, 0.2F); + uploadDetailsTable.setColumnExpandRatio(MD5_CHECKSUM, 0.2F); + uploadDetailsTable.setColumnExpandRatio(SIZE, 0.12F); + uploadDetailsTable.setColumnExpandRatio(ACTION, 0.06F); final Object[] visibileColumn = { FILE_NAME_LAYOUT, SW_MODULE_NAME, SHA1_CHECKSUM, MD5_CHECKSUM, SIZE, ACTION }; uploadDetailsTable.setVisibleColumns(visibileColumn); @@ -548,9 +542,7 @@ public class UploadConfirmationwindow implements Button.ClickListener { uploadConfrimationWindow.close(); } else if (event.getComponent().getId().equals(SPUIComponentIdProvider.UPLOAD_BUTTON)) { processArtifactUpload(); - } - - else if (event.getComponent().getId().startsWith(SPUIComponentIdProvider.UPLOAD_DELETE_ICON)) { + } else if (event.getComponent().getId().startsWith(SPUIComponentIdProvider.UPLOAD_DELETE_ICON)) { final String itemId = ((Button) event.getComponent()).getData().toString(); final Item item = uploadDetailsTable.getItem(((Button) event.getComponent()).getData()); final Long swId = (Long) item.getItemProperty(BASE_SOFTWARE_ID).getValue(); @@ -667,7 +659,7 @@ public class UploadConfirmationwindow implements Button.ClickListener { } - private void closeFileStream(final FileInputStream fis, final File newFile) { + private static void closeFileStream(final FileInputStream fis, final File newFile) { if (fis != null) { try { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/DistributionTagToken.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/DistributionTagToken.java index 88467d838..3b044be2c 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/DistributionTagToken.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/DistributionTagToken.java @@ -8,7 +8,6 @@ */ package org.eclipse.hawkbit.ui.common.tagdetails; -import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -86,23 +85,11 @@ public class DistributionTagToken extends AbstractTagToken { @Override protected void unassignTag(final String tagName) { final DistributionSetTagAssignmentResult result = toggleAssignment(tagName); - if (result.getUnassigned() >= 1 && (isClickedTagListEmpty() || getClickedTagList().contains(tagName))) { + if (result.getUnassigned() >= 1) { eventBus.publish(this, ManagementUIEvent.UNASSIGN_DISTRIBUTION_TAG); } } - private Boolean isClickedTagListEmpty() { - if (getClickedTagList() == null || getClickedTagList() != null && !getClickedTagList().isEmpty()) { - return true; - } - return false; - } - - /* To Be Done : this implementation will vary in views */ - private List getClickedTagList() { - return new ArrayList<>(); - } - @Override protected Boolean isToggleTagAssignmentAllowed() { return checker.hasUpdateDistributionPermission(); From 5f20066cff4a7b1d1e8ffcfb42cc0da0ddc3f058 Mon Sep 17 00:00:00 2001 From: SirWayne Date: Fri, 5 Aug 2016 15:55:49 +0200 Subject: [PATCH 25/26] Fix sonar issue Signed-off-by: SirWayne --- .../hawkbit/artifact/FreePortFileWriter.java | 8 +- .../mgmt/rest/resource/MgmtSystemMapper.java | 4 +- .../test/matcher/BaseEntityMatcher.java | 2 +- .../security/SecurityContextTenantAware.java | 9 +- .../security/SystemSecurityContext.java | 8 +- .../ui/artifacts/upload/UploadLayout.java | 84 +++++++++---------- .../ui/colorpicker/ColorPickerConstants.java | 2 +- .../ui/colorpicker/ColorPickerHelper.java | 8 +- .../polling/DurationConfigField.java | 63 ++++++++++++-- 9 files changed, 121 insertions(+), 67 deletions(-) diff --git a/hawkbit-artifact-repository-mongo/src/test/java/org/eclipse/hawkbit/artifact/FreePortFileWriter.java b/hawkbit-artifact-repository-mongo/src/test/java/org/eclipse/hawkbit/artifact/FreePortFileWriter.java index 0e957d83a..b0bcc5b6e 100644 --- a/hawkbit-artifact-repository-mongo/src/test/java/org/eclipse/hawkbit/artifact/FreePortFileWriter.java +++ b/hawkbit-artifact-repository-mongo/src/test/java/org/eclipse/hawkbit/artifact/FreePortFileWriter.java @@ -12,6 +12,8 @@ import java.io.File; import java.net.InetSocketAddress; import java.net.ServerSocket; +import org.apache.commons.io.IOUtils; + /** * * Look for a free port. @@ -48,6 +50,7 @@ public class FreePortFileWriter { } boolean isFree(final int port) { + ServerSocket sock = null; try { final File portFile = new File(filePortPath + File.separator + port + ".port"); portFile.getParentFile().mkdirs(); @@ -55,19 +58,20 @@ public class FreePortFileWriter { return false; } boolean isFree = false; - final ServerSocket sock = new ServerSocket(); + sock = new ServerSocket(); sock.setReuseAddress(true); sock.bind(new InetSocketAddress(port)); if (portFile.createNewFile()) { portFile.deleteOnExit(); isFree = true; } - sock.close(); return isFree; // We rely on an exception thrown to determine availability or // not availability and don't want to log the exception. } catch (@SuppressWarnings({ "squid:S2221", "squid:S1166" }) final Exception e) { return false; + } finally { + IOUtils.closeQuietly(sock); } } diff --git a/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSystemMapper.java b/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSystemMapper.java index d3f78fad2..d0c8dfcc5 100644 --- a/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSystemMapper.java +++ b/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSystemMapper.java @@ -23,7 +23,7 @@ import org.eclipse.hawkbit.tenancy.configuration.TenantConfigurationKey; * A mapper which maps repository model to RESTful model representation and * back. */ -public class MgmtSystemMapper { +public final class MgmtSystemMapper { private MgmtSystemMapper() { // Utility class @@ -51,6 +51,8 @@ public class MgmtSystemMapper { * maps a TenantConfigurationValue from the repository model to a * MgmtSystemTenantConfigurationValue, the RESTful model. * + * @param key + * the key * @param repoConfValue * configuration value as repository model * @return configuration value as RESTful model diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/matcher/BaseEntityMatcher.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/matcher/BaseEntityMatcher.java index cb3f5476f..c83ae8ad1 100644 --- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/matcher/BaseEntityMatcher.java +++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/matcher/BaseEntityMatcher.java @@ -17,7 +17,7 @@ import org.hamcrest.Matchers; /** * Matcher for {@link BaseEntity}. */ -public class BaseEntityMatcher { +public final class BaseEntityMatcher { private BaseEntityMatcher() { } diff --git a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SecurityContextTenantAware.java b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SecurityContextTenantAware.java index f2cfbbdbf..6e4ac7f8f 100644 --- a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SecurityContextTenantAware.java +++ b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SecurityContextTenantAware.java @@ -28,11 +28,6 @@ import org.springframework.security.core.context.SecurityContextImpl; */ public class SecurityContextTenantAware implements TenantAware { - /* - * (non-Javadoc) - * - * @see org.eclipse.hawkbit.server.tenancy.TenantAware#getCurrentTenantId() - */ @Override public String getCurrentTenant() { final SecurityContext context = SecurityContextHolder.getContext(); @@ -56,7 +51,7 @@ public class SecurityContextTenantAware implements TenantAware { } } - private SecurityContext buildSecurityContext(final String tenant) { + private static SecurityContext buildSecurityContext(final String tenant) { final SecurityContextImpl securityContext = new SecurityContextImpl(); securityContext.setAuthentication( new AuthenticationDelegate(SecurityContextHolder.getContext().getAuthentication(), tenant)); @@ -68,7 +63,7 @@ public class SecurityContextTenantAware implements TenantAware { * {@link Authentication} object except setting the details specifically for * a specific tenant. */ - private class AuthenticationDelegate implements Authentication { + private static final class AuthenticationDelegate implements Authentication { private static final long serialVersionUID = 1L; private final Authentication delegate; diff --git a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SystemSecurityContext.java b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SystemSecurityContext.java index 0e3863d97..4432fbb67 100644 --- a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SystemSecurityContext.java +++ b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SystemSecurityContext.java @@ -34,7 +34,7 @@ import com.google.common.base.Throwables; @Service public class SystemSecurityContext { - private static final Logger logger = LoggerFactory.getLogger(SystemSecurityContext.class); + private static final Logger LOG = LoggerFactory.getLogger(SystemSecurityContext.class); private final TenantAware tenantAware; @@ -96,7 +96,7 @@ public class SystemSecurityContext { public T runAsSystemAsTenant(final Callable callable, final String tenant) { final SecurityContext oldContext = SecurityContextHolder.getContext(); try { - logger.debug("entering system code execution"); + LOG.debug("entering system code execution"); return tenantAware.runAsTenant(tenant, () -> { try { setSystemContext(SecurityContextHolder.getContext()); @@ -110,7 +110,7 @@ public class SystemSecurityContext { } finally { SecurityContextHolder.setContext(oldContext); - logger.debug("leaving system code execution"); + LOG.debug("leaving system code execution"); } } @@ -136,7 +136,7 @@ public class SystemSecurityContext { * {@link SpringEvalExpressions#SYSTEM_ROLE} which is allowed to execute all * secured methods. */ - public static class SystemCodeAuthentication implements Authentication { + public static final class SystemCodeAuthentication implements Authentication { private static final long serialVersionUID = 1L; private static final List AUTHORITIES = Collections diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadLayout.java index af02e917b..a7e5bd670 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadLayout.java @@ -248,7 +248,7 @@ public class UploadLayout extends VerticalLayout { final Html5File[] files = ((WrapperTransferable) event.getTransferable()).getFiles(); // selected software module at the time of file drop is // considered for upload - SoftwareModule selectedSw = artifactUploadState.getSelectedBaseSoftwareModule().get(); + final SoftwareModule selectedSw = artifactUploadState.getSelectedBaseSoftwareModule().get(); // reset the flag hasDirectory = Boolean.FALSE; for (final Html5File file : files) { @@ -265,7 +265,7 @@ public class UploadLayout extends VerticalLayout { } } - private void processFile(final Html5File file, SoftwareModule selectedSw) { + private void processFile(final Html5File file, final SoftwareModule selectedSw) { if (!isDirectory(file)) { if (!checkForDuplicate(file.getFileName(), selectedSw)) { artifactUploadState.getNumberOfFileUploadsExpected().incrementAndGet(); @@ -276,7 +276,7 @@ public class UploadLayout extends VerticalLayout { } } - private StreamVariable createStreamVariable(final Html5File file, SoftwareModule selectedSw) { + private StreamVariable createStreamVariable(final Html5File file, final SoftwareModule selectedSw) { return new UploadHandler(file.getFileName(), file.getFileSize(), UploadLayout.this, spInfo.getMaxArtifactFileSize(), null, file.getType(), selectedSw); } @@ -366,11 +366,13 @@ public class UploadLayout extends VerticalLayout { * in case of upload errors */ OutputStream saveUploadedFileDetails(final String name, final long size, final String mimeType, - SoftwareModule selectedSw) { + final SoftwareModule selectedSw) { File tempFile = null; try { tempFile = File.createTempFile("spUiArtifactUpload", null); + // we return the outputstream so we cannot close it here + @SuppressWarnings("squid:S2095") final OutputStream out = new FileOutputStream(tempFile); final String currentBaseSoftwareModuleKey = HawkbitCommonUtil.getFormattedNameVersion(selectedSw.getName(), @@ -445,8 +447,8 @@ public class UploadLayout extends VerticalLayout { */ public Boolean checkIfFileIsDuplicate(final String name, final SoftwareModule selectedSoftwareModule) { Boolean isDuplicate = false; - final String currentBaseSoftwareModuleKey = HawkbitCommonUtil.getFormattedNameVersion( - selectedSoftwareModule.getName(), selectedSoftwareModule.getVersion()); + final String currentBaseSoftwareModuleKey = HawkbitCommonUtil + .getFormattedNameVersion(selectedSoftwareModule.getName(), selectedSoftwareModule.getVersion()); for (final CustomFile customFile : artifactUploadState.getFileSelected()) { final String fileSoftwareModuleKey = HawkbitCommonUtil.getFormattedNameVersion( @@ -510,9 +512,9 @@ public class UploadLayout extends VerticalLayout { artifactUploadState.getNumberOfFileUploadsExpected().incrementAndGet(); } - void updateFileSize(final String name, final long size, SoftwareModule selectedSoftwareModule) { - final String currentBaseSoftwareModuleKey = HawkbitCommonUtil.getFormattedNameVersion( - selectedSoftwareModule.getName(), selectedSoftwareModule.getVersion()); + void updateFileSize(final String name, final long size, final SoftwareModule selectedSoftwareModule) { + final String currentBaseSoftwareModuleKey = HawkbitCommonUtil + .getFormattedNameVersion(selectedSoftwareModule.getName(), selectedSoftwareModule.getVersion()); for (final CustomFile customFile : artifactUploadState.getFileSelected()) { final String fileSoftwareModuleKey = HawkbitCommonUtil.getFormattedNameVersion( @@ -594,12 +596,12 @@ public class UploadLayout extends VerticalLayout { private void setConfirmationPopupHeightWidth(final float newWidth, final float newHeight) { if (currentUploadConfirmationwindow != null) { - currentUploadConfirmationwindow.getUploadArtifactDetails().setWidth( - HawkbitCommonUtil.getArtifactUploadPopupWidth(newWidth, - SPUIDefinitions.MIN_UPLOAD_CONFIRMATION_POPUP_WIDTH), Unit.PIXELS); - currentUploadConfirmationwindow.getUploadDetailsTable().setHeight( - HawkbitCommonUtil.getArtifactUploadPopupHeight(newHeight, - SPUIDefinitions.MIN_UPLOAD_CONFIRMATION_POPUP_HEIGHT), Unit.PIXELS); + currentUploadConfirmationwindow.getUploadArtifactDetails().setWidth(HawkbitCommonUtil + .getArtifactUploadPopupWidth(newWidth, SPUIDefinitions.MIN_UPLOAD_CONFIRMATION_POPUP_WIDTH), + Unit.PIXELS); + currentUploadConfirmationwindow.getUploadDetailsTable().setHeight(HawkbitCommonUtil + .getArtifactUploadPopupHeight(newHeight, SPUIDefinitions.MIN_UPLOAD_CONFIRMATION_POPUP_HEIGHT), + Unit.PIXELS); } } @@ -616,12 +618,10 @@ public class UploadLayout extends VerticalLayout { && currentUploadConfirmationwindow.getCurrentUploadResultWindow() != null) { final UploadResultWindow uploadResultWindow = currentUploadConfirmationwindow .getCurrentUploadResultWindow(); - uploadResultWindow.getUploadResultsWindow().setWidth( - HawkbitCommonUtil.getArtifactUploadPopupWidth(newWidth, - SPUIDefinitions.MIN_UPLOAD_CONFIRMATION_POPUP_WIDTH), Unit.PIXELS); - uploadResultWindow.getUploadResultTable().setHeight( - HawkbitCommonUtil.getArtifactUploadPopupHeight(newHeight, - SPUIDefinitions.MIN_UPLOAD_CONFIRMATION_POPUP_HEIGHT), Unit.PIXELS); + uploadResultWindow.getUploadResultsWindow().setWidth(HawkbitCommonUtil.getArtifactUploadPopupWidth(newWidth, + SPUIDefinitions.MIN_UPLOAD_CONFIRMATION_POPUP_WIDTH), Unit.PIXELS); + uploadResultWindow.getUploadResultTable().setHeight(HawkbitCommonUtil.getArtifactUploadPopupHeight( + newHeight, SPUIDefinitions.MIN_UPLOAD_CONFIRMATION_POPUP_HEIGHT), Unit.PIXELS); } } @@ -632,8 +632,8 @@ public class UploadLayout extends VerticalLayout { } else { currentUploadConfirmationwindow = new UploadConfirmationwindow(this, artifactUploadState); UI.getCurrent().addWindow(currentUploadConfirmationwindow.getUploadConfrimationWindow()); - setConfirmationPopupHeightWidth(Page.getCurrent().getBrowserWindowWidth(), Page.getCurrent() - .getBrowserWindowHeight()); + setConfirmationPopupHeightWidth(Page.getCurrent().getBrowserWindowWidth(), + Page.getCurrent().getBrowserWindowHeight()); } } } @@ -682,7 +682,7 @@ public class UploadLayout extends VerticalLayout { displayDuplicateValidationMessage(); } - private void onUploadStreamingFailure(UploadStatusEvent event) { + private void onUploadStreamingFailure(final UploadStatusEvent event) { /** * If upload interrupted because of duplicate file,do not remove the * file already in upload list @@ -691,13 +691,13 @@ public class UploadLayout extends VerticalLayout { || !getDuplicateFileNamesList().contains(event.getUploadStatus().getFileName())) { final SoftwareModule sw = event.getUploadStatus().getSoftwareModule(); if (sw != null) { - getFileSelected().remove( - new CustomFile(event.getUploadStatus().getFileName(), sw.getName(), sw.getVersion())); + getFileSelected() + .remove(new CustomFile(event.getUploadStatus().getFileName(), sw.getName(), sw.getVersion())); } // failed reason to be updated only if there is error other than // duplicate file error - uploadInfoWindow.uploadFailed(event.getUploadStatus().getFileName(), event.getUploadStatus() - .getFailureReason(), event.getUploadStatus().getSoftwareModule()); + uploadInfoWindow.uploadFailed(event.getUploadStatus().getFileName(), + event.getUploadStatus().getFailureReason(), event.getUploadStatus().getSoftwareModule()); increaseNumberOfFileUploadsFailed(); } decreaseNumberOfFileUploadsExpected(); @@ -711,9 +711,9 @@ public class UploadLayout extends VerticalLayout { displayDuplicateValidationMessage(); } - private void onUploadSuccess(UploadStatusEvent event) { - updateFileSize(event.getUploadStatus().getFileName(), event.getUploadStatus().getContentLength(), event - .getUploadStatus().getSoftwareModule()); + private void onUploadSuccess(final UploadStatusEvent event) { + updateFileSize(event.getUploadStatus().getFileName(), event.getUploadStatus().getContentLength(), + event.getUploadStatus().getSoftwareModule()); // recorded that we now one more uploaded increaseNumberOfFilesActuallyUpload(); } @@ -730,8 +730,8 @@ public class UploadLayout extends VerticalLayout { } private boolean isUploadComplete() { - int uploadedCount = artifactUploadState.getNumberOfFilesActuallyUpload().intValue(); - int expectedUploadsCount = artifactUploadState.getNumberOfFileUploadsExpected().intValue(); + final int uploadedCount = artifactUploadState.getNumberOfFilesActuallyUpload().intValue(); + final int expectedUploadsCount = artifactUploadState.getNumberOfFileUploadsExpected().intValue(); return uploadedCount == expectedUploadsCount; } @@ -744,13 +744,13 @@ public class UploadLayout extends VerticalLayout { || !getDuplicateFileNamesList().contains(event.getUploadStatus().getFileName())) { final SoftwareModule sw = event.getUploadStatus().getSoftwareModule(); if (sw != null) { - getFileSelected().remove( - new CustomFile(event.getUploadStatus().getFileName(), sw.getName(), sw.getVersion())); + getFileSelected() + .remove(new CustomFile(event.getUploadStatus().getFileName(), sw.getName(), sw.getVersion())); } // failed reason to be updated only if there is error other than // duplicate file error - uploadInfoWindow.uploadFailed(event.getUploadStatus().getFileName(), event.getUploadStatus() - .getFailureReason(), event.getUploadStatus().getSoftwareModule()); + uploadInfoWindow.uploadFailed(event.getUploadStatus().getFileName(), + event.getUploadStatus().getFailureReason(), event.getUploadStatus().getSoftwareModule()); increaseNumberOfFileUploadsFailed(); decreaseNumberOfFileUploadsExpected(); } @@ -773,8 +773,8 @@ public class UploadLayout extends VerticalLayout { * @param selectedBaseSoftwareModule */ public void refreshArtifactDetailsLayout(final SoftwareModule selectedBaseSoftwareModule) { - eventBus.publish(this, new SoftwareModuleEvent(SoftwareModuleEventType.ARTIFACTS_CHANGED, - selectedBaseSoftwareModule)); + eventBus.publish(this, + new SoftwareModuleEvent(SoftwareModuleEventType.ARTIFACTS_CHANGED, selectedBaseSoftwareModule)); } /** @@ -804,10 +804,10 @@ public class UploadLayout extends VerticalLayout { } void updateStatusButtonCount() { - int uploadsPending = artifactUploadState.getNumberOfFileUploadsExpected().get() + final int uploadsPending = artifactUploadState.getNumberOfFileUploadsExpected().get() - artifactUploadState.getNumberOfFilesActuallyUpload().get(); - int uploadsFailed = artifactUploadState.getNumberOfFileUploadsFailed().get(); - StringBuilder builder = new StringBuilder(""); + final int uploadsFailed = artifactUploadState.getNumberOfFileUploadsFailed().get(); + final StringBuilder builder = new StringBuilder(""); if (uploadsFailed != 0) { if (uploadsPending != 0) { builder.append("
" + uploadsFailed + "
"); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorpicker/ColorPickerConstants.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorpicker/ColorPickerConstants.java index 06e280e4e..86a986e3a 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorpicker/ColorPickerConstants.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorpicker/ColorPickerConstants.java @@ -14,7 +14,7 @@ import com.vaadin.shared.ui.colorpicker.Color; * Provides color constants for the ColorPickerLayout * */ -public class ColorPickerConstants { +public final class ColorPickerConstants { public static final String DEFAULT_COLOR = "rgb(44,151,32)"; public static final Color START_COLOR = new Color(0, 146, 58); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorpicker/ColorPickerHelper.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorpicker/ColorPickerHelper.java index 923c58fe3..1f80bf5ab 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorpicker/ColorPickerHelper.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/colorpicker/ColorPickerHelper.java @@ -20,7 +20,7 @@ import com.vaadin.ui.Slider.ValueOutOfBoundsException; * Contains helper methods for the ColorPickerLayout to handle the ColorPicker * */ -public class ColorPickerHelper { +public final class ColorPickerHelper { private static final Logger LOG = LoggerFactory.getLogger(ColorPickerHelper.class); @@ -30,7 +30,9 @@ public class ColorPickerHelper { /** * Get color picked value as string. - * + * + * @param preview + * the color picker preview * @return String of color picked value. */ public static String getColorPickedString(final SpColorPickerPreview preview) { @@ -59,7 +61,7 @@ public class ColorPickerHelper { final int green = Integer.parseInt(colors[1]); final int blue = Integer.parseInt(colors[2]); if (colors.length > 3) { - final int alpha = (int) (Double.parseDouble(colors[3]) * 255d); + final int alpha = (int) (Double.parseDouble(colors[3]) * 255D); return new Color(red, green, blue, alpha); } return new Color(red, green, blue); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/polling/DurationConfigField.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/polling/DurationConfigField.java index 15f51877d..9a3a54a5e 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/polling/DurationConfigField.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/tenantconfiguration/polling/DurationConfigField.java @@ -24,7 +24,7 @@ import com.vaadin.ui.GridLayout; * duration in the DurationField or he can configure using the global duration * by changing the CheckBox. */ -public class DurationConfigField extends GridLayout implements ConfigurationItem { +public final class DurationConfigField extends GridLayout implements ConfigurationItem { private static final long serialVersionUID = 1L; @@ -130,45 +130,96 @@ public class DurationConfigField extends GridLayout implements ConfigurationItem configurationChangeListeners.add(listener); } + /** + * Create a DurationConfigFieldBuilder. + * + * @return the builder + */ public static DurationConfigFieldBuilder builder() { return new DurationConfigFieldBuilder(); } - public static class DurationConfigFieldBuilder { + /** + * Builder for the calendar widget. + * + */ + public static final class DurationConfigFieldBuilder { private final DurationConfigField field; - private Duration globalDuration = null; - private Duration tenantDuration = null; + private Duration globalDuration; + private Duration tenantDuration; private DurationConfigFieldBuilder() { field = new DurationConfigField(); - }; + } + /** + * set the checkbox tooltip. + * + * @param label + * the tooltip + * @return the builder + */ public DurationConfigFieldBuilder checkBoxTooltip(final String label) { field.setCheckBoxTooltip(label); return this; } + /** + * set the global duration. + * + * @param globalDuration + * the global duration + * @return the builder + */ public DurationConfigFieldBuilder globalDuration(final Duration globalDuration) { this.globalDuration = globalDuration; return this; } + /** + * set the caption. + * + * @param caption + * the caption + * @return the builder + */ public DurationConfigFieldBuilder caption(final String caption) { field.setCaption(caption); return this; } + /** + * set the range. + * + * @param minDuration + * min duration + * @param maxDuration + * max duration + * @return the builder + */ public DurationConfigFieldBuilder range(final Duration minDuration, final Duration maxDuration) { field.setAllowedRange(minDuration, maxDuration); return this; } + /** + * set the tenant duration. + * + * @param tenantDuration + * the duration + * @return the builder + */ public DurationConfigFieldBuilder tenantDuration(final Duration tenantDuration) { this.tenantDuration = tenantDuration; return this; } + /** + * Create the {@link DurationConfigField}. + * + * @return the {@link DurationConfigField} + */ public DurationConfigField build() { if (globalDuration == null) { throw new IllegalStateException( @@ -178,5 +229,5 @@ public class DurationConfigField extends GridLayout implements ConfigurationItem field.init(globalDuration, tenantDuration); return field; } - }; + } } From 9febe1645339a8dd3060463b85ffc44998e6feb7 Mon Sep 17 00:00:00 2001 From: SirWayne Date: Fri, 5 Aug 2016 16:42:09 +0200 Subject: [PATCH 26/26] Fix sonar issue Signed-off-by: SirWayne --- .../ui/artifacts/upload/UploadLayout.java | 30 +++++++++++-------- .../tagdetails/AbstractTargetTagToken.java | 5 +++- .../ui/common/tagdetails/TargetTagToken.java | 19 +----------- .../ui/components/SPUIComponentProvider.java | 8 ++--- ...orator.java => HeaderLayoutDecorator.java} | 10 +++++-- .../ui/decorators/SPUIButtonDecorator.java | 1 + .../CreateUpdateDistSetTypeLayout.java | 19 ++++-------- .../hawkbit/ui/filter/FilterExpression.java | 4 +-- .../targettable/BulkUploadHandler.java | 15 ++++------ .../TargetBulkUpdateWindowLayout.java | 2 +- .../hawkbit/ui/menu/DashboardMenu.java | 10 +++---- .../rollout/AddUpdateRolloutWindowLayout.java | 11 ++++--- 12 files changed, 59 insertions(+), 75 deletions(-) rename hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/{SPUIHeaderLayoutDecorator.java => HeaderLayoutDecorator.java} (72%) diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadLayout.java index a7e5bd670..71b041c9e 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/artifacts/upload/UploadLayout.java @@ -76,6 +76,11 @@ import com.vaadin.ui.VerticalLayout; @SpringComponent public class UploadLayout extends VerticalLayout { + /** + * + */ + private static final String HTML_DIV = ""; + private static final long serialVersionUID = -566164756606779220L; private static final Logger LOG = LoggerFactory.getLogger(UploadLayout.class); @@ -408,18 +413,12 @@ public class UploadLayout extends VerticalLayout { return checkIfSoftwareModuleIsSelected(); } - private boolean isFilesDropped(final DragAndDropEvent event) { + private static boolean isFilesDropped(final DragAndDropEvent event) { if (event.getTransferable() instanceof WrapperTransferable) { final Html5File[] files = ((WrapperTransferable) event.getTransferable()).getFiles(); - // other components can also be wrapped in WrapperTransferable , so - // additional check on files - if (files == null) { - return false; - } - return true; - } else { - return false; + return files != null; } + return false; } Boolean checkIfSoftwareModuleIsSelected() { @@ -443,6 +442,8 @@ public class UploadLayout extends VerticalLayout { * * @param name * file name + * @param selectedSoftwareModule + * the current selected sm module * @return Boolean */ public Boolean checkIfFileIsDuplicate(final String name, final SoftwareModule selectedSoftwareModule) { @@ -475,7 +476,7 @@ public class UploadLayout extends VerticalLayout { void updateActionCount() { if (!artifactUploadState.getFileSelected().isEmpty()) { processBtn.setCaption(SPUILabelDefinitions.PROCESS + "
" - + artifactUploadState.getFileSelected().size() + "
"); + + artifactUploadState.getFileSelected().size() + HTML_DIV); } else { processBtn.setCaption(SPUILabelDefinitions.PROCESS); } @@ -504,6 +505,9 @@ public class UploadLayout extends VerticalLayout { return message.toString(); } + /** + * Show the duplicated message. + */ public void showDuplicateMessage() { uiNotification.displayValidationError(getDuplicateFileValidationMessage()); } @@ -810,13 +814,13 @@ public class UploadLayout extends VerticalLayout { final StringBuilder builder = new StringBuilder(""); if (uploadsFailed != 0) { if (uploadsPending != 0) { - builder.append("
" + uploadsFailed + "
"); + builder.append("
" + uploadsFailed + HTML_DIV); } else { - builder.append("
" + uploadsFailed + "
"); + builder.append("
" + uploadsFailed + HTML_DIV); } } if (uploadsPending != 0) { - builder.append("
" + uploadsPending + "
"); + builder.append("
" + uploadsPending + HTML_DIV); } uploadStatusButton.setCaption(builder.toString()); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/AbstractTargetTagToken.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/AbstractTargetTagToken.java index e74a331af..81ea9154c 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/AbstractTargetTagToken.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/AbstractTargetTagToken.java @@ -18,7 +18,10 @@ import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; /** - * Abstract class for target tag token layout. + * /** Abstract class for target tag token layout. + * + * @param + * the entity type */ public abstract class AbstractTargetTagToken extends AbstractTagToken { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/TargetTagToken.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/TargetTagToken.java index 2cd4ec978..34b931c1b 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/TargetTagToken.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/common/tagdetails/TargetTagToken.java @@ -8,7 +8,6 @@ */ package org.eclipse.hawkbit.ui.common.tagdetails; -import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -23,7 +22,6 @@ import org.eclipse.hawkbit.repository.model.TargetTagAssignmentResult; import org.eclipse.hawkbit.ui.management.event.ManagementUIEvent; import org.eclipse.hawkbit.ui.management.event.TargetTableEvent; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; -import org.eclipse.hawkbit.ui.utils.UINotification; import org.springframework.beans.factory.annotation.Autowired; import org.vaadin.spring.events.EventScope; import org.vaadin.spring.events.annotation.EventBusListenerMethod; @@ -46,9 +44,6 @@ public class TargetTagToken extends AbstractTargetTagToken { // To Be Done : have to set this value based on view??? private static final Boolean NOTAGS_SELECTED = Boolean.FALSE; - @Autowired - private UINotification uinotification; - @Autowired private transient TargetManagement targetManagement; @@ -85,23 +80,11 @@ public class TargetTagToken extends AbstractTargetTagToken { @Override protected void unassignTag(final String tagName) { final TargetTagAssignmentResult result = toggleAssignment(tagName); - if (result.getUnassigned() >= 1 && (isClickedTagListEmpty() || getClickedTagList().contains(tagName))) { + if (result.getUnassigned() >= 1) { eventBus.publish(this, ManagementUIEvent.UNASSIGN_TARGET_TAG); } } - private Boolean isClickedTagListEmpty() { - if (getClickedTagList() == null || getClickedTagList() != null && !getClickedTagList().isEmpty()) { - return true; - } - return false; - } - - /* To Be Done : this implementation will vary in views */ - private List getClickedTagList() { - return new ArrayList<>(); - } - @Override protected Boolean isToggleTagAssignmentAllowed() { return checker.hasUpdateTargetPermission(); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/SPUIComponentProvider.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/SPUIComponentProvider.java index f3f5c5a06..8161c2895 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/SPUIComponentProvider.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/components/SPUIComponentProvider.java @@ -17,7 +17,7 @@ import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.ui.common.UserDetailsFormatter; import org.eclipse.hawkbit.ui.decorators.SPUIButtonDecorator; import org.eclipse.hawkbit.ui.decorators.SPUIComboBoxDecorator; -import org.eclipse.hawkbit.ui.decorators.SPUIHeaderLayoutDecorator; +import org.eclipse.hawkbit.ui.decorators.HeaderLayoutDecorator; import org.eclipse.hawkbit.ui.decorators.SPUILabelDecorator; import org.eclipse.hawkbit.ui.decorators.SPUITextAreaDecorator; import org.eclipse.hawkbit.ui.decorators.SPUITextFieldDecorator; @@ -104,7 +104,7 @@ public final class SPUIComponentProvider { * @return */ public static HorizontalLayout getHeaderLayout( - final Class tableHeaderLayoutDecorator) { + final Class tableHeaderLayoutDecorator) { // Do we really need this??? HorizontalLayout hLayout = getHorizontalLayout(new SPUIHorizontalLayout().getUiHorizontalLayout().getClass()); @@ -113,11 +113,11 @@ public final class SPUIComponentProvider { } try { - final SPUIHeaderLayoutDecorator layoutDecorator = tableHeaderLayoutDecorator.newInstance(); + final HeaderLayoutDecorator layoutDecorator = tableHeaderLayoutDecorator.newInstance(); hLayout = layoutDecorator.decorate(hLayout); } catch (final InstantiationException | IllegalAccessException exception) { - LOG.error("Error occured while creating horizontal decorator " + SPUIHeaderLayoutDecorator.class, + LOG.error("Error occured while creating horizontal decorator " + HeaderLayoutDecorator.class, exception); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIHeaderLayoutDecorator.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/HeaderLayoutDecorator.java similarity index 72% rename from hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIHeaderLayoutDecorator.java rename to hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/HeaderLayoutDecorator.java index f7de09ad7..a71bc9031 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIHeaderLayoutDecorator.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/HeaderLayoutDecorator.java @@ -13,13 +13,17 @@ import com.vaadin.ui.HorizontalLayout; /** * * - * + * Ui header layout decorater. */ -public interface SPUIHeaderLayoutDecorator { +@FunctionalInterface +public interface HeaderLayoutDecorator { /** + * decorate the header + * * @param layout - * @return + * the layout + * @return the decorated layout */ HorizontalLayout decorate(HorizontalLayout layout); } diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIButtonDecorator.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIButtonDecorator.java index dd6f928d7..05d1f8a0a 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIButtonDecorator.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/decorators/SPUIButtonDecorator.java @@ -17,6 +17,7 @@ import com.vaadin.ui.Button; * * */ +@FunctionalInterface public interface SPUIButtonDecorator { /** diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java index 2a12bc859..65e52d448 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/distributions/disttype/CreateUpdateDistSetTypeLayout.java @@ -9,7 +9,6 @@ package org.eclipse.hawkbit.ui.distributions.disttype; import java.util.List; -import java.util.Map; import java.util.Set; import org.eclipse.hawkbit.repository.DistributionSetManagement; @@ -27,8 +26,6 @@ import org.eclipse.hawkbit.ui.layouts.CreateUpdateTypeLayout; import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory; @@ -59,8 +56,6 @@ import com.vaadin.ui.themes.ValoTheme; public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout { private static final long serialVersionUID = -5169398523815877767L; - private static final Logger LOG = LoggerFactory.getLogger(CreateUpdateDistSetTypeLayout.class); - private static final String DIST_TYPE_NAME = "name"; private static final String DIST_TYPE_DESCRIPTION = "description"; private static final String DIST_TYPE_MANDATORY = "mandatory"; @@ -84,8 +79,6 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout { private IndexedContainer originalSelectedTableContainer; - private Map mandatoryCheckboxMap; - @Override protected void createRequiredComponents() { @@ -152,9 +145,9 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout { twinColumnLayout.setComponentAlignment(sourceTable, Alignment.MIDDLE_LEFT); twinColumnLayout.setComponentAlignment(selectButtonLayout, Alignment.MIDDLE_CENTER); twinColumnLayout.setComponentAlignment(selectedTable, Alignment.MIDDLE_RIGHT); - twinColumnLayout.setExpandRatio(sourceTable, 0.45f); - twinColumnLayout.setExpandRatio(selectButtonLayout, 0.07f); - twinColumnLayout.setExpandRatio(selectedTable, 0.48f); + twinColumnLayout.setExpandRatio(sourceTable, 0.45F); + twinColumnLayout.setExpandRatio(selectButtonLayout, 0.07F); + twinColumnLayout.setExpandRatio(selectedTable, 0.48F); sourceTable.setVisibleColumns(new Object[] { DIST_TYPE_NAME }); return twinColumnLayout; } @@ -226,7 +219,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout { sourceTable.setVisibleColumns(new Object[] { DIST_TYPE_NAME }); sourceTable.setColumnHeaders(i18n.get("header.dist.twintable.available")); - sourceTable.setColumnExpandRatio(DIST_TYPE_NAME, 1.0f); + sourceTable.setColumnExpandRatio(DIST_TYPE_NAME, 1.0F); getSourceTableData(); addTooltip(); sourceTable.select(sourceTable.firstItemId()); @@ -413,7 +406,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout { } } - private void checkMandatoryAndAddMandatoryModuleType(final DistributionSetType updateDistSetType, + private static void checkMandatoryAndAddMandatoryModuleType(final DistributionSetType updateDistSetType, final Boolean isMandatory, final SoftwareModuleType swModuleType) { if (isMandatory) { updateDistSetType.addMandatoryModuleType(swModuleType); @@ -488,7 +481,7 @@ public class CreateUpdateDistSetTypeLayout extends CreateUpdateTypeLayout { * * @return */ - private LazyQueryContainer getDistSetTypeLazyQueryContainer() { + private static LazyQueryContainer getDistSetTypeLazyQueryContainer() { final LazyQueryContainer disttypeContainer = HawkbitCommonUtil.createLazyQueryContainer( new BeanQueryFactory(DistributionSetTypeBeanQuery.class)); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filter/FilterExpression.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filter/FilterExpression.java index 1aaafd905..853c6f095 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filter/FilterExpression.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/filter/FilterExpression.java @@ -13,11 +13,9 @@ package org.eclipse.hawkbit.ui.filter; * mechanism. The filter expression can evaluate if e.g. Targets should * currently be added to the target list or if the current enabled filtered will * filter the target and not show the newly created target. - * - * - * * */ +@FunctionalInterface public interface FilterExpression { /** diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/BulkUploadHandler.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/BulkUploadHandler.java index ee062493e..4cc4d37f4 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/BulkUploadHandler.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/BulkUploadHandler.java @@ -43,7 +43,6 @@ import org.eclipse.hawkbit.ui.utils.HawkbitCommonUtil; import org.eclipse.hawkbit.ui.utils.I18N; import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; import org.eclipse.hawkbit.ui.utils.SpringContextHelper; -import org.eclipse.hawkbit.ui.utils.UINotification; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.vaadin.spring.events.EventBus; @@ -83,9 +82,7 @@ public class BulkUploadHandler extends CustomComponent private final transient DeploymentManagement deploymentManagement; private final transient DistributionSetManagement distributionSetManagement; - private final UINotification uINotification; - - protected File tempFile = null; + protected File tempFile; private Upload upload; private final ProgressBar progressBar; @@ -93,8 +90,8 @@ public class BulkUploadHandler extends CustomComponent private final TargetBulkTokenTags targetBulkTokenTags; private final Label targetsCountLabel; - private long failedTargetCount = 0; - private long successfullTargetCount = 0; + private long failedTargetCount; + private long successfullTargetCount; private final transient Executor executor; private transient EventBus.SessionEventBus eventBus; @@ -109,12 +106,11 @@ public class BulkUploadHandler extends CustomComponent * @param targetManagement * @param managementUIState * @param deploymentManagement - * @param uINotification * @param i18n */ public BulkUploadHandler(final TargetBulkUpdateWindowLayout targetBulkUpdateWindowLayout, final TargetManagement targetManagement, final ManagementUIState managementUIState, - final DeploymentManagement deploymentManagement, final UINotification uINotification, final I18N i18n) { + final DeploymentManagement deploymentManagement, final I18N i18n) { this.targetBulkUpdateWindowLayout = targetBulkUpdateWindowLayout; this.comboBox = targetBulkUpdateWindowLayout.getDsNamecomboBox(); this.descTextArea = targetBulkUpdateWindowLayout.getDescTextArea(); @@ -122,7 +118,6 @@ public class BulkUploadHandler extends CustomComponent this.progressBar = targetBulkUpdateWindowLayout.getProgressBar(); this.managementUIState = managementUIState; this.deploymentManagement = deploymentManagement; - this.uINotification = uINotification; this.targetsCountLabel = targetBulkUpdateWindowLayout.getTargetsCountLabel(); this.targetBulkTokenTags = targetBulkUpdateWindowLayout.getTargetBulkTokenTags(); this.i18n = i18n; @@ -396,7 +391,7 @@ public class BulkUploadHandler extends CustomComponent } - private void setTargetValues(final Target target, final String name, final String description) { + private static void setTargetValues(final Target target, final String name, final String description) { if (null == name) { target.setName(target.getControllerId()); } else { diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetBulkUpdateWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetBulkUpdateWindowLayout.java index e806e4f30..f8e273232 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetBulkUpdateWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/management/targettable/TargetBulkUpdateWindowLayout.java @@ -178,7 +178,7 @@ public class TargetBulkUpdateWindowLayout extends CustomComponent { private BulkUploadHandler getBulkUploadHandler() { final BulkUploadHandler bulkUploadHandler = new BulkUploadHandler(this, targetManagement, managementUIState, - deploymentManagement, uINotification, i18n); + deploymentManagement, i18n); bulkUploadHandler.buildLayout(); bulkUploadHandler.addStyleName(SPUIStyleDefinitions.BULK_UPLOAD_BUTTON); return bulkUploadHandler; diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/menu/DashboardMenu.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/menu/DashboardMenu.java index 1caafe307..defcc82c0 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/menu/DashboardMenu.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/menu/DashboardMenu.java @@ -56,6 +56,11 @@ import com.vaadin.ui.themes.ValoTheme; @UIScope public final class DashboardMenu extends CustomComponent { + private static final String STYLE_VISIBLE = "valo-menu-visible"; + public static final String ID = "dashboard-menu"; + public static final String REPORTS_BADGE_ID = "dashboard-menu-reports-badge"; + public static final String NOTIFICATIONS_BADGE_ID = "dashboard-menu-notifications-badge"; + @Autowired private I18N i18n; @@ -67,11 +72,6 @@ public final class DashboardMenu extends CustomComponent { private static final long serialVersionUID = 5394474618559481462L; - public static final String ID = "dashboard-menu"; - public static final String REPORTS_BADGE_ID = "dashboard-menu-reports-badge"; - public static final String NOTIFICATIONS_BADGE_ID = "dashboard-menu-notifications-badge"; - private static final String STYLE_VISIBLE = "valo-menu-visible"; - // this should be resolved when we introduce event bus on UI to just inform // the buttons directly via events private final List menuButtons = new ArrayList<>(); diff --git a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java index 05eabf249..8a7d11df1 100644 --- a/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java +++ b/hawkbit-ui/src/main/java/org/eclipse/hawkbit/ui/rollout/rollout/AddUpdateRolloutWindowLayout.java @@ -44,8 +44,6 @@ import org.eclipse.hawkbit.ui.utils.SPUIDefinitions; import org.eclipse.hawkbit.ui.utils.SPUILabelDefinitions; import org.eclipse.hawkbit.ui.utils.SPUIStyleDefinitions; import org.eclipse.hawkbit.ui.utils.UINotification; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.vaadin.addons.lazyquerycontainer.BeanQueryFactory; import org.vaadin.addons.lazyquerycontainer.LazyQueryContainer; @@ -80,8 +78,6 @@ public class AddUpdateRolloutWindowLayout extends GridLayout { private static final long serialVersionUID = 2999293468801479916L; - private static final Logger LOG = LoggerFactory.getLogger(AddUpdateRolloutWindowLayout.class); - private static final String MESSAGE_ROLLOUT_FIELD_VALUE_RANGE = "message.rollout.field.value.range"; private static final String MESSAGE_ENTER_NUMBER = "message.enter.number"; @@ -154,6 +150,13 @@ public class AddUpdateRolloutWindowLayout extends GridLayout { buildLayout(); } + /** + * Get the window. + * + * @param rolloutId + * the rollout id + * @return the window + */ public CommonDialogWindow getWindow(final Long rolloutId) { window = getWindow(); populateData(rolloutId);