Feature/fix sonar warnings (#1226)
* Fixed sonar warnings - "Cognitive Complexity" - "Do not use replaceAll when not using a regex" - java:S5869 - Character classes in regular expressions should not contain the same character twice - Improved bad name - Typos - reduced code duplications - Replaced hand-made wait-utility with Awaitility - Log messages - Duplicate code - Typos - Removed Thread.sleep, instead relaxed check condition - Removed use of deprecated API - Removed use of deprecated API - Added supress-warnings as I do not see a better way to write the tests - Removed Thread.sleep / redundant functionality to Awaitility - Fixed other warnings (use isZero, isEmpty, hasToString) - Removed/Reduced duplicate code - Added generics - Fixed asserts - removed: field.setAccessible(true) actually should not be needed for public static fields! - Too long constructor passes arguments in wrong order - how surprisingly... - Clean-up use of varargs arguments - Fixed regex - Fixed typos and other minor stuff - Making public constructors protected in abstract classes - Swapped expected and asserted argument - volatile not enough for syncing threads - volatile not enough for syncing threads - out-commented code - Made regex not-greedy, added tests for verification - Avoid exposure of thread-local member var Signed-off-by: Peter Vigier <Peter.Vigier@bosch.io> * Fixed Sonar warnings * License header fix Signed-off-by: Peter Vigier <Peter.Vigier@bosch.io> * License header fix #2 Signed-off-by: Peter Vigier <Peter.Vigier@bosch.io> * Fixing review findings Signed-off-by: Peter Vigier <Peter.Vigier@bosch.io> * Fixing tests - Fixed '&' usage in javadoc and typos - Fixing some warnings Signed-off-by: Peter Vigier <Peter.Vigier@bosch.io>
This commit is contained in:
@@ -14,6 +14,8 @@ import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
import org.eclipse.hawkbit.cache.TenancyCacheManager;
|
||||
import org.eclipse.hawkbit.cache.TenantAwareCacheManager;
|
||||
import org.eclipse.hawkbit.repository.event.remote.RolloutDeletedEvent;
|
||||
@@ -74,9 +76,7 @@ public class RolloutStatusCache {
|
||||
* @return map of cached entries
|
||||
*/
|
||||
public Map<Long, List<TotalTargetCountActionStatus>> getRolloutStatus(final List<Long> rollouts) {
|
||||
final Cache cache = cacheManager.getCache(CACHE_RO_NAME);
|
||||
|
||||
return retrieveFromCache(rollouts, cache);
|
||||
return retrieveFromCache(rollouts, getRolloutStatusCache());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -88,9 +88,7 @@ public class RolloutStatusCache {
|
||||
* @return map of cached entries
|
||||
*/
|
||||
public List<TotalTargetCountActionStatus> getRolloutStatus(final Long rolloutId) {
|
||||
final Cache cache = cacheManager.getCache(CACHE_RO_NAME);
|
||||
|
||||
return retrieveFromCache(rolloutId, cache);
|
||||
return retrieveFromCache(rolloutId, getRolloutStatusCache());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -102,9 +100,7 @@ public class RolloutStatusCache {
|
||||
* @return map of cached entries
|
||||
*/
|
||||
public Map<Long, List<TotalTargetCountActionStatus>> getRolloutGroupStatus(final List<Long> rolloutGroups) {
|
||||
final Cache cache = cacheManager.getCache(CACHE_GR_NAME);
|
||||
|
||||
return retrieveFromCache(rolloutGroups, cache);
|
||||
return retrieveFromCache(rolloutGroups, getGroupStatusCache());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -116,9 +112,7 @@ public class RolloutStatusCache {
|
||||
* @return map of cached entries
|
||||
*/
|
||||
public List<TotalTargetCountActionStatus> getRolloutGroupStatus(final Long groupId) {
|
||||
final Cache cache = cacheManager.getCache(CACHE_GR_NAME);
|
||||
|
||||
return retrieveFromCache(groupId, cache);
|
||||
return retrieveFromCache(groupId, getGroupStatusCache());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -129,8 +123,7 @@ public class RolloutStatusCache {
|
||||
* map of cached entries
|
||||
*/
|
||||
public void putRolloutStatus(final Map<Long, List<TotalTargetCountActionStatus>> put) {
|
||||
final Cache cache = cacheManager.getCache(CACHE_RO_NAME);
|
||||
putIntoCache(put, cache);
|
||||
putIntoCache(put, getRolloutStatusCache());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -144,10 +137,10 @@ public class RolloutStatusCache {
|
||||
*
|
||||
*/
|
||||
public void putRolloutStatus(final Long rolloutId, final List<TotalTargetCountActionStatus> status) {
|
||||
final Cache cache = cacheManager.getCache(CACHE_RO_NAME);
|
||||
putIntoCache(rolloutId, status, cache);
|
||||
putIntoCache(rolloutId, status, getRolloutStatusCache());
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Put {@link TotalTargetCountActionStatus} for multiple
|
||||
* {@link RolloutGroup}s into cache.
|
||||
@@ -156,8 +149,7 @@ public class RolloutStatusCache {
|
||||
* map of cached entries
|
||||
*/
|
||||
public void putRolloutGroupStatus(final Map<Long, List<TotalTargetCountActionStatus>> put) {
|
||||
final Cache cache = cacheManager.getCache(CACHE_GR_NAME);
|
||||
putIntoCache(put, cache);
|
||||
putIntoCache(put, getGroupStatusCache());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -170,17 +162,17 @@ public class RolloutStatusCache {
|
||||
* list to cache
|
||||
*/
|
||||
public void putRolloutGroupStatus(final Long groupId, final List<TotalTargetCountActionStatus> status) {
|
||||
final Cache cache = cacheManager.getCache(CACHE_GR_NAME);
|
||||
putIntoCache(groupId, status, cache);
|
||||
putIntoCache(groupId, status, getGroupStatusCache());
|
||||
}
|
||||
|
||||
private Map<Long, List<TotalTargetCountActionStatus>> retrieveFromCache(final List<Long> ids, final Cache cache) {
|
||||
private Map<Long, List<TotalTargetCountActionStatus>> retrieveFromCache(final List<Long> ids,
|
||||
@NotNull final Cache cache) {
|
||||
return ids.stream().map(id -> cache.get(id, CachedTotalTargetCountActionStatus.class)).filter(Objects::nonNull)
|
||||
.collect(Collectors.toMap(CachedTotalTargetCountActionStatus::getId,
|
||||
CachedTotalTargetCountActionStatus::getStatus));
|
||||
}
|
||||
|
||||
private List<TotalTargetCountActionStatus> retrieveFromCache(final Long id, final Cache cache) {
|
||||
private List<TotalTargetCountActionStatus> retrieveFromCache(final Long id, @NotNull final Cache cache) {
|
||||
final CachedTotalTargetCountActionStatus cacheItem = cache.get(id, CachedTotalTargetCountActionStatus.class);
|
||||
|
||||
if (cacheItem == null) {
|
||||
@@ -190,17 +182,17 @@ public class RolloutStatusCache {
|
||||
return cacheItem.getStatus();
|
||||
}
|
||||
|
||||
private void putIntoCache(final Long id, final List<TotalTargetCountActionStatus> status, final Cache cache) {
|
||||
private void putIntoCache(final Long id, final List<TotalTargetCountActionStatus> status,
|
||||
@NotNull final Cache cache) {
|
||||
cache.put(id, new CachedTotalTargetCountActionStatus(id, status));
|
||||
}
|
||||
|
||||
private void putIntoCache(final Map<Long, List<TotalTargetCountActionStatus>> put, final Cache cache) {
|
||||
put.entrySet().forEach(entry -> cache.put(entry.getKey(),
|
||||
new CachedTotalTargetCountActionStatus(entry.getKey(), entry.getValue())));
|
||||
private void putIntoCache(final Map<Long, List<TotalTargetCountActionStatus>> put, @NotNull final Cache cache) {
|
||||
put.forEach((k, v) -> cache.put(k, new CachedTotalTargetCountActionStatus(k, v)));
|
||||
}
|
||||
|
||||
@EventListener(classes = AbstractActionEvent.class)
|
||||
void invalidateCachedTotalTargetCountActionStatus(final AbstractActionEvent event) {
|
||||
public void invalidateCachedTotalTargetCountActionStatus(final AbstractActionEvent event) {
|
||||
if (event.getRolloutId() != null) {
|
||||
final Cache cache = tenantAware.runAsTenant(event.getTenant(), () -> cacheManager.getCache(CACHE_RO_NAME));
|
||||
cache.evict(event.getRolloutId());
|
||||
@@ -213,19 +205,19 @@ public class RolloutStatusCache {
|
||||
}
|
||||
|
||||
@EventListener(classes = RolloutDeletedEvent.class)
|
||||
void invalidateCachedTotalTargetCountOnRolloutDelete(final RolloutDeletedEvent event) {
|
||||
public void invalidateCachedTotalTargetCountOnRolloutDelete(final RolloutDeletedEvent event) {
|
||||
final Cache cache = tenantAware.runAsTenant(event.getTenant(), () -> cacheManager.getCache(CACHE_RO_NAME));
|
||||
cache.evict(event.getEntityId());
|
||||
}
|
||||
|
||||
@EventListener(classes = RolloutGroupDeletedEvent.class)
|
||||
void invalidateCachedTotalTargetCountOnRolloutGroupDelete(final RolloutGroupDeletedEvent event) {
|
||||
public void invalidateCachedTotalTargetCountOnRolloutGroupDelete(final RolloutGroupDeletedEvent event) {
|
||||
final Cache cache = tenantAware.runAsTenant(event.getTenant(), () -> cacheManager.getCache(CACHE_GR_NAME));
|
||||
cache.evict(event.getEntityId());
|
||||
}
|
||||
|
||||
@EventListener(classes = RolloutStoppedEvent.class)
|
||||
void invalidateCachedTotalTargetCountOnRolloutStopped(final RolloutStoppedEvent event) {
|
||||
public void invalidateCachedTotalTargetCountOnRolloutStopped(final RolloutStoppedEvent event) {
|
||||
final Cache cache = tenantAware.runAsTenant(event.getTenant(), () -> cacheManager.getCache(CACHE_RO_NAME));
|
||||
cache.evict(event.getRolloutId());
|
||||
|
||||
@@ -247,6 +239,14 @@ public class RolloutStatusCache {
|
||||
cacheManager.evictCaches(tenant);
|
||||
}
|
||||
|
||||
private @NotNull Cache getRolloutStatusCache() {
|
||||
return Objects.requireNonNull(cacheManager.getCache(CACHE_RO_NAME), "Cache '" + CACHE_RO_NAME + "' is null!");
|
||||
}
|
||||
|
||||
private @NotNull Cache getGroupStatusCache() {
|
||||
return Objects.requireNonNull(cacheManager.getCache(CACHE_GR_NAME), "Cache '" + CACHE_RO_NAME + "' is null!");
|
||||
}
|
||||
|
||||
private static final class CachedTotalTargetCountActionStatus {
|
||||
private final long id;
|
||||
private final List<TotalTargetCountActionStatus> status;
|
||||
|
||||
Reference in New Issue
Block a user