From ba685ef429bafe8c71d6b611a4add3408dc3cbaa Mon Sep 17 00:00:00 2001 From: Avgustin Marinov Date: Sat, 3 Feb 2024 17:25:30 +0200 Subject: [PATCH] Refactoring/Improving source: repository & fix log() (#1601) (#1602) Signed-off-by: Marinov Avgustin --- .../org/eclipse/hawkbit/api/Base62Util.java | 3 +- .../event/BusProtoStuffMessageConverter.java | 14 +++----- .../org/eclipse/hawkbit/event/EventType.java | 22 ++++++------- .../hawkbit/repository/RolloutHelper.java | 8 ++--- .../repository/RolloutStatusCache.java | 2 ++ .../repository/TimestampCalculator.java | 9 +++--- .../model/helper/EventPublisherHolder.java | 17 ++++------ .../model/helper/SystemManagementHolder.java | 32 +++++-------------- .../helper/SystemSecurityContextHolder.java | 17 ++++------ .../TenantConfigurationManagementHolder.java | 23 +++++-------- .../rsql/VirtualPropertyResolver.java | 3 +- .../hawkbit/security/SecurityConstants.java | 3 +- .../java/org/eclipse/hawkbit/util/IpUtil.java | 3 +- .../org/eclipse/hawkbit/util/UrlUtils.java | 3 +- 14 files changed, 61 insertions(+), 98 deletions(-) diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/api/Base62Util.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/api/Base62Util.java index 5f2433519..da07f10cd 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/api/Base62Util.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/api/Base62Util.java @@ -9,13 +9,14 @@ */ package org.eclipse.hawkbit.api; +import lombok.AccessLevel; import lombok.NoArgsConstructor; /** * Utility class for Base10 to Base62 conversion and vice versa. Base62 has the * benefit of being shorter in ASCII representation than Base10. */ -@NoArgsConstructor +@NoArgsConstructor(access = AccessLevel.PRIVATE) public final class Base62Util { private static final String BASE62_ALPHABET = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; diff --git a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/event/BusProtoStuffMessageConverter.java b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/event/BusProtoStuffMessageConverter.java index a46dd8a93..960e87e2c 100644 --- a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/event/BusProtoStuffMessageConverter.java +++ b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/event/BusProtoStuffMessageConverter.java @@ -9,8 +9,7 @@ */ package org.eclipse.hawkbit.event; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import lombok.extern.slf4j.Slf4j; import org.springframework.cloud.bus.event.RemoteApplicationEvent; import org.springframework.messaging.Message; import org.springframework.messaging.MessageHeaders; @@ -33,12 +32,11 @@ import io.protostuff.runtime.RuntimeSchema; * message header information will get lost. So in this implementation the * information about the event-type is encoded in the payload of the message * directly using the encoded values of {@link EventType}. - * */ +@Slf4j public class BusProtoStuffMessageConverter extends AbstractMessageConverter { public static final MimeType APPLICATION_BINARY_PROTOSTUFF = new MimeType("application", "binary+protostuff"); - private static final Logger LOG = LoggerFactory.getLogger(BusProtoStuffMessageConverter.class); /** * The length of the class type length of the payload. */ @@ -60,9 +58,7 @@ public class BusProtoStuffMessageConverter extends AbstractMessageConverter { public Object convertFromInternal(final Message message, final Class targetClass, final Object conversionHint) { final Object objectPayload = message.getPayload(); - if (objectPayload instanceof byte[]) { - - final byte[] payload = (byte[]) objectPayload; + if (objectPayload instanceof byte[] payload) { final byte[] clazzHeader = extractClazzHeader(payload); final byte[] content = extraxtContent(payload); @@ -86,7 +82,7 @@ public class BusProtoStuffMessageConverter extends AbstractMessageConverter { private static Object readContent(final EventType eventType, final byte[] content) { final Class targetClass = eventType.getTargetClass(); if (targetClass == null) { - LOG.error("Cannot read clazz header for given EventType value {}, missing mapping", eventType.getValue()); + log.error("Cannot read clazz header for given EventType value {}, missing mapping", eventType.getValue()); throw new MessageConversionException("Missing mapping of EventType for value " + eventType.getValue()); } @SuppressWarnings("unchecked") @@ -133,7 +129,7 @@ public class BusProtoStuffMessageConverter extends AbstractMessageConverter { private static byte[] writeClassHeader(final Class clazz) { final EventType clazzEventType = EventType.from(clazz); if (clazzEventType == null) { - LOG.error("There is no mapping to EventType for the given class {}", clazz); + log.error("There is no mapping to EventType for the given class {}", clazz); throw new MessageConversionException("Missing EventType for given class : " + clazz); } @SuppressWarnings("unchecked") diff --git a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/event/EventType.java b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/event/EventType.java index bb3eb0d2d..af71e0d15 100644 --- a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/event/EventType.java +++ b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/event/EventType.java @@ -14,6 +14,10 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Optional; +import lombok.AccessLevel; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.NoArgsConstructor; import org.eclipse.hawkbit.repository.event.remote.DistributionSetDeletedEvent; import org.eclipse.hawkbit.repository.event.remote.DistributionSetTagDeletedEvent; import org.eclipse.hawkbit.repository.event.remote.DistributionSetTypeDeletedEvent; @@ -70,6 +74,10 @@ import org.eclipse.hawkbit.repository.event.remote.entity.TenantConfigurationUpd * between the actual class and the corresponding integer value which is the * encoded value in the byte-payload. */ +// for marshalling and unmarshalling. +@NoArgsConstructor(access = AccessLevel.PUBLIC) +@Getter +@EqualsAndHashCode public class EventType { private static final Map> TYPES = new HashMap<>(); @@ -79,7 +87,6 @@ public class EventType { * declared. Otherwise messages cannot correctly de-serialized. */ static { - // target TYPES.put(1, TargetCreatedEvent.class); TYPES.put(2, TargetUpdatedEvent.class); @@ -163,13 +170,6 @@ public class EventType { private int value; - /** - * Constructor. - */ - public EventType() { - // for marshalling and unmarshalling. - } - /** * Constructor. * @@ -180,10 +180,6 @@ public class EventType { this.value = value; } - public int getValue() { - return value; - } - public Class getTargetClass() { return TYPES.get(value); } @@ -203,4 +199,4 @@ public class EventType { return foundEventType.map(EventType::new).orElse(null); } -} +} \ No newline at end of file diff --git a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/RolloutHelper.java b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/RolloutHelper.java index 0760fa304..13e4db84f 100644 --- a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/RolloutHelper.java +++ b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/RolloutHelper.java @@ -16,6 +16,8 @@ import java.util.stream.Collectors; import jakarta.validation.ValidationException; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; import org.eclipse.hawkbit.repository.exception.AssignmentQuotaExceededException; import org.eclipse.hawkbit.repository.exception.RolloutIllegalStateException; import org.eclipse.hawkbit.repository.model.Rollout; @@ -26,11 +28,9 @@ import org.springframework.util.StringUtils; /** * A collection of static helper methods for the {@link RolloutManagement} */ +@NoArgsConstructor(access = AccessLevel.PRIVATE) public final class RolloutHelper { - private RolloutHelper() { - } - /** * Verifies that the required success condition and action are actually set. * @@ -279,4 +279,4 @@ public final class RolloutHelper { public static String getIdFromRetriedTargetFilter(final String targetFilter) { return targetFilter.substring("failedrollout==".length()); } -} +} \ No newline at end of file diff --git a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/RolloutStatusCache.java b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/RolloutStatusCache.java index 4f5ca2d8b..fd5b5f05e 100644 --- a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/RolloutStatusCache.java +++ b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/RolloutStatusCache.java @@ -38,9 +38,11 @@ import com.github.benmanes.caffeine.cache.Caffeine; * */ public class RolloutStatusCache { + private static final String CACHE_RO_NAME = "RolloutStatus"; private static final String CACHE_GR_NAME = "RolloutGroupStatus"; private static final long DEFAULT_SIZE = 50_000; + private final TenancyCacheManager cacheManager; private final TenantAware tenantAware; diff --git a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/TimestampCalculator.java b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/TimestampCalculator.java index 186c6fc6e..97212a3a8 100644 --- a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/TimestampCalculator.java +++ b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/TimestampCalculator.java @@ -12,6 +12,8 @@ package org.eclipse.hawkbit.repository; import java.time.Duration; import java.time.Instant; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; import org.eclipse.hawkbit.repository.model.helper.SystemSecurityContextHolder; import org.eclipse.hawkbit.repository.model.helper.TenantConfigurationManagementHolder; import org.eclipse.hawkbit.security.SystemSecurityContext; @@ -22,13 +24,10 @@ import org.eclipse.hawkbit.tenancy.configuration.TenantConfigurationProperties.T * Calculates non-persistent timestamps , e.g. the point a time a target is * declared as overdue.
* Therefore tenant specific configuration may be considered. - * */ +@NoArgsConstructor(access = AccessLevel.PRIVATE) public final class TimestampCalculator { - private TimestampCalculator() { - } - /** * Calculates the overdue timestamp (overdue_ts) based on the * current timestamp and the intervals for polling and poll-overdue: @@ -62,4 +61,4 @@ public final class TimestampCalculator { private static TenantConfigurationManagement getTenantConfigurationManagement() { return TenantConfigurationManagementHolder.getInstance().getTenantConfigurationManagement(); } -} +} \ No newline at end of file diff --git a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/model/helper/EventPublisherHolder.java b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/model/helper/EventPublisherHolder.java index f87030efa..717250fbc 100644 --- a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/model/helper/EventPublisherHolder.java +++ b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/model/helper/EventPublisherHolder.java @@ -9,6 +9,9 @@ */ package org.eclipse.hawkbit.repository.model.helper; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cloud.bus.BusProperties; import org.springframework.cloud.bus.ServiceMatcher; @@ -19,10 +22,12 @@ import org.springframework.context.ApplicationEventPublisher; * order to publish remote application events. It can be used in beans not * instantiated by spring e.g. JPA entities which cannot be auto-wired. */ +@NoArgsConstructor(access = AccessLevel.PRIVATE) public final class EventPublisherHolder { private static final EventPublisherHolder SINGLETON = new EventPublisherHolder(); + @Getter @Autowired private ApplicationEventPublisher eventPublisher; @@ -32,9 +37,6 @@ public final class EventPublisherHolder { @Autowired private BusProperties bus; - private EventPublisherHolder() { - } - /** * @return the event publisher holder singleton instance */ @@ -42,13 +44,6 @@ public final class EventPublisherHolder { return SINGLETON; } - /** - * @return the eventPublisher - */ - public ApplicationEventPublisher getEventPublisher() { - return eventPublisher; - } - /** * @return the service origin Id coming either from {@link ServiceMatcher} * when available or {@link BusProperties} otherwise. @@ -63,4 +58,4 @@ public final class EventPublisherHolder { } return id; } -} +} \ No newline at end of file diff --git a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/model/helper/SystemManagementHolder.java b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/model/helper/SystemManagementHolder.java index 82caa0d61..d39b207e5 100644 --- a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/model/helper/SystemManagementHolder.java +++ b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/model/helper/SystemManagementHolder.java @@ -9,26 +9,26 @@ */ package org.eclipse.hawkbit.repository.model.helper; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; import org.eclipse.hawkbit.repository.SystemManagement; import org.springframework.beans.factory.annotation.Autowired; /** * A singleton bean which holds {@link SystemManagement} service and makes it * accessible to beans which are not managed by spring, e.g. JPA entities. - * - * - * - **/ + */ +@NoArgsConstructor(access = AccessLevel.PRIVATE) public final class SystemManagementHolder { private static final SystemManagementHolder INSTANCE = new SystemManagementHolder(); + @Getter @Setter @Autowired private SystemManagement systemManagement; - private SystemManagementHolder() { - } - /** * @return the singleton {@link SystemManagementHolder} instance */ @@ -36,26 +36,10 @@ public final class SystemManagementHolder { return INSTANCE; } - /** - * @return the systemManagement - */ - public SystemManagement getSystemManagement() { - return systemManagement; - } - - /** - * @param systemManagement - * the systemManagement to set - */ - public void setSystemManagement(final SystemManagement systemManagement) { - this.systemManagement = systemManagement; - } - /** * @return the {@link SystemManagement#currentTenant()}. */ public String currentTenant() { return systemManagement.currentTenant(); } - -} +} \ No newline at end of file diff --git a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/model/helper/SystemSecurityContextHolder.java b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/model/helper/SystemSecurityContextHolder.java index ebf26983c..f07e462c3 100644 --- a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/model/helper/SystemSecurityContextHolder.java +++ b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/model/helper/SystemSecurityContextHolder.java @@ -9,6 +9,9 @@ */ package org.eclipse.hawkbit.repository.model.helper; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; import org.eclipse.hawkbit.security.SystemSecurityContext; import org.springframework.beans.factory.annotation.Autowired; @@ -16,27 +19,19 @@ import org.springframework.beans.factory.annotation.Autowired; * A singleton bean which holds {@link SystemSecurityContext} service and makes * it accessible to beans which are not managed by spring, e.g. JPA entities. */ +@NoArgsConstructor(access = AccessLevel.PRIVATE) public final class SystemSecurityContextHolder { private static final SystemSecurityContextHolder INSTANCE = new SystemSecurityContextHolder(); + @Getter @Autowired private SystemSecurityContext systemSecurityContext; - private SystemSecurityContextHolder() { - } - /** * @return the singleton {@link SystemSecurityContextHolder} instance */ public static SystemSecurityContextHolder getInstance() { return INSTANCE; } - - /** - * @return the {@link SystemSecurityContext} service - */ - public SystemSecurityContext getSystemSecurityContext() { - return systemSecurityContext; - } -} +} \ No newline at end of file diff --git a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/model/helper/TenantConfigurationManagementHolder.java b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/model/helper/TenantConfigurationManagementHolder.java index 2d43be245..d4fdf55f4 100644 --- a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/model/helper/TenantConfigurationManagementHolder.java +++ b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/model/helper/TenantConfigurationManagementHolder.java @@ -9,6 +9,9 @@ */ package org.eclipse.hawkbit.repository.model.helper; +import lombok.AccessLevel; +import lombok.Getter; +import lombok.NoArgsConstructor; import org.eclipse.hawkbit.repository.TenantConfigurationManagement; import org.springframework.beans.factory.annotation.Autowired; @@ -17,29 +20,19 @@ import org.springframework.beans.factory.annotation.Autowired; * and makes it accessible to beans which are not managed by spring, e.g. JPA * entities. */ +@NoArgsConstructor(access = AccessLevel.PRIVATE) public final class TenantConfigurationManagementHolder { private static final TenantConfigurationManagementHolder INSTANCE = new TenantConfigurationManagementHolder(); + @Getter @Autowired - private TenantConfigurationManagement tenantConfiguration; - - private TenantConfigurationManagementHolder() { - } + private TenantConfigurationManagement tenantConfigurationManagement; /** - * @return the singleton {@link TenantConfigurationManagementHolder} - * instance + * @return the singleton {@link TenantConfigurationManagementHolder} instance */ public static TenantConfigurationManagementHolder getInstance() { return INSTANCE; } - - /** - * @return the {@link TenantConfigurationManagement} service - */ - public TenantConfigurationManagement getTenantConfigurationManagement() { - return tenantConfiguration; - } - -} +} \ No newline at end of file diff --git a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/rsql/VirtualPropertyResolver.java b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/rsql/VirtualPropertyResolver.java index 58174868b..f0eeadeed 100644 --- a/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/rsql/VirtualPropertyResolver.java +++ b/hawkbit-repository/hawkbit-repository-core/src/main/java/org/eclipse/hawkbit/repository/rsql/VirtualPropertyResolver.java @@ -67,5 +67,4 @@ public class VirtualPropertyResolver extends StrLookup implements Virtua } return substitutor.replace(input); } - -} +} \ No newline at end of file diff --git a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SecurityConstants.java b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SecurityConstants.java index 8060f8cc8..44e4ffb62 100644 --- a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SecurityConstants.java +++ b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/SecurityConstants.java @@ -9,12 +9,13 @@ */ package org.eclipse.hawkbit.security; +import lombok.AccessLevel; import lombok.NoArgsConstructor; /** * Constants related to security. */ -@NoArgsConstructor +@NoArgsConstructor(access = AccessLevel.PRIVATE) public final class SecurityConstants { /** diff --git a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/util/IpUtil.java b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/util/IpUtil.java index 65167042e..535f0a72e 100644 --- a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/util/IpUtil.java +++ b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/util/IpUtil.java @@ -16,6 +16,7 @@ import java.util.regex.Pattern; import jakarta.servlet.http.HttpServletRequest; +import lombok.AccessLevel; import lombok.NoArgsConstructor; import org.eclipse.hawkbit.security.HawkbitSecurityProperties; @@ -23,7 +24,7 @@ import org.eclipse.hawkbit.security.HawkbitSecurityProperties; * A utility which determines the correct IP of a connected {@link Target}. E.g * from a {@link HttpServletRequest}. */ -@NoArgsConstructor +@NoArgsConstructor(access = AccessLevel.PRIVATE) // Exception squid:S2083 - false positive, file paths not handled here @SuppressWarnings("squid:S2083") public final class IpUtil { diff --git a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/util/UrlUtils.java b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/util/UrlUtils.java index 77a4b5d30..2fee20d4e 100644 --- a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/util/UrlUtils.java +++ b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/util/UrlUtils.java @@ -9,12 +9,13 @@ */ package org.eclipse.hawkbit.util; +import lombok.AccessLevel; import lombok.NoArgsConstructor; import org.springframework.web.util.UriUtils; import java.nio.charset.StandardCharsets; -@NoArgsConstructor +@NoArgsConstructor(access = AccessLevel.PRIVATE) public class UrlUtils { public static String decodeUriValue(String value) {