From bce69676d284693ab27773d4a4c1f04e06a8e8ce Mon Sep 17 00:00:00 2001 From: Avgustin Marinov Date: Fri, 2 Feb 2024 22:21:46 +0200 Subject: [PATCH] Reduce dependency on Guava (#1589) Signed-off-by: Marinov Avgustin --- CONTRIBUTING.md | 8 +-- .../pom.xml | 4 -- .../ArtifactFilesystemRepository.java | 4 +- hawkbit-autoconfigure/pom.xml | 4 -- hawkbit-core/pom.xml | 5 +- .../AbstractArtifactRepository.java | 15 +++-- hawkbit-dmf/hawkbit-dmf-amqp/pom.xml | 4 -- .../hawkbit/amqp/AmqpConfiguration.java | 7 +- .../amqp/AmqpControllerAuthentication.java | 5 +- .../amqp/AmqpDeadletterProperties.java | 7 +- .../amqp/AmqpMessageDispatcherService.java | 3 +- hawkbit-dmf/hawkbit-dmf-rabbitmq-test/pom.xml | 4 -- .../hawkbit-repository-api/pom.xml | 5 -- ...gementMethodPreAuthorizeAnnotatedTest.java | 10 +-- .../hawkbit-repository-core/pom.xml | 4 -- .../hawkbit-repository-jpa/pom.xml | 4 -- .../RepositoryApplicationConfiguration.java | 5 +- .../ExceptionMappingAspectHandler.java | 9 ++- .../management/JpaControllerManagement.java | 11 ++-- .../management/JpaDeploymentManagement.java | 3 +- .../JpaDistributionSetManagement.java | 4 +- .../jpa/management/JpaRolloutManagement.java | 4 +- .../JpaTargetFilterQueryManagement.java | 5 +- .../jpa/management/JpaTargetManagement.java | 3 +- .../OfflineDsAssignmentStrategy.java | 3 +- .../OnlineDsAssignmentStrategy.java | 3 +- .../repository/jpa/model/JpaActionStatus.java | 3 +- .../jpa/rsql/JpaQueryRsqlVisitor.java | 3 +- .../event/remote/AbstractRemoteEventTest.java | 8 +-- .../jpa/AbstractJpaIntegrationTest.java | 21 +++++- .../management/ArtifactManagementTest.java | 11 ++-- .../management/ControllerManagementTest.java | 19 +++--- .../management/DeploymentManagementTest.java | 30 ++++----- .../DistributionSetManagementTest.java | 19 +++--- .../DistributionSetTypeManagementTest.java | 13 ++-- .../SoftwareModuleManagementTest.java | 21 +++--- .../TargetManagementSearchTest.java | 6 +- .../jpa/management/TargetManagementTest.java | 25 ++++---- .../RSQLSoftwareModuleMetadataFieldsTest.java | 5 +- .../hawkbit-repository-test/pom.xml | 4 -- .../test/matcher/EventVerifier.java | 7 +- .../test/util/HashGeneratorUtils.java | 5 +- .../repository/test/util/TestdataFactory.java | 16 ++--- hawkbit-rest/hawkbit-ddi-api/pom.xml | 5 -- .../JsonIgnorePropertiesAnnotationTest.java | 4 +- hawkbit-rest/hawkbit-ddi-resource/pom.xml | 4 -- .../resource/DdiArtifactDownloadTest.java | 6 +- .../ddi/rest/resource/DdiConfigDataTest.java | 4 +- .../ddi/rest/resource/DosFilterTest.java | 19 +++--- hawkbit-rest/hawkbit-mgmt-resource/pom.xml | 5 -- .../MgmtSystemManagementResource.java | 25 ++------ .../MgmtDistributionSetResourceTest.java | 10 ++- .../MgmtDistributionSetTypeResourceTest.java | 3 +- .../rest/resource/MgmtTargetResourceTest.java | 3 +- .../resource/MgmtTargetTypeResourceTest.java | 2 +- hawkbit-rest/hawkbit-rest-core/pom.xml | 4 -- .../exception/ResponseExceptionHandler.java | 4 +- .../hawkbit/rest/util/FileStreamingUtil.java | 16 ++--- .../ui/simple/view/util/SelectionGrid.java | 3 +- hawkbit-security-core/pom.xml | 8 +-- .../security/HawkbitSecurityProperties.java | 4 +- .../org/eclipse/hawkbit/util/IpUtilTest.java | 2 +- pom.xml | 64 +++++++++---------- 63 files changed, 222 insertions(+), 332 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index cfee73740..2f5f62533 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -24,7 +24,7 @@ Please read this if you intend to contribute to the project. ### Utility library usage -hawkBit has currently both [guava](https://github.com/google/guava) and [Apache commons lang](https://commons.apache.org/proper/commons-lang/) on the classpath in several of its modules. However, we see introducing too many utility libraries problematic as we force these as transitive dependencies on hawkBit users. We in fact are looking into reducing them in future not adding new ones. +hawkBit has currently [Apache commons lang](https://commons.apache.org/proper/commons-lang/) on the classpath in several of its modules. However, we see introducing too many utility libraries problematic as we force these as transitive dependencies on hawkBit users. We in fact are looking into reducing them in future not adding new ones. So we kindly ask contributors: @@ -33,14 +33,8 @@ So we kindly ask contributors: * use utility functions in general based in the following priority: * use utility functions from JDK if feasible * use Spring utility classes if feasible - * use [Guava](https://github.com/google/guava) if feasible * use [Apache commons lang](https://commons.apache.org/proper/commons-lang/) if feasible -Examples: - -* Prefer `Arrays.asList(...)` from JDK over Guava's `Lists.newArrayList(...)` -* Prefer `StringUtils` from Spring over Guava's `Strings` and Apache's `StringUtils` - ### Test documentation Please document the test cases that you contribute by means of [Allure](https://docs.qameta.io/allure/) annotations and proper test method naming. diff --git a/hawkbit-artifact-repository-filesystem/pom.xml b/hawkbit-artifact-repository-filesystem/pom.xml index 5106e16bd..ec6c7aadd 100644 --- a/hawkbit-artifact-repository-filesystem/pom.xml +++ b/hawkbit-artifact-repository-filesystem/pom.xml @@ -25,10 +25,6 @@ hawkbit-core ${project.version} - - com.google.guava - guava - org.springframework spring-core diff --git a/hawkbit-artifact-repository-filesystem/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystemRepository.java b/hawkbit-artifact-repository-filesystem/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystemRepository.java index 7f8339682..866787ecf 100644 --- a/hawkbit-artifact-repository-filesystem/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystemRepository.java +++ b/hawkbit-artifact-repository-filesystem/src/main/java/org/eclipse/hawkbit/artifact/repository/ArtifactFilesystemRepository.java @@ -11,6 +11,7 @@ package org.eclipse.hawkbit.artifact.repository; import java.io.File; import java.io.IOException; +import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; @@ -21,7 +22,6 @@ import org.eclipse.hawkbit.artifact.repository.model.DbArtifactHash; import org.springframework.validation.annotation.Validated; import com.google.common.base.Splitter; -import com.google.common.io.Files; /** * Implementation of the {@link ArtifactRepository} to store artifacts on the @@ -79,7 +79,7 @@ public class ArtifactFilesystemRepository extends AbstractArtifactRepository { if (fileSHA1Naming.exists()) { FileUtils.deleteQuietly(file); } else { - Files.move(file, fileSHA1Naming); + Files.move(file.toPath(), fileSHA1Naming.toPath()); } return new ArtifactFilesystem(fileSHA1Naming, artifact.getArtifactId(), artifact.getHashes(), diff --git a/hawkbit-autoconfigure/pom.xml b/hawkbit-autoconfigure/pom.xml index a3ac40609..3d4dba7d2 100644 --- a/hawkbit-autoconfigure/pom.xml +++ b/hawkbit-autoconfigure/pom.xml @@ -71,10 +71,6 @@ org.springframework spring-context-support - - - com.google.guava - guava io.protostuff diff --git a/hawkbit-core/pom.xml b/hawkbit-core/pom.xml index cf48def9c..974ee4a1a 100644 --- a/hawkbit-core/pom.xml +++ b/hawkbit-core/pom.xml @@ -34,8 +34,9 @@ jakarta.validation-api - com.google.guava - guava + commons-io + commons-io + ${commons-io.version} diff --git a/hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/AbstractArtifactRepository.java b/hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/AbstractArtifactRepository.java index ef4751a04..3740c6e40 100644 --- a/hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/AbstractArtifactRepository.java +++ b/hawkbit-core/src/main/java/org/eclipse/hawkbit/artifact/repository/AbstractArtifactRepository.java @@ -19,16 +19,15 @@ import java.nio.file.Files; import java.security.DigestInputStream; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; +import java.util.HexFormat; +import org.apache.commons.io.IOUtils; import org.eclipse.hawkbit.artifact.repository.model.AbstractDbArtifact; import org.eclipse.hawkbit.artifact.repository.model.DbArtifactHash; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.util.StringUtils; -import com.google.common.io.BaseEncoding; -import com.google.common.io.ByteStreams; - /** * Abstract utility class for ArtifactRepository implementations with common * functionality, e.g. computation of hashes. @@ -61,9 +60,11 @@ public abstract class AbstractArtifactRepository implements ArtifactRepository { tempFile = storeTempFile(inputStream); - final String sha1Hash16 = BaseEncoding.base16().lowerCase().encode(mdSHA1.digest()); - final String md5Hash16 = BaseEncoding.base16().lowerCase().encode(mdMD5.digest()); - final String sha256Hash16 = BaseEncoding.base16().lowerCase().encode(mdSHA256.digest()); + final HexFormat hexFormat = HexFormat.of().withLowerCase(); + + final String sha1Hash16 = hexFormat.formatHex(mdSHA1.digest()); + final String md5Hash16 = hexFormat.formatHex(mdMD5.digest()); + final String sha256Hash16 = hexFormat.formatHex(mdSHA256.digest()); checkHashes(sha1Hash16, md5Hash16, sha256Hash16, providedHashes); @@ -110,7 +111,7 @@ public abstract class AbstractArtifactRepository implements ArtifactRepository { protected String storeTempFile(final InputStream content) throws IOException { final File file = createTempFile(); try (final OutputStream outputstream = new BufferedOutputStream(new FileOutputStream(file))) { - ByteStreams.copy(content, outputstream); + IOUtils.copy(content, outputstream); outputstream.flush(); } return file.getPath(); diff --git a/hawkbit-dmf/hawkbit-dmf-amqp/pom.xml b/hawkbit-dmf/hawkbit-dmf-amqp/pom.xml index d520ef4ff..97f8a8ed3 100644 --- a/hawkbit-dmf/hawkbit-dmf-amqp/pom.xml +++ b/hawkbit-dmf/hawkbit-dmf-amqp/pom.xml @@ -62,10 +62,6 @@ org.springframework.boot spring-boot-starter-json - - com.google.guava - guava - org.slf4j slf4j-api diff --git a/hawkbit-dmf/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java b/hawkbit-dmf/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java index cc858f813..e4dcf02d6 100644 --- a/hawkbit-dmf/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java +++ b/hawkbit-dmf/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpConfiguration.java @@ -9,7 +9,6 @@ */ package org.eclipse.hawkbit.amqp; -import com.google.common.collect.Maps; import org.eclipse.hawkbit.api.ArtifactUrlHandler; import org.eclipse.hawkbit.api.HostnameResolver; import org.eclipse.hawkbit.cache.DownloadIdCache; @@ -54,6 +53,7 @@ import org.springframework.retry.support.RetryTemplate; import org.springframework.util.ErrorHandler; import java.time.Duration; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -366,10 +366,9 @@ public class AmqpConfiguration { } private static Map getTTLMaxArgsAuthenticationQueue() { - final Map args = Maps.newHashMapWithExpectedSize(2); + final Map args = new HashMap<>(2); args.put("x-message-ttl", Duration.ofSeconds(30).toMillis()); args.put("x-max-length", 1_000); return args; } - -} +} \ No newline at end of file diff --git a/hawkbit-dmf/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpControllerAuthentication.java b/hawkbit-dmf/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpControllerAuthentication.java index 622b073d4..2973abd0a 100644 --- a/hawkbit-dmf/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpControllerAuthentication.java +++ b/hawkbit-dmf/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpControllerAuthentication.java @@ -9,6 +9,7 @@ */ package org.eclipse.hawkbit.amqp; +import java.util.ArrayList; import java.util.List; import jakarta.annotation.PostConstruct; @@ -33,8 +34,6 @@ import org.slf4j.LoggerFactory; import org.springframework.security.core.Authentication; import org.springframework.security.web.authentication.preauth.PreAuthenticatedAuthenticationToken; -import com.google.common.collect.Lists; - /** * * A controller which handles the DMF AMQP authentication. @@ -93,7 +92,7 @@ public class AmqpControllerAuthentication { } private void addFilter() { - filterChain = Lists.newArrayListWithExpectedSize(5); + filterChain = new ArrayList<>(5); final ControllerPreAuthenticatedGatewaySecurityTokenFilter gatewaySecurityTokenFilter = new ControllerPreAuthenticatedGatewaySecurityTokenFilter( tenantConfigurationManagement, tenantAware, systemSecurityContext); diff --git a/hawkbit-dmf/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpDeadletterProperties.java b/hawkbit-dmf/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpDeadletterProperties.java index 41b9d1b3f..f3b9c3fce 100644 --- a/hawkbit-dmf/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpDeadletterProperties.java +++ b/hawkbit-dmf/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpDeadletterProperties.java @@ -10,13 +10,12 @@ package org.eclipse.hawkbit.amqp; import java.time.Duration; +import java.util.HashMap; import java.util.Map; import org.springframework.amqp.core.Queue; import org.springframework.boot.context.properties.ConfigurationProperties; -import com.google.common.collect.Maps; - /** * Bean which holds the necessary properties for configuring the AMQP deadletter * queue. @@ -39,7 +38,7 @@ public class AmqpDeadletterProperties { * @return map which holds the properties */ public Map getDeadLetterExchangeArgs(final String exchange) { - final Map args = Maps.newHashMapWithExpectedSize(1); + final Map args = new HashMap<>(1); args.put("x-dead-letter-exchange", exchange); return args; } @@ -56,7 +55,7 @@ public class AmqpDeadletterProperties { } private Map getTTLArgs() { - final Map args = Maps.newHashMapWithExpectedSize(1); + final Map args = new HashMap<>(1); args.put("x-message-ttl", getTtl()); return args; } diff --git a/hawkbit-dmf/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageDispatcherService.java b/hawkbit-dmf/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageDispatcherService.java index 5224c45a7..b92ad2f39 100644 --- a/hawkbit-dmf/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageDispatcherService.java +++ b/hawkbit-dmf/hawkbit-dmf-amqp/src/main/java/org/eclipse/hawkbit/amqp/AmqpMessageDispatcherService.java @@ -25,6 +25,7 @@ import java.util.function.Supplier; import java.util.stream.Collectors; import java.util.stream.StreamSupport; +import com.google.common.collect.Iterables; import org.eclipse.hawkbit.api.ApiType; import org.eclipse.hawkbit.api.ArtifactUrl; import org.eclipse.hawkbit.api.ArtifactUrlHandler; @@ -79,8 +80,6 @@ import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.util.CollectionUtils; -import com.google.common.collect.Iterables; - /** * {@link AmqpMessageDispatcherService} create all outgoing AMQP messages and * delegate the messages to a {@link AmqpMessageSenderService}. diff --git a/hawkbit-dmf/hawkbit-dmf-rabbitmq-test/pom.xml b/hawkbit-dmf/hawkbit-dmf-rabbitmq-test/pom.xml index 114f5506d..64f21fd93 100644 --- a/hawkbit-dmf/hawkbit-dmf-rabbitmq-test/pom.xml +++ b/hawkbit-dmf/hawkbit-dmf-rabbitmq-test/pom.xml @@ -43,10 +43,6 @@ hawkbit-dmf-api ${project.version} - - com.google.guava - guava - org.springframework.amqp spring-rabbit-junit diff --git a/hawkbit-repository/hawkbit-repository-api/pom.xml b/hawkbit-repository/hawkbit-repository-api/pom.xml index 3aa04828f..ee322f4d7 100644 --- a/hawkbit-repository/hawkbit-repository-api/pom.xml +++ b/hawkbit-repository/hawkbit-repository-api/pom.xml @@ -88,10 +88,5 @@ spring-boot-starter-test test - - com.google.guava - guava - test - diff --git a/hawkbit-repository/hawkbit-repository-api/src/test/java/org/eclipse/hawkbit/repository/RepositoryManagementMethodPreAuthorizeAnnotatedTest.java b/hawkbit-repository/hawkbit-repository-api/src/test/java/org/eclipse/hawkbit/repository/RepositoryManagementMethodPreAuthorizeAnnotatedTest.java index beb4c57d8..e5ac71040 100644 --- a/hawkbit-repository/hawkbit-repository-api/src/test/java/org/eclipse/hawkbit/repository/RepositoryManagementMethodPreAuthorizeAnnotatedTest.java +++ b/hawkbit-repository/hawkbit-repository-api/src/test/java/org/eclipse/hawkbit/repository/RepositoryManagementMethodPreAuthorizeAnnotatedTest.java @@ -14,18 +14,16 @@ import static org.assertj.core.api.Assertions.assertThat; import java.io.IOException; import java.lang.reflect.Method; import java.lang.reflect.Modifier; -import java.net.URISyntaxException; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.regex.Pattern; import java.util.stream.Collectors; +import com.google.common.reflect.ClassPath; import org.junit.jupiter.api.Test; import org.springframework.security.access.prepost.PreAuthorize; -import com.google.common.reflect.ClassPath; - import io.qameta.allure.Description; import io.qameta.allure.Feature; import io.qameta.allure.Story; @@ -42,8 +40,7 @@ public class RepositoryManagementMethodPreAuthorizeAnnotatedTest { @Test @Description("Verifies that repository methods are @PreAuthorize annotated") - public void repositoryManagementMethodsArePreAuthorizedAnnotated() - throws ClassNotFoundException, URISyntaxException, IOException { + public void repositoryManagementMethodsArePreAuthorizedAnnotated() throws IOException { final List> findInterfacesInPackage = findInterfacesInPackage(getClass().getPackage(), Pattern.compile(".*Management")); @@ -81,8 +78,7 @@ public class RepositoryManagementMethodPreAuthorizeAnnotatedTest { } } - private List> findInterfacesInPackage(final Package p, final Pattern includeFilter) - throws URISyntaxException, IOException, ClassNotFoundException { + private List> findInterfacesInPackage(final Package p, final Pattern includeFilter) throws IOException { return ClassPath.from(Thread.currentThread().getContextClassLoader()).getTopLevelClasses(p.getName()).stream() .filter(clazzInfo -> includeFilter.matcher(clazzInfo.getSimpleName()).matches()) .map(clazzInfo -> clazzInfo.load()).filter(clazz -> clazz.isInterface()).collect(Collectors.toList()); diff --git a/hawkbit-repository/hawkbit-repository-core/pom.xml b/hawkbit-repository/hawkbit-repository-core/pom.xml index 8a7eb0ea7..b6d137540 100644 --- a/hawkbit-repository/hawkbit-repository-core/pom.xml +++ b/hawkbit-repository/hawkbit-repository-core/pom.xml @@ -29,10 +29,6 @@ org.apache.commons commons-lang3 - - com.google.guava - guava - com.github.ben-manes.caffeine caffeine diff --git a/hawkbit-repository/hawkbit-repository-jpa/pom.xml b/hawkbit-repository/hawkbit-repository-jpa/pom.xml index f65eda196..384317e05 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/pom.xml +++ b/hawkbit-repository/hawkbit-repository-jpa/pom.xml @@ -69,10 +69,6 @@ cz.jirutka.rsql rsql-parser - - com.google.guava - guava - org.jsoup jsoup diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/RepositoryApplicationConfiguration.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/RepositoryApplicationConfiguration.java index f1bfcd378..f2f6be525 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/RepositoryApplicationConfiguration.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/RepositoryApplicationConfiguration.java @@ -9,6 +9,7 @@ */ package org.eclipse.hawkbit.repository.jpa; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.concurrent.ScheduledExecutorService; @@ -198,8 +199,6 @@ import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.jta.JtaTransactionManager; import org.springframework.validation.beanvalidation.MethodValidationPostProcessor; -import com.google.common.collect.Maps; - /** * General configuration for hawkBit's Repository. * @@ -483,7 +482,7 @@ public class RepositoryApplicationConfiguration extends JpaBaseConfiguration { @Override protected Map getVendorProperties() { - final Map properties = Maps.newHashMapWithExpectedSize(7); + final Map properties = new HashMap<>(7); // Turn off dynamic weaving to disable LTW lookup in static weaving mode properties.put(PersistenceUnitProperties.WEAVING, "false"); // needed for reports diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/aspects/ExceptionMappingAspectHandler.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/aspects/ExceptionMappingAspectHandler.java index fb4677709..a76b485b0 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/aspects/ExceptionMappingAspectHandler.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/aspects/ExceptionMappingAspectHandler.java @@ -9,6 +9,8 @@ */ package org.eclipse.hawkbit.repository.jpa.aspects; +import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; @@ -29,9 +31,6 @@ import org.springframework.dao.OptimisticLockingFailureException; import org.springframework.security.access.AccessDeniedException; import org.springframework.transaction.TransactionSystemException; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; - /** * {@link Aspect} catches persistence exceptions and wraps them to custom * specific exceptions Additionally it checks and prevents access to certain @@ -42,14 +41,14 @@ public class ExceptionMappingAspectHandler implements Ordered { private static final Logger LOG = LoggerFactory.getLogger(ExceptionMappingAspectHandler.class); - private static final Map EXCEPTION_MAPPING = Maps.newHashMapWithExpectedSize(4); + private static final Map EXCEPTION_MAPPING = new HashMap<>(4); /** * this is required to enable a certain order of exception and to select the * most specific mappable exception according to the type hierarchy of the * exception. */ - private static final List> MAPPED_EXCEPTION_ORDER = Lists.newArrayListWithExpectedSize(4); + private static final List> MAPPED_EXCEPTION_ORDER = new ArrayList<>(4); static { diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaControllerManagement.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaControllerManagement.java index 7cb449d38..b21a5a22a 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaControllerManagement.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaControllerManagement.java @@ -21,6 +21,8 @@ import java.time.temporal.ChronoUnit; import java.time.temporal.TemporalUnit; import java.util.Collection; import java.util.Collections; +import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Optional; @@ -31,6 +33,7 @@ import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; +import com.google.common.collect.Lists; import jakarta.persistence.EntityManager; import jakarta.persistence.Query; import jakarta.persistence.criteria.CriteriaBuilder; @@ -111,10 +114,6 @@ import org.springframework.transaction.support.TransactionCallback; import org.springframework.util.StringUtils; import org.springframework.validation.annotation.Validated; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; -import com.google.common.collect.Sets; - /** * JPA based {@link ControllerManagement} implementation. * @@ -450,7 +449,7 @@ public class JpaControllerManagement extends JpaActionManagement implements Cont LOG.debug("{} events in flushUpdateQueue.", size); - final Set events = Sets.newHashSetWithExpectedSize(queue.size()); + final Set events = new HashSet<>(queue.size()); final int drained = queue.drainTo(events); if (drained <= 0) { @@ -494,7 +493,7 @@ public class JpaControllerManagement extends JpaActionManagement implements Cont * itself. */ private void setLastTargetQuery(final String tenant, final long currentTimeMillis, final List chunk) { - final Map paramMapping = Maps.newHashMapWithExpectedSize(chunk.size()); + final Map paramMapping = new HashMap<>(chunk.size()); for (int i = 0; i < chunk.size(); i++) { paramMapping.put("cid" + i, chunk.get(i)); diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaDeploymentManagement.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaDeploymentManagement.java index 9af79b9c5..690637173 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaDeploymentManagement.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaDeploymentManagement.java @@ -28,6 +28,7 @@ import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.IntStream; +import com.google.common.collect.Lists; import jakarta.persistence.EntityManager; import jakarta.persistence.Query; import jakarta.persistence.criteria.CriteriaBuilder; @@ -111,8 +112,6 @@ import org.springframework.transaction.annotation.Isolation; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; -import com.google.common.collect.Lists; - /** * JPA implementation for {@link DeploymentManagement}. * diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaDistributionSetManagement.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaDistributionSetManagement.java index 270356813..e96468d07 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaDistributionSetManagement.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaDistributionSetManagement.java @@ -89,8 +89,6 @@ import org.springframework.util.CollectionUtils; import org.springframework.util.ObjectUtils; import org.springframework.validation.annotation.Validated; -import com.google.common.collect.Lists; - /** * JPA implementation of {@link DistributionSetManagement}. * @@ -600,7 +598,7 @@ public class JpaDistributionSetManagement implements DistributionSetManagement { private static List> buildDistributionSetSpecifications( final DistributionSetFilter distributionSetFilter) { - final List> specList = Lists.newArrayListWithExpectedSize(10); + final List> specList = new ArrayList<>(10); Specification spec; diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaRolloutManagement.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaRolloutManagement.java index fda139d68..bd6c830b9 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaRolloutManagement.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaRolloutManagement.java @@ -93,8 +93,6 @@ import org.springframework.util.CollectionUtils; import org.springframework.util.concurrent.ListenableFuture; import org.springframework.validation.annotation.Validated; -import com.google.common.collect.Lists; - /** * JPA implementation of {@link RolloutManagement}. */ @@ -171,7 +169,7 @@ public class JpaRolloutManagement implements RolloutManagement { @Override public Page findByRsql(final Pageable pageable, final String rsqlParam, final boolean deleted) { - final List> specList = Lists.newArrayListWithExpectedSize(2); + final List> specList = new ArrayList<>(2); specList.add( RSQLUtility.buildRsqlSpecification(rsqlParam, RolloutFields.class, virtualPropertyReplacer, database)); specList.add(RolloutSpecification.isDeletedWithDistributionSet(deleted, pageable.getSort())); diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaTargetFilterQueryManagement.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaTargetFilterQueryManagement.java index 68bf6b9b8..6fc45d597 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaTargetFilterQueryManagement.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaTargetFilterQueryManagement.java @@ -9,6 +9,7 @@ */ package org.eclipse.hawkbit.repository.jpa.management; +import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Optional; @@ -63,8 +64,6 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import org.springframework.validation.annotation.Validated; -import com.google.common.collect.Lists; - import cz.jirutka.rsql.parser.RSQLParserException; /** @@ -212,7 +211,7 @@ public class JpaTargetFilterQueryManagement implements TargetFilterQueryManageme final String rsqlFilter) { final DistributionSet distributionSet = distributionSetManagement.getOrElseThrowException(setId); - final List> specList = Lists.newArrayListWithExpectedSize(2); + final List> specList = new ArrayList<>(2); specList.add(TargetFilterQuerySpecification.byAutoAssignDS(distributionSet)); if (!ObjectUtils.isEmpty(rsqlFilter)) { specList.add(RSQLUtility.buildRsqlSpecification(rsqlFilter, TargetFilterQueryFields.class, diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaTargetManagement.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaTargetManagement.java index 04c221e7a..1a0f7e4b6 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaTargetManagement.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/JpaTargetManagement.java @@ -21,6 +21,7 @@ import java.util.Objects; import java.util.Optional; import java.util.stream.Collectors; +import com.google.common.collect.Lists; import jakarta.persistence.EntityManager; import jakarta.persistence.criteria.CriteriaBuilder; import jakarta.persistence.criteria.CriteriaQuery; @@ -94,8 +95,6 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; import org.springframework.validation.annotation.Validated; -import com.google.common.collect.Lists; - import static org.eclipse.hawkbit.repository.jpa.JpaManagementHelper.combineWithAnd; /** diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/OfflineDsAssignmentStrategy.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/OfflineDsAssignmentStrategy.java index f7fc19e63..8bec8443e 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/OfflineDsAssignmentStrategy.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/OfflineDsAssignmentStrategy.java @@ -17,6 +17,7 @@ import java.util.function.BooleanSupplier; import java.util.function.Function; import java.util.stream.Collectors; +import com.google.common.collect.Lists; import org.eclipse.hawkbit.repository.QuotaManagement; import org.eclipse.hawkbit.repository.RepositoryConstants; import org.eclipse.hawkbit.repository.RepositoryProperties; @@ -40,8 +41,6 @@ import org.eclipse.hawkbit.repository.model.TargetUpdateStatus; import org.eclipse.hawkbit.repository.model.TargetWithActionType; import org.eclipse.hawkbit.repository.model.helper.EventPublisherHolder; -import com.google.common.collect.Lists; - /** * AbstractDsAssignmentStrategy for offline assignments, i.e. not managed by * hawkBit. diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/OnlineDsAssignmentStrategy.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/OnlineDsAssignmentStrategy.java index 56cb4a561..d9cd5c987 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/OnlineDsAssignmentStrategy.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/management/OnlineDsAssignmentStrategy.java @@ -18,6 +18,7 @@ import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; +import com.google.common.collect.Lists; import org.eclipse.hawkbit.repository.QuotaManagement; import org.eclipse.hawkbit.repository.RepositoryProperties; import org.eclipse.hawkbit.repository.event.remote.MultiActionAssignEvent; @@ -44,8 +45,6 @@ import org.eclipse.hawkbit.repository.model.TargetWithActionType; import org.eclipse.hawkbit.repository.model.helper.EventPublisherHolder; import org.springframework.util.CollectionUtils; -import com.google.common.collect.Lists; - /** * AbstractDsAssignmentStrategy for online assignments, i.e. managed by hawkBit. * diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaActionStatus.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaActionStatus.java index b6e28f579..e3056b336 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaActionStatus.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/model/JpaActionStatus.java @@ -14,6 +14,7 @@ import java.util.Collections; import java.util.List; import java.util.Optional; +import com.google.common.base.Splitter; import jakarta.persistence.CollectionTable; import jakarta.persistence.Column; import jakarta.persistence.ConstraintMode; @@ -37,8 +38,6 @@ import org.eclipse.persistence.annotations.ConversionValue; import org.eclipse.persistence.annotations.Convert; import org.eclipse.persistence.annotations.ObjectTypeConverter; -import com.google.common.base.Splitter; - /** * Entity to store the status for a specific action. */ diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/rsql/JpaQueryRsqlVisitor.java b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/rsql/JpaQueryRsqlVisitor.java index 068573ff5..32cb9202d 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/rsql/JpaQueryRsqlVisitor.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/main/java/org/eclipse/hawkbit/repository/jpa/rsql/JpaQueryRsqlVisitor.java @@ -35,7 +35,6 @@ import jakarta.persistence.criteria.Predicate; import jakarta.persistence.criteria.Root; import jakarta.persistence.criteria.Subquery; -import com.google.common.collect.Lists; import cz.jirutka.rsql.parser.ast.AndNode; import cz.jirutka.rsql.parser.ast.ComparisonNode; import cz.jirutka.rsql.parser.ast.LogicalNode; @@ -73,7 +72,7 @@ public class JpaQueryRsqlVisitor & FieldNameProvider, T> exten public static final Character LIKE_WILDCARD = '*'; private static final char ESCAPE_CHAR = '\\'; - private static final List NO_JOINS_OPERATOR = Lists.newArrayList("!=", "=out="); + private static final List NO_JOINS_OPERATOR = List.of("!=", "=out="); private static final String ESCAPE_CHAR_WITH_ASTERISK = ESCAPE_CHAR +"*"; private final Map>> joinsInLevel = new HashMap<>(3); diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/event/remote/AbstractRemoteEventTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/event/remote/AbstractRemoteEventTest.java index 2e09ec26b..3bc9fe340 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/event/remote/AbstractRemoteEventTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/event/remote/AbstractRemoteEventTest.java @@ -11,6 +11,7 @@ package org.eclipse.hawkbit.repository.event.remote; import static org.junit.jupiter.api.Assertions.fail; +import java.util.LinkedHashMap; import java.util.Map; import org.eclipse.hawkbit.event.BusProtoStuffMessageConverter; @@ -33,7 +34,6 @@ import org.springframework.util.MimeTypeUtils; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.collect.Maps; /** * Test the remote entity events. @@ -57,13 +57,13 @@ public abstract class AbstractRemoteEventTest extends AbstractJpaIntegrationTest } private Message createProtoStuffMessage(final TenantAwareEvent event) { - final Map headers = Maps.newLinkedHashMap(); + final Map headers = new LinkedHashMap<>(); headers.put(MessageHeaders.CONTENT_TYPE, BusProtoStuffMessageConverter.APPLICATION_BINARY_PROTOSTUFF); return busProtoStuffMessageConverter.toMessage(event, new MutableMessageHeaders(headers)); } private Message createJsonMessage(final Object event) { - final Map headers = Maps.newLinkedHashMap(); + final Map headers = new LinkedHashMap<>(); headers.put(MessageHeaders.CONTENT_TYPE, MimeTypeUtils.APPLICATION_JSON); try { final String json = new ObjectMapper().writeValueAsString(event); @@ -76,7 +76,7 @@ public abstract class AbstractRemoteEventTest extends AbstractJpaIntegrationTest } protected Message createMessageWithImmutableHeader(final TenantAwareEvent event) { - final Map headers = Maps.newLinkedHashMap(); + final Map headers = new LinkedHashMap<>(); return busProtoStuffMessageConverter.toMessage(event, new MessageHeaders(headers)); } diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/AbstractJpaIntegrationTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/AbstractJpaIntegrationTest.java index dae7ac334..75060b822 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/AbstractJpaIntegrationTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/AbstractJpaIntegrationTest.java @@ -9,9 +9,13 @@ */ package org.eclipse.hawkbit.repository.jpa; +import java.lang.reflect.Array; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.List; import java.util.stream.Collectors; +import java.util.stream.StreamSupport; import jakarta.persistence.EntityManager; import jakarta.persistence.PersistenceContext; @@ -63,8 +67,6 @@ import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.TestPropertySource; import org.springframework.transaction.annotation.Transactional; -import com.google.common.collect.Lists; - import static org.assertj.core.api.Assertions.assertThat; @ContextConfiguration(classes = { @@ -143,7 +145,7 @@ public abstract class AbstractJpaIntegrationTest extends AbstractIntegrationTest @Transactional(readOnly = true) protected List findActionsByRolloutAndStatus(final Rollout rollout, final Action.Status actionStatus) { - return Lists.newArrayList(actionRepository.findByRolloutIdAndStatus(PAGE, rollout.getId(), actionStatus)); + return toList(actionRepository.findByRolloutIdAndStatus(PAGE, rollout.getId(), actionStatus)); } protected static void verifyThrownExceptionBy(final ThrowingCallable tc, final String objectType) { @@ -205,4 +207,17 @@ public abstract class AbstractJpaIntegrationTest extends AbstractIntegrationTest protected JpaRolloutGroup refresh(final RolloutGroup group) { return rolloutGroupRepository.findById(group.getId()).get(); } + + protected static List toList(final Iterable it) { + return StreamSupport.stream(it.spliterator(), false).map(e -> (T)e).toList(); + } + + protected static T[] toArray(final Iterable it, final Class type) { + final List list = toList(it); + final T[] array = (T[])Array.newInstance(type, list.size()); + for (int i = 0; i < array.length; i++) { + array[i] = list.get(i); + } + return array; + } } diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/ArtifactManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/ArtifactManagementTest.java index e68500863..1e7703ea6 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/ArtifactManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/ArtifactManagementTest.java @@ -19,6 +19,8 @@ import java.io.InputStream; import java.net.URISyntaxException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; +import java.util.ArrayList; +import java.util.HexFormat; import java.util.List; import java.util.Optional; import java.util.concurrent.Callable; @@ -54,9 +56,6 @@ import org.eclipse.hawkbit.repository.test.util.SecurityContextSwitch; import org.eclipse.hawkbit.repository.test.util.WithUser; import org.junit.jupiter.api.Test; -import com.google.common.collect.Lists; -import com.google.common.io.BaseEncoding; - import io.qameta.allure.Description; import io.qameta.allure.Feature; import io.qameta.allure.Story; @@ -185,7 +184,7 @@ public class ArtifactManagementTest extends AbstractJpaIntegrationTest { // now create artifacts for this module until the quota is exceeded final long maxArtifacts = quotaManagement.getMaxArtifactsPerSoftwareModule(); - final List artifactIds = Lists.newArrayList(); + final List artifactIds = new ArrayList<>(); final int artifactSize = 5 * 1024; for (int i = 0; i < maxArtifacts; ++i) { artifactIds.add(createArtifactForSoftwareModule("file" + i, smId, artifactSize).getId()); @@ -213,7 +212,7 @@ public class ArtifactManagementTest extends AbstractJpaIntegrationTest { // create as many small artifacts as possible w/o violating the storage // quota final long maxBytes = quotaManagement.getMaxArtifactStorage(); - final List artifactIds = Lists.newArrayList(); + final List artifactIds = new ArrayList<>(); // choose an artifact size which does not violate the max file size final int artifactSize = Math.toIntExact(quotaManagement.getMaxArtifactSize() / 10); @@ -591,7 +590,7 @@ public class ArtifactManagementTest extends AbstractJpaIntegrationTest { private String toBase16Hash(final String algorithm, final byte[] input) throws NoSuchAlgorithmException { final MessageDigest messageDigest = MessageDigest.getInstance(algorithm); messageDigest.update(input); - return BaseEncoding.base16().lowerCase().encode(messageDigest.digest()); + return HexFormat.of().withLowerCase().formatHex(messageDigest.digest()); } private Artifact createArtifactForSoftwareModule(final String filename, final long moduleId, final int artifactSize) diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/ControllerManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/ControllerManagementTest.java index ab167c893..8e8ab2881 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/ControllerManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/ControllerManagementTest.java @@ -86,9 +86,6 @@ import org.mockito.Mockito; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.dao.ConcurrencyFailureException; -import com.google.common.collect.Lists; -import com.google.common.collect.Maps; - import io.qameta.allure.Description; import io.qameta.allure.Feature; import io.qameta.allure.Step; @@ -156,7 +153,7 @@ class ControllerManagementTest extends AbstractJpaIntegrationTest { verifyThrownExceptionBy(() -> controllerManagement.registerRetrieved(NOT_EXIST_IDL, "test message"), "Action"); verifyThrownExceptionBy( - () -> controllerManagement.updateControllerAttributes(NOT_EXIST_ID, Maps.newHashMap(), null), "Target"); + () -> controllerManagement.updateControllerAttributes(NOT_EXIST_ID, new HashMap<>(), null), "Target"); } @Test @@ -973,7 +970,7 @@ class ControllerManagementTest extends AbstractJpaIntegrationTest { @Step private void addAttributeAndVerify(final String controllerId) { - final Map testData = Maps.newHashMapWithExpectedSize(1); + final Map testData = new HashMap<>(1); testData.put("test1", "testdata1"); controllerManagement.updateControllerAttributes(controllerId, testData, null); @@ -983,7 +980,7 @@ class ControllerManagementTest extends AbstractJpaIntegrationTest { @Step private void addSecondAttributeAndVerify(final String controllerId) { - final Map testData = Maps.newHashMapWithExpectedSize(2); + final Map testData = new HashMap<>(2); testData.put("test2", "testdata20"); controllerManagement.updateControllerAttributes(controllerId, testData, null); @@ -994,7 +991,7 @@ class ControllerManagementTest extends AbstractJpaIntegrationTest { @Step private void updateAttributeAndVerify(final String controllerId) { - final Map testData = Maps.newHashMapWithExpectedSize(2); + final Map testData = new HashMap<>(2); testData.put("test1", "testdata12"); controllerManagement.updateControllerAttributes(controllerId, testData, null); @@ -1141,7 +1138,7 @@ class ControllerManagementTest extends AbstractJpaIntegrationTest { private void writeAttributes(final String controllerId, final int allowedAttributes, final String keyPrefix, final String valuePrefix) { - final Map testData = Maps.newHashMapWithExpectedSize(allowedAttributes); + final Map testData = new HashMap<>(allowedAttributes); for (int i = 0; i < allowedAttributes; i++) { testData.put(keyPrefix + i, valuePrefix); } @@ -1212,13 +1209,13 @@ class ControllerManagementTest extends AbstractJpaIntegrationTest { controllerManagement.addUpdateActionStatus(entityFactory.actionStatus().create(actionId) .status(Action.Status.RUNNING).occurredAt(System.currentTimeMillis()) - .messages(Lists.newArrayList("proceeding message 1"))); + .messages(List.of("proceeding message 1"))); final long createTime = System.currentTimeMillis(); waitNextMillis(); controllerManagement.addUpdateActionStatus(entityFactory.actionStatus().create(actionId) .status(Action.Status.RUNNING).occurredAt(System.currentTimeMillis()) - .messages(Lists.newArrayList("proceeding message 2"))); + .messages(List.of("proceeding message 2"))); final List messages = controllerManagement.getActionHistoryMessages(actionId, 2); @@ -1279,7 +1276,7 @@ class ControllerManagementTest extends AbstractJpaIntegrationTest { assignDistributionSet(testdataFactory.createDistributionSet("ds1"), testdataFactory.createTargets(1))); assertThat(actionId).isNotNull(); - final List messages = Lists.newArrayList(); + final List messages = new ArrayList<>(); IntStream.range(0, maxMessages).forEach(i -> messages.add(i, "msg")); assertThat(controllerManagement.addInformationalActionStatus( diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/DeploymentManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/DeploymentManagementTest.java index 68af631b7..c72065ef2 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/DeploymentManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/DeploymentManagementTest.java @@ -24,6 +24,7 @@ import java.util.List; import java.util.Map.Entry; import java.util.Objects; import java.util.Optional; +import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -90,10 +91,6 @@ import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Slice; import org.springframework.data.domain.Sort.Direction; -import com.google.common.collect.Iterables; -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; - import io.qameta.allure.Description; import io.qameta.allure.Feature; import io.qameta.allure.Story; @@ -259,7 +256,7 @@ class DeploymentManagementTest extends AbstractJpaIntegrationTest { @Test @Description("Ensures that tag to distribution set assignment that does not exist will cause EntityNotFoundException.") void assignDistributionSetToTagThatDoesNotExistThrowsException() { - final List assignDS = Lists.newArrayListWithExpectedSize(5); + final List assignDS = new ArrayList<>(5); for (int i = 0; i < 4; i++) { assignDS.add(testdataFactory.createDistributionSet("DS" + i, "1.0", Collections.emptyList()).getId()); } @@ -730,9 +727,10 @@ class DeploymentManagementTest extends AbstractJpaIntegrationTest { final DistributionSet createdDs = testdataFactory.createDistributionSet(); - final String[] knownTargetIdsArray = { "1", "2" }; - final List knownTargetIds = Lists.newArrayList(knownTargetIdsArray); - testdataFactory.createTargets(knownTargetIdsArray); + final List knownTargetIds = new ArrayList<>(); + knownTargetIds.add( "1"); + knownTargetIds.add("2"); + testdataFactory.createTargets(knownTargetIds.toArray(new String[0])); // add not existing target to targets knownTargetIds.add(notExistingId); @@ -1055,9 +1053,9 @@ class DeploymentManagementTest extends AbstractJpaIntegrationTest { assertThat(allFoundTargets).as("founded targets are wrong").containsAll(savedDeployedTargets) .containsAll(savedNakedTargets); assertThat(savedDeployedTargets).as("saved target are wrong") - .doesNotContain(Iterables.toArray(savedNakedTargets, Target.class)); + .doesNotContain(toArray(savedNakedTargets, Target.class)); assertThat(savedNakedTargets).as("saved target are wrong") - .doesNotContain(Iterables.toArray(savedDeployedTargets, Target.class)); + .doesNotContain(toArray(savedDeployedTargets, Target.class)); for (final Target myt : savedNakedTargets) { final Target t = targetManagement.getByControllerID(myt.getControllerId()).get(); @@ -1101,7 +1099,7 @@ class DeploymentManagementTest extends AbstractJpaIntegrationTest { .isThrownBy(() -> assignDistributionSet(incomplete, targets)); final DistributionSet nowComplete = distributionSetManagement.assignSoftwareModules(incomplete.getId(), - Sets.newHashSet(os.getId())); + Set.of(os.getId())); assertThat(assignDistributionSet(nowComplete, targets).getAssigned()).as("assign ds doesn't work") .isEqualTo(10); @@ -1165,9 +1163,9 @@ class DeploymentManagementTest extends AbstractJpaIntegrationTest { assertThat(deployedTargetsFromDB).as("content of deployed target is wrong") .usingElementComparator(controllerIdComparator()).containsAll(savedDeployedTargets) - .doesNotContain(Iterables.toArray(undeployedTargetsFromDB, JpaTarget.class)); + .doesNotContain(toArray(undeployedTargetsFromDB, JpaTarget.class)); assertThat(undeployedTargetsFromDB).as("content of undeployed target is wrong").containsAll(savedNakedTargets) - .doesNotContain(Iterables.toArray(deployedTargetsFromDB, JpaTarget.class)); + .doesNotContain(toArray(deployedTargetsFromDB, JpaTarget.class)); } @Test @@ -1710,9 +1708,9 @@ class DeploymentManagementTest extends AbstractJpaIntegrationTest { final Iterable dss, final String deployedTargetPrefix, final String undeployedTargetPrefix, final String distributionSetPrefix) { - Iterables.addAll(deployedTargets, deployedTs); - Iterables.addAll(undeployedTargets, undeployedTs); - Iterables.addAll(distributionSets, dss); + deployedTargets.addAll(toList(deployedTs)); + undeployedTargets.addAll(toList(undeployedTs)); + distributionSets.addAll(toList(dss)); deployedTargets.forEach(t -> deployedTargetIDs.add(t.getId())); diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/DistributionSetManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/DistributionSetManagementTest.java index a7c5d1088..c9f0a7fbc 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/DistributionSetManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/DistributionSetManagementTest.java @@ -18,10 +18,12 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.NoSuchElementException; import java.util.Optional; +import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -70,9 +72,6 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort.Direction; -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; - import io.qameta.allure.Description; import io.qameta.allure.Feature; import io.qameta.allure.Step; @@ -324,7 +323,7 @@ class DistributionSetManagementTest extends AbstractJpaIntegrationTest { @Description("Verifies that multiple DS are of default type if not specified explicitly at creation time.") void createMultipleDistributionSetsWithImplicitType() { - final List creates = Lists.newArrayListWithExpectedSize(10); + final List creates = new ArrayList<>(10); for (int i = 0; i < 10; i++) { creates.add(entityFactory.distributionSet().create().name("newtypesoft" + i).version("1" + i)); } @@ -406,7 +405,7 @@ class DistributionSetManagementTest extends AbstractJpaIntegrationTest { @Test @Description("Ensures that distribution sets can assigned and unassigned to a distribution set tag.") void assignAndUnassignDistributionSetToTag() { - final List assignDS = Lists.newArrayListWithExpectedSize(4); + final List assignDS = new ArrayList<>(4); for (int i = 0; i < 4; i++) { assignDS.add(testdataFactory.createDistributionSet("DS" + i, "1.0", Collections.emptyList()).getId()); } @@ -450,7 +449,7 @@ class DistributionSetManagementTest extends AbstractJpaIntegrationTest { final SoftwareModule os2 = testdataFactory.createSoftwareModuleOs(); // update is allowed as it is still not assigned to a target - ds = distributionSetManagement.assignSoftwareModules(ds.getId(), Sets.newHashSet(ah2.getId())); + ds = distributionSetManagement.assignSoftwareModules(ds.getId(), Set.of(ah2.getId())); // assign target assignDistributionSet(ds.getId(), target.getControllerId()); @@ -458,7 +457,7 @@ class DistributionSetManagementTest extends AbstractJpaIntegrationTest { final Long dsId = ds.getId(); // not allowed as it is assigned now - assertThatThrownBy(() -> distributionSetManagement.assignSoftwareModules(dsId, Sets.newHashSet(os2.getId()))) + assertThatThrownBy(() -> distributionSetManagement.assignSoftwareModules(dsId, Set.of(os2.getId()))) .isInstanceOf(EntityReadOnlyException.class); // not allowed as it is assigned now @@ -482,7 +481,7 @@ class DistributionSetManagementTest extends AbstractJpaIntegrationTest { // update data assertThatThrownBy( - () -> distributionSetManagement.assignSoftwareModules(set.getId(), Sets.newHashSet(module.getId()))) + () -> distributionSetManagement.assignSoftwareModules(set.getId(), Set.of(module.getId()))) .isInstanceOf(UnsupportedSoftwareModuleForThisDistributionSetException.class); } @@ -495,7 +494,7 @@ class DistributionSetManagementTest extends AbstractJpaIntegrationTest { // update data // legal update of module addition - distributionSetManagement.assignSoftwareModules(ds.getId(), Sets.newHashSet(os.getId())); + distributionSetManagement.assignSoftwareModules(ds.getId(), Set.of(os.getId())); ds = getOrThrow(distributionSetManagement.getWithDetails(ds.getId())); assertThat(getOrThrow(ds.findFirstModuleByType(osType))).isEqualTo(os); @@ -531,7 +530,7 @@ class DistributionSetManagementTest extends AbstractJpaIntegrationTest { // create some software modules final int maxModules = quotaManagement.getMaxSoftwareModulesPerDistributionSet(); - final List modules = Lists.newArrayList(); + final List modules = new ArrayList<>(); for (int i = 0; i < maxModules + 1; ++i) { modules.add(testdataFactory.createSoftwareModuleApp("sm" + i).getId()); } diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/DistributionSetTypeManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/DistributionSetTypeManagementTest.java index c62bc346d..af7d50b8a 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/DistributionSetTypeManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/DistributionSetTypeManagementTest.java @@ -17,6 +17,7 @@ import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Optional; +import java.util.Set; import jakarta.validation.ConstraintViolationException; @@ -41,8 +42,6 @@ import org.eclipse.hawkbit.repository.test.matcher.Expect; import org.eclipse.hawkbit.repository.test.matcher.ExpectEvents; import org.junit.jupiter.api.Test; -import com.google.common.collect.Sets; - import io.qameta.allure.Description; import io.qameta.allure.Feature; import io.qameta.allure.Step; @@ -206,13 +205,13 @@ public class DistributionSetTypeManagementTest extends AbstractJpaIntegrationTes // add OS distributionSetTypeManagement.assignMandatorySoftwareModuleTypes(updatableType.getId(), - Sets.newHashSet(osType.getId())); + Set.of(osType.getId())); assertThat(distributionSetTypeManagement.getByKey("updatableType").get().getMandatoryModuleTypes()) .containsOnly(osType); // add JVM distributionSetTypeManagement.assignMandatorySoftwareModuleTypes(updatableType.getId(), - Sets.newHashSet(runtimeType.getId())); + Set.of(runtimeType.getId())); assertThat(distributionSetTypeManagement.getByKey("updatableType").get().getMandatoryModuleTypes()) .containsOnly(osType, runtimeType); @@ -228,7 +227,7 @@ public class DistributionSetTypeManagementTest extends AbstractJpaIntegrationTes final int quota = quotaManagement.getMaxSoftwareModuleTypesPerDistributionSetType(); // create software module types - final List moduleTypeIds = Lists.newArrayList(); + final List moduleTypeIds = new ArrayList<>(); for (int i = 0; i < quota + 1; ++i) { final SoftwareModuleTypeCreate smCreate = entityFactory.softwareModuleType().create().name("smType_" + i) .description("smType_" + i).maxAssignments(1).colour("blue").key("smType_" + i); @@ -290,7 +289,7 @@ public class DistributionSetTypeManagementTest extends AbstractJpaIntegrationTes final DistributionSetType nonUpdatableType = createDistributionSetTypeUsedByDs(); assertThatThrownBy(() -> distributionSetTypeManagement - .assignMandatorySoftwareModuleTypes(nonUpdatableType.getId(), Sets.newHashSet(osType.getId()))) + .assignMandatorySoftwareModuleTypes(nonUpdatableType.getId(), Set.of(osType.getId()))) .isInstanceOf(EntityReadOnlyException.class); } @@ -311,7 +310,7 @@ public class DistributionSetTypeManagementTest extends AbstractJpaIntegrationTes assertThat(distributionSetTypeManagement.getByKey("updatableType").get().getMandatoryModuleTypes()).isEmpty(); nonUpdatableType = distributionSetTypeManagement.assignMandatorySoftwareModuleTypes(nonUpdatableType.getId(), - Sets.newHashSet(osType.getId())); + Set.of(osType.getId())); distributionSetManagement.create(entityFactory.distributionSet().create().name("newtypesoft").version("1") .type(nonUpdatableType.getKey())); diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/SoftwareModuleManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/SoftwareModuleManagementTest.java index 343338fb4..7bc58e6b4 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/SoftwareModuleManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/SoftwareModuleManagementTest.java @@ -21,6 +21,7 @@ import java.util.Collections; import java.util.Iterator; import java.util.List; import java.util.Optional; +import java.util.Set; import org.apache.commons.lang3.RandomUtils; import org.eclipse.hawkbit.repository.builder.SoftwareModuleMetadataCreate; @@ -29,7 +30,6 @@ import org.eclipse.hawkbit.repository.exception.AssignmentQuotaExceededException import org.eclipse.hawkbit.repository.exception.EntityAlreadyExistsException; import org.eclipse.hawkbit.repository.jpa.AbstractJpaIntegrationTest; import org.eclipse.hawkbit.repository.jpa.RandomGeneratedInputStream; -import org.eclipse.hawkbit.repository.jpa.model.JpaAction; import org.eclipse.hawkbit.repository.jpa.model.JpaAction_; import org.eclipse.hawkbit.repository.jpa.model.JpaDistributionSet; import org.eclipse.hawkbit.repository.jpa.model.JpaDistributionSet_; @@ -56,9 +56,6 @@ import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort.Direction; -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; - import io.qameta.allure.Description; import io.qameta.allure.Feature; import io.qameta.allure.Story; @@ -309,7 +306,7 @@ public class SoftwareModuleManagementTest extends AbstractJpaIntegrationTest { SoftwareModule assignedModule = createSoftwareModuleWithArtifacts(osType, "moduleX", "3.0.2", 2); // [STEP2]: Assign SoftwareModule to DistributionSet - testdataFactory.createDistributionSet(Sets.newHashSet(assignedModule)); + testdataFactory.createDistributionSet(Set.of(assignedModule)); // [STEP3]: Delete the assigned SoftwareModule softwareModuleManagement.delete(assignedModule.getId()); @@ -345,7 +342,7 @@ public class SoftwareModuleManagementTest extends AbstractJpaIntegrationTest { SoftwareModule assignedModule = createSoftwareModuleWithArtifacts(osType, "moduleX", "3.0.2", 2); // [STEP2]: Assign SoftwareModule to DistributionSet - final DistributionSet disSet = testdataFactory.createDistributionSet(Sets.newHashSet(assignedModule)); + final DistributionSet disSet = testdataFactory.createDistributionSet(Set.of(assignedModule)); // [STEP3]: Assign DistributionSet to a Device assignDistributionSet(disSet, Collections.singletonList(target)); @@ -446,11 +443,11 @@ public class SoftwareModuleManagementTest extends AbstractJpaIntegrationTest { final Artifact artifactY = moduleY.getArtifacts().iterator().next(); // [STEP3]: Assign SoftwareModuleX to DistributionSetX and to target - final DistributionSet disSetX = testdataFactory.createDistributionSet(Sets.newHashSet(moduleX), "X"); + final DistributionSet disSetX = testdataFactory.createDistributionSet(Set.of(moduleX), "X"); assignDistributionSet(disSetX, Collections.singletonList(target)); // [STEP4]: Assign SoftwareModuleY to DistributionSet and to target - final DistributionSet disSetY = testdataFactory.createDistributionSet(Sets.newHashSet(moduleY), "Y"); + final DistributionSet disSetY = testdataFactory.createDistributionSet(Set.of(moduleY), "Y"); assignDistributionSet(disSetY, Collections.singletonList(target)); // [STEP5]: Delete SoftwareModuleX @@ -549,8 +546,8 @@ public class SoftwareModuleManagementTest extends AbstractJpaIntegrationTest { final SoftwareModule four = testdataFactory.createSoftwareModuleOs("e"); final DistributionSet set = distributionSetManagement - .create(entityFactory.distributionSet().create().name("set").version("1").type(testDsType).modules(Lists - .newArrayList(one.getId(), two.getId(), deleted.getId(), four.getId(), differentName.getId()))); + .create(entityFactory.distributionSet().create().name("set").version("1").type(testDsType).modules( + List.of(one.getId(), two.getId(), deleted.getId(), four.getId(), differentName.getId()))); softwareModuleManagement.delete(deleted.getId()); // with filter on name, version and module type @@ -610,8 +607,8 @@ public class SoftwareModuleManagementTest extends AbstractJpaIntegrationTest { final SoftwareModule four = testdataFactory.createSoftwareModuleOs("e"); distributionSetManagement - .create(entityFactory.distributionSet().create().name("set").version("1").type(testDsType).modules(Lists - .newArrayList(one.getId(), two.getId(), deleted.getId(), four.getId(), differentName.getId()))); + .create(entityFactory.distributionSet().create().name("set").version("1").type(testDsType).modules( + List.of(one.getId(), two.getId(), deleted.getId(), four.getId(), differentName.getId()))); softwareModuleManagement.delete(deleted.getId()); // test diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/TargetManagementSearchTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/TargetManagementSearchTest.java index 4f189bd80..b3b702586 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/TargetManagementSearchTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/TargetManagementSearchTest.java @@ -643,9 +643,9 @@ class TargetManagementSearchTest extends AbstractJpaIntegrationTest { final Long[] overdueMix = { lastTargetQueryAlwaysOverdue, lastTargetQueryNotOverdue, lastTargetQueryAlwaysOverdue, lastTargetNull, lastTargetQueryAlwaysOverdue }; - final List notAssigned = Lists.newArrayListWithExpectedSize(overdueMix.length); - List targAssigned = Lists.newArrayListWithExpectedSize(overdueMix.length); - List targInstalled = Lists.newArrayListWithExpectedSize(overdueMix.length); + final List notAssigned = new ArrayList<>(overdueMix.length); + List targAssigned = new ArrayList<>(overdueMix.length); + List targInstalled = new ArrayList<>(overdueMix.length); for (int i = 0; i < overdueMix.length; i++) { notAssigned.add(targetManagement diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/TargetManagementTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/TargetManagementTest.java index e267467ba..432e427c5 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/TargetManagementTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/management/TargetManagementTest.java @@ -54,7 +54,6 @@ import org.eclipse.hawkbit.repository.exception.RSQLParameterUnsupportedFieldExc import org.eclipse.hawkbit.repository.exception.TenantNotExistException; import org.eclipse.hawkbit.repository.jpa.AbstractJpaIntegrationTest; import org.eclipse.hawkbit.repository.jpa.model.JpaAction; -import org.eclipse.hawkbit.repository.jpa.model.JpaAction_; import org.eclipse.hawkbit.repository.jpa.model.JpaTarget; import org.eclipse.hawkbit.repository.jpa.model.JpaTargetMetadata; import org.eclipse.hawkbit.repository.model.Action; @@ -79,8 +78,6 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Slice; -import com.google.common.collect.Iterables; - import io.qameta.allure.Description; import io.qameta.allure.Feature; import io.qameta.allure.Step; @@ -674,7 +671,7 @@ class TargetManagementTest extends AbstractJpaIntegrationTest { final int numberToDelete = 50; final Collection targetsToDelete = firstList.subList(0, numberToDelete); - final Target[] deletedTargets = Iterables.toArray(targetsToDelete, Target.class); + final Target[] deletedTargets = toArray(targetsToDelete, Target.class); final List targetsIdsToDelete = targetsToDelete.stream().map(Target::getId).collect(Collectors.toList()); targetManagement.delete(targetsIdsToDelete); @@ -708,14 +705,14 @@ class TargetManagementTest extends AbstractJpaIntegrationTest { assertThat(targetTagManagement.findByTarget(PAGE, t11.getControllerId()).getContent()).as("Tag size is wrong") .hasSize(noT1Tags).containsAll(t1Tags); assertThat(targetTagManagement.findByTarget(PAGE, t11.getControllerId()).getContent()).as("Tag size is wrong") - .hasSize(noT1Tags).doesNotContain(Iterables.toArray(t2Tags, TargetTag.class)); + .hasSize(noT1Tags).doesNotContain(toArray(t2Tags, TargetTag.class)); final Target t21 = targetManagement.getByControllerID(t2.getControllerId()) .orElseThrow(IllegalStateException::new); assertThat(targetTagManagement.findByTarget(PAGE, t21.getControllerId()).getContent()).as("Tag size is wrong") .hasSize(noT2Tags).containsAll(t2Tags); assertThat(targetTagManagement.findByTarget(PAGE, t21.getControllerId()).getContent()).as("Tag size is wrong") - .hasSize(noT2Tags).doesNotContain(Iterables.toArray(t1Tags, TargetTag.class)); + .hasSize(noT2Tags).doesNotContain(toArray(t1Tags, TargetTag.class)); } @Test @@ -758,16 +755,16 @@ class TargetManagementTest extends AbstractJpaIntegrationTest { final List targetWithTagC = new ArrayList<>(); // storing target lists to enable easy evaluation - Iterables.addAll(targetWithTagA, tagATargets); - Iterables.addAll(targetWithTagA, tagABTargets); - Iterables.addAll(targetWithTagA, tagABCTargets); + targetWithTagA.addAll(tagATargets); + targetWithTagA.addAll(tagABTargets); + targetWithTagA.addAll(tagABCTargets); - Iterables.addAll(targetWithTagB, tagBTargets); - Iterables.addAll(targetWithTagB, tagABTargets); - Iterables.addAll(targetWithTagB, tagABCTargets); + targetWithTagB.addAll(tagBTargets); + targetWithTagB.addAll(tagABTargets); + targetWithTagB.addAll(tagABCTargets); - Iterables.addAll(targetWithTagC, tagCTargets); - Iterables.addAll(targetWithTagC, tagABCTargets); + targetWithTagC.addAll(tagCTargets); + targetWithTagC.addAll(tagABCTargets); // check the target lists as returned by assignTag checkTargetHasTags(false, targetWithTagA, tagA); diff --git a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLSoftwareModuleMetadataFieldsTest.java b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLSoftwareModuleMetadataFieldsTest.java index 6ca06a4e1..a6be9f505 100644 --- a/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLSoftwareModuleMetadataFieldsTest.java +++ b/hawkbit-repository/hawkbit-repository-jpa/src/test/java/org/eclipse/hawkbit/repository/jpa/rsql/RSQLSoftwareModuleMetadataFieldsTest.java @@ -11,6 +11,7 @@ package org.eclipse.hawkbit.repository.jpa.rsql; import static org.assertj.core.api.Assertions.assertThat; +import java.util.ArrayList; import java.util.List; import org.eclipse.hawkbit.repository.SoftwareModuleMetadataFields; @@ -24,8 +25,6 @@ import org.junit.jupiter.api.Test; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; -import com.google.common.collect.Lists; - import io.qameta.allure.Description; import io.qameta.allure.Feature; import io.qameta.allure.Story; @@ -42,7 +41,7 @@ public class RSQLSoftwareModuleMetadataFieldsTest extends AbstractJpaIntegration softwareModuleId = softwareModule.getId(); - final List metadata = Lists.newArrayListWithExpectedSize(5); + final List metadata = new ArrayList<>(5); for (int i = 0; i < 5; i++) { metadata.add( entityFactory.softwareModuleMetadata().create(softwareModule.getId()).key("" + i).value("" + i)); diff --git a/hawkbit-repository/hawkbit-repository-test/pom.xml b/hawkbit-repository/hawkbit-repository-test/pom.xml index 8e31a7d6a..f3d658e62 100644 --- a/hawkbit-repository/hawkbit-repository-test/pom.xml +++ b/hawkbit-repository/hawkbit-repository-test/pom.xml @@ -83,10 +83,6 @@ org.springframework spring-context-support - - com.google.guava - guava - org.springframework spring-tx diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/matcher/EventVerifier.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/matcher/EventVerifier.java index 11624d7ff..6315a0e0d 100644 --- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/matcher/EventVerifier.java +++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/matcher/EventVerifier.java @@ -22,6 +22,9 @@ import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; import java.util.stream.Stream; +import com.google.common.collect.ConcurrentHashMultiset; +import com.google.common.collect.Multiset; +import com.google.common.collect.Sets; import org.awaitility.Awaitility; import org.awaitility.core.ConditionTimeoutException; import org.eclipse.hawkbit.repository.event.remote.RemoteIdEvent; @@ -37,10 +40,6 @@ import org.springframework.context.event.ApplicationEventMulticaster; import org.springframework.test.context.TestContext; import org.springframework.test.context.support.AbstractTestExecutionListener; -import com.google.common.collect.ConcurrentHashMultiset; -import com.google.common.collect.Multiset; -import com.google.common.collect.Sets; - /** * Test rule to setup and verify the event count for a method. */ diff --git a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/HashGeneratorUtils.java b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/HashGeneratorUtils.java index 91bb49533..e22fcacf2 100644 --- a/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/HashGeneratorUtils.java +++ b/hawkbit-repository/hawkbit-repository-test/src/main/java/org/eclipse/hawkbit/repository/test/util/HashGeneratorUtils.java @@ -11,12 +11,11 @@ package org.eclipse.hawkbit.repository.test.util; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; +import java.util.HexFormat; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import com.google.common.io.BaseEncoding; - /** * Hash digest utility. */ @@ -66,7 +65,7 @@ public final class HashGeneratorUtils { try { final MessageDigest digest = MessageDigest.getInstance(algorithm); final byte[] hashedBytes = digest.digest(message); - return BaseEncoding.base16().lowerCase().encode(hashedBytes); + return HexFormat.of().withLowerCase().formatHex(hashedBytes); } catch (final NoSuchAlgorithmException e) { LOG.error("Algorithm could not be found", 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 f52a65ec0..475cda687 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 @@ -81,8 +81,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; -import com.google.common.collect.Lists; - /** * Data generator utility for tests. */ @@ -438,7 +436,7 @@ public class TestdataFactory { */ public List createDistributionSetsWithoutModules(final int number) { - final List sets = Lists.newArrayListWithExpectedSize(number); + final List sets = new ArrayList<>(number); for (int i = 0; i < number; i++) { sets.add(distributionSetManagement .create(entityFactory.distributionSet().create().name("DS" + i).version(DEFAULT_VERSION + "." + i) @@ -913,7 +911,7 @@ public class TestdataFactory { } public List createTargets(final String prefix, final int offset, final int number) { - final List targets = Lists.newArrayListWithExpectedSize(number); + final List targets = new ArrayList<>(number); for (int i = 0; i < number; i++) { targets.add(entityFactory.target().create().controllerId(prefix + (offset + i))); } @@ -936,7 +934,7 @@ public class TestdataFactory { public List createTargetsWithType(final int number, final String controllerIdPrefix, final TargetType targetType) { - final List targets = Lists.newArrayListWithExpectedSize(number); + final List targets = new ArrayList<>(number); for (int i = 0; i < number; i++) { targets.add(entityFactory.target().create().controllerId(controllerIdPrefix + i) .targetType(targetType.getId())); @@ -976,7 +974,7 @@ public class TestdataFactory { * @return list of {@link Target} objects */ private List generateTargets(final int start, final int numberOfTargets, final String controllerIdPrefix) { - final List targets = Lists.newArrayListWithExpectedSize(numberOfTargets); + final List targets = new ArrayList<>(numberOfTargets); for (int i = start; i < start + numberOfTargets; i++) { targets.add(entityFactory.target().create().controllerId(controllerIdPrefix + i).build()); } @@ -1075,7 +1073,7 @@ public class TestdataFactory { * @return the created set of {@link TargetTag}s */ public List createTargetTags(final int number, final String tagPrefix) { - final List result = Lists.newArrayListWithExpectedSize(number); + final List result = new ArrayList<>(number); for (int i = 0; i < number; i++) { result.add(entityFactory.tag().create().name(tagPrefix + i).description(tagPrefix + i) @@ -1094,7 +1092,7 @@ public class TestdataFactory { * @return the persisted {@link DistributionSetTag}s */ public List createDistributionSetTags(final int number) { - final List result = Lists.newArrayListWithExpectedSize(number); + final List result = new ArrayList<>(number); for (int i = 0; i < number; i++) { result.add( @@ -1450,7 +1448,7 @@ public class TestdataFactory { * @return persisted {@link TargetType} */ public List createTargetTypes(final String targetTypePrefix, final int count) { - final List result = Lists.newArrayListWithExpectedSize(count); + final List result = new ArrayList<>(count); for (int i = 0; i < count; i++) { result.add(entityFactory.targetType().create() .name(targetTypePrefix + i).description(targetTypePrefix + " description") diff --git a/hawkbit-rest/hawkbit-ddi-api/pom.xml b/hawkbit-rest/hawkbit-ddi-api/pom.xml index e36c6f039..306245f4c 100644 --- a/hawkbit-rest/hawkbit-ddi-api/pom.xml +++ b/hawkbit-rest/hawkbit-ddi-api/pom.xml @@ -64,10 +64,5 @@ allure-junit5 test - - com.google.guava - guava - test - diff --git a/hawkbit-rest/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/JsonIgnorePropertiesAnnotationTest.java b/hawkbit-rest/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/JsonIgnorePropertiesAnnotationTest.java index 674d8b3ff..700cb873e 100644 --- a/hawkbit-rest/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/JsonIgnorePropertiesAnnotationTest.java +++ b/hawkbit-rest/hawkbit-ddi-api/src/test/java/org/eclipse/hawkbit/ddi/json/model/JsonIgnorePropertiesAnnotationTest.java @@ -13,11 +13,11 @@ package org.eclipse.hawkbit.ddi.json.model; import static org.assertj.core.api.Assertions.assertThat; import java.io.IOException; +import java.util.Set; import org.junit.jupiter.api.Test; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.google.common.collect.ImmutableSet; import com.google.common.reflect.ClassPath; import io.qameta.allure.Description; @@ -37,7 +37,7 @@ public class JsonIgnorePropertiesAnnotationTest { final ClassLoader loader = Thread.currentThread().getContextClassLoader(); final String packageName = this.getClass().getPackage().getName(); - final ImmutableSet topLevelClasses = ClassPath.from(loader) + final Set topLevelClasses = ClassPath.from(loader) .getTopLevelClasses(packageName); for (final ClassPath.ClassInfo classInfo : topLevelClasses) { final Class modelClass = classInfo.load(); diff --git a/hawkbit-rest/hawkbit-ddi-resource/pom.xml b/hawkbit-rest/hawkbit-ddi-resource/pom.xml index 8e0205c5e..eedc7e93e 100644 --- a/hawkbit-rest/hawkbit-ddi-resource/pom.xml +++ b/hawkbit-rest/hawkbit-ddi-resource/pom.xml @@ -41,10 +41,6 @@ org.springframework.plugin spring-plugin-core - - com.google.guava - guava - jakarta.servlet jakarta.servlet-api diff --git a/hawkbit-rest/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiArtifactDownloadTest.java b/hawkbit-rest/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiArtifactDownloadTest.java index a57838198..af73a62d0 100644 --- a/hawkbit-rest/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiArtifactDownloadTest.java +++ b/hawkbit-rest/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiArtifactDownloadTest.java @@ -44,12 +44,10 @@ import org.springframework.boot.test.context.SpringBootTest; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.event.EventListener; +import org.springframework.http.HttpHeaders; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MvcResult; -import com.google.common.base.Charsets; -import com.google.common.net.HttpHeaders; - import io.qameta.allure.Description; import io.qameta.allure.Feature; import io.qameta.allure.Story; @@ -225,7 +223,7 @@ public class DdiArtifactDownloadTest extends AbstractDDiApiIntegrationTest { .andReturn(); assertThat(result.getResponse().getContentAsByteArray()) - .isEqualTo((artifact.getMd5Hash() + " " + artifact.getFilename()).getBytes(Charsets.US_ASCII)); + .isEqualTo((artifact.getMd5Hash() + " " + artifact.getFilename()).getBytes(StandardCharsets.US_ASCII)); } @Test diff --git a/hawkbit-rest/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiConfigDataTest.java b/hawkbit-rest/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiConfigDataTest.java index 236a2114b..da9784b17 100644 --- a/hawkbit-rest/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiConfigDataTest.java +++ b/hawkbit-rest/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DdiConfigDataTest.java @@ -40,8 +40,6 @@ import org.springframework.hateoas.MediaTypes; import org.springframework.http.MediaType; import org.springframework.test.context.ActiveProfiles; -import com.google.common.collect.Maps; - import io.qameta.allure.Description; import io.qameta.allure.Feature; import io.qameta.allure.Step; @@ -99,7 +97,7 @@ class DdiConfigDataTest extends AbstractDDiApiIntegrationTest { .getLastTargetQuery()) .isGreaterThanOrEqualTo(current); - final Map attributes = Maps.newHashMapWithExpectedSize(1); + final Map attributes = new HashMap<>(1); attributes.put("dsafsdf", "sdsds"); final Target updateControllerAttributes = controllerManagement diff --git a/hawkbit-rest/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DosFilterTest.java b/hawkbit-rest/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DosFilterTest.java index a7039e872..b453bd9ec 100644 --- a/hawkbit-rest/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DosFilterTest.java +++ b/hawkbit-rest/hawkbit-ddi-resource/src/test/java/org/eclipse/hawkbit/ddi/rest/resource/DosFilterTest.java @@ -21,6 +21,7 @@ import org.eclipse.hawkbit.repository.model.Action; import org.eclipse.hawkbit.repository.model.DistributionSet; import org.eclipse.hawkbit.repository.model.Target; import org.eclipse.hawkbit.security.DosFilter; +import org.eclipse.hawkbit.security.HawkbitSecurityProperties; import org.junit.jupiter.api.Test; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; @@ -29,8 +30,6 @@ import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.setup.DefaultMockMvcBuilder; import org.springframework.web.context.WebApplicationContext; -import com.google.common.net.HttpHeaders; - import io.qameta.allure.Description; import io.qameta.allure.Feature; import io.qameta.allure.Story; @@ -44,6 +43,8 @@ import io.qameta.allure.Story; @Story("Denial of Service protection filter") class DosFilterTest extends AbstractDDiApiIntegrationTest { + private static final String X_FORWARDED_FOR = HawkbitSecurityProperties.Clients.X_FORWARDED_FOR; + @Override protected DefaultMockMvcBuilder createMvcWebAppContext(final WebApplicationContext context) { return super.createMvcWebAppContext(context).addFilter( @@ -56,7 +57,7 @@ class DosFilterTest extends AbstractDDiApiIntegrationTest { @Description("Ensures that clients that are on the blacklist are forbidden") void blackListedClientIsForbidden() throws Exception { mvc.perform(get("/{tenant}/controller/v1/4711", tenantAware.getCurrentTenant()) - .header(HttpHeaders.X_FORWARDED_FOR, "192.168.0.4 , 10.0.0.1 ")).andExpect(status().isForbidden()); + .header(X_FORWARDED_FOR, "192.168.0.4 , 10.0.0.1 ")).andExpect(status().isForbidden()); } @Test @@ -68,7 +69,7 @@ class DosFilterTest extends AbstractDDiApiIntegrationTest { int requests = 0; do { result = mvc.perform(get("/{tenant}/controller/v1/4711", tenantAware.getCurrentTenant()) - .header(HttpHeaders.X_FORWARDED_FOR, "10.0.0.1")).andReturn(); + .header(X_FORWARDED_FOR, "10.0.0.1")).andReturn(); requests++; // we give up after 1.000 requests @@ -84,7 +85,7 @@ class DosFilterTest extends AbstractDDiApiIntegrationTest { void unacceptableGetLoadButOnWhitelistIPv4() throws Exception { for (int i = 0; i < 100; i++) { mvc.perform(get("/{tenant}/controller/v1/4711", tenantAware.getCurrentTenant()) - .header(HttpHeaders.X_FORWARDED_FOR, "127.0.0.1")).andExpect(status().isOk()); + .header(X_FORWARDED_FOR, "127.0.0.1")).andExpect(status().isOk()); } } @@ -93,7 +94,7 @@ class DosFilterTest extends AbstractDDiApiIntegrationTest { void unacceptableGetLoadButOnWhitelistIPv6() throws Exception { for (int i = 0; i < 100; i++) { mvc.perform(get("/{tenant}/controller/v1/4711", tenantAware.getCurrentTenant()) - .header(HttpHeaders.X_FORWARDED_FOR, "0:0:0:0:0:0:0:1")).andExpect(status().isOk()); + .header(X_FORWARDED_FOR, "0:0:0:0:0:0:0:1")).andExpect(status().isOk()); } } @@ -107,7 +108,7 @@ class DosFilterTest extends AbstractDDiApiIntegrationTest { Thread.sleep(1100); for (int i = 0; i < 9; i++) { mvc.perform(get("/{tenant}/controller/v1/4711", tenantAware.getCurrentTenant()) - .header(HttpHeaders.X_FORWARDED_FOR, "10.0.0.1")).andExpect(status().isOk()); + .header(X_FORWARDED_FOR, "10.0.0.1")).andExpect(status().isOk()); } } } @@ -122,7 +123,7 @@ class DosFilterTest extends AbstractDDiApiIntegrationTest { int requests = 0; do { result = mvc.perform(post("/{tenant}/controller/v1/4711/deploymentBase/" + actionId + "/feedback", - tenantAware.getCurrentTenant()).header(HttpHeaders.X_FORWARDED_FOR, "10.0.0.1").content(feedback) + tenantAware.getCurrentTenant()).header(X_FORWARDED_FOR, "10.0.0.1").content(feedback) .contentType(MediaType.APPLICATION_JSON).accept(MediaType.APPLICATION_JSON)) .andReturn(); requests++; @@ -149,7 +150,7 @@ class DosFilterTest extends AbstractDDiApiIntegrationTest { for (int i = 0; i < 9; i++) { mvc.perform(post("/{tenant}/controller/v1/4711/deploymentBase/" + actionId + "/feedback", - tenantAware.getCurrentTenant()).header(HttpHeaders.X_FORWARDED_FOR, "10.0.0.1") + tenantAware.getCurrentTenant()).header(X_FORWARDED_FOR, "10.0.0.1") .content(feedback).contentType(MediaType.APPLICATION_JSON) .accept(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()); diff --git a/hawkbit-rest/hawkbit-mgmt-resource/pom.xml b/hawkbit-rest/hawkbit-mgmt-resource/pom.xml index f213ccc1b..8e7f3e7e5 100644 --- a/hawkbit-rest/hawkbit-mgmt-resource/pom.xml +++ b/hawkbit-rest/hawkbit-mgmt-resource/pom.xml @@ -21,7 +21,6 @@ hawkbit-mgmt-resource hawkBit :: REST :: Management Resources - org.eclipse.hawkbit @@ -42,10 +41,6 @@ org.springframework.plugin spring-plugin-core - - com.google.guava - guava - org.springframework spring-context diff --git a/hawkbit-rest/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSystemManagementResource.java b/hawkbit-rest/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSystemManagementResource.java index df268ec2e..694b26c40 100644 --- a/hawkbit-rest/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSystemManagementResource.java +++ b/hawkbit-rest/hawkbit-mgmt-resource/src/main/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtSystemManagementResource.java @@ -11,7 +11,7 @@ package org.eclipse.hawkbit.mgmt.rest.resource; import java.util.Collection; import java.util.Collections; -import java.util.List; +import java.util.Objects; import java.util.stream.Collectors; import org.eclipse.hawkbit.im.authentication.SpPermission.SpringEvalExpressions; @@ -24,7 +24,6 @@ import org.eclipse.hawkbit.repository.report.model.SystemUsageReportWithTenants; import org.eclipse.hawkbit.repository.report.model.TenantUsage; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.cache.Cache; import org.springframework.cache.CacheManager; import org.springframework.http.ResponseEntity; import org.springframework.security.access.prepost.PreAuthorize; @@ -106,7 +105,10 @@ public class MgmtSystemManagementResource implements MgmtSystemManagementRestApi public ResponseEntity> getCaches() { final Collection cacheNames = cacheManager.getCacheNames(); return ResponseEntity - .ok(cacheNames.stream().map(cacheManager::getCache).map(this::cacheRest).collect(Collectors.toList())); + .ok(cacheNames.stream().map(cacheManager::getCache) + .filter(Objects::nonNull) + .map(cache -> new MgmtSystemCache(cache.getName(), Collections.emptyList())) + .collect(Collectors.toList())); } /** @@ -122,21 +124,4 @@ public class MgmtSystemManagementResource implements MgmtSystemManagementRestApi cacheNames.forEach(cacheName -> cacheManager.getCache(cacheName).clear()); return ResponseEntity.ok(cacheNames); } - - private MgmtSystemCache cacheRest(final Cache cache) { - final Object nativeCache = cache.getNativeCache(); - if (nativeCache instanceof com.google.common.cache.Cache) { - return guavaCache(cache, nativeCache); - } else { - return new MgmtSystemCache(cache.getName(), Collections.emptyList()); - } - } - - @SuppressWarnings("unchecked") - private MgmtSystemCache guavaCache(final Cache cache, final Object nativeCache) { - final com.google.common.cache.Cache guavaCache = (com.google.common.cache.Cache) nativeCache; - final List keys = guavaCache.asMap().keySet().stream().map(key -> key.toString()) - .collect(Collectors.toList()); - return new MgmtSystemCache(cache.getName(), keys); - } } diff --git a/hawkbit-rest/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetResourceTest.java b/hawkbit-rest/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetResourceTest.java index 9e8c73737..b5301720c 100644 --- a/hawkbit-rest/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetResourceTest.java +++ b/hawkbit-rest/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetResourceTest.java @@ -27,6 +27,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; +import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Optional; @@ -72,8 +73,6 @@ import org.springframework.hateoas.MediaTypes; import org.springframework.http.MediaType; import org.springframework.test.web.servlet.MvcResult; -import com.google.common.collect.Lists; -import com.google.common.collect.Sets; import com.jayway.jsonpath.JsonPath; import io.qameta.allure.Description; @@ -218,7 +217,7 @@ public class MgmtDistributionSetResourceTest extends AbstractManagementApiIntegr // verify quota enforcement final int maxSoftwareModules = quotaManagement.getMaxSoftwareModulesPerDistributionSet(); - final List moduleIDs = Lists.newArrayList(); + final List moduleIDs = new ArrayList<>(); for (int i = 0; i < maxSoftwareModules + 1; ++i) { moduleIDs.add(testdataFactory.createSoftwareModuleApp("sm" + i).getId()); } @@ -1271,8 +1270,7 @@ public class MgmtDistributionSetResourceTest extends AbstractManagementApiIntegr final String knownValuePrefix = "knownValue"; final DistributionSet testDS = testdataFactory.createDistributionSet("one"); for (int index = 0; index < totalMetadata; index++) { - distributionSetManagement.createMetaData(testDS.getId(), Lists - .newArrayList(entityFactory.generateDsMetadata(knownKeyPrefix + index, knownValuePrefix + index))); + distributionSetManagement.createMetaData(testDS.getId(), List.of(entityFactory.generateDsMetadata(knownKeyPrefix + index, knownValuePrefix + index))); } mvc.perform(get(MgmtRestConstants.DISTRIBUTIONSET_V1_REQUEST_MAPPING + "/{distributionSetId}/metadata", @@ -1383,7 +1381,7 @@ public class MgmtDistributionSetResourceTest extends AbstractManagementApiIntegr private Set createDistributionSetsAlphabetical(final int amount) { char character = 'a'; - final Set created = Sets.newHashSetWithExpectedSize(amount); + final Set created = new HashSet<>(amount); for (int index = 0; index < amount; index++) { final String str = String.valueOf(character); created.add(testdataFactory.createDistributionSet(str)); diff --git a/hawkbit-rest/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetTypeResourceTest.java b/hawkbit-rest/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetTypeResourceTest.java index 56d5e8c4a..3b1660b6d 100644 --- a/hawkbit-rest/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetTypeResourceTest.java +++ b/hawkbit-rest/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtDistributionSetTypeResourceTest.java @@ -23,6 +23,7 @@ import static org.springframework.test.web.servlet.result.MockMvcResultMatchers. import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; import java.io.UnsupportedEncodingException; +import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; @@ -256,7 +257,7 @@ public class MgmtDistributionSetTypeResourceTest extends AbstractManagementApiIn // create software module types final int maxSoftwareModuleTypes = quotaManagement.getMaxSoftwareModuleTypesPerDistributionSetType(); - final List moduleTypeIds = Lists.newArrayList(); + final List moduleTypeIds = new ArrayList<>(); for (int i = 0; i < maxSoftwareModuleTypes + 1; ++i) { final SoftwareModuleTypeCreate smCreate = entityFactory.softwareModuleType().create().name("smType_" + i) .description("smType_" + i).maxAssignments(1).colour("blue").key("smType_" + i); diff --git a/hawkbit-rest/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResourceTest.java b/hawkbit-rest/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResourceTest.java index 4ad51c646..be3b0f823 100644 --- a/hawkbit-rest/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResourceTest.java +++ b/hawkbit-rest/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetResourceTest.java @@ -44,7 +44,6 @@ import java.util.stream.Stream; import jakarta.validation.ConstraintViolationException; import com.fasterxml.jackson.databind.ObjectMapper; -import com.google.common.collect.Lists; import org.apache.commons.lang3.RandomStringUtils; import org.awaitility.Awaitility; import org.eclipse.hawkbit.exception.SpServerError; @@ -2014,7 +2013,7 @@ class MgmtTargetResourceTest extends AbstractManagementApiIntegrationTest { final String knownValuePrefix = "knownValue"; final Target testTarget = testdataFactory.createTarget("targetId"); for (int index = 0; index < totalMetadata; index++) { - targetManagement.createMetaData(testTarget.getControllerId(), Lists.newArrayList( + targetManagement.createMetaData(testTarget.getControllerId(), List.of( entityFactory.generateTargetMetadata(knownKeyPrefix + index, knownValuePrefix + index))); } diff --git a/hawkbit-rest/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetTypeResourceTest.java b/hawkbit-rest/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetTypeResourceTest.java index ec03dddf0..70c0e504c 100644 --- a/hawkbit-rest/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetTypeResourceTest.java +++ b/hawkbit-rest/hawkbit-mgmt-resource/src/test/java/org/eclipse/hawkbit/mgmt/rest/resource/MgmtTargetTypeResourceTest.java @@ -544,7 +544,7 @@ class MgmtTargetTypeResourceTest extends AbstractManagementApiIntegrationTest { // create distribution set types final int maxDistributionSetTypes = quotaManagement.getMaxDistributionSetTypesPerTargetType(); - final List dsTypeIds = Lists.newArrayList(); + final List dsTypeIds = new ArrayList<>(); for (int i = 0; i < maxDistributionSetTypes + 1; ++i) { final DistributionSetType ds = testdataFactory.findOrCreateDistributionSetType("dsType_" + i, "dsType_" + i); diff --git a/hawkbit-rest/hawkbit-rest-core/pom.xml b/hawkbit-rest/hawkbit-rest-core/pom.xml index 64898aee9..ebe271090 100644 --- a/hawkbit-rest/hawkbit-rest-core/pom.xml +++ b/hawkbit-rest/hawkbit-rest-core/pom.xml @@ -27,10 +27,6 @@ hawkbit-core ${project.version} - - com.google.guava - guava - org.apache.commons commons-lang3 diff --git a/hawkbit-rest/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/exception/ResponseExceptionHandler.java b/hawkbit-rest/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/exception/ResponseExceptionHandler.java index ea935b9bd..ad0fbdc13 100644 --- a/hawkbit-rest/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/exception/ResponseExceptionHandler.java +++ b/hawkbit-rest/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/exception/ResponseExceptionHandler.java @@ -34,8 +34,6 @@ import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.method.annotation.HandlerMethodValidationException; import org.springframework.web.multipart.MultipartException; -import com.google.common.collect.Iterables; - /** * General controller advice for exception handling. */ @@ -247,7 +245,7 @@ public class ResponseExceptionHandler { logRequest(request, ex); final List throwables = ExceptionUtils.getThrowableList(ex); - final Throwable responseCause = Iterables.getLast(throwables); + final Throwable responseCause = throwables.get(throwables.size() - 1); if (responseCause.getMessage().isEmpty()) { LOG.warn("Request {} lead to MultipartException without root cause message:\n{}", request.getRequestURL(), diff --git a/hawkbit-rest/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/util/FileStreamingUtil.java b/hawkbit-rest/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/util/FileStreamingUtil.java index 697de81b3..d83ef34f7 100644 --- a/hawkbit-rest/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/util/FileStreamingUtil.java +++ b/hawkbit-rest/hawkbit-rest-core/src/main/java/org/eclipse/hawkbit/rest/util/FileStreamingUtil.java @@ -18,11 +18,13 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; +import java.util.Objects; import jakarta.servlet.ServletOutputStream; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; +import org.apache.commons.io.IOUtils; import org.eclipse.hawkbit.artifact.repository.model.DbArtifact; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -31,10 +33,6 @@ import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; -import com.google.common.base.Preconditions; -import com.google.common.io.ByteStreams; -import com.google.common.math.DoubleMath; - /** * Utility class for artifact file streaming. */ @@ -138,7 +136,7 @@ public final class FileStreamingUtil { // set the x-content-type options header to prevent browsers from doing // MIME-sniffing when downloading an artifact, as this could cause a // security vulnerability - response.setHeader(com.google.common.net.HttpHeaders.X_CONTENT_TYPE_OPTIONS, "nosniff"); + response.setHeader("X-Content-Type-Options", "nosniff"); if (lastModified > 0) { response.setDateHeader(HttpHeaders.LAST_MODIFIED, lastModified); } @@ -334,13 +332,13 @@ public final class FileStreamingUtil { final long startMillis = System.currentTimeMillis(); LOG.trace("Start of copy-streams of file {} from {} to {}", filename, start, length); - Preconditions.checkNotNull(from); - Preconditions.checkNotNull(to); + Objects.requireNonNull(from); + Objects.requireNonNull(to); final byte[] buf = new byte[BUFFER_SIZE]; long total = 0; int progressPercent = 1; - ByteStreams.skipFully(from, start); + IOUtils.skipFully(from, start); long toRead = length; boolean toContinue = true; @@ -365,7 +363,7 @@ public final class FileStreamingUtil { } if (progressListener != null) { - final int newPercent = DoubleMath.roundToInt(total * 100.0 / length, RoundingMode.DOWN); + final int newPercent = (int)Math.floor(total * 100.0 / length); // every 10 percent an event if (newPercent == 100 || newPercent > progressPercent + 10) { diff --git a/hawkbit-runtime/hawkbit-simple-ui/src/main/java/org/eclipse/hawkbit/ui/simple/view/util/SelectionGrid.java b/hawkbit-runtime/hawkbit-simple-ui/src/main/java/org/eclipse/hawkbit/ui/simple/view/util/SelectionGrid.java index d6b497769..a232b9f40 100644 --- a/hawkbit-runtime/hawkbit-simple-ui/src/main/java/org/eclipse/hawkbit/ui/simple/view/util/SelectionGrid.java +++ b/hawkbit-runtime/hawkbit-simple-ui/src/main/java/org/eclipse/hawkbit/ui/simple/view/util/SelectionGrid.java @@ -9,7 +9,6 @@ */ package org.eclipse.hawkbit.ui.simple.view.util; -import com.google.common.collect.Streams; import com.vaadin.flow.component.grid.Grid; import com.vaadin.flow.component.grid.GridVariant; import com.vaadin.flow.data.provider.Query; @@ -55,7 +54,7 @@ public class SelectionGrid extends Grid { // if matching keeps old entries instead of new the new ones in order to // select them in case refresh is made with keepSelection // this however means that if they are changed the old state will be shown!!! - return Streams.concat(selected.stream(), + return Stream.concat(selected.stream(), fetch.filter(next -> !selectedIds.contains(entityRepresentation.idFn.apply(next)))); } }); diff --git a/hawkbit-security-core/pom.xml b/hawkbit-security-core/pom.xml index fe3d13301..1c0ee6898 100644 --- a/hawkbit-security-core/pom.xml +++ b/hawkbit-security-core/pom.xml @@ -68,11 +68,5 @@ allure-junit5 test - - com.google.guava - guava - test - - - + \ No newline at end of file diff --git a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/HawkbitSecurityProperties.java b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/HawkbitSecurityProperties.java index 0b4b00476..8fde45cca 100644 --- a/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/HawkbitSecurityProperties.java +++ b/hawkbit-security-core/src/main/java/org/eclipse/hawkbit/security/HawkbitSecurityProperties.java @@ -183,6 +183,8 @@ public class HawkbitSecurityProperties { */ public static class Clients { + public static final String X_FORWARDED_FOR = "X-Forwarded-For"; + /** * Blacklisted client (IP addresses) for for DDI and Management API. */ @@ -191,7 +193,7 @@ public class HawkbitSecurityProperties { /** * Name of the http header from which the remote ip is extracted. */ - private String remoteIpHeader = "X-Forwarded-For"; + private String remoteIpHeader = X_FORWARDED_FOR; /** * Set to true if DDI clients remote IP should be stored. diff --git a/hawkbit-security-core/src/test/java/org/eclipse/hawkbit/util/IpUtilTest.java b/hawkbit-security-core/src/test/java/org/eclipse/hawkbit/util/IpUtilTest.java index 3a2133f92..70059ffbd 100644 --- a/hawkbit-security-core/src/test/java/org/eclipse/hawkbit/util/IpUtilTest.java +++ b/hawkbit-security-core/src/test/java/org/eclipse/hawkbit/util/IpUtilTest.java @@ -9,7 +9,6 @@ */ package org.eclipse.hawkbit.util; -import static com.google.common.net.HttpHeaders.X_FORWARDED_FOR; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.reset; import static org.mockito.Mockito.times; @@ -37,6 +36,7 @@ import org.mockito.junit.jupiter.MockitoExtension; @Story("IP Util Test") public class IpUtilTest { + private static final String X_FORWARDED_FOR = HawkbitSecurityProperties.Clients.X_FORWARDED_FOR; private static final String KNOWN_REQUEST_HEADER = "bumlux"; @Mock diff --git a/pom.xml b/pom.xml index 694a61996..d336420b1 100644 --- a/pom.xml +++ b/pom.xml @@ -757,38 +757,6 @@ ${spring-amqp.version} test - - com.google.guava - guava - ${guava.version} - - - - com.google.j2objc - j2objc-annotations - - - com.google.code.findbugs - jsr305 - - - org.checkerframework - checker-compat-qual - - - com.google.errorprone - error_prone_annotations - - - com.google.j2objc - j2objc-annotations - - - org.codehaus.mojo - animal-sniffer-annotations - - - org.awaitility awaitility @@ -803,5 +771,37 @@ lombok true + + com.google.guava + guava + ${guava.version} + + + + com.google.j2objc + j2objc-annotations + + + com.google.code.findbugs + jsr305 + + + org.checkerframework + checker-compat-qual + + + com.google.errorprone + error_prone_annotations + + + com.google.j2objc + j2objc-annotations + + + org.codehaus.mojo + animal-sniffer-annotations + + +