diff --git a/.gitignore b/.gitignore index ed33846a6..7b9eadf6d 100644 --- a/.gitignore +++ b/.gitignore @@ -1,17 +1,10 @@ -.gitignore -.classpath -.project -.settings -.factorypath -*~ -*/target -/target/ +# Maven +target/ +settings.xml + +# IntelliJ *.iml -*.pyc .idea -da-config.json -testsuite/random -testsuite/**/arquillian.properties + +# auto-generated java code /common/src/main/java/org/jboss/da/common/Constants.java -nb-configuration.xml -nbactions-*.xml diff --git a/application/pom.xml b/application/pom.xml index c350c9ace..1c3d2725e 100644 --- a/application/pom.xml +++ b/application/pom.xml @@ -7,97 +7,47 @@ application application - ear + jar + Quarkus application for Dependency Analyzer + + + uber-jar + - org.jboss.da - communication - ejb - - - org.jboss.da - source-code-manager - ejb - - - org.jboss.da - reports-model - ejb + reports-rest + + - org.jboss.da - reports-backend - ejb + io.quarkus + quarkus-config-yaml - org.jboss.da - reports-rest - war + io.quarkus + quarkus-jdbc-postgresql + + + + + + + + - - - false - src/main/resources - - - false - src/main/java - - ** - - - **/*.java - - - - - org.apache.maven.plugins - maven-ear-plugin - 2.9 + io.quarkus.platform + quarkus-maven-plugin - true - 6 - lib dependency-analysis - - - org.jboss.da - communication - - - org.jboss.da - reports-model - - - org.jboss.da - reports-backend - - - org.jboss.da - reports-rest - - - no-version - ${outDirectory} - - - - org.wildfly.plugins - wildfly-maven-plugin - - target - dependency-analysis.ear - false - diff --git a/application/src/main/application/META-INF/application.xml b/application/src/main/application/META-INF/application.xml deleted file mode 100644 index 3b2c89c6f..000000000 --- a/application/src/main/application/META-INF/application.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - Dependency-Analysis - Dependency-Analysis - - - common.jar - - - source-code-manager.jar - - - communication.jar - - - reports-model.jar - - - reports-backend.jar - - - - reports-rest.war - da - - - lib - diff --git a/application/src/main/application/META-INF/jboss-deployment-structure.xml b/application/src/main/application/META-INF/jboss-deployment-structure.xml deleted file mode 100644 index 59c30dede..000000000 --- a/application/src/main/application/META-INF/jboss-deployment-structure.xml +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/application/src/main/application/META-INF/persistence.xml b/application/src/main/application/META-INF/persistence.xml deleted file mode 100644 index b72e7221d..000000000 --- a/application/src/main/application/META-INF/persistence.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - org.hibernate.jpa.HibernatePersistenceProvider - java:jboss/datasources/PostgresDA - org.jboss.da.listings.api.model.BlackArtifact - org.jboss.da.listings.api.model.GA - - - - - - - - - diff --git a/application/src/main/java/org/jboss/da/application/Lifecycle.java b/application/src/main/java/org/jboss/da/application/Lifecycle.java new file mode 100644 index 000000000..b138319a1 --- /dev/null +++ b/application/src/main/java/org/jboss/da/application/Lifecycle.java @@ -0,0 +1,20 @@ +package org.jboss.da.application; + +import io.quarkus.logging.Log; +import io.quarkus.runtime.Shutdown; +import io.quarkus.runtime.Startup; +import jakarta.enterprise.context.ApplicationScoped; + +@ApplicationScoped +public class Lifecycle { + + @Startup + void init() { + Log.info("DA started"); + } + + @Shutdown + void shutdown() { + Log.info("DA shutdown"); + } +} diff --git a/common/src/main/resources/META-INF/beans.xml b/application/src/main/resources/META-INF/beans.xml similarity index 50% rename from common/src/main/resources/META-INF/beans.xml rename to application/src/main/resources/META-INF/beans.xml index a695c672f..9120302dc 100644 --- a/common/src/main/resources/META-INF/beans.xml +++ b/application/src/main/resources/META-INF/beans.xml @@ -1,7 +1,6 @@ + xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_2_0.xsd" + bean-discovery-mode="annotated"> diff --git a/application/src/main/resources/application.yaml b/application/src/main/resources/application.yaml new file mode 100644 index 000000000..00eb703d2 --- /dev/null +++ b/application/src/main/resources/application.yaml @@ -0,0 +1,30 @@ +quarkus: + http: + enable-compression: true + enable-decompression: true + websocket: + dispatch-to-worker: true + hibernate-orm: + log: + sql: false + database: + generation: ${persistence.hibernate.hbm2ddl.auto:update} + # graceful shutdown in case Quarkus is still processing requests + shutdown: + timeout: 30 + index-dependency: + pnc-jandex: + group-id: "org.jboss.pnc" + log: + console: + format: "%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c{3.}] (%t) %s%e%n" + json: + ~: false + exception-output-type: formatted + category: + "org.jboss.pnc": + level: DEBUG + "com.arjuna.ats.jta": + # Set to WARN if you want to see all the exceptions + level: ERROR + level: INFO diff --git a/common/pom.xml b/common/pom.xml index 6d48d6a1f..3debaf9ed 100644 --- a/common/pom.xml +++ b/common/pom.xml @@ -7,98 +7,48 @@ common common - ejb + jar org.jboss.da reports-model - ejb - com.fasterxml.jackson.core - jackson-databind - provided - - - - org.projectlombok - lombok - provided + io.quarkus + quarkus-core org.jboss.pnc constants - - - junit - junit - - - jakarta.enterprise - jakarta.enterprise.cdi-api - org.slf4j slf4j-api - org.jboss.spec.javax.ejb - jboss-ejb-api_3.2_spec + org.projectlombok + lombok provided + - org.jboss.spec.javax.annotation - jboss-annotations-api_1.3_spec + io.quarkus + quarkus-junit5 + test - - - - org.apache.maven.plugins - maven-ejb-plugin - - - - - org.apache.httpcomponents export meta-inf - - - - - - - - + + io.smallrye + jandex-maven-plugin + pl.project13.maven git-commit-id-plugin - 2.2.0 - - - - revision - - - - - - - ${project.basedir}/.git - - - true - - diff --git a/common/src/main/java/org/jboss/da/common/logging/AppLifecycle.java b/common/src/main/java/org/jboss/da/common/logging/AppLifecycle.java deleted file mode 100644 index 68f84b4a4..000000000 --- a/common/src/main/java/org/jboss/da/common/logging/AppLifecycle.java +++ /dev/null @@ -1,24 +0,0 @@ -package org.jboss.da.common.logging; - -import lombok.extern.slf4j.Slf4j; - -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; -import javax.ejb.Startup; -import javax.inject.Singleton; - -@Startup -@Singleton -@Slf4j -public class AppLifecycle { - - @PostConstruct - public void initialize() { - log.info("The application is starting"); - } - - @PreDestroy - public void destroy() { - log.info("The application is shutting down"); - } -} diff --git a/common/src/main/java/org/jboss/da/common/logging/AuditLogger.java b/common/src/main/java/org/jboss/da/common/logging/AuditLogger.java index 25b208a1c..d8423d519 100644 --- a/common/src/main/java/org/jboss/da/common/logging/AuditLogger.java +++ b/common/src/main/java/org/jboss/da/common/logging/AuditLogger.java @@ -1,5 +1,8 @@ package org.jboss.da.common.logging; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + public class AuditLogger { - public static final org.slf4j.Logger LOG = org.slf4j.LoggerFactory.getLogger("org.jboss.da._audit_"); + public static final Logger LOG = LoggerFactory.getLogger("org.jboss.da._audit_"); } diff --git a/common/src/main/java/org/jboss/da/common/util/LoggerProducer.java b/common/src/main/java/org/jboss/da/common/logging/LoggerProducer.java similarity index 77% rename from common/src/main/java/org/jboss/da/common/util/LoggerProducer.java rename to common/src/main/java/org/jboss/da/common/logging/LoggerProducer.java index 6ede96557..c5e61ab15 100644 --- a/common/src/main/java/org/jboss/da/common/util/LoggerProducer.java +++ b/common/src/main/java/org/jboss/da/common/logging/LoggerProducer.java @@ -1,7 +1,7 @@ -package org.jboss.da.common.util; +package org.jboss.da.common.logging; -import javax.enterprise.inject.Produces; -import javax.enterprise.inject.spi.InjectionPoint; +import jakarta.enterprise.inject.Produces; +import jakarta.enterprise.inject.spi.InjectionPoint; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/common/src/main/java/org/jboss/da/common/util/UserLog.java b/common/src/main/java/org/jboss/da/common/logging/UserLog.java similarity index 91% rename from common/src/main/java/org/jboss/da/common/util/UserLog.java rename to common/src/main/java/org/jboss/da/common/logging/UserLog.java index cb80430cc..63ac9b3b1 100644 --- a/common/src/main/java/org/jboss/da/common/util/UserLog.java +++ b/common/src/main/java/org/jboss/da/common/logging/UserLog.java @@ -3,7 +3,7 @@ * To change this template file, choose Tools | Templates * and open the template in the editor. */ -package org.jboss.da.common.util; +package org.jboss.da.common.logging; import static java.lang.annotation.ElementType.FIELD; import static java.lang.annotation.ElementType.METHOD; @@ -12,7 +12,7 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; -import javax.inject.Qualifier; +import jakarta.inject.Qualifier; /** * diff --git a/common/src/main/java/org/jboss/da/common/util/Configuration.java b/common/src/main/java/org/jboss/da/common/util/Configuration.java index cf63e12df..ca561bb11 100644 --- a/common/src/main/java/org/jboss/da/common/util/Configuration.java +++ b/common/src/main/java/org/jboss/da/common/util/Configuration.java @@ -8,7 +8,7 @@ import org.jboss.da.common.json.GlobalConfig; import org.jboss.da.common.json.ModuleConfigJson; -import javax.enterprise.context.ApplicationScoped; +import jakarta.enterprise.context.ApplicationScoped; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.jsontype.NamedType; diff --git a/common/src/main/java/org/jboss/da/common/util/FileUtils.java b/common/src/main/java/org/jboss/da/common/util/FileUtils.java deleted file mode 100644 index dfacd439f..000000000 --- a/common/src/main/java/org/jboss/da/common/util/FileUtils.java +++ /dev/null @@ -1,25 +0,0 @@ -package org.jboss.da.common.util; - -import java.io.File; - -/** - * Library class, which helps with the common file operations - * - * @author Jakub Bartecek <jbartece@redhat.com> - * - */ -public class FileUtils { - - /** - * Deletes directory and its content - */ - public static void deleteDirectory(File directory) { - for (File file : directory.listFiles()) { - if (file.isDirectory()) - deleteDirectory(file); - else - file.delete(); - } - directory.delete(); - } -} diff --git a/common/src/main/resources/da-config.json b/common/src/main/resources/da-config.json index 5f66a0b2f..917b35b31 100644 --- a/common/src/main/resources/da-config.json +++ b/common/src/main/resources/da-config.json @@ -5,7 +5,7 @@ { "@module-group": "global", "indyUrl": "", - "cartographerUrl": "" + "pncUrl": "" }, { "@module-group": "pnc", diff --git a/common/src/test/java/org/jboss/da/common/util/ConfigurationTest.java b/common/src/test/java/org/jboss/da/common/util/ConfigurationTest.java index cdc76b5da..6646ef581 100644 --- a/common/src/test/java/org/jboss/da/common/util/ConfigurationTest.java +++ b/common/src/test/java/org/jboss/da/common/util/ConfigurationTest.java @@ -4,9 +4,9 @@ import org.jboss.da.common.json.GlobalConfig; import org.jboss.da.common.json.LookupMode; import org.jboss.pnc.enums.BuildCategory; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import java.util.List; import java.util.Map; @@ -14,10 +14,10 @@ import java.util.stream.Collectors; import static org.jboss.da.common.util.Configuration.CONFIG_SYSPROP; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; public class ConfigurationTest { @@ -25,7 +25,7 @@ public class ConfigurationTest { private Configuration configuration; - @Before + @BeforeEach public void before() { configuration = new Configuration(); backupSystemConfigPath(); @@ -35,7 +35,7 @@ private void backupSystemConfigPath() { backupConfigPath = System.getProperty(CONFIG_SYSPROP); } - @After + @AfterEach public void restoreConfigPath() { if (backupConfigPath != null) { System.setProperty(CONFIG_SYSPROP, backupConfigPath); diff --git a/communication/pom.xml b/communication/pom.xml index ba72e1581..674776e7c 100644 --- a/communication/pom.xml +++ b/communication/pom.xml @@ -7,114 +7,95 @@ communication communication - ejb + jar org.jboss.da common - ejb org.jboss.da reports-model - ejb org.jboss.da source-code-manager - ejb org.jboss.pnc common - - - org.commonjava.atlas - atlas-identities - - + + + + + + org.jboss.pnc pnc-common + jakarta org.jboss.pnc - rest-api - java-client - - - org.commonjava.atlas - atlas-identities - - + rest-client-jakarta - - - javax.xml.bind - jaxb-api - test - - - - - com.sun.xml.bind - jaxb-impl - test - + + + + + com.fasterxml.jackson.core jackson-databind - provided - - - jakarta.enterprise - jakarta.enterprise.cdi-api + - org.jboss.spec.javax.servlet - jboss-servlet-api_4.0_spec - provided + io.quarkus + quarkus-undertow + org.slf4j slf4j-api - org.keycloak - keycloak-core - provided + org.commonjava.maven.galley + galley-maven + jakarta - org.wildfly.security - wildfly-elytron-http-oidc - provided + org.commonjava.maven.galley + galley-core + jakarta - org.commonjava.maven.galley - galley-maven + galley-api + jakarta org.commonjava.maven.galley galley-transport-filearc + jakarta org.commonjava.maven.galley galley-transport-httpclient + jakarta - - org.commonjava.atlas - atlas-identities - - org.commonjava.maven.galley galley-cache-partyline + jakarta + + + org.commonjava.atlas + atlas-identities @@ -125,12 +106,14 @@ - junit - junit + io.quarkus + quarkus-junit5 + test - org.mockito - mockito-all + io.quarkus + quarkus-junit5-mockito + test org.skyscreamer @@ -138,13 +121,24 @@ test - com.github.tomakehurst + org.wiremock wiremock-standalone test - org.jboss.spec.javax.xml.bind - jboss-jaxb-api_2.3_spec + org.glassfish.jaxb + jaxb-runtime + test + + + + + io.smallrye + jandex-maven-plugin + + + + diff --git a/communication/src/main/java/org/jboss/da/communication/GalleyMavenProducer.java b/communication/src/main/java/org/jboss/da/communication/GalleyMavenProducer.java index e6323e7b0..3bbe813a3 100644 --- a/communication/src/main/java/org/jboss/da/communication/GalleyMavenProducer.java +++ b/communication/src/main/java/org/jboss/da/communication/GalleyMavenProducer.java @@ -1,7 +1,8 @@ package org.jboss.da.communication; -import com.codahale.metrics.MetricRegistry; import com.fasterxml.jackson.databind.ObjectMapper; +import jakarta.annotation.PostConstruct; +import jakarta.enterprise.inject.Produces; import org.commonjava.cdi.util.weft.config.DefaultWeftConfig; import org.commonjava.cdi.util.weft.config.WeftConfig; import org.commonjava.maven.galley.auth.MemoryPasswordManager; @@ -21,37 +22,35 @@ import org.commonjava.maven.galley.maven.spi.defaults.MavenPluginImplications; import org.commonjava.maven.galley.model.Location; import org.commonjava.maven.galley.nfc.MemoryNotFoundCache; +import org.commonjava.maven.galley.proxy.NoOpProxySitesCache; import org.commonjava.maven.galley.spi.auth.PasswordManager; import org.commonjava.maven.galley.spi.event.FileEventManager; import org.commonjava.maven.galley.spi.io.PathGenerator; import org.commonjava.maven.galley.spi.nfc.NotFoundCache; +import org.commonjava.maven.galley.spi.proxy.ProxySitesCache; import org.commonjava.maven.galley.spi.transport.LocationExpander; import org.commonjava.maven.galley.transport.NoOpLocationExpander; import org.commonjava.maven.galley.transport.htcli.Http; import org.commonjava.maven.galley.transport.htcli.HttpImpl; import org.commonjava.maven.galley.transport.htcli.conf.GlobalHttpConfiguration; -import org.commonjava.util.partyline.JoinableFileManager; +import org.commonjava.maven.galley.transport.htcli.conf.GlobalProxyConfig; +import org.commonjava.o11yphant.metrics.api.MetricRegistry; +import org.commonjava.util.partyline.Partyline; -import javax.annotation.PostConstruct; -import javax.enterprise.inject.Produces; -import javax.inject.Inject; import java.io.File; import java.io.IOException; import java.nio.file.Files; +import java.util.ArrayList; +import java.util.List; import java.util.concurrent.Executors; // Inspiration taken from the previous CartographyProducer and org.commonjava.maven.galley.embed.TestCDIProvider.java public class GalleyMavenProducer { - @Inject - private TransferDecoratorManager transferDecorator; - private FileTransportConfig fileTransportConfig; private PartyLineCacheProvider cacheProvider; - private MetricRegistry metricRegistry; - private GlobalHttpConfiguration globalHttpConfiguration; private PathGenerator pathGenerator; @@ -82,15 +81,13 @@ void init() { file, pathGenerator, new NoOpFileEventManager(), - transferDecorator, + new TransferDecoratorManager(), Executors.newScheduledThreadPool(2), - new JoinableFileManager()); + new Partyline()); fileTransportConfig = new FileTransportConfig(file, pathGenerator); globalHttpConfiguration = new GlobalHttpConfiguration(); - metricRegistry = new MetricRegistry(); - } catch (IOException e) { throw new RuntimeException(e); } @@ -161,11 +158,6 @@ public GlobalHttpConfiguration getGlobalHttpConfiguration() { return globalHttpConfiguration; } - @Produces - public MetricRegistry getMetricRegistry() { - return metricRegistry; - } - @Produces public TransportMetricConfig getTransportMetricConfig() { return transportMetricConfig; @@ -176,6 +168,46 @@ public ObjectMapper getObjectMapper() { return new ObjectMapper(); } + @Produces + public GlobalProxyConfig getGlobalProxyConfig() { + return new GlobalProxyConfig() { + @Override + public String getHost() { + return "proxy.com"; + } + + @Override + public int getPort() { + return 3128; + } + + @Override + public String getUser() { + return null; + } + + @Override + public List getAllowHttpJobTypes() { + return new ArrayList<>(); + } + + @Override + public List getEgressSites() { + return new ArrayList<>(); + } + }; + } + + @Produces + public ProxySitesCache getProxySitesCache() { + return new NoOpProxySitesCache(); + } + + @Produces + public MetricRegistry getMetricRegistry() { + return null; + } + // Only appears to be used by GalleyWrapperTestIT @Produces public ModelProcessorConfig getModelProcessorConfig() { diff --git a/communication/src/main/java/org/jboss/da/communication/auth/impl/ElytronAuthenticatorService.java b/communication/src/main/java/org/jboss/da/communication/auth/impl/ElytronAuthenticatorService.java deleted file mode 100644 index 938e84446..000000000 --- a/communication/src/main/java/org/jboss/da/communication/auth/impl/ElytronAuthenticatorService.java +++ /dev/null @@ -1,55 +0,0 @@ -package org.jboss.da.communication.auth.impl; - -import org.jboss.da.communication.auth.AuthenticatorService; -import org.wildfly.security.auth.server.SecurityDomain; -import org.wildfly.security.auth.server.SecurityIdentity; -import org.wildfly.security.http.oidc.AccessToken; -import org.wildfly.security.http.oidc.OidcSecurityContext; - -import javax.annotation.PostConstruct; -import javax.enterprise.context.RequestScoped; -import javax.inject.Inject; -import javax.servlet.http.HttpServletRequest; -import java.util.Optional; - -/** - * Class based on using SecurityIdentity or OidcSecurityContext to get information from the user - */ -@RequestScoped -public class ElytronAuthenticatorService implements AuthenticatorService { - - @Inject - HttpServletRequest servletRequest; - - private String preferredUsername; - - @PostConstruct - public void postSetup() { - OidcSecurityContext oidcSecurityContext = (OidcSecurityContext) servletRequest - .getAttribute(OidcSecurityContext.class.getName()); - SecurityIdentity identity = SecurityDomain.getCurrent().getCurrentSecurityIdentity(); - if (oidcSecurityContext == null) { - // if not using OIDC: either using LDAP or anonymous user - preferredUsername = identity.getAttributes().getFirst("username"); - } else { - AccessToken accessToken = oidcSecurityContext.getToken(); - preferredUsername = accessToken.getClaimValueAsString("preferred_username"); - } - } - - @Override - public Optional accessToken() { - return Optional.empty(); - } - - @Override - public Optional userId() { - // TODO: this is important because DA uses it for its database - return Optional.empty(); - } - - @Override - public Optional username() { - return Optional.ofNullable(preferredUsername); - } -} diff --git a/communication/src/main/java/org/jboss/da/communication/auth/impl/JAASAuthenticatorService.java b/communication/src/main/java/org/jboss/da/communication/auth/impl/JAASAuthenticatorService.java index ee198c1a4..ce178e524 100644 --- a/communication/src/main/java/org/jboss/da/communication/auth/impl/JAASAuthenticatorService.java +++ b/communication/src/main/java/org/jboss/da/communication/auth/impl/JAASAuthenticatorService.java @@ -1,60 +1,51 @@ package org.jboss.da.communication.auth.impl; -import org.jboss.da.communication.auth.AuthenticatorService; - -import javax.enterprise.context.RequestScoped; -import javax.enterprise.inject.Alternative; -import javax.inject.Inject; -import javax.servlet.http.HttpServletRequest; - -import java.util.Optional; - /** * Authenticator service used for testing purposes. - * + * * @author Honza Brázdil <jbrazdil@redhat.com> */ -@RequestScoped -@Alternative -public class JAASAuthenticatorService implements AuthenticatorService { - - @Inject - private HttpServletRequest sr; - - private static Optional user = Optional.empty(); - - private Optional user() { - System.out.println("srajda: " + sr + " user " + sr.getRemoteUser()); - if (sr.getRemoteUser() == null) { - return user; - } - return Optional.ofNullable(sr.getRemoteUser()); - } - - @Override - public Optional userId() { - return user().map(u -> Integer.toString(u.hashCode(), 16)); - } - - @Override - public Optional username() { - return user(); - } - - @Override - public Optional accessToken() { - if (!user().isPresent()) { - return Optional.empty(); - } - return Optional.of("--NO-TOKEN-AVAILABLE--"); - } - - /** - * Force logged in user. - * - * @param username - */ - public static void setUser(String username) { - user = Optional.ofNullable(username); - } -} +// @RequestScoped +// @Alternative +// public class JAASAuthenticatorService implements AuthenticatorService { +// +// @Inject +// private HttpServletRequest sr; +// +// private static Optional user = Optional.empty(); +// +// private Optional user() { +// System.out.println("srajda: " + sr + " user " + sr.getRemoteUser()); +// if (sr.getRemoteUser() == null) { +// return user; +// } +// return Optional.ofNullable(sr.getRemoteUser()); +// } +// +// @Override +// public Optional userId() { +// return user().map(u -> Integer.toString(u.hashCode(), 16)); +// } +// +// @Override +// public Optional username() { +// return user(); +// } +// +// @Override +// public Optional accessToken() { +// if (!user().isPresent()) { +// return Optional.empty(); +// } +// return Optional.of("--NO-TOKEN-AVAILABLE--"); +// } +// +// /** +// * Force logged in user. +// * +// * @param username +// */ +// public static void setUser(String username) { +// user = Optional.ofNullable(username); +// } +// } diff --git a/communication/src/main/java/org/jboss/da/communication/auth/impl/QuarkusOidcAuthenticatorService.java b/communication/src/main/java/org/jboss/da/communication/auth/impl/QuarkusOidcAuthenticatorService.java new file mode 100644 index 000000000..6e98ab7d1 --- /dev/null +++ b/communication/src/main/java/org/jboss/da/communication/auth/impl/QuarkusOidcAuthenticatorService.java @@ -0,0 +1,28 @@ +package org.jboss.da.communication.auth.impl; + +import jakarta.enterprise.context.ApplicationScoped; +import org.jboss.da.communication.auth.AuthenticatorService; + +import java.util.Optional; + +/** + * To be removed and eventually replaced by Dustin's new PNCAuth Quarkus extension. + */ +@ApplicationScoped +public class QuarkusOidcAuthenticatorService implements AuthenticatorService { + + @Override + public Optional accessToken() { + return Optional.empty(); + } + + @Override + public Optional userId() { + return Optional.of(""); + } + + @Override + public Optional username() { + return Optional.of(""); + } +} diff --git a/communication/src/main/java/org/jboss/da/communication/indy/impl/IndyConnectorImpl.java b/communication/src/main/java/org/jboss/da/communication/indy/impl/IndyConnectorImpl.java index 5414883d8..d794dcff1 100644 --- a/communication/src/main/java/org/jboss/da/communication/indy/impl/IndyConnectorImpl.java +++ b/communication/src/main/java/org/jboss/da/communication/indy/impl/IndyConnectorImpl.java @@ -15,9 +15,9 @@ import org.jboss.pnc.common.log.MDCUtils; import org.slf4j.Logger; -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; -import javax.xml.bind.JAXBException; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; +import jakarta.xml.bind.JAXBException; import java.io.FileNotFoundException; import java.io.IOException; @@ -31,7 +31,7 @@ import java.util.Optional; import java.util.Set; -import org.jboss.da.common.util.UserLog; +import org.jboss.da.common.logging.UserLog; @ApplicationScoped public class IndyConnectorImpl implements IndyConnector { @@ -108,6 +108,7 @@ public List getVersionsOfNpm(String packageName) throws RepositoryExcept log.debug("Npm metadata for {} not found. Assuming empty version list.", packageName); return Collections.emptyList(); } catch (IOException e) { + e.printStackTrace(); log.debug("Failed to obtain versions for " + packageName + " from repository on url " + query, e); throw new RepositoryException( "Failed to obtain versions for " + packageName + " from repository on url " + query, diff --git a/communication/src/main/java/org/jboss/da/communication/indy/impl/MetadataFileParser.java b/communication/src/main/java/org/jboss/da/communication/indy/impl/MetadataFileParser.java index e4653f2e3..467e5b400 100644 --- a/communication/src/main/java/org/jboss/da/communication/indy/impl/MetadataFileParser.java +++ b/communication/src/main/java/org/jboss/da/communication/indy/impl/MetadataFileParser.java @@ -1,20 +1,19 @@ package org.jboss.da.communication.indy.impl; -import org.jboss.da.common.CommunicationException; import org.jboss.da.communication.indy.model.VersionResponse; import org.jboss.da.communication.indy.model.npm.NpmMetadata; -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Unmarshaller; +import jakarta.xml.bind.JAXBContext; +import jakarta.xml.bind.JAXBException; +import jakarta.xml.bind.Unmarshaller; import java.io.IOException; import java.io.InputStream; import java.net.URLConnection; import com.fasterxml.jackson.databind.ObjectMapper; -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; /** * @author Matej Lazar @@ -23,7 +22,7 @@ public class MetadataFileParser { @Inject - private ObjectMapper om; + ObjectMapper om; public static VersionResponse parseMavenMetadata(InputStream in) throws JAXBException { JAXBContext jaxbContext = JAXBContext.newInstance(VersionResponse.class); diff --git a/communication/src/main/java/org/jboss/da/communication/indy/model/GAVDependencyTree.java b/communication/src/main/java/org/jboss/da/communication/indy/model/GAVDependencyTree.java index bc5cda2de..6cbeff327 100644 --- a/communication/src/main/java/org/jboss/da/communication/indy/model/GAVDependencyTree.java +++ b/communication/src/main/java/org/jboss/da/communication/indy/model/GAVDependencyTree.java @@ -46,7 +46,7 @@ public void prune() { Map> candidates = forest.entrySet() .stream() .filter(e -> e.getValue().size() > 1) - .collect(Collectors.toMap(e -> e.getKey(), e -> e.getValue())); + .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); int previous; do { @@ -70,9 +70,7 @@ private static void pruneLeaves(GAVDependencyTree tree, Map getArtifacts(String identifierPattern, Reposito repoType, mode.getBuildCategories()); } catch (RemoteResourceException ex) { - log.debug("Error when reading artifacts from PNC: " + ex, ex); - throw new RepositoryException("Error when reading artifacts from PNC: " + ex, ex); + log.error("Caught error when reading artifacts from PNC from {}", globalConfig.getPncUrl(), ex); + throw new RepositoryException("Error when reading artifacts from PNC from " + globalConfig.getPncUrl(), ex); } return artCollection.getAll(); } diff --git a/communication/src/main/java/org/jboss/da/communication/pom/GalleyWrapper.java b/communication/src/main/java/org/jboss/da/communication/pom/GalleyWrapper.java index dbf012db7..bb5e6af62 100644 --- a/communication/src/main/java/org/jboss/da/communication/pom/GalleyWrapper.java +++ b/communication/src/main/java/org/jboss/da/communication/pom/GalleyWrapper.java @@ -17,6 +17,7 @@ import org.commonjava.maven.galley.model.SimpleLocation; import org.jboss.da.common.util.Configuration; import org.jboss.da.common.util.ConfigurationParseException; +import org.jboss.da.communication.pom.model.MavenProject; import org.jboss.da.model.rest.GAV; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -26,9 +27,11 @@ import java.net.URI; import java.nio.file.Path; import java.util.ArrayList; +import java.util.Collection; import java.util.HashSet; import java.util.LinkedList; import java.util.List; +import java.util.Objects; import java.util.Optional; import java.util.Queue; import java.util.Set; @@ -184,7 +187,7 @@ public Set getDependencies(Artifact artifact) throws PomAnalysisException { return allDirectDependencies.stream() .map(GalleyWrapper::generateGAV) - .filter(x -> x != null) + .filter(Objects::nonNull) .collect(Collectors.toSet()); } @@ -212,11 +215,11 @@ public void addLocationsFromPoms(PomReader pomReader) throws IOException { .map(pomReader::analyze) // parse pom file .filter(Optional::isPresent) .map(Optional::get) // filter sucessfuly parsed - .map(p -> p.getMavenRepositories()) - .filter(r -> r != null) // get - .flatMap(r -> r.stream()) // stream of + .map(MavenProject::getMavenRepositories) + .filter(Objects::nonNull) // get + .flatMap(Collection::stream) // stream of .map(r -> new SimpleLocation(r.getId(), r.getUrl())) - .forEach(l -> locations.add(l)); + .forEach(locations::add); } /** @@ -236,7 +239,7 @@ public void addDefaultLocations(Configuration config) { } @Override - public void close() { + public void close() throws IOException { localRepo.delete(); } @@ -274,8 +277,7 @@ public Set getAllDependencies(Artifact artifact, boolean URI src = localRepo.getUri(); - Queue work = new LinkedList<>(); - work.addAll(getDeps(artifact.ref, processor, src, disConf)); + Queue work = new LinkedList<>(getDeps(artifact.ref, processor, src, disConf)); while (!work.isEmpty()) { DependencyRelationship dr = work.remove(); @@ -321,21 +323,12 @@ private Set getDeps( * @return */ public static boolean shouldAnalyzeDependencies(DependencyRelationship dr, boolean testDeps, boolean providedDeps) { - switch (dr.getScope()) { - case _import: - case embedded: - case system: - case toolchain: - return false; - case test: - return testDeps; - case provided: - return providedDeps; - case compile: - case runtime: - default: - return true; - } + return switch (dr.getScope()) { + case _import, embedded, system, toolchain -> false; + case test -> testDeps; + case provided -> providedDeps; + default -> true; + }; } private static GAV generateGAV(MavenGAVView dep) { diff --git a/communication/src/main/java/org/jboss/da/communication/pom/LocalRepo.java b/communication/src/main/java/org/jboss/da/communication/pom/LocalRepo.java index f0a4119e5..6abe9217f 100644 --- a/communication/src/main/java/org/jboss/da/communication/pom/LocalRepo.java +++ b/communication/src/main/java/org/jboss/da/communication/pom/LocalRepo.java @@ -1,5 +1,6 @@ package org.jboss.da.communication.pom; +import org.apache.commons.io.FileUtils; import org.commonjava.atlas.maven.ident.ref.ProjectVersionRef; import org.commonjava.maven.galley.TransferException; import org.commonjava.maven.galley.maven.parse.PomPeek; @@ -7,7 +8,6 @@ import org.commonjava.maven.galley.maven.util.ArtifactPathUtils; import org.commonjava.maven.galley.model.Location; import org.commonjava.maven.galley.model.SimpleLocation; -import org.jboss.da.common.util.FileUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -97,7 +97,7 @@ public synchronized Set getAllPoms() throws IOException { .collect(Collectors.toSet()); } - protected void delete() { + protected void delete() throws IOException { File f; synchronized (this) { f = path.toFile(); diff --git a/communication/src/main/java/org/jboss/da/communication/pom/PomAnalyzerImpl.java b/communication/src/main/java/org/jboss/da/communication/pom/PomAnalyzerImpl.java index ef058661c..6b01750b2 100644 --- a/communication/src/main/java/org/jboss/da/communication/pom/PomAnalyzerImpl.java +++ b/communication/src/main/java/org/jboss/da/communication/pom/PomAnalyzerImpl.java @@ -10,7 +10,6 @@ import org.commonjava.maven.galley.maven.spi.type.TypeMapper; import org.commonjava.maven.galley.model.Location; import org.commonjava.maven.galley.model.SimpleLocation; -import org.jboss.da.common.json.DAConfig; import org.jboss.da.common.json.GlobalConfig; import org.jboss.da.common.util.Configuration; import org.jboss.da.common.util.ConfigurationParseException; @@ -22,8 +21,8 @@ import org.jboss.da.model.rest.GAV; import org.slf4j.Logger; -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; import java.io.File; import java.io.IOException; import java.io.InputStream; @@ -39,10 +38,10 @@ public class PomAnalyzerImpl implements PomAnalyzer { @Inject - private Logger log; + Logger log; @Inject - private PomReader pomReader; + PomReader pomReader; @Inject MavenPomReader mavenPomReader; @@ -51,16 +50,16 @@ public class PomAnalyzerImpl implements PomAnalyzer { TypeMapper typeMapper; @Inject - private Configuration config; + Configuration config; @Inject - private DependencyTreeBuilder dtb; + DependencyTreeBuilder dtb; @Inject - private ModelProcessorConfig disConf; + ModelProcessorConfig disConf; @Inject - private MavenModelProcessor processor; + MavenModelProcessor processor; @Override public GAVDependencyTree readRelationships(File pomRepoDir, String pomPath, List repositories) @@ -171,7 +170,6 @@ public MavenPomView getMavenPomView(InputStream is) throws ConfigurationParseExc } StringBuilder query = new StringBuilder(); GlobalConfig globalCfg = this.config.getGlobalConfig(); - DAConfig cfg = this.config.getConfig(); query.append(globalCfg.getIndyUrl()); query.append("/api/content/maven/group/"); query.append(config.getConfig().getIndyGroupPublic()); @@ -181,9 +179,7 @@ public MavenPomView getMavenPomView(InputStream is) throws ConfigurationParseExc List repos = new ArrayList<>(); repos.add(repoLocation); - MavenPomView pomView = mavenPomReader.read(pom.getKey(), repos); - - return pomView; + return mavenPomReader.read(pom.getKey(), repos); } @Override diff --git a/communication/src/main/java/org/jboss/da/communication/pom/PomReader.java b/communication/src/main/java/org/jboss/da/communication/pom/PomReader.java index cd1640419..53d669dc0 100644 --- a/communication/src/main/java/org/jboss/da/communication/pom/PomReader.java +++ b/communication/src/main/java/org/jboss/da/communication/pom/PomReader.java @@ -7,11 +7,11 @@ import org.xml.sax.InputSource; import org.xml.sax.SAXException; -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Unmarshaller; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; +import jakarta.xml.bind.JAXBContext; +import jakarta.xml.bind.JAXBException; +import jakarta.xml.bind.Unmarshaller; import javax.xml.transform.sax.SAXSource; import javax.xml.transform.Source; @@ -25,7 +25,7 @@ public class PomReader { @Inject - private Logger log; + Logger log; public Optional analyze(File pomFile) { try { diff --git a/communication/src/main/java/org/jboss/da/communication/pom/impl/DependencyTreeBuilder.java b/communication/src/main/java/org/jboss/da/communication/pom/impl/DependencyTreeBuilder.java index 85a9ed1a4..f42bb47eb 100644 --- a/communication/src/main/java/org/jboss/da/communication/pom/impl/DependencyTreeBuilder.java +++ b/communication/src/main/java/org/jboss/da/communication/pom/impl/DependencyTreeBuilder.java @@ -10,8 +10,8 @@ import org.jboss.da.model.rest.GAV; import org.slf4j.Logger; -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; import java.util.HashSet; import java.util.Map; @@ -32,7 +32,7 @@ public class DependencyTreeBuilder { @Inject - private Logger log; + Logger log; /** * Transforms DependencyRelationships into GAVDependencyTree. diff --git a/communication/src/main/java/org/jboss/da/communication/pom/model/MavenParent.java b/communication/src/main/java/org/jboss/da/communication/pom/model/MavenParent.java index d53148422..bfe7d7178 100644 --- a/communication/src/main/java/org/jboss/da/communication/pom/model/MavenParent.java +++ b/communication/src/main/java/org/jboss/da/communication/pom/model/MavenParent.java @@ -1,6 +1,6 @@ package org.jboss.da.communication.pom.model; -import javax.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlElement; import lombok.Getter; /** diff --git a/communication/src/main/java/org/jboss/da/communication/pom/model/MavenProject.java b/communication/src/main/java/org/jboss/da/communication/pom/model/MavenProject.java index 238f33229..8e16a1487 100644 --- a/communication/src/main/java/org/jboss/da/communication/pom/model/MavenProject.java +++ b/communication/src/main/java/org/jboss/da/communication/pom/model/MavenProject.java @@ -2,10 +2,10 @@ import org.jboss.da.model.rest.GAV; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlRootElement; import java.util.List; diff --git a/communication/src/main/java/org/jboss/da/communication/pom/model/MavenRepositories.java b/communication/src/main/java/org/jboss/da/communication/pom/model/MavenRepositories.java index 5a18b6ef5..959b7f5a6 100644 --- a/communication/src/main/java/org/jboss/da/communication/pom/model/MavenRepositories.java +++ b/communication/src/main/java/org/jboss/da/communication/pom/model/MavenRepositories.java @@ -1,6 +1,6 @@ package org.jboss.da.communication.pom.model; -import javax.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlElement; import java.util.List; diff --git a/communication/src/main/java/org/jboss/da/communication/pom/model/MavenRepository.java b/communication/src/main/java/org/jboss/da/communication/pom/model/MavenRepository.java index ec05c95f3..0e28f29f5 100644 --- a/communication/src/main/java/org/jboss/da/communication/pom/model/MavenRepository.java +++ b/communication/src/main/java/org/jboss/da/communication/pom/model/MavenRepository.java @@ -1,8 +1,8 @@ package org.jboss.da.communication.pom.model; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlElement; import lombok.Getter; diff --git a/communication/src/main/java/org/jboss/da/communication/pom/model/MavenSCM.java b/communication/src/main/java/org/jboss/da/communication/pom/model/MavenSCM.java index 41b157b73..cd469d156 100644 --- a/communication/src/main/java/org/jboss/da/communication/pom/model/MavenSCM.java +++ b/communication/src/main/java/org/jboss/da/communication/pom/model/MavenSCM.java @@ -1,8 +1,8 @@ package org.jboss.da.communication.pom.model; -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; +import jakarta.xml.bind.annotation.XmlAccessType; +import jakarta.xml.bind.annotation.XmlAccessorType; +import jakarta.xml.bind.annotation.XmlElement; import lombok.Getter; diff --git a/communication/src/main/java/org/jboss/da/communication/scm/impl/SCMConnectorImpl.java b/communication/src/main/java/org/jboss/da/communication/scm/impl/SCMConnectorImpl.java index 813273c13..9103f8c6a 100644 --- a/communication/src/main/java/org/jboss/da/communication/scm/impl/SCMConnectorImpl.java +++ b/communication/src/main/java/org/jboss/da/communication/scm/impl/SCMConnectorImpl.java @@ -4,8 +4,8 @@ import java.util.List; import java.util.Optional; -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; import org.apache.maven.scm.ScmException; import org.jboss.da.communication.indy.model.GAVDependencyTree; @@ -29,10 +29,10 @@ public class SCMConnectorImpl implements SCMConnector { @Inject - private SCM scmManager; + SCM scmManager; @Inject - private PomAnalyzer pomAnalyzer; + PomAnalyzer pomAnalyzer; @Override public GAVDependencyTree getDependencyTreeOfRevision(String scmUrl, String revision, GAV gav) diff --git a/communication/src/main/resources/META-INF/beans.xml b/communication/src/main/resources/META-INF/beans.xml deleted file mode 100644 index a695c672f..000000000 --- a/communication/src/main/resources/META-INF/beans.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/communication/src/test/java/org/jboss/da/communication/MetadataFileParserTest.java b/communication/src/test/java/org/jboss/da/communication/MetadataFileParserTest.java index ad356e4f0..72f53abcd 100644 --- a/communication/src/test/java/org/jboss/da/communication/MetadataFileParserTest.java +++ b/communication/src/test/java/org/jboss/da/communication/MetadataFileParserTest.java @@ -1,13 +1,16 @@ package org.jboss.da.communication; -import org.jboss.da.common.CommunicationException; import org.jboss.da.communication.indy.impl.MetadataFileParser; import org.jboss.da.communication.indy.model.VersionResponse; -import org.junit.Assert; -import org.junit.BeforeClass; -import org.junit.Test; -import javax.xml.bind.JAXBException; +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; + +import jakarta.xml.bind.JAXBException; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; import java.io.IOException; import java.io.InputStream; import java.util.List; @@ -19,43 +22,43 @@ public class MetadataFileParserTest { private static VersionResponse versionResponse; - @BeforeClass - public static void init() throws JAXBException, IOException, CommunicationException { + @BeforeAll + public static void init() throws JAXBException, IOException { try (InputStream in = getResourceSteam("maven-metadata.xml")) { versionResponse = MetadataFileParser.parseMavenMetadata(in); } } @Test - public void availableVersionsTest() throws JAXBException, IOException, CommunicationException { + public void availableVersionsTest() { // given List availableVersions = versionResponse.getVersioning().getVersions().getVersion(); // expect - Assert.assertTrue("Missing version.", availableVersions.contains("1.1.0.Beta1")); - Assert.assertTrue("Missing version.", availableVersions.contains("1.4.1.Final-redhat-1")); - Assert.assertTrue("Missing version.", availableVersions.contains("1.4.1.Final-redhat-2")); - Assert.assertTrue("Missing version.", availableVersions.contains("1.4.2.Final")); - Assert.assertTrue("Missing version.", availableVersions.contains("1.5.1.Final-redhat-4")); - Assert.assertFalse("Version should not be present.", availableVersions.contains("1.5.1.Final-redhat-10")); + assertTrue(availableVersions.contains("1.1.0.Beta1"), "Missing version."); + assertTrue(availableVersions.contains("1.4.1.Final-redhat-1"), "Missing version."); + assertTrue(availableVersions.contains("1.4.1.Final-redhat-2"), "Missing version."); + assertTrue(availableVersions.contains("1.4.2.Final"), "Missing version."); + assertTrue(availableVersions.contains("1.5.1.Final-redhat-4"), "Missing version."); + assertFalse(availableVersions.contains("1.5.1.Final-redhat-10"), "Version should not be present."); } @Test - public void latestTest() throws JAXBException, IOException, CommunicationException { + public void latestTest() { // given String latestVersion = versionResponse.getVersioning().getLatestVersion(); // expect - Assert.assertEquals("1.4.2.Final", latestVersion); + assertEquals("1.4.2.Final", latestVersion); } @Test - public void releaseTest() throws JAXBException, IOException, CommunicationException { + public void releaseTest() { // given String latestReleaseVersion = versionResponse.getVersioning().getLatestRelease(); // expect - Assert.assertEquals("1.4.1.Final-redhat-2", latestReleaseVersion); + assertEquals("1.4.1.Final-redhat-2", latestReleaseVersion); } private static InputStream getResourceSteam(String file) { diff --git a/communication/src/test/java/org/jboss/da/communication/indy/IndyConnectorTest.java b/communication/src/test/java/org/jboss/da/communication/indy/IndyConnectorTest.java index 5dad47da9..53510273f 100644 --- a/communication/src/test/java/org/jboss/da/communication/indy/IndyConnectorTest.java +++ b/communication/src/test/java/org/jboss/da/communication/indy/IndyConnectorTest.java @@ -1,51 +1,45 @@ package org.jboss.da.communication.indy; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.github.tomakehurst.wiremock.client.WireMock; +import com.github.tomakehurst.wiremock.junit5.WireMockTest; import org.jboss.da.common.CommunicationException; import org.jboss.da.common.json.DAConfig; import org.jboss.da.common.json.GlobalConfig; import org.jboss.da.common.util.Configuration; import org.jboss.da.common.util.ConfigurationParseException; -import org.jboss.da.common.util.UserLog; +import org.jboss.da.common.logging.UserLog; import org.jboss.da.communication.indy.impl.IndyConnectorImpl; import org.jboss.da.communication.indy.impl.MetadataFileParser; import org.jboss.da.communication.pom.api.PomAnalyzer; import org.jboss.da.model.rest.GA; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; - -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.Mockito; - -import static org.mockito.Mockito.when; - import org.mockito.Spy; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.jupiter.MockitoExtension; import org.slf4j.Logger; import java.util.List; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.github.tomakehurst.wiremock.client.WireMock; - -import static com.github.tomakehurst.wiremock.client.WireMock.*; - -import com.github.tomakehurst.wiremock.junit.WireMockRule; +import static com.github.tomakehurst.wiremock.client.WireMock.aResponse; +import static com.github.tomakehurst.wiremock.client.WireMock.get; +import static com.github.tomakehurst.wiremock.client.WireMock.stubFor; +import static com.github.tomakehurst.wiremock.client.WireMock.urlEqualTo; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.when; /** * * @author Honza Brázdil <jbrazdil@redhat.com> */ -@RunWith(MockitoJUnitRunner.class) +@ExtendWith(MockitoExtension.class) +@WireMockTest(httpPort = 8082) public class IndyConnectorTest { - @Rule - public WireMockRule wireMockRule = (new WireMockRule(8082)); - @Mock private Logger log; @@ -61,9 +55,8 @@ public class IndyConnectorTest { @Spy private ObjectMapper mapper = new ObjectMapper(); - @Spy @InjectMocks - private MetadataFileParser parser = new MetadataFileParser(); + private MetadataFileParser parser = Mockito.spy(MetadataFileParser.class); @InjectMocks private final IndyConnectorImpl indyConnector = new IndyConnectorImpl(config); @@ -102,7 +95,7 @@ private static Configuration initConfig() { } @Test - public void testGetVersionsOfGA() throws ConfigurationParseException, CommunicationException { + public void testGetVersionsOfGA() throws CommunicationException { stubFor( get(urlEqualTo("/api/content/maven/group/DA-TEST-GROUP/foo/bar/baz/maven-metadata.xml")).willReturn( aResponse().withStatus(200) @@ -113,8 +106,8 @@ public void testGetVersionsOfGA() throws ConfigurationParseException, Communicat // verify assertTrue( - "Unmatched requests: " + WireMock.findUnmatchedRequests(), - WireMock.findUnmatchedRequests().isEmpty()); + WireMock.findUnmatchedRequests().isEmpty(), + "Unmatched requests: " + WireMock.findUnmatchedRequests()); assertEquals(3, versionsOfGA.size()); assertTrue(versionsOfGA.contains(REDHAT5)); assertTrue(versionsOfGA.contains(REDHAT2)); @@ -122,7 +115,7 @@ public void testGetVersionsOfGA() throws ConfigurationParseException, Communicat } @Test - public void testGetVersionsOfNpm() throws ConfigurationParseException, CommunicationException { + public void testGetVersionsOfNpm() throws CommunicationException { stubFor( get(urlEqualTo("/api/content/npm/group/DA-TEST-GROUP/jquery/package.json")).willReturn( aResponse().withStatus(200) @@ -133,8 +126,8 @@ public void testGetVersionsOfNpm() throws ConfigurationParseException, Communica // verify assertTrue( - "Unmatched requests: " + WireMock.findUnmatchedRequests(), - WireMock.findUnmatchedRequests().isEmpty()); + WireMock.findUnmatchedRequests().isEmpty(), + "Unmatched requests: " + WireMock.findUnmatchedRequests()); assertEquals(9, versionsOfGA.size()); assertTrue(versionsOfGA.contains("1.12.1")); assertTrue(versionsOfGA.contains("1.5.1")); diff --git a/communication/src/test/java/org/jboss/da/communication/model/BackwardCompatibilityTest.java b/communication/src/test/java/org/jboss/da/communication/model/BackwardCompatibilityTest.java index e0ee2587f..3b9eaa34c 100644 --- a/communication/src/test/java/org/jboss/da/communication/model/BackwardCompatibilityTest.java +++ b/communication/src/test/java/org/jboss/da/communication/model/BackwardCompatibilityTest.java @@ -6,14 +6,15 @@ import java.io.StringWriter; import java.nio.file.Paths; -import org.junit.Test; +import org.junit.jupiter.api.Test; import org.skyscreamer.jsonassert.JSONAssert; import org.skyscreamer.jsonassert.JSONCompareMode; import org.jboss.da.communication.indy.model.VersionResponse; import org.jboss.da.communication.indy.model.Versioning; import org.jboss.da.communication.indy.model.Versions; import org.json.JSONException; -import static org.junit.Assert.fail; + +import static org.junit.jupiter.api.Assertions.fail; import java.nio.file.Files; import java.nio.file.Path; @@ -37,14 +38,14 @@ public void testVersionResponse() throws IOException { } @Test - public void testVersioning() throws IOException, NoSuchFieldException { + public void testVersioning() throws IOException { Versioning verisoning = new Versioning(); compare(verisoning, "Versioning"); } @Test - public void testVersions() throws IOException, NoSuchFieldException { + public void testVersions() throws IOException { Versions versions = new Versions(); compare(versions, "Versions"); diff --git a/communication/src/test/java/org/jboss/da/communication/model/GAVIntegrationTest.java b/communication/src/test/java/org/jboss/da/communication/model/GAVIntegrationTest.java index 2ae7caae3..b025c65fe 100644 --- a/communication/src/test/java/org/jboss/da/communication/model/GAVIntegrationTest.java +++ b/communication/src/test/java/org/jboss/da/communication/model/GAVIntegrationTest.java @@ -1,14 +1,15 @@ package org.jboss.da.communication.model; import org.jboss.da.model.rest.GAV; -import org.junit.Test; + +import org.junit.jupiter.api.Test; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.OutputStream; import java.util.Random; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; import com.fasterxml.jackson.databind.ObjectMapper; diff --git a/communication/src/test/java/org/jboss/da/communication/pom/GetPomTest.java b/communication/src/test/java/org/jboss/da/communication/pom/GetPomTest.java index b77283ca7..9410634cd 100644 --- a/communication/src/test/java/org/jboss/da/communication/pom/GetPomTest.java +++ b/communication/src/test/java/org/jboss/da/communication/pom/GetPomTest.java @@ -4,23 +4,23 @@ import java.io.FileInputStream; import java.io.FileNotFoundException; -import org.jboss.da.common.CommunicationException; import org.jboss.da.communication.pom.api.PomAnalyzer; import org.jboss.da.communication.pom.model.MavenProject; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import org.junit.Test; -import org.junit.runner.RunWith; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Spy; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.jupiter.MockitoExtension; /** * * @author Honza Brázdil <jbrazdil@redhat.com> */ - -@RunWith(MockitoJUnitRunner.class) +@ExtendWith(MockitoExtension.class) public class GetPomTest { @Spy @@ -44,7 +44,7 @@ public class GetPomTest { private final static String SCM_REVISION = "0.4"; @Test - public void testGetPom1() throws CommunicationException, FileNotFoundException { + public void testGetPom1() throws FileNotFoundException { File file = new File(getClass().getClassLoader().getResource("pom/test1.xml").getFile()); MavenProject pom; @@ -58,7 +58,7 @@ public void testGetPom1() throws CommunicationException, FileNotFoundException { } @Test - public void testGetPom2() throws CommunicationException, FileNotFoundException { + public void testGetPom2() { File file = new File(getClass().getClassLoader().getResource("pom/test2.xml").getFile()); MavenProject pom; diff --git a/communication/src/test/java/org/jboss/da/communication/pom/PomReaderTest.java b/communication/src/test/java/org/jboss/da/communication/pom/PomReaderTest.java index 04ad9a935..32c2305f3 100644 --- a/communication/src/test/java/org/jboss/da/communication/pom/PomReaderTest.java +++ b/communication/src/test/java/org/jboss/da/communication/pom/PomReaderTest.java @@ -1,13 +1,15 @@ package org.jboss.da.communication.pom; import org.jboss.da.communication.pom.model.MavenProject; -import org.junit.Test; + +import org.junit.jupiter.api.Test; + import java.io.File; import java.util.Optional; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.assertFalse; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.junit.jupiter.api.Assertions.assertFalse; public class PomReaderTest { diff --git a/pom.xml b/pom.xml index eae6a290e..27feee261 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.jboss jboss-parent - 36 + 49 @@ -21,7 +21,7 @@ Apache License, Version 2.0 repo - http://www.apache.org/licenses/LICENSE-2.0.html + https://www.apache.org/licenses/LICENSE-2.0.html @@ -85,80 +85,91 @@ 3.4.1-SNAPSHOT 3.4.2 1.1.9 - - - 1.3 - 11 - 11 - 7.4.3.GA + 1.22-SNAPSHOT + 17 + 17 + 3.21.4 + 1.5.3 + 1.11.2 /* 1.22.0 - update + + update + + org.jboss.da + application + ${project.version} + org.jboss.da common ${project.version} - ejb org.jboss.da source-code-manager ${project.version} - ejb org.jboss.da communication ${project.version} - ejb org.jboss.da reports-model ${project.version} - ejb org.jboss.da reports-backend ${project.version} - ejb org.jboss.da reports-rest ${project.version} - war + + + io.quarkus.platform + quarkus-bom + ${quarkus.platform.version} + pom + import + + org.jboss.pnc pnc-api ${version.pnc-api} + jakarta org.jboss.pnc pnc-common ${version.pnc-common} + jakarta - io.opentelemetry - * + org.jboss.pnc + pnc-api - org.apache.httpcomponents - * + org.jboss.pnc + pnc-api-constants @@ -171,46 +182,43 @@ org.jboss.pnc common ${version.pnc} + + + + org.jboss.pnc + pnc-api + + org.jboss.pnc dto ${version.pnc} + + + + org.jboss.pnc + pnc-api + + org.jboss.pnc - rest-api - ${version.pnc} - - - org.jboss.pnc - rest-api - java-client - ${version.pnc} - - - org.jboss.pnc - rest-client + rest-client-jakarta ${version.pnc} - - org.jboss.bom - jboss-eap-jakartaee8-with-tools - ${jboss.bom.version} - pom - import + jakarta.annotation + jakarta.annotation-api + 2.1.1 - org.jboss.bom - eap-runtime-artifacts - ${jboss.bom.version} - pom - import + jakarta.transaction + jakarta.transaction-api + 2.0.1 - commons-validator commons-validator @@ -221,65 +229,129 @@ keycloak-core 18.0.9.redhat-00001 + + - org.wildfly.security - wildfly-elytron-http-oidc - 1.15.9.Final - provided - - - - - javax.xml.bind - jaxb-api - 2.3.1 + org.commonjava.maven.galley + galley-api + ${version.galley} + jakarta - - - - com.sun.xml.bind - jaxb-impl - 2.3.4 + org.commonjava.maven.galley + galley-core + ${version.galley} + jakarta + + + + ch.qos.logback + * + + + + org.commonjava.maven.galley + * + + + + + org.commonjava.util + o11yphant-trace-core + + + org.commonjava.util + o11yphant-trace-helper-jhttpc + + - - org.commonjava.maven.galley galley-maven ${version.galley} + jakarta + - org.apache.httpcomponents + ch.qos.logback * + + + org.commonjava.maven.galley + * + org.commonjava.maven.galley galley-transport-filearc ${version.galley} + jakarta + + + org.commonjava.maven.galley + * + + org.commonjava.maven.galley galley-transport-httpclient ${version.galley} + jakarta + - org.apache.httpcomponents + ch.qos.logback * + + + org.commonjava.maven.galley + * + + + + + org.commonjava.util + o11yphant-trace-core + + + org.commonjava.util + o11yphant-trace-helper-jhttpc + org.commonjava.maven.galley galley-cache-partyline ${version.galley} + jakarta + + + + ch.qos.logback + * + + + + org.commonjava.maven.galley + * + + org.commonjava.atlas atlas-identities ${atlasVersion} + + + + ch.qos.logback + * + + @@ -289,12 +361,6 @@ provided - - io.swagger.core.v3 - swagger-jaxrs2 - 2.2.2 - - org.apache.maven.scm @@ -305,12 +371,6 @@ org.apache.maven.scm maven-scm-provider-jgit ${mvn-scm.version} - - - org.apache.httpcomponents - * - - org.eclipse.jgit @@ -352,26 +412,30 @@ ${version.io.opentelemetry.instrumentation} - - - org.mockito - mockito-all - 1.10.19 - + org.skyscreamer jsonassert - 1.2.3 + 2.0-rc1 + test - com.github.tomakehurst + org.wiremock wiremock-standalone - 2.6.0 + + 3.6.0 + + + io.quarkiverse.wiremock + quarkus-wiremock-test + 1.5.3 + test - org.assertj - assertj-core - 3.11.1 + io.quarkiverse.wiremock + quarkus-wiremock + 1.5.3 + test @@ -414,38 +478,69 @@ - - org.eclipse.m2e - lifecycle-mapping - 1.0.0 + io.smallrye + jandex-maven-plugin + 3.5.3 + + + make-index + + jandex + + + + + + pl.project13.maven + git-commit-id-plugin + 4.9.10 + + + + revision + + + + + 40 + + + + maven-surefire-plugin + + + + org.jboss.logmanager.LogManager + ${maven.home} + + true + + + + org.apache.maven.plugins + maven-compiler-plugin - - - - - net.revelc.code - formatter-maven-plugin - [0.5.2,) - - format - - - - - - - - + ${maven.compiler.source} + ${maven.compiler.target} - org.wildfly.plugins - wildfly-maven-plugin - 1.1.0.Alpha8 + io.quarkus.platform + quarkus-maven-plugin + ${quarkus.platform.version} + true + + + + build + generate-code + generate-code-tests + + + - true + true @@ -464,7 +559,7 @@ org.sonatype.central central-publishing-maven-plugin - 0.8.0 + 0.10.0 true @@ -488,91 +583,9 @@ - - - org.apache.maven.plugins - maven-enforcer-plugin - 1.4 - - - org.commonjava.maven.enforcer - enforce-managed-deps-rule - 1.2 - - - - - enforce-plugin-versions - - enforce - - - - - - - - - - no-managed-deps - - enforce - - initialize - - - - true - true - - [{] - - - - - - - - - - maven-failsafe-plugin - - - integration-test - - integration-test - verify - - - - - - - excludeRemoteTests - - - excludeRemoteTests - - - - testsuite - - - - - maven-failsafe-plugin - - - **/**RemoteTestIT.java - - - - - - release diff --git a/reports-backend/pom.xml b/reports-backend/pom.xml index f10efc815..ab8901c8c 100644 --- a/reports-backend/pom.xml +++ b/reports-backend/pom.xml @@ -7,19 +7,17 @@ reports-backend reports-backend - ejb + jar org.jboss.da communication - ejb org.jboss.da reports-model - ejb @@ -28,46 +26,47 @@ - org.projectlombok - lombok - provided + io.quarkus + quarkus-arc - jakarta.persistence - jakarta.persistence-api - provided - + io.quarkus + quarkus-hibernate-orm + - jakarta.validation - jakarta.validation-api - provided - - - org.jboss.spec.javax.enterprise.concurrent - jboss-concurrency-api_1.0_spec - provided + io.quarkus + quarkus-hibernate-validator - org.jboss.spec.javax.ws.rs - jboss-jaxrs-api_2.1_spec - provided - + jakarta.ws.rs + jakarta.ws.rs-api + + - org.jboss.spec.javax.ejb - jboss-ejb-api_3.2_spec + org.projectlombok + lombok provided - junit - junit + io.quarkus + quarkus-junit5 + test - - org.mockito - mockito-all + io.quarkus + quarkus-junit5-mockito + test - + + + + + io.smallrye + jandex-maven-plugin + + + diff --git a/reports-backend/src/main/java/org/jboss/da/listings/api/model/Artifact.java b/reports-backend/src/main/java/org/jboss/da/listings/api/model/Artifact.java index a4dd9730e..99cfc0d69 100644 --- a/reports-backend/src/main/java/org/jboss/da/listings/api/model/Artifact.java +++ b/reports-backend/src/main/java/org/jboss/da/listings/api/model/Artifact.java @@ -1,7 +1,7 @@ package org.jboss.da.listings.api.model; -import javax.persistence.ManyToOne; -import javax.persistence.MappedSuperclass; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.MappedSuperclass; import lombok.AccessLevel; import lombok.EqualsAndHashCode; diff --git a/reports-backend/src/main/java/org/jboss/da/listings/api/model/BlackArtifact.java b/reports-backend/src/main/java/org/jboss/da/listings/api/model/BlackArtifact.java index f558366d8..4c9114b2a 100644 --- a/reports-backend/src/main/java/org/jboss/da/listings/api/model/BlackArtifact.java +++ b/reports-backend/src/main/java/org/jboss/da/listings/api/model/BlackArtifact.java @@ -1,6 +1,6 @@ package org.jboss.da.listings.api.model; -import javax.persistence.Entity; +import jakarta.persistence.Entity; import lombok.AccessLevel; import lombok.NoArgsConstructor; diff --git a/reports-backend/src/main/java/org/jboss/da/listings/api/model/GA.java b/reports-backend/src/main/java/org/jboss/da/listings/api/model/GA.java index cce35ea5c..9962bd0c1 100644 --- a/reports-backend/src/main/java/org/jboss/da/listings/api/model/GA.java +++ b/reports-backend/src/main/java/org/jboss/da/listings/api/model/GA.java @@ -1,6 +1,6 @@ package org.jboss.da.listings.api.model; -import javax.persistence.Entity; +import jakarta.persistence.Entity; import lombok.AccessLevel; import lombok.EqualsAndHashCode; diff --git a/reports-backend/src/main/java/org/jboss/da/listings/api/model/GenericEntity.java b/reports-backend/src/main/java/org/jboss/da/listings/api/model/GenericEntity.java index 1602cdda7..8e35d2922 100644 --- a/reports-backend/src/main/java/org/jboss/da/listings/api/model/GenericEntity.java +++ b/reports-backend/src/main/java/org/jboss/da/listings/api/model/GenericEntity.java @@ -2,10 +2,10 @@ import java.io.Serializable; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.MappedSuperclass; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.MappedSuperclass; import lombok.EqualsAndHashCode; import lombok.Getter; diff --git a/reports-backend/src/main/java/org/jboss/da/listings/api/model/User.java b/reports-backend/src/main/java/org/jboss/da/listings/api/model/User.java index fc65612bc..6db206049 100644 --- a/reports-backend/src/main/java/org/jboss/da/listings/api/model/User.java +++ b/reports-backend/src/main/java/org/jboss/da/listings/api/model/User.java @@ -1,7 +1,7 @@ package org.jboss.da.listings.api.model; -import javax.persistence.Column; -import javax.persistence.Entity; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; import lombok.AccessLevel; import lombok.EqualsAndHashCode; diff --git a/reports-backend/src/main/java/org/jboss/da/listings/impl/dao/ArtifactDAOImpl.java b/reports-backend/src/main/java/org/jboss/da/listings/impl/dao/ArtifactDAOImpl.java index 663d18f32..2f866f3eb 100644 --- a/reports-backend/src/main/java/org/jboss/da/listings/impl/dao/ArtifactDAOImpl.java +++ b/reports-backend/src/main/java/org/jboss/da/listings/impl/dao/ArtifactDAOImpl.java @@ -4,12 +4,12 @@ import java.util.Optional; import java.util.Set; -import javax.persistence.NoResultException; -import javax.persistence.TypedQuery; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Join; -import javax.persistence.criteria.Root; +import jakarta.persistence.NoResultException; +import jakarta.persistence.TypedQuery; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Join; +import jakarta.persistence.criteria.Root; import org.jboss.da.listings.api.dao.ArtifactDAO; import org.jboss.da.listings.api.model.Artifact; diff --git a/reports-backend/src/main/java/org/jboss/da/listings/impl/dao/BlackArtifactDAOImpl.java b/reports-backend/src/main/java/org/jboss/da/listings/impl/dao/BlackArtifactDAOImpl.java index ac9bf2098..dc39f59e3 100644 --- a/reports-backend/src/main/java/org/jboss/da/listings/impl/dao/BlackArtifactDAOImpl.java +++ b/reports-backend/src/main/java/org/jboss/da/listings/impl/dao/BlackArtifactDAOImpl.java @@ -5,19 +5,19 @@ import org.jboss.da.listings.api.model.BlackArtifact; import org.jboss.da.listings.api.model.GA; -import javax.ejb.Stateless; -import javax.persistence.TypedQuery; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Join; -import javax.persistence.criteria.Root; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.persistence.TypedQuery; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Join; +import jakarta.persistence.criteria.Root; import java.util.List; /** * @author Jozef Mrazek <jmrazek@redhat.com> * @author Honza Brázdil <jbrazdil@redhat.com> */ -@Stateless +@ApplicationScoped public class BlackArtifactDAOImpl extends ArtifactDAOImpl implements BlackArtifactDAO { public BlackArtifactDAOImpl() { diff --git a/reports-backend/src/main/java/org/jboss/da/listings/impl/dao/GADAOImpl.java b/reports-backend/src/main/java/org/jboss/da/listings/impl/dao/GADAOImpl.java index 2cdf15c12..6e2136fac 100644 --- a/reports-backend/src/main/java/org/jboss/da/listings/impl/dao/GADAOImpl.java +++ b/reports-backend/src/main/java/org/jboss/da/listings/impl/dao/GADAOImpl.java @@ -3,21 +3,20 @@ import org.jboss.da.listings.api.dao.GADAO; import org.jboss.da.listings.api.model.GA; -import javax.ejb.Stateless; -import javax.persistence.NoResultException; -import javax.persistence.TypedQuery; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Predicate; -import javax.persistence.criteria.Root; - +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.persistence.NoResultException; +import jakarta.persistence.TypedQuery; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Predicate; +import jakarta.persistence.criteria.Root; import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Optional; import java.util.Set; -@Stateless +@ApplicationScoped public class GADAOImpl extends GenericDAOImpl implements GADAO { public static final int BATCH_SIZE = 100; diff --git a/reports-backend/src/main/java/org/jboss/da/listings/impl/dao/GenericDAOImpl.java b/reports-backend/src/main/java/org/jboss/da/listings/impl/dao/GenericDAOImpl.java index 3f0b760a9..69626f08c 100644 --- a/reports-backend/src/main/java/org/jboss/da/listings/impl/dao/GenericDAOImpl.java +++ b/reports-backend/src/main/java/org/jboss/da/listings/impl/dao/GenericDAOImpl.java @@ -2,9 +2,8 @@ import static java.util.Objects.requireNonNull; -import javax.inject.Inject; -import javax.persistence.EntityManager; -import javax.persistence.PersistenceContext; +import jakarta.inject.Inject; +import jakarta.persistence.EntityManager; import org.jboss.da.common.logging.AuditLogger; import org.jboss.da.listings.api.dao.GenericDAO; @@ -15,7 +14,7 @@ */ public abstract class GenericDAOImpl implements GenericDAO { - @PersistenceContext(unitName = "relationdbPU") + @Inject protected EntityManager em; protected final Class type; diff --git a/reports-backend/src/main/java/org/jboss/da/listings/impl/dao/UserDAOImpl.java b/reports-backend/src/main/java/org/jboss/da/listings/impl/dao/UserDAOImpl.java index 2c4d953ac..55337012f 100644 --- a/reports-backend/src/main/java/org/jboss/da/listings/impl/dao/UserDAOImpl.java +++ b/reports-backend/src/main/java/org/jboss/da/listings/impl/dao/UserDAOImpl.java @@ -1,24 +1,22 @@ package org.jboss.da.listings.impl.dao; -import java.util.Optional; - -import javax.persistence.NoResultException; -import javax.persistence.TypedQuery; -import javax.persistence.criteria.CriteriaBuilder; -import javax.persistence.criteria.CriteriaQuery; -import javax.persistence.criteria.Root; - import org.jboss.da.listings.api.dao.UserDAO; import org.jboss.da.listings.api.model.User; -import javax.ejb.Stateless; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.persistence.NoResultException; +import jakarta.persistence.TypedQuery; +import jakarta.persistence.criteria.CriteriaBuilder; +import jakarta.persistence.criteria.CriteriaQuery; +import jakarta.persistence.criteria.Root; +import java.util.Optional; /** - * + * * @author Honza Brázdil <jbrazdil@redhat.com> * */ -@Stateless +@ApplicationScoped public class UserDAOImpl extends GenericDAOImpl implements UserDAO { public UserDAOImpl() { diff --git a/reports-backend/src/main/java/org/jboss/da/listings/impl/service/ArtifactServiceImpl.java b/reports-backend/src/main/java/org/jboss/da/listings/impl/service/ArtifactServiceImpl.java index 4e0a8f992..d41a565c3 100644 --- a/reports-backend/src/main/java/org/jboss/da/listings/impl/service/ArtifactServiceImpl.java +++ b/reports-backend/src/main/java/org/jboss/da/listings/impl/service/ArtifactServiceImpl.java @@ -8,14 +8,14 @@ import org.jboss.da.listings.api.service.ArtifactService; import org.jboss.pnc.common.version.VersionParser; -import javax.inject.Inject; +import jakarta.inject.Inject; import java.util.List; import static org.jboss.da.reports.impl.ReportsGeneratorImpl.DEFAULT_SUFFIX; /** - * + * * @author Jozef Mrazek <jmrazek@redhat.com> * @author Jakub Bartecek <jbartece@redhat.com> * @@ -28,7 +28,7 @@ public abstract class ArtifactServiceImpl implements Artifac AuthenticatorService auth; @Inject - private UserDAO users; + UserDAO users; protected abstract ArtifactDAO getDAO(); diff --git a/reports-backend/src/main/java/org/jboss/da/listings/impl/service/BlackArtifactServiceImpl.java b/reports-backend/src/main/java/org/jboss/da/listings/impl/service/BlackArtifactServiceImpl.java index 5a04160e5..427cdeece 100644 --- a/reports-backend/src/main/java/org/jboss/da/listings/impl/service/BlackArtifactServiceImpl.java +++ b/reports-backend/src/main/java/org/jboss/da/listings/impl/service/BlackArtifactServiceImpl.java @@ -2,8 +2,8 @@ import java.util.Optional; -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; import org.jboss.da.listings.api.dao.ArtifactDAO; import org.jboss.da.listings.api.dao.BlackArtifactDAO; @@ -32,10 +32,10 @@ public class BlackArtifactServiceImpl extends ArtifactServiceImpl implements BlackArtifactService { @Inject - private BlackArtifactDAO blackArtifactDAO; + BlackArtifactDAO blackArtifactDAO; @Inject - private GADAO gaDAO; + GADAO gaDAO; @Override protected ArtifactDAO getDAO() { diff --git a/reports-backend/src/main/java/org/jboss/da/products/api/ArtifactDiff.java b/reports-backend/src/main/java/org/jboss/da/products/api/ArtifactDiff.java index 7f44f430c..a1a256391 100644 --- a/reports-backend/src/main/java/org/jboss/da/products/api/ArtifactDiff.java +++ b/reports-backend/src/main/java/org/jboss/da/products/api/ArtifactDiff.java @@ -56,6 +56,6 @@ public boolean isChanged() { } public boolean isUnchanged() { - return leftVersion != null && rightVersion != null && leftVersion.equals(rightVersion); + return leftVersion != null && leftVersion.equals(rightVersion); } } diff --git a/reports-backend/src/main/java/org/jboss/da/products/api/ProductProvider.java b/reports-backend/src/main/java/org/jboss/da/products/api/ProductProvider.java index 11548e6e2..05e31fd6b 100644 --- a/reports-backend/src/main/java/org/jboss/da/products/api/ProductProvider.java +++ b/reports-backend/src/main/java/org/jboss/da/products/api/ProductProvider.java @@ -8,7 +8,7 @@ /** * Product Provider is used for providing information about products and their artifacts. Each product is defined by its - * name and version and can have differen level of support. + * name and version and can have different level of support. * * @author Honza Brázdil <jbrazdil@redhat.com> */ diff --git a/reports-backend/src/main/java/org/jboss/da/products/impl/AbstractProductProvider.java b/reports-backend/src/main/java/org/jboss/da/products/impl/AbstractProductProvider.java index 34d9097fc..1b9cd622b 100644 --- a/reports-backend/src/main/java/org/jboss/da/products/impl/AbstractProductProvider.java +++ b/reports-backend/src/main/java/org/jboss/da/products/impl/AbstractProductProvider.java @@ -5,14 +5,13 @@ import java.util.Set; import java.util.concurrent.CompletableFuture; import java.util.function.Supplier; +import java.util.concurrent.ExecutorService; import java.util.stream.Collectors; import java.util.stream.Stream; -import javax.annotation.Resource; -import javax.enterprise.concurrent.ManagedExecutorService; -import javax.inject.Inject; +import jakarta.inject.Inject; import org.jboss.da.common.json.LookupMode; -import org.jboss.da.common.util.UserLog; +import org.jboss.da.common.logging.UserLog; import org.jboss.da.listings.model.ProductSupportStatus; import org.jboss.da.model.rest.GA; import org.jboss.da.model.rest.GAV; @@ -54,8 +53,8 @@ public abstract class AbstractProductProvider implements ProductProvider { @UserLog protected Logger userLog; - @Resource - private ManagedExecutorService executorService; + @Inject + ExecutorService executorService; private VersionParser versionParser = new VersionParser(DEFAULT_SUFFIX); @@ -134,33 +133,25 @@ public CompletableFuture>> getVersions(Artifact artifac @Override public CompletableFuture> getAllVersions(Artifact artifact) { - switch (artifact.getType()) { - case MAVEN: { + return switch (artifact.getType()) { + case MAVEN -> { GA ga = ((MavenArtifact) artifact).getGav().getGA(); - return supplyAsync(() -> getVersionsStreamMaven(ga).collect(Collectors.toSet())); - } - case NPM: { - return supplyAsync(() -> getVersionsStreamNPM(artifact.getName()).collect(Collectors.toSet())); - } - default: { - return CompletableFuture.completedFuture(Collections.emptySet()); + yield supplyAsync(() -> getVersionsStreamMaven(ga).collect(Collectors.toSet())); } - } + case NPM -> supplyAsync(() -> getVersionsStreamNPM(artifact.getName()).collect(Collectors.toSet())); + default -> CompletableFuture.completedFuture(Collections.emptySet()); + }; } private CompletableFuture> getArtifacts0(Artifact artifact) { - switch (artifact.getType()) { - case MAVEN: { + return switch (artifact.getType()) { + case MAVEN -> { GA ga = ((MavenArtifact) artifact).getGav().getGA(); - return supplyAsync(() -> getArtifactsMaven(ga)); - } - case NPM: { - return supplyAsync(() -> getArtifactsNPM(artifact.getName())); + yield supplyAsync(() -> getArtifactsMaven(ga)); } - default: { - return CompletableFuture.completedFuture(Collections.emptySet()); - } - } + case NPM -> supplyAsync(() -> getArtifactsNPM(artifact.getName())); + default -> CompletableFuture.completedFuture(Collections.emptySet()); + }; } private Set getArtifactsMaven(GA ga) { diff --git a/reports-backend/src/main/java/org/jboss/da/products/impl/AggregatedProductProvider.java b/reports-backend/src/main/java/org/jboss/da/products/impl/AggregatedProductProvider.java index daea78b93..818491700 100644 --- a/reports-backend/src/main/java/org/jboss/da/products/impl/AggregatedProductProvider.java +++ b/reports-backend/src/main/java/org/jboss/da/products/impl/AggregatedProductProvider.java @@ -1,18 +1,16 @@ package org.jboss.da.products.impl; -import lombok.extern.slf4j.Slf4j; +import io.quarkus.narayana.jta.QuarkusTransaction; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; import org.jboss.da.listings.model.ProductSupportStatus; import org.jboss.da.products.api.Artifact; import org.jboss.da.products.api.Product; import org.jboss.da.products.api.ProductArtifacts; import org.jboss.da.products.api.ProductProvider; -import org.jboss.da.products.impl.RepositoryProductProvider.Repository; import org.jboss.da.products.impl.PncProductProvider.Pnc; - -import javax.annotation.Resource; -import javax.enterprise.concurrent.ManagedScheduledExecutorService; -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; +import org.jboss.da.products.impl.RepositoryProductProvider.Repository; +import org.slf4j.Logger; import java.util.ArrayList; import java.util.EnumSet; @@ -23,7 +21,9 @@ import java.util.Set; import java.util.concurrent.CompletableFuture; import java.util.concurrent.ExecutionException; +import java.util.concurrent.Executors; import java.util.concurrent.Future; +import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; import java.util.function.BiConsumer; import java.util.function.BiFunction; @@ -39,9 +39,11 @@ * @author Honza Brázdil <jbrazdil@redhat.com> */ @ApplicationScoped -@Slf4j public class AggregatedProductProvider implements ProductProvider { + @Inject + Logger log; + public static Set filterArtifacts( Set artifacts, Predicate predicate) { @@ -72,8 +74,7 @@ public static CompletableFuture> filterProducts( @Pnc PncProductProvider pncProductProvider; - @Resource - private ManagedScheduledExecutorService scheduler; + ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(2); @Override public CompletableFuture> getAllProducts() { @@ -124,7 +125,10 @@ private CompletableFuture aggregate( results.add(getter.apply(pncProductProvider)); CompletableFuture ret = new CompletableFuture<>(); - scheduler.schedule((Runnable) () -> tryToComplete(ret, results, collector), 1, TimeUnit.MILLISECONDS); + scheduler.schedule( + () -> QuarkusTransaction.requiringNew().run(() -> tryToComplete(ret, results, collector)), + 1, + TimeUnit.MILLISECONDS); return ret; } @@ -153,7 +157,10 @@ private void tryToComplete( Thread.currentThread().interrupt(); } } else { - scheduler.schedule((Runnable) () -> tryToComplete(ret, results, collector), 1, TimeUnit.MILLISECONDS); + scheduler.schedule( + () -> QuarkusTransaction.requiringNew().run(() -> tryToComplete(ret, results, collector)), + 1, + TimeUnit.MILLISECONDS); } } @@ -168,7 +175,7 @@ private static class ProductArtifactsCollector @Override public Supplier> supplier() { - return () -> new HashMap<>(); + return HashMap::new; } @Override @@ -211,7 +218,7 @@ public Set characteristics() { } } - private static abstract class AbstractColector implements Collector { + private static abstract class AbstractCollector implements Collector { @Override public BinaryOperator combiner() { @@ -233,7 +240,7 @@ public Set characteristics() { } - private static class MapCol extends AbstractColector> { + private static class MapCol extends AbstractCollector> { private final BiFunction remappingFunction; @@ -243,7 +250,7 @@ public MapCol(BiFunction remappingFunction) { @Override public Supplier> supplier() { - return () -> new HashMap<>(); + return HashMap::new; } @Override @@ -256,16 +263,16 @@ public BiConsumer, Map> accumulator() { } } - private static class SetCollector extends AbstractColector> { + private static class SetCollector extends AbstractCollector> { @Override public Supplier> supplier() { - return () -> new HashSet<>(); + return HashSet::new; } @Override public BiConsumer, Set> accumulator() { - return (h, s) -> h.addAll(s); + return Set::addAll; } } } diff --git a/reports-backend/src/main/java/org/jboss/da/products/impl/PncProductProvider.java b/reports-backend/src/main/java/org/jboss/da/products/impl/PncProductProvider.java index d37c82a6e..c93a846be 100644 --- a/reports-backend/src/main/java/org/jboss/da/products/impl/PncProductProvider.java +++ b/reports-backend/src/main/java/org/jboss/da/products/impl/PncProductProvider.java @@ -5,11 +5,10 @@ import org.jboss.da.model.rest.GA; import org.jboss.da.products.impl.PncProductProvider.Pnc; -import javax.ejb.TransactionAttribute; -import javax.ejb.TransactionAttributeType; -import javax.enterprise.context.RequestScoped; -import javax.inject.Inject; -import javax.inject.Qualifier; +import jakarta.transaction.Transactional; +import jakarta.enterprise.context.RequestScoped; +import jakarta.inject.Inject; +import jakarta.inject.Qualifier; import java.lang.annotation.Retention; import java.lang.annotation.Target; @@ -26,12 +25,12 @@ * @author Petr Kocandrle */ @Pnc -@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) +@Transactional(Transactional.TxType.NOT_SUPPORTED) @RequestScoped public class PncProductProvider extends AbstractProductProvider { @Inject - private PncConnector pncConnector; + PncConnector pncConnector; @Override Stream getVersionsStreamMaven(GA ga) { @@ -65,7 +64,7 @@ Stream getVersionsStreamNPM(String name) { @Qualifier @Retention(RUNTIME) @Target({ TYPE, METHOD, FIELD, PARAMETER }) - public static @interface Pnc { + public @interface Pnc { } } diff --git a/reports-backend/src/main/java/org/jboss/da/products/impl/RepositoryProductProvider.java b/reports-backend/src/main/java/org/jboss/da/products/impl/RepositoryProductProvider.java index 10633db6c..2000ab897 100644 --- a/reports-backend/src/main/java/org/jboss/da/products/impl/RepositoryProductProvider.java +++ b/reports-backend/src/main/java/org/jboss/da/products/impl/RepositoryProductProvider.java @@ -5,11 +5,10 @@ import org.jboss.da.model.rest.GA; import org.jboss.da.products.impl.RepositoryProductProvider.Repository; -import javax.ejb.TransactionAttribute; -import javax.ejb.TransactionAttributeType; -import javax.enterprise.context.RequestScoped; -import javax.inject.Inject; -import javax.inject.Qualifier; +import jakarta.transaction.Transactional; +import jakarta.enterprise.context.RequestScoped; +import jakarta.inject.Inject; +import jakarta.inject.Qualifier; import java.lang.annotation.Retention; import java.lang.annotation.Target; @@ -27,12 +26,12 @@ * @author Honza Brázdil <jbrazdil@redhat.com> */ @Repository -@TransactionAttribute(TransactionAttributeType.NOT_SUPPORTED) +@Transactional(Transactional.TxType.NOT_SUPPORTED) @RequestScoped public class RepositoryProductProvider extends AbstractProductProvider { @Inject - private IndyConnector indyConnector; + IndyConnector indyConnector; @Override Stream getVersionsStreamMaven(GA ga) { diff --git a/reports-backend/src/main/java/org/jboss/da/reports/backend/impl/DependencyTreeGeneratorImpl.java b/reports-backend/src/main/java/org/jboss/da/reports/backend/impl/DependencyTreeGeneratorImpl.java index 73e4c8781..632afbdf3 100644 --- a/reports-backend/src/main/java/org/jboss/da/reports/backend/impl/DependencyTreeGeneratorImpl.java +++ b/reports-backend/src/main/java/org/jboss/da/reports/backend/impl/DependencyTreeGeneratorImpl.java @@ -11,8 +11,8 @@ import org.jboss.da.reports.backend.api.GAVToplevelDependencies; import org.jboss.da.reports.model.api.SCMLocator; -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; import java.util.HashSet; import java.util.Map; diff --git a/reports-backend/src/main/java/org/jboss/da/reports/impl/FuturesUtil.java b/reports-backend/src/main/java/org/jboss/da/reports/impl/FuturesUtil.java index 2872d8888..cf832c2a1 100644 --- a/reports-backend/src/main/java/org/jboss/da/reports/impl/FuturesUtil.java +++ b/reports-backend/src/main/java/org/jboss/da/reports/impl/FuturesUtil.java @@ -11,7 +11,7 @@ public class FuturesUtil { static List joinFutures(List> futures) throws CommunicationException { try { - return futures.stream().map(r -> r.join()).collect(Collectors.toList()); + return futures.stream().map(CompletableFuture::join).collect(Collectors.toList()); } catch (CompletionException ex) { if (ex.getCause() instanceof CommunicationException) { throw (CommunicationException) ex.getCause(); @@ -22,7 +22,7 @@ static List joinFutures(List> futures) throws Commun static Set joinFutures(Set> futures) throws CommunicationException { try { - return futures.stream().map(r -> r.join()).collect(Collectors.toSet()); + return futures.stream().map(CompletableFuture::join).collect(Collectors.toSet()); } catch (CompletionException ex) { if (ex.getCause() instanceof CommunicationException) { throw (CommunicationException) ex.getCause(); diff --git a/reports-backend/src/main/java/org/jboss/da/reports/impl/LookupGeneratorImpl.java b/reports-backend/src/main/java/org/jboss/da/reports/impl/LookupGeneratorImpl.java index 481fa1e6c..fce5b59db 100644 --- a/reports-backend/src/main/java/org/jboss/da/reports/impl/LookupGeneratorImpl.java +++ b/reports-backend/src/main/java/org/jboss/da/reports/impl/LookupGeneratorImpl.java @@ -26,8 +26,8 @@ import org.jboss.pnc.common.version.VersionAnalyzer; import org.jboss.pnc.enums.ArtifactQuality; -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; import java.util.Collections; import java.util.EnumSet; @@ -48,17 +48,17 @@ public class LookupGeneratorImpl implements LookupGenerator { @Inject @RepositoryProductProvider.Repository - private RepositoryProductProvider repositoryProductProvider; + RepositoryProductProvider repositoryProductProvider; @Inject @PncProductProvider.Pnc - private PncProductProvider pncProductProvider; + PncProductProvider pncProductProvider; @Inject - private AggregatedProductProvider aggProductProvider; + AggregatedProductProvider aggProductProvider; @Inject - private BlackArtifactService blackArtifactService; + BlackArtifactService blackArtifactService; private Map modes; diff --git a/reports-backend/src/main/java/org/jboss/da/reports/impl/ReportsGeneratorImpl.java b/reports-backend/src/main/java/org/jboss/da/reports/impl/ReportsGeneratorImpl.java index 5afe9050b..cfcec4723 100644 --- a/reports-backend/src/main/java/org/jboss/da/reports/impl/ReportsGeneratorImpl.java +++ b/reports-backend/src/main/java/org/jboss/da/reports/impl/ReportsGeneratorImpl.java @@ -9,7 +9,7 @@ import org.jboss.da.common.json.LookupMode; import org.jboss.da.common.util.Configuration; import org.jboss.da.common.util.ConfigurationParseException; -import org.jboss.da.common.util.UserLog; +import org.jboss.da.common.logging.UserLog; import org.jboss.da.communication.indy.model.GAVDependencyTree; import org.jboss.da.communication.pom.PomAnalysisException; import org.jboss.da.communication.pom.api.PomAnalyzer; @@ -19,6 +19,7 @@ import org.jboss.da.model.rest.GA; import org.jboss.da.model.rest.GAV; import org.jboss.da.model.rest.NPMPackage; +import org.jboss.da.products.api.Artifact; import org.jboss.da.products.api.MavenArtifact; import org.jboss.da.products.api.NPMArtifact; import org.jboss.da.products.api.Product; @@ -54,9 +55,9 @@ import org.jboss.pnc.enums.BuildCategory; import org.slf4j.Logger; -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; -import javax.validation.ValidationException; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; +import jakarta.validation.ValidationException; import java.io.File; import java.util.ArrayList; @@ -67,6 +68,7 @@ import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Objects; import java.util.Optional; import java.util.Set; import java.util.TreeSet; @@ -90,40 +92,37 @@ public class ReportsGeneratorImpl implements ReportsGenerator { public static final String DEFAULT_SUFFIX = "redhat"; - @Inject - private Logger log; - @Inject @UserLog - private Logger userLog; + Logger userLog; @Inject - private BlackArtifactService blackArtifactService; + BlackArtifactService blackArtifactService; @Inject - private DependencyTreeGenerator dependencyTreeGenerator; + DependencyTreeGenerator dependencyTreeGenerator; @Inject - private SCM scmManager; + SCM scmManager; @Inject - private PomAnalyzer pomAnalyzer; + PomAnalyzer pomAnalyzer; @Inject - private SCMConnector scmConnector; + SCMConnector scmConnector; @Inject - private AggregatedProductProvider aggProductProvider; + AggregatedProductProvider aggProductProvider; @Inject @Pnc - private PncProductProvider pncProductProvider; + PncProductProvider pncProductProvider; @Inject @Repository - private RepositoryProductProvider repositoryProductProvider; + RepositoryProductProvider repositoryProductProvider; - private Map modes; + private final Map modes; @Inject public ReportsGeneratorImpl(Configuration config) throws ConfigurationParseException { @@ -162,7 +161,7 @@ private Optional createReport(GAVDependencyTree dt) throws Commu private void addDependencyReports( ArtifactReport ar, Set dependencyTree, - Set nodesVisited) throws CommunicationException { + Set nodesVisited) { for (GAVDependencyTree dt : dependencyTree) { ArtifactReport dar = new ArtifactReport(dt.getGav()); @@ -200,7 +199,7 @@ private CompletableFuture fillArtifactReport(ArtifactReport report) { CompletableFuture fillWhitelist = artifacts.thenAccept(pas -> { List whiteProducts = pas.stream() - .map(pa -> pa.getProduct()) + .map(ProductArtifacts::getProduct) .filter(p -> !UNKNOWN.equals(p)) .collect(Collectors.toList()); report.setWhitelisted(whiteProducts); @@ -217,7 +216,7 @@ private CompletableFuture analyzeVersions( return availableArtifacts.thenApply(pas -> { List versions = pas.stream() .flatMap(as -> as.getArtifacts().stream()) - .map(a -> a.getVersion()) + .map(Artifact::getVersion) .collect(Collectors.toList()); Optional bmv = va.findBiggestMatchingVersion(version, versions); @@ -313,7 +312,7 @@ public Set getAligmentReport( scml.getRepositories()); List> futures = new ArrayList<>(); - Set ret = new TreeSet<>(Comparator.comparing(x -> x.getModule())); + Set ret = new TreeSet<>(Comparator.comparing(AlignmentReportModule::getModule)); for (Map.Entry> e : dependenciesOfModules.entrySet()) { AlignmentReportModule module = new AlignmentReportModule(e.getKey()); Map> internallyBuilt = module.getInternallyBuilt(); @@ -384,7 +383,7 @@ private CompletableFuture> filterProducts( Predicate pred = p -> p.getStatus() == SUPPORTED || p.getStatus() == SUPERSEDED; if (useUnknownProduct) { - pred = pred.or(p -> UNKNOWN.equals(p)); + pred = pred.or(UNKNOWN::equals); } artifacts = filterProductArtifacts(artifacts, pred); @@ -437,14 +436,11 @@ private void fillNotBuilt( private CompletableFuture copyCompletedMap( Map>> futures, Map> result) { - CompletableFuture diffDone = CompletableFuture - .allOf(futures.values().toArray(new CompletableFuture[futures.size()])) - .thenAccept(x -> { - for (Map.Entry>> e : futures.entrySet()) { - result.put(e.getKey(), e.getValue().join()); - } - }); - return diffDone; + return CompletableFuture.allOf(futures.values().toArray(new CompletableFuture[0])).thenAccept(x -> { + for (Map.Entry>> e : futures.entrySet()) { + result.put(e.getKey(), e.getValue().join()); + } + }); } @Override @@ -472,7 +468,7 @@ public Set getBuiltReport(SCMLocator scml) private BuiltReportModule toBuiltReportModule(GAV gav, VersionAnalysisResult vlr) { BuiltReportModule report = new BuiltReportModule(gav); report.setAvailableVersions(vlr.getAvailableVersions()); - vlr.getBestMatchVersion().ifPresent(bmv -> report.setBuiltVersion(bmv)); + vlr.getBestMatchVersion().ifPresent(report::setBuiltVersion); return report; } @@ -484,7 +480,7 @@ public List getLookupReports(LookupNPMRequest request) throws C LookupMode lookupMode = getLookupMode(mode, versionSuffix); pncProductProvider.setLookupMode(lookupMode); - Set uniqueNames = request.getPackages().stream().map(x -> x.getName()).collect(Collectors.toSet()); + Set uniqueNames = request.getPackages().stream().map(NPMPackage::getName).collect(Collectors.toSet()); Map>> artifactsMap = getProductArtifactsNPM(uniqueNames); @@ -501,17 +497,15 @@ public List getVersionsReports(VersionsNPMRequest request) th final VersionsNPMRequest.VersionFilter versionFilter = request.getVersionFilter(); Function> predicateProvider; - switch (versionFilter) { - case MAJOR_MINOR: - predicateProvider = this::majorMinorFilter; - break; - default: - throw new UnsupportedOperationException("Unknown filter " + versionFilter); + if (Objects.requireNonNull(versionFilter) == VersionsNPMRequest.VersionFilter.MAJOR_MINOR) { + predicateProvider = this::majorMinorFilter; + } else { + throw new UnsupportedOperationException("Unknown filter " + versionFilter); } ProductProvider productProvider = setupProductProvider(false, null, request.getMode(), request.isIncludeAll()); - Set uniqueNames = request.getPackages().stream().map(x -> x.getName()).collect(Collectors.toSet()); + Set uniqueNames = request.getPackages().stream().map(NPMPackage::getName).collect(Collectors.toSet()); Map>> artifactsMap = new HashMap<>(); for (String name : uniqueNames) { @@ -578,9 +572,9 @@ private List createVersionsReports( @Override public List getLookupReportsForGavs(LookupGAVsRequest request) throws CommunicationException { - userLog.info("Starting lookup report for: " + request); + userLog.info("Starting lookup report for: {}", request); - /** Get set of GAs */ + // Get set of GAs Set uniqueGAs = request.getGavs().stream().map(GAV::getGA).collect(Collectors.toSet()); Map>> gaProductArtifactsMap; @@ -618,7 +612,7 @@ private ProductProvider setupProductProvider( private Map>> getProductArtifactsPerGA( ProductProvider productProvider, LookupGAVsRequest request, - Set uniqueGAs) throws CommunicationException { + Set uniqueGAs) { Map>> gaProductArtifactsMap = new HashMap<>(); for (GA ga : uniqueGAs) { @@ -651,9 +645,7 @@ private List createLookupReports( lr.setBestMatchVersion(v.getBestMatchVersion().orElse(null)); })); - futures.add(artifacts.thenAccept(pas -> { - lr.setWhitelisted(toWhitelisted(pas)); - })); + futures.add(artifacts.thenAccept(pas -> lr.setWhitelisted(toWhitelisted(pas)))); lr.setBlacklisted(blackArtifactService.isArtifactPresent(gav)); }); @@ -708,7 +700,7 @@ private CompletableFuture> filterBuiltArtifacts( private static List toWhitelisted(Set whitelisted) { return whitelisted.stream() - .map(pa -> pa.getProduct()) + .map(ProductArtifacts::getProduct) .filter(p -> !UNKNOWN.equals(p)) .map(p -> new RestProductInput(p.getName(), p.getVersion(), p.getStatus())) .collect(Collectors.toList()); diff --git a/reports-backend/src/main/java/org/jboss/da/validation/Validation.java b/reports-backend/src/main/java/org/jboss/da/validation/Validation.java index 297f6edcf..2603b8dcb 100644 --- a/reports-backend/src/main/java/org/jboss/da/validation/Validation.java +++ b/reports-backend/src/main/java/org/jboss/da/validation/Validation.java @@ -2,10 +2,10 @@ import java.util.Set; -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; -import javax.validation.ConstraintViolation; -import javax.validation.Validator; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; +import jakarta.validation.ConstraintViolation; +import jakarta.validation.Validator; import org.jboss.da.model.rest.validators.ValidationField; import org.jboss.da.model.rest.validators.Validations; diff --git a/reports-backend/src/main/java/org/jboss/da/validation/ValidationException.java b/reports-backend/src/main/java/org/jboss/da/validation/ValidationException.java index e2f44ddb8..3826af78b 100644 --- a/reports-backend/src/main/java/org/jboss/da/validation/ValidationException.java +++ b/reports-backend/src/main/java/org/jboss/da/validation/ValidationException.java @@ -4,7 +4,7 @@ import static org.jboss.da.model.rest.ErrorMessage.ErrorType.INPUT_VALIDATION; import org.jboss.da.model.rest.validators.Validations; -import javax.ws.rs.core.Response; +import jakarta.ws.rs.core.Response; import lombok.Getter; import lombok.NonNull; diff --git a/reports-backend/src/main/resources/META-INF/beans.xml b/reports-backend/src/main/resources/META-INF/beans.xml deleted file mode 100644 index a695c672f..000000000 --- a/reports-backend/src/main/resources/META-INF/beans.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/reports-backend/src/test/java/org/jboss/da/reports/api/ArtifactReportTest.java b/reports-backend/src/test/java/org/jboss/da/reports/api/ArtifactReportTest.java index aa6f285ef..51b2f5b6e 100644 --- a/reports-backend/src/test/java/org/jboss/da/reports/api/ArtifactReportTest.java +++ b/reports-backend/src/test/java/org/jboss/da/reports/api/ArtifactReportTest.java @@ -3,16 +3,18 @@ import java.util.Optional; import org.jboss.da.model.rest.GAV; -import static org.junit.Assert.assertEquals; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.runners.MockitoJUnitRunner; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; /** * * @author Honza Brázdil <jbrazdil@redhat.com> */ -@RunWith(MockitoJUnitRunner.class) +@ExtendWith(MockitoExtension.class) public class ArtifactReportTest { @Test diff --git a/reports-backend/src/test/java/org/jboss/da/reports/impl/LookupGeneratorTest.java b/reports-backend/src/test/java/org/jboss/da/reports/impl/LookupGeneratorTest.java index c12a68cf9..d3ca28f98 100644 --- a/reports-backend/src/test/java/org/jboss/da/reports/impl/LookupGeneratorTest.java +++ b/reports-backend/src/test/java/org/jboss/da/reports/impl/LookupGeneratorTest.java @@ -17,12 +17,13 @@ import org.jboss.da.products.impl.PncProductProvider; import org.jboss.da.products.impl.RepositoryProductProvider; import org.jboss.da.reports.api.LookupGenerator; -import org.junit.BeforeClass; -import org.junit.Test; -import org.junit.runner.RunWith; + +import org.junit.jupiter.api.BeforeAll; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.junit.jupiter.MockitoExtension; import java.util.Arrays; import java.util.Collections; @@ -31,13 +32,13 @@ import java.util.Set; import java.util.concurrent.CompletableFuture; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; -import static org.mockito.Matchers.eq; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNull; +import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; -@RunWith(MockitoJUnitRunner.class) +@ExtendWith(MockitoExtension.class) public class LookupGeneratorTest { public static final String PERSISTENT = "persistent"; @@ -64,14 +65,14 @@ public LookupGeneratorTest() throws ConfigurationParseException { DAConfig daConfig = new DAConfig(); LookupMode mode = new LookupMode(); mode.setName(PERSISTENT); - mode.setSuffixes(Arrays.asList("redhat")); + mode.setSuffixes(List.of("redhat")); daConfig.setModes(Collections.singletonList(mode)); when(config.getConfig()).thenReturn(daConfig); lookupGenerator = new LookupGeneratorImpl(config); } - @BeforeClass - public static void initMocks() throws ConfigurationParseException { + @BeforeAll + public static void initMocks() { } @Test diff --git a/reports-backend/src/test/java/org/jboss/da/reports/impl/ReportsGeneratorImplTest.java b/reports-backend/src/test/java/org/jboss/da/reports/impl/ReportsGeneratorImplTest.java index 31ea17275..bfa12a46d 100644 --- a/reports-backend/src/test/java/org/jboss/da/reports/impl/ReportsGeneratorImplTest.java +++ b/reports-backend/src/test/java/org/jboss/da/reports/impl/ReportsGeneratorImplTest.java @@ -1,23 +1,11 @@ package org.jboss.da.reports.impl; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collections; -import java.util.HashSet; -import java.util.List; -import java.util.Objects; -import java.util.Set; -import java.util.concurrent.CompletableFuture; -import java.util.stream.Collectors; - import org.jboss.da.common.CommunicationException; import org.jboss.da.common.json.DAConfig; import org.jboss.da.common.json.LookupMode; import org.jboss.da.common.util.Configuration; import org.jboss.da.common.util.ConfigurationParseException; -import org.jboss.da.common.util.UserLog; -import org.jboss.da.communication.indy.FindGAVDependencyException; +import org.jboss.da.common.logging.UserLog; import org.jboss.da.communication.indy.api.IndyConnector; import org.jboss.da.communication.indy.model.GAVDependencyTree; import org.jboss.da.listings.api.service.BlackArtifactService; @@ -32,28 +20,36 @@ import org.jboss.da.products.impl.AggregatedProductProvider; import org.jboss.da.products.impl.PncProductProvider; import org.jboss.da.products.impl.RepositoryProductProvider; -import org.jboss.da.reports.api.ArtifactReport; import org.jboss.da.reports.backend.api.DependencyTreeGenerator; import org.jboss.da.reports.backend.impl.DependencyTreeGeneratorImpl; -import org.jboss.da.reports.model.request.GAVRequest; import org.jboss.da.reports.model.request.LookupGAVsRequest; import org.jboss.da.reports.model.response.LookupReport; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.ArgumentMatcher; import org.mockito.InjectMocks; import org.mockito.Mock; -import org.mockito.Spy; -import org.mockito.runners.MockitoJUnitRunner; +import org.mockito.Mockito; +import org.mockito.junit.jupiter.MockitoExtension; import org.slf4j.Logger; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import static org.junit.Assert.fail; -import static org.mockito.Matchers.argThat; +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.HashSet; +import java.util.List; +import java.util.Objects; +import java.util.Set; +import java.util.concurrent.CompletableFuture; +import java.util.stream.Collectors; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.ArgumentMatchers.argThat; +import static org.mockito.Mockito.lenient; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @@ -61,7 +57,7 @@ * * @author Honza Brázdil <jbrazdil@redhat.com> */ -@RunWith(MockitoJUnitRunner.class) +@ExtendWith(MockitoExtension.class) public class ReportsGeneratorImplTest { @Mock @@ -86,8 +82,7 @@ public class ReportsGeneratorImplTest { private Logger userLog; @InjectMocks - @Spy - private final DependencyTreeGenerator dependencyTreeGenerator = new DependencyTreeGeneratorImpl(); + private final DependencyTreeGenerator dependencyTreeGenerator = Mockito.spy(DependencyTreeGeneratorImpl.class); @InjectMocks private ReportsGeneratorImpl generator; @@ -98,9 +93,6 @@ public class ReportsGeneratorImplTest { private final GAV daCoreGAV = new GAV("org.jboss.da", "core", version); - private final List daCoreVersionsNoBest = Arrays - .asList("1.1.1.redhat-2", "1.2.3.redhat-1", "1.3.4.redhat-3", "1.3.5.redhat-1"); - private final String bestMatchVersion = version + ".redhat-1"; private final List daCoreVersionsBest = Arrays @@ -127,13 +119,13 @@ public ReportsGeneratorImplTest() throws ConfigurationParseException { DAConfig daConfig = new DAConfig(); LookupMode mode = new LookupMode(); mode.setName("PERSISTENT"); - mode.setSuffixes(Arrays.asList("redhat")); + mode.setSuffixes(List.of("redhat")); daConfig.setModes(Collections.singletonList(mode)); when(config.getConfig()).thenReturn(daConfig); generator = new ReportsGeneratorImpl(config); } - @Before + @BeforeEach public void initMock() throws ReflectiveOperationException { injectMethod("userLog", generator, userLog, ReportsGeneratorImpl.class); } @@ -166,16 +158,12 @@ private Set toProductArtifacts(GA ga, List versions) { return Collections.singleton(new ProductArtifacts(Product.UNKNOWN, artifacts)); } - private void prepare( - List whitelisted, - boolean blacklisted, - List versions, - GAVDependencyTree dependencyTree) throws CommunicationException, FindGAVDependencyException { - when(productProvider.getArtifacts(matchingGAV(daCoreGAV))) + private void prepare(List whitelisted, List versions) { + lenient().when(productProvider.getArtifacts(matchingGAV(daCoreGAV))) .thenReturn(CompletableFuture.completedFuture(toProductArtifacts(daCoreGAV.getGA(), versions))); prepareProductProvider(versions, whitelisted, daCoreGAV); - when(blackArtifactService.isArtifactPresent(daCoreGAV)).thenReturn(blacklisted); + lenient().when(blackArtifactService.isArtifactPresent(daCoreGAV)).thenReturn(true); DAConfig daConfig = new DAConfig(); daConfig.setIndyGroup("DA"); @@ -187,20 +175,6 @@ private void prepare( } } - private void prepareMulti() throws CommunicationException, FindGAVDependencyException { - prepare(Collections.emptyList(), false, daCoreVersionsBest, daCoreNoDT); - - when(productProvider.getArtifacts(matchingGAV(daUtilGAV))).thenReturn( - CompletableFuture.completedFuture(toProductArtifacts(daUtilGAV.getGA(), daCoreVersionsBest))); - - when(blackArtifactService.isArtifactPresent(daUtilGAV)).thenReturn(false); - - when(productProvider.getArtifacts(matchingGAV(daCommonGAV))).thenReturn( - CompletableFuture.completedFuture(toProductArtifacts(daCommonGAV.getGA(), daCoreVersionsNoBest))); - prepareProductProvider(daCoreVersionsNoBest, Collections.emptyList(), daCommonGAV); - when(blackArtifactService.isArtifactPresent(daCommonGAV)).thenReturn(false); - } - /** * Test the distinct on a stream in #getLookupReportsForGavs works correctly */ @@ -228,12 +202,12 @@ public void testDistinctOnGavsStream() { // Then assertEquals(uniqueGAVs.size(), distinctList.size()); - assertTrue(uniqueGAVs.equals(distinctList)); + assertEquals(uniqueGAVs, distinctList); } @Test - public void testBlacklistedLookupReport() throws CommunicationException, FindGAVDependencyException { - prepare(Collections.emptyList(), true, daCoreVersionsBest, daCoreNoDT); + public void testBlacklistedLookupReport() throws CommunicationException { + prepare(Collections.emptyList(), daCoreVersionsBest); LookupGAVsRequest lgr = new LookupGAVsRequest( Collections.emptySet(), Collections.emptySet(), @@ -251,49 +225,11 @@ public void testBlacklistedLookupReport() throws CommunicationException, FindGAV assertTrue(lookupReport.isBlacklisted()); } - private void assertMultipleDependencies(Set deps) { - assertEquals(2, deps.size()); - - for (ArtifactReport dep : deps) { - GAV gav = dep.getGav(); - switch (gav.getArtifactId()) { - case "util": { - assertTrue(dep.getAvailableVersions().containsAll(daCoreVersionsBest)); - assertEquals(daUtilGAV, dep.getGav()); - assertNotNull(dep.getBestMatchVersion()); - assertEquals(bestMatchVersion, dep.getBestMatchVersion().get()); - assertTrue(dep.getDependencies().isEmpty()); - assertFalse(dep.isBlacklisted()); - assertTrue(dep.getWhitelisted().isEmpty()); - break; - } - case "common": { - assertTrue(dep.getAvailableVersions().containsAll(daCoreVersionsNoBest)); - assertEquals(daCommonGAV, dep.getGav()); - assertFalse(dep.getBestMatchVersion().isPresent()); - assertTrue(dep.getDependencies().isEmpty()); - assertFalse(dep.isBlacklisted()); - assertTrue(dep.getWhitelisted().isEmpty()); - break; - } - default: { - fail("Unknown artifact id"); - break; - } - } - } - } - - private GAVRequest gavToRequest(GAV g) { - return new GAVRequest(g.getGroupId(), g.getArtifactId(), g.getVersion(), new HashSet<>(), new HashSet<>()); - - } - private static Artifact matchingGAV(GAV gav) { return argThat(new IsArtifactWithSameNameAndTypeAs(new MavenArtifact(gav))); } - private static class IsArtifactWithSameNameAndTypeAs extends ArgumentMatcher { + private static class IsArtifactWithSameNameAndTypeAs implements ArgumentMatcher { private final String name; @@ -305,13 +241,11 @@ public IsArtifactWithSameNameAndTypeAs(Artifact artifact) { } @Override - public boolean matches(Object argument) { - if (argument instanceof Artifact) { - Artifact artifact = (Artifact) argument; - return name.equals(artifact.getName()) && type == artifact.getType(); + public boolean matches(Artifact argument) { + if (argument != null) { + return name.equals(argument.getName()) && type == argument.getType(); } return false; } - } } diff --git a/reports-model/pom.xml b/reports-model/pom.xml index 947a16ba4..d9b84cc43 100644 --- a/reports-model/pom.xml +++ b/reports-model/pom.xml @@ -7,60 +7,29 @@ reports-model reports-model - ejb + jar org.jboss.pnc pnc-api + jakarta + - com.fasterxml.jackson.core - jackson-annotations - provided - - - com.fasterxml.jackson.core - jackson-databind - provided + io.quarkus + quarkus-hibernate-validator + org.projectlombok lombok provided - - jakarta.validation - jakarta.validation-api - provided - - - commons-validator - commons-validator - - - commons-beanutils - commons-beanutils - - - commons-collections - commons-collections - - - commons-logging - commons-logging - - - - junit - junit - test - - - org.mockito - mockito-all + io.quarkus + quarkus-junit5 test @@ -68,10 +37,14 @@ jsonassert test - - org.assertj - assertj-core - test - + + + + + io.smallrye + jandex-maven-plugin + + + diff --git a/reports-model/src/main/java/org/jboss/da/lookup/model/MavenLatestRequest.java b/reports-model/src/main/java/org/jboss/da/lookup/model/MavenLatestRequest.java index 24f1ac6c6..fc1c8ef58 100644 --- a/reports-model/src/main/java/org/jboss/da/lookup/model/MavenLatestRequest.java +++ b/reports-model/src/main/java/org/jboss/da/lookup/model/MavenLatestRequest.java @@ -5,7 +5,6 @@ import org.jboss.da.model.rest.GAV; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonProperty; import lombok.Builder; import lombok.Data; diff --git a/reports-model/src/main/java/org/jboss/da/lookup/model/MavenVersionsRequest.java b/reports-model/src/main/java/org/jboss/da/lookup/model/MavenVersionsRequest.java index e71de03e4..966fa5e95 100644 --- a/reports-model/src/main/java/org/jboss/da/lookup/model/MavenVersionsRequest.java +++ b/reports-model/src/main/java/org/jboss/da/lookup/model/MavenVersionsRequest.java @@ -24,7 +24,7 @@ import org.jboss.pnc.api.constants.versions.VersionDistanceRule; import org.jboss.pnc.api.constants.versions.VersionFilter; -import javax.validation.constraints.NotNull; +import jakarta.validation.constraints.NotNull; import java.util.Set; /** diff --git a/reports-model/src/main/java/org/jboss/da/lookup/model/NPMLookupResult.java b/reports-model/src/main/java/org/jboss/da/lookup/model/NPMLookupResult.java index 2e34cb950..0daa7d156 100644 --- a/reports-model/src/main/java/org/jboss/da/lookup/model/NPMLookupResult.java +++ b/reports-model/src/main/java/org/jboss/da/lookup/model/NPMLookupResult.java @@ -1,15 +1,12 @@ package org.jboss.da.lookup.model; -import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; import lombok.NonNull; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonUnwrapped; -import org.jboss.da.model.rest.GAV; import org.jboss.da.model.rest.NPMPackage; @EqualsAndHashCode(callSuper = true) diff --git a/reports-model/src/main/java/org/jboss/da/lookup/model/NPMVersionsRequest.java b/reports-model/src/main/java/org/jboss/da/lookup/model/NPMVersionsRequest.java index baa583034..abde89695 100644 --- a/reports-model/src/main/java/org/jboss/da/lookup/model/NPMVersionsRequest.java +++ b/reports-model/src/main/java/org/jboss/da/lookup/model/NPMVersionsRequest.java @@ -24,7 +24,7 @@ import org.jboss.pnc.api.constants.versions.VersionDistanceRule; import org.jboss.pnc.api.constants.versions.VersionFilter; -import javax.validation.constraints.NotNull; +import jakarta.validation.constraints.NotNull; import java.util.Set; /** diff --git a/reports-model/src/main/java/org/jboss/da/lookup/model/NPMVersionsResult.java b/reports-model/src/main/java/org/jboss/da/lookup/model/NPMVersionsResult.java index 7aa6d9266..2c6572ec7 100644 --- a/reports-model/src/main/java/org/jboss/da/lookup/model/NPMVersionsResult.java +++ b/reports-model/src/main/java/org/jboss/da/lookup/model/NPMVersionsResult.java @@ -16,8 +16,6 @@ package org.jboss.da.lookup.model; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; -import com.fasterxml.jackson.annotation.JsonUnwrapped; -import lombok.AllArgsConstructor; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; diff --git a/reports-model/src/main/java/org/jboss/da/model/rest/NPMPackage.java b/reports-model/src/main/java/org/jboss/da/model/rest/NPMPackage.java index 37d5f4e2c..0abce35a4 100644 --- a/reports-model/src/main/java/org/jboss/da/model/rest/NPMPackage.java +++ b/reports-model/src/main/java/org/jboss/da/model/rest/NPMPackage.java @@ -32,9 +32,9 @@ @JsonDeserialize(builder = NPMPackage.Builder.class) public class NPMPackage { - private final String name; + String name; - private final String version; + String version; @JsonPOJOBuilder(withPrefix = "") public static final class Builder { diff --git a/reports-model/src/main/java/org/jboss/da/model/rest/validators/ScmUrl.java b/reports-model/src/main/java/org/jboss/da/model/rest/validators/ScmUrl.java index 2dbbebb4a..2b940da16 100644 --- a/reports-model/src/main/java/org/jboss/da/model/rest/validators/ScmUrl.java +++ b/reports-model/src/main/java/org/jboss/da/model/rest/validators/ScmUrl.java @@ -18,8 +18,8 @@ * limitations under the License. */ -import javax.validation.Constraint; -import javax.validation.Payload; +import jakarta.validation.Constraint; +import jakarta.validation.Payload; import java.lang.annotation.*; /** diff --git a/reports-model/src/main/java/org/jboss/da/model/rest/validators/ScmUrlValidator.java b/reports-model/src/main/java/org/jboss/da/model/rest/validators/ScmUrlValidator.java index 4173e22ba..0c5234a6d 100644 --- a/reports-model/src/main/java/org/jboss/da/model/rest/validators/ScmUrlValidator.java +++ b/reports-model/src/main/java/org/jboss/da/model/rest/validators/ScmUrlValidator.java @@ -22,8 +22,8 @@ import org.apache.commons.validator.routines.UrlValidator; -import javax.validation.ConstraintValidator; -import javax.validation.ConstraintValidatorContext; +import jakarta.validation.ConstraintValidator; +import jakarta.validation.ConstraintValidatorContext; import java.util.regex.Pattern; import java.util.stream.Stream; @@ -32,10 +32,6 @@ */ public class ScmUrlValidator implements ConstraintValidator { - @Override - public void initialize(ScmUrl constraintAnnotation) { - } - @Override public boolean isValid(String value, ConstraintValidatorContext context) { return isValid(value); diff --git a/reports-model/src/main/java/org/jboss/da/reports/model/request/LookupGAVsRequest.java b/reports-model/src/main/java/org/jboss/da/reports/model/request/LookupGAVsRequest.java index 98a034a74..999dce37c 100644 --- a/reports-model/src/main/java/org/jboss/da/reports/model/request/LookupGAVsRequest.java +++ b/reports-model/src/main/java/org/jboss/da/reports/model/request/LookupGAVsRequest.java @@ -4,7 +4,7 @@ import lombok.ToString; import org.jboss.da.model.rest.GAV; -import javax.validation.constraints.NotNull; +import jakarta.validation.constraints.NotNull; import java.util.HashSet; import java.util.List; diff --git a/reports-model/src/main/java/org/jboss/da/reports/model/request/LookupNPMRequest.java b/reports-model/src/main/java/org/jboss/da/reports/model/request/LookupNPMRequest.java index 210472bf5..f45db0408 100644 --- a/reports-model/src/main/java/org/jboss/da/reports/model/request/LookupNPMRequest.java +++ b/reports-model/src/main/java/org/jboss/da/reports/model/request/LookupNPMRequest.java @@ -17,7 +17,7 @@ import org.jboss.da.model.rest.NPMPackage; -import javax.validation.constraints.NotNull; +import jakarta.validation.constraints.NotNull; import java.util.List; @@ -38,13 +38,13 @@ @JsonIgnoreProperties(ignoreUnknown = true) public class LookupNPMRequest { - private final String versionSuffix; + String versionSuffix; @NotNull - private final String mode; + String mode; @NonNull - private final List packages; + List packages; @JsonIgnoreProperties(ignoreUnknown = true) @JsonPOJOBuilder(withPrefix = "") diff --git a/reports-model/src/main/java/org/jboss/da/reports/model/request/SCMReportRequest.java b/reports-model/src/main/java/org/jboss/da/reports/model/request/SCMReportRequest.java index 1883c801b..99728e94c 100644 --- a/reports-model/src/main/java/org/jboss/da/reports/model/request/SCMReportRequest.java +++ b/reports-model/src/main/java/org/jboss/da/reports/model/request/SCMReportRequest.java @@ -4,7 +4,7 @@ import java.util.HashSet; import java.util.Set; -import javax.validation.Valid; +import jakarta.validation.Valid; import lombok.AllArgsConstructor; import lombok.Getter; diff --git a/reports-model/src/main/java/org/jboss/da/reports/model/request/VersionsNPMRequest.java b/reports-model/src/main/java/org/jboss/da/reports/model/request/VersionsNPMRequest.java index dc51cf68d..4e89a50b3 100644 --- a/reports-model/src/main/java/org/jboss/da/reports/model/request/VersionsNPMRequest.java +++ b/reports-model/src/main/java/org/jboss/da/reports/model/request/VersionsNPMRequest.java @@ -17,7 +17,7 @@ import org.jboss.da.model.rest.NPMPackage; -import javax.validation.constraints.NotNull; +import jakarta.validation.constraints.NotNull; import java.util.List; @@ -42,15 +42,15 @@ public enum VersionFilter { MAJOR_MINOR } - private final VersionFilter versionFilter; + VersionFilter versionFilter; @NotNull - private final String mode; + String mode; @NonNull - private final List packages; + List packages; - private final boolean includeAll; + boolean includeAll; @JsonIgnoreProperties(ignoreUnknown = true) @JsonPOJOBuilder(withPrefix = "") diff --git a/reports-model/src/main/java/org/jboss/da/reports/model/response/striped/AlignReport.java b/reports-model/src/main/java/org/jboss/da/reports/model/response/striped/AlignReport.java index f063d5249..e79b94106 100644 --- a/reports-model/src/main/java/org/jboss/da/reports/model/response/striped/AlignReport.java +++ b/reports-model/src/main/java/org/jboss/da/reports/model/response/striped/AlignReport.java @@ -5,7 +5,6 @@ import lombok.NonNull; import org.jboss.da.reports.model.response.RestGA2GAVs; -import java.util.ArrayList; import java.util.List; /** diff --git a/reports-model/src/main/java/org/jboss/da/reports/model/response/striped/RestVersionProduct.java b/reports-model/src/main/java/org/jboss/da/reports/model/response/striped/RestVersionProduct.java index 56bc20a5b..94a64a6b1 100644 --- a/reports-model/src/main/java/org/jboss/da/reports/model/response/striped/RestVersionProduct.java +++ b/reports-model/src/main/java/org/jboss/da/reports/model/response/striped/RestVersionProduct.java @@ -1,7 +1,6 @@ package org.jboss.da.reports.model.response.striped; import lombok.*; -import org.jboss.da.listings.model.rest.RestProductInput; /** * diff --git a/reports-model/src/main/resources/META-INF/beans.xml b/reports-model/src/main/resources/META-INF/beans.xml deleted file mode 100644 index a695c672f..000000000 --- a/reports-model/src/main/resources/META-INF/beans.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/reports-model/src/test/java/org/jboss/da/model/rest/BackwardCompatibilityTest.java b/reports-model/src/test/java/org/jboss/da/model/rest/BackwardCompatibilityTest.java index 0929dadcb..9d3c7a8a6 100644 --- a/reports-model/src/test/java/org/jboss/da/model/rest/BackwardCompatibilityTest.java +++ b/reports-model/src/test/java/org/jboss/da/model/rest/BackwardCompatibilityTest.java @@ -15,7 +15,7 @@ import org.jboss.da.reports.model.response.LookupReport; import org.jboss.da.reports.model.response.Report; import org.json.JSONException; -import org.junit.Test; +import org.junit.jupiter.api.Test; import org.skyscreamer.jsonassert.JSONAssert; import org.skyscreamer.jsonassert.JSONCompareMode; @@ -28,7 +28,7 @@ import java.util.HashSet; import java.util.stream.Collectors; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.fail; /** * diff --git a/reports-model/src/test/java/org/jboss/da/model/rest/GAVTest.java b/reports-model/src/test/java/org/jboss/da/model/rest/GAVTest.java index 006074811..d0aa6b7c1 100644 --- a/reports-model/src/test/java/org/jboss/da/model/rest/GAVTest.java +++ b/reports-model/src/test/java/org/jboss/da/model/rest/GAVTest.java @@ -1,22 +1,20 @@ package org.jboss.da.model.rest; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.runners.MockitoJUnitRunner; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.Test; /** * * @author jbrazdil */ -@RunWith(MockitoJUnitRunner.class) public class GAVTest { @Test public void testValidGA() { assertTrue((new GA("com.example", "some-example")).isValid()); - assertTrue((new GA("com.101tec", "zkclient")).isValid()); // technically invallid, but comonly used + assertTrue((new GA("com.101tec", "zkclient")).isValid()); // technically invalid, but commonly used assertFalse((new GA("com.ex ample", "some-example")).isValid()); assertFalse((new GA("com.example", "some example")).isValid()); diff --git a/reports-model/src/test/java/org/jboss/da/model/rest/VersionComparatorTest.java b/reports-model/src/test/java/org/jboss/da/model/rest/VersionComparatorTest.java index 692027d24..27ee39d5b 100644 --- a/reports-model/src/test/java/org/jboss/da/model/rest/VersionComparatorTest.java +++ b/reports-model/src/test/java/org/jboss/da/model/rest/VersionComparatorTest.java @@ -1,15 +1,14 @@ package org.jboss.da.model.rest; -import static org.junit.Assert.assertTrue; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.runners.MockitoJUnitRunner; +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; /** * * @author Honza Brázdil <jbrazdil@redhat.com> */ -@RunWith(MockitoJUnitRunner.class) public class VersionComparatorTest { @Test @@ -21,15 +20,17 @@ public void testCompareVersion() { assertTrue(vc.compare("3.4.2.Final", "3.4.1.Final") > 0); assertTrue(vc.compare("3.4.2.Final", "3.4.2.Beta") > 0); - assertTrue(vc.compare("3.0.0.Final", "3.Final") == 0); - assertTrue(vc.compare("3.0.0.Final", "3.0.Final") == 0); - assertTrue(vc.compare("3.0.0.Final", "3.0.0.Final") == 0); + assertEquals(0, vc.compare("3.0.0.Final", "3.Final")); + assertEquals(0, vc.compare("3.0.0.Final", "3.0.Final")); + // noinspection EqualsWithItself + assertEquals(0, vc.compare("3.0.0.Final", "3.0.0.Final")); - assertTrue(vc.compare("3.0.0", "3") == 0); - assertTrue(vc.compare("3.0.0", "3.0") == 0); - assertTrue(vc.compare("3.0.0", "3.0.0") == 0); + assertEquals(0, vc.compare("3.0.0", "3")); + assertEquals(0, vc.compare("3.0.0", "3.0")); + // noinspection EqualsWithItself + assertEquals(0, vc.compare("3.0.0", "3.0.0")); - assertTrue(vc.compare("b10", "0.0.0.b10") == 0); + assertEquals(0, vc.compare("b10", "0.0.0.b10")); assertTrue(vc.compare("3.4.2.Final", "4.4.2.Final") < 0); assertTrue(vc.compare("3.4.2.Final", "3.5.2.Final") < 0); diff --git a/reports-model/src/test/java/org/jboss/da/reports/model/response/DeserializationTest.java b/reports-model/src/test/java/org/jboss/da/reports/model/response/DeserializationTest.java index 8fee9ad58..12eb149a1 100644 --- a/reports-model/src/test/java/org/jboss/da/reports/model/response/DeserializationTest.java +++ b/reports-model/src/test/java/org/jboss/da/reports/model/response/DeserializationTest.java @@ -1,21 +1,22 @@ package org.jboss.da.reports.model.response; -import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; import org.jboss.da.lookup.model.MavenLookupResult; import org.jboss.da.lookup.model.NPMLookupResult; import org.jboss.da.reports.model.request.VersionsNPMRequest; -import org.junit.Test; +import org.junit.jupiter.api.Test; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.List; import java.util.stream.Collectors; -import static org.assertj.core.api.Assertions.*; + import static org.jboss.da.reports.model.request.VersionsNPMRequest.VersionFilter.MAJOR_MINOR; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertNotNull; public class DeserializationTest { @@ -30,9 +31,9 @@ public void deserializeLookupReport() throws IOException { ObjectMapper mapper = new ObjectMapper(); LookupReport reported = mapper.readValue(content, LookupReport.class); - assertThat(reported.getGav()).isNotNull(); - assertThat(reported.getGav().getArtifactId()).isEqualTo("xom"); - assertThat(reported.getGav().getVersion()).isEqualTo("1.2.5"); + assertNotNull(reported.getGav()); + assertEquals("xom", reported.getGav().getArtifactId()); + assertEquals("1.2.5", reported.getGav().getVersion()); } @Test @@ -44,9 +45,9 @@ public void deserializeLookupResult() throws IOException { ObjectMapper mapper = new ObjectMapper(); MavenLookupResult reported = mapper.readValue(content, MavenLookupResult.class); - assertThat(reported.getGav()).isNotNull(); - assertThat(reported.getGav().getArtifactId()).isEqualTo("xom"); - assertThat(reported.getGav().getVersion()).isEqualTo("1.2.5"); + assertNotNull(reported.getGav()); + assertEquals("xom", reported.getGav().getArtifactId()); + assertEquals("1.2.5", reported.getGav().getVersion()); } @Test @@ -57,8 +58,8 @@ public void deserializeNPMLookupReport() throws IOException { ObjectMapper mapper = new ObjectMapper(); NPMLookupReport reported = mapper.readValue(content, NPMLookupReport.class); - assertThat(reported.getNpmPackage()).isNotNull(); - assertThat(reported.getNpmPackage().getVersion()).isEqualTo("1.2.3"); + assertNotNull(reported.getNpmPackage()); + assertEquals("1.2.3", reported.getNpmPackage().getVersion()); } @Test @@ -69,8 +70,8 @@ public void deserializeNPMLookupResult() throws IOException { ObjectMapper mapper = new ObjectMapper(); NPMLookupResult reported = mapper.readValue(content, NPMLookupResult.class); - assertThat(reported.getNpmPackage()).isNotNull(); - assertThat(reported.getNpmPackage().getVersion()).isEqualTo("1.2.3"); + assertNotNull(reported.getNpmPackage()); + assertEquals("1.2.3", reported.getNpmPackage().getVersion()); } @Test @@ -80,12 +81,12 @@ public void deserializeVersionsNPMRequest() throws IOException { ObjectMapper mapper = new ObjectMapper(); VersionsNPMRequest request = mapper.readValue(content, VersionsNPMRequest.class); - assertThat(request.getMode()).isEqualTo("FOO"); - assertThat(request.getVersionFilter()).isEqualTo(MAJOR_MINOR); - assertThat(request.getPackages()).hasSize(1); - assertThat(request.getPackages().get(0).getName()).isEqualTo("abab"); - assertThat(request.getPackages().get(0).getVersion()).isEqualTo("1.2.3"); - assertThat(request.isIncludeAll()).isFalse(); + assertEquals("FOO", request.getMode()); + assertEquals(MAJOR_MINOR, request.getVersionFilter()); + assertEquals(1, request.getPackages().size()); + assertEquals("abab", request.getPackages().get(0).getName()); + assertEquals("1.2.3", request.getPackages().get(0).getVersion()); + assertFalse(request.isIncludeAll()); } protected Path getJsonResponseFile(String path, String variant) { diff --git a/reports-rest/pom.xml b/reports-rest/pom.xml index 508c46365..f60b157f3 100644 --- a/reports-rest/pom.xml +++ b/reports-rest/pom.xml @@ -7,14 +7,12 @@ reports-rest reports-rest - war + jar org.jboss.da reports-backend - ejb - provided org.slf4j @@ -25,78 +23,40 @@ lombok provided + - org.jboss.spec.javax.websocket - jboss-websocket-api_1.1_spec - provided + io.quarkus + quarkus-rest-jackson - jakarta.persistence - jakarta.persistence-api - provided + io.quarkus + quarkus-websockets - org.jboss.spec.javax.annotation - jboss-annotations-api_1.3_spec - provided + io.quarkus + quarkus-smallrye-openapi - org.jboss.spec.javax.ws.rs - jboss-jaxrs-api_2.1_spec - provided - - - org.jboss.weld - weld-api - provided + io.quarkus + quarkus-hibernate-validator + com.thetransactioncompany jsonrpc2-base - - io.swagger.core.v3 - swagger-jaxrs2 - - - org.eclipse.jetty - jetty-servlets - - - org.jboss.spec.javax.servlet - jboss-servlet-api_4.0_spec - provided - - - org.wildfly.security - wildfly-elytron-http-oidc - provided - com.fasterxml.jackson.datatype jackson-datatype-jsr310 - provided - org.apache.maven.plugins - maven-war-plugin - - true - - - src/main/webapp - true - - **/*.html - - - - + io.smallrye + jandex-maven-plugin diff --git a/reports-rest/src/main/java/org/jboss/da/rest/JacksonProvider.java b/reports-rest/src/main/java/org/jboss/da/rest/JacksonProvider.java index 695b2744b..7a6a21eab 100644 --- a/reports-rest/src/main/java/org/jboss/da/rest/JacksonProvider.java +++ b/reports-rest/src/main/java/org/jboss/da/rest/JacksonProvider.java @@ -4,11 +4,11 @@ import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; -import javax.ws.rs.Consumes; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.ext.ContextResolver; -import javax.ws.rs.ext.Provider; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.ext.ContextResolver; +import jakarta.ws.rs.ext.Provider; /** * Jackson Provider just to properly serialize the timestamp diff --git a/reports-rest/src/main/java/org/jboss/da/rest/LookupImpl.java b/reports-rest/src/main/java/org/jboss/da/rest/LookupImpl.java index 305c9c68e..1a6a3e44a 100644 --- a/reports-rest/src/main/java/org/jboss/da/rest/LookupImpl.java +++ b/reports-rest/src/main/java/org/jboss/da/rest/LookupImpl.java @@ -2,8 +2,8 @@ import java.util.Set; -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; +import jakarta.inject.Inject; +import jakarta.transaction.Transactional; import org.jboss.da.common.CommunicationException; import org.jboss.da.lookup.model.MavenLatestRequest; @@ -21,14 +21,16 @@ import io.opentelemetry.instrumentation.annotations.SpanAttribute; import io.opentelemetry.instrumentation.annotations.WithSpan; -import lombok.extern.slf4j.Slf4j; +import org.slf4j.Logger; -@ApplicationScoped -@Slf4j +@Transactional public class LookupImpl implements Lookup { @Inject - private LookupGenerator lookupGenerator; + Logger log; + + @Inject + LookupGenerator lookupGenerator; @Override diff --git a/reports-rest/src/main/java/org/jboss/da/rest/ReportsRestActivator.java b/reports-rest/src/main/java/org/jboss/da/rest/ReportsRestActivator.java index 114868b3d..08dd7304e 100644 --- a/reports-rest/src/main/java/org/jboss/da/rest/ReportsRestActivator.java +++ b/reports-rest/src/main/java/org/jboss/da/rest/ReportsRestActivator.java @@ -1,57 +1,63 @@ package org.jboss.da.rest; -import static org.jboss.da.common.Constants.REST_API_VERSION_REPORTS; - -import java.util.Collections; -import java.util.HashSet; -import java.util.Set; - -import javax.annotation.PostConstruct; -import javax.ws.rs.ApplicationPath; -import javax.ws.rs.core.Application; -import javax.ws.rs.core.Context; -import javax.servlet.ServletConfig; - -import io.swagger.v3.jaxrs2.integration.JaxrsOpenApiContextBuilder; -import io.swagger.v3.jaxrs2.integration.resources.OpenApiResource; -import io.swagger.v3.oas.integration.OpenApiConfigurationException; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.ws.rs.ApplicationPath; +import jakarta.ws.rs.core.Application; +import org.eclipse.microprofile.openapi.annotations.OpenAPIDefinition; +import org.eclipse.microprofile.openapi.annotations.info.Info; +import org.eclipse.microprofile.openapi.annotations.info.License; +import org.eclipse.microprofile.openapi.annotations.servers.Server; +import org.eclipse.microprofile.openapi.annotations.tags.Tag; import org.jboss.da.rest.exceptions.AllExceptionsMapper; import org.jboss.da.rest.filter.MDCLoggingFilter; - import org.jboss.da.rest.listings.BlackListImpl; import org.jboss.da.rest.reports.Reports; +import java.util.HashSet; +import java.util.Set; + +import static org.jboss.da.common.Constants.DA_VERSION; +import static org.jboss.da.common.Constants.REST_API_VERSION_REPORTS; + /** * * @author Jozef Mrazek <jmrazek@redhat.com> * */ @ApplicationPath("/rest/v-" + REST_API_VERSION_REPORTS) +@ApplicationScoped +@OpenAPIDefinition( + info = @Info( + title = "Dependency Analyzer", + license = @License(name = "Apache 2.0", url = "https://www.apache.org/licenses/LICENSE-2.0.html"), + version = DA_VERSION), + servers = { @Server(url = "/da", description = "Dependency Analyzer") }, + tags = { + @Tag(name = "lookup", description = "Lookup of artifact versions."), + @Tag(name = "blocklist", description = "Listings of blocklisted artifacts"), + @Tag(name = "reports", description = "Get report of dependencies of projects"), + @Tag(name = "deprecated", description = "Deprecated endpoints.") }) public class ReportsRestActivator extends Application { - @Context - private ServletConfig servletConfig; + // @Context + // private ServletConfig servletConfig; - @PostConstruct - public void init() { - configureSwagger(); - } + // @PostConstruct + // public void init() { + // configureSwagger(); + // } - private void configureSwagger() { - try { - new JaxrsOpenApiContextBuilder().servletConfig(servletConfig) - .application(this) - .resourcePackages(Collections.singleton("org.jboss.da.rest")) - .buildContext(true); - } catch (OpenApiConfigurationException ex) { - throw new IllegalArgumentException("Failed to setup OpenAPI configuration", ex); - } - } + /* + * private void configureSwagger() { try { var builder = new JaxrsOpenApiContextBuilder().application(this) + * .resourcePackages(Collections.singleton("org.jboss.da.rest")); if (servletConfig != null) { + * builder.servletConfig(servletConfig); } builder.buildContext(true); } catch (OpenApiConfigurationException ex) { + * throw new IllegalArgumentException("Failed to setup OpenAPI configuration", ex); } } + */ @Override public Set> getClasses() { Set> resources = new HashSet<>(); - addSwaggerResources(resources); + // addSwaggerResources(resources); addProjectResources(resources); addMetricsResources(resources); addExceptionMappers(resources); @@ -62,11 +68,9 @@ public Set> getClasses() { /** * Swagger classes required to generate the API JSON generation * - * @param resources + * @param resources public void addSwaggerResources(Set> resources) { resources.add(OpenApiResource.class); + * } */ - public void addSwaggerResources(Set> resources) { - resources.add(OpenApiResource.class); - } /** * Add all JAX-RS classes here to get activated! diff --git a/reports-rest/src/main/java/org/jboss/da/rest/Root.java b/reports-rest/src/main/java/org/jboss/da/rest/Root.java index 429980869..644e4b09d 100644 --- a/reports-rest/src/main/java/org/jboss/da/rest/Root.java +++ b/reports-rest/src/main/java/org/jboss/da/rest/Root.java @@ -1,9 +1,9 @@ package org.jboss.da.rest; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; import static org.jboss.da.common.Constants.REST_API_VERSION_BC; import static org.jboss.da.common.Constants.REST_API_VERSION_REPORTS; diff --git a/reports-rest/src/main/java/org/jboss/da/rest/SwaggerConfiguration.java b/reports-rest/src/main/java/org/jboss/da/rest/SwaggerConfiguration.java index 47a60789f..005d8b9e8 100644 --- a/reports-rest/src/main/java/org/jboss/da/rest/SwaggerConfiguration.java +++ b/reports-rest/src/main/java/org/jboss/da/rest/SwaggerConfiguration.java @@ -1,24 +1,15 @@ package org.jboss.da.rest; -import io.swagger.v3.oas.annotations.OpenAPIDefinition; -import io.swagger.v3.oas.annotations.info.Info; -import io.swagger.v3.oas.annotations.info.License; -import io.swagger.v3.oas.annotations.servers.Server; -import io.swagger.v3.oas.annotations.tags.Tag; - /** * @author Honza Brázdil <jbrazdil@redhat.com> - */ -@OpenAPIDefinition( - info = @Info( - title = "Dependency Analyzer", - license = @License(name = "Apache 2.0", url = "http://www.apache.org/licenses/LICENSE-2.0.html")), - servers = { @Server(url = "/da", description = "Dependency Analyzer") }, - tags = { - @Tag(name = "lookup", description = "Lookup of artifact versions."), - @Tag(name = "blocklist", description = "Listings of blocklisted artifacts"), - @Tag(name = "reports", description = "Get report of dependencies of projects"), - @Tag(name = "deprecated", description = "Deprecated endpoints.") }) -public interface SwaggerConfiguration { - -} + * + * @OpenAPIDefinition( info = @Info( title = "Dependency Analyzer", license = @License(name = "Apache 2.0", url + * = "https://www.apache.org/licenses/LICENSE-2.0.html"), version = DA_VERSION), servers = { @Server(url = + * "/da", description = "Dependency Analyzer") }, tags = { + * @Tag(name = "lookup", description = "Lookup of artifact versions."), + * @Tag(name = "blocklist", description = "Listings of blocklisted artifacts"), + * @Tag(name = "reports", description = "Get report of dependencies of projects"), + * @Tag(name = "deprecated", description = "Deprecated endpoints.") }) public interface SwaggerConfiguration { + * + * } + */ \ No newline at end of file diff --git a/reports-rest/src/main/java/org/jboss/da/rest/VersionEndpointImpl.java b/reports-rest/src/main/java/org/jboss/da/rest/VersionEndpointImpl.java index 5d3adae14..89754acc8 100644 --- a/reports-rest/src/main/java/org/jboss/da/rest/VersionEndpointImpl.java +++ b/reports-rest/src/main/java/org/jboss/da/rest/VersionEndpointImpl.java @@ -4,7 +4,8 @@ import org.jboss.da.rest.api.VersionEndpoint; import org.jboss.pnc.api.dto.ComponentVersion; -import javax.enterprise.context.ApplicationScoped; +import jakarta.enterprise.context.ApplicationScoped; + import java.time.ZonedDateTime; @ApplicationScoped diff --git a/reports-rest/src/main/java/org/jboss/da/rest/api/BlackList.java b/reports-rest/src/main/java/org/jboss/da/rest/api/BlackList.java index f3ac9e5e5..688ed9539 100644 --- a/reports-rest/src/main/java/org/jboss/da/rest/api/BlackList.java +++ b/reports-rest/src/main/java/org/jboss/da/rest/api/BlackList.java @@ -1,26 +1,26 @@ package org.jboss.da.rest.api; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.media.ArraySchema; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.tags.Tag; +import org.eclipse.microprofile.openapi.annotations.Operation; +import org.eclipse.microprofile.openapi.annotations.media.Content; +import org.eclipse.microprofile.openapi.annotations.media.Schema; +import org.eclipse.microprofile.openapi.annotations.enums.SchemaType; +import org.eclipse.microprofile.openapi.annotations.parameters.Parameter; +import org.eclipse.microprofile.openapi.annotations.responses.APIResponse; +import org.eclipse.microprofile.openapi.annotations.tags.Tag; import org.jboss.da.listings.model.rest.ContainsResponse; import org.jboss.da.listings.model.rest.RestArtifact; import org.jboss.da.listings.model.rest.SuccessResponse; import org.jboss.da.model.rest.ErrorMessage; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.DELETE; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.QueryParam; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; import java.util.Collection; @@ -39,20 +39,20 @@ public interface BlackList { @Consumes(value = MediaType.APPLICATION_JSON) @Produces(value = MediaType.APPLICATION_JSON) @Operation(summary = "Add an artifact to the blocklist") - @ApiResponse(content = @Content(schema = @Schema(implementation = SuccessResponse.class))) + @APIResponse(content = @Content(schema = @Schema(implementation = SuccessResponse.class))) Response addBlackArtifact(@Parameter(description = GAV_JSON) RestArtifact artifact); @GET @Produces(value = MediaType.APPLICATION_JSON) @Operation(summary = "Get all artifacts in the blocklist") - @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = RestArtifact.class)))) + @APIResponse(content = @Content(schema = @Schema(type = SchemaType.ARRAY, implementation = RestArtifact.class))) Collection getAllBlackArtifacts(); @GET @Path(value = "/ga") @Produces(value = MediaType.APPLICATION_JSON) @Operation(summary = "Get artifacts in the blocklist with given groupid and artifactid") - @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = RestArtifact.class)))) + @APIResponse(content = @Content(schema = @Schema(type = SchemaType.ARRAY, implementation = RestArtifact.class))) Collection getBlackArtifacts( @QueryParam(value = "groupid") String groupId, @QueryParam(value = "artifactid") String artifactId); @@ -61,12 +61,12 @@ Collection getBlackArtifacts( @Path(value = "/gav") @Produces(value = MediaType.APPLICATION_JSON) @Operation(summary = "Check if an artifact is in the blocklist") - @ApiResponse(content = @Content(schema = @Schema(implementation = ContainsResponse.class))) - @ApiResponse( + @APIResponse(content = @Content(schema = @Schema(implementation = ContainsResponse.class))) + @APIResponse( responseCode = "404", description = "Artifact is not in the blocklist", content = @Content(schema = @Schema(implementation = ContainsResponse.class))) - @ApiResponse( + @APIResponse( responseCode = "400", description = "All parameters are required", content = @Content(schema = @Schema(implementation = ErrorMessage.class))) @@ -80,7 +80,7 @@ Response isBlackArtifactPresent( @Consumes(value = MediaType.APPLICATION_JSON) @Produces(value = MediaType.APPLICATION_JSON) @Operation(summary = "Remove an artifact from the blocklist") - @ApiResponse(content = @Content(schema = @Schema(implementation = SuccessResponse.class))) + @APIResponse(content = @Content(schema = @Schema(implementation = SuccessResponse.class))) SuccessResponse removeBlackArtifact(@Parameter(description = GAV_JSON) RestArtifact artifact); } diff --git a/reports-rest/src/main/java/org/jboss/da/rest/api/Lookup.java b/reports-rest/src/main/java/org/jboss/da/rest/api/Lookup.java index d917393bb..5dc0e5c57 100644 --- a/reports-rest/src/main/java/org/jboss/da/rest/api/Lookup.java +++ b/reports-rest/src/main/java/org/jboss/da/rest/api/Lookup.java @@ -1,19 +1,19 @@ package org.jboss.da.rest.api; import java.util.Set; -import javax.validation.Valid; -import javax.ws.rs.Consumes; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; +import jakarta.validation.Valid; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.ArraySchema; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.tags.Tag; +import org.eclipse.microprofile.openapi.annotations.Operation; +import org.eclipse.microprofile.openapi.annotations.media.Content; +import org.eclipse.microprofile.openapi.annotations.media.Schema; +import org.eclipse.microprofile.openapi.annotations.enums.SchemaType; +import org.eclipse.microprofile.openapi.annotations.responses.APIResponse; +import org.eclipse.microprofile.openapi.annotations.tags.Tag; import org.jboss.da.common.CommunicationException; import org.jboss.da.lookup.model.MavenLatestRequest; import org.jboss.da.lookup.model.MavenLatestResult; @@ -39,13 +39,15 @@ public interface Lookup { @POST @Path(value = "/maven") @Operation(summary = "Finds best matching versions for given Maven artifact coordinates (GAV).") - @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = MavenLookupResult.class)))) + @APIResponse( + content = @Content(schema = @Schema(type = SchemaType.ARRAY, implementation = MavenLookupResult.class))) Set lookupMaven(@Valid MavenLookupRequest request) throws CommunicationException; @POST @Path(value = "/maven/versions") @Operation(summary = "Lookup and filter available versions for the given Maven artifact coordinates (GAV).") - @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = MavenLookupResult.class)))) + @APIResponse( + content = @Content(schema = @Schema(type = SchemaType.ARRAY, implementation = MavenLookupResult.class))) Set versionsMaven(@Valid MavenVersionsRequest request) throws CommunicationException; @POST @@ -53,19 +55,21 @@ public interface Lookup { @Operation( summary = "Finds latest matching versions for given Maven artifact coordinates (GAV), including bad versions.", description = "This endpoint is used for version increment so it will search all possible places and qualities of artifacts, including deleted and blocklisted artifacts.") - @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = MavenLatestResult.class)))) + @APIResponse( + content = @Content(schema = @Schema(type = SchemaType.ARRAY, implementation = MavenLatestResult.class))) Set lookupMaven(@Valid MavenLatestRequest request) throws CommunicationException; @POST @Path(value = "/npm") @Operation(summary = "Finds best matching versions for given NPM artifact coordinates (name, version).") - @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = NPMLookupResult.class)))) + @APIResponse(content = @Content(schema = @Schema(type = SchemaType.ARRAY, implementation = NPMLookupResult.class))) Set lookupNPM(@Valid NPMLookupRequest request) throws CommunicationException; @POST @Path(value = "/npm/versions") @Operation(summary = "Lookup and filter available versions for the given NPM artifact coordinates (name, version).") - @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = NPMVersionsResult.class)))) + @APIResponse( + content = @Content(schema = @Schema(type = SchemaType.ARRAY, implementation = NPMVersionsResult.class))) Set versionsNPM(@Valid NPMVersionsRequest request) throws CommunicationException; } diff --git a/reports-rest/src/main/java/org/jboss/da/rest/api/VersionEndpoint.java b/reports-rest/src/main/java/org/jboss/da/rest/api/VersionEndpoint.java index 1dee6578c..a7dff0217 100644 --- a/reports-rest/src/main/java/org/jboss/da/rest/api/VersionEndpoint.java +++ b/reports-rest/src/main/java/org/jboss/da/rest/api/VersionEndpoint.java @@ -1,16 +1,16 @@ package org.jboss.da.rest.api; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.tags.Tag; +import org.eclipse.microprofile.openapi.annotations.Operation; +import org.eclipse.microprofile.openapi.annotations.media.Content; +import org.eclipse.microprofile.openapi.annotations.media.Schema; +import org.eclipse.microprofile.openapi.annotations.responses.APIResponse; +import org.eclipse.microprofile.openapi.annotations.tags.Tag; import org.jboss.pnc.api.dto.ComponentVersion; -import javax.ws.rs.GET; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; +import jakarta.ws.rs.GET; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; @Path("/version") @Tag(name = "version") @@ -23,6 +23,6 @@ public interface VersionEndpoint { @GET @Produces(value = MediaType.APPLICATION_JSON) @Operation(summary = "Get version of Dependency-Analysis") - @ApiResponse(content = @Content(schema = @Schema(implementation = ComponentVersion.class))) - public ComponentVersion getVersion(); + @APIResponse(content = @Content(schema = @Schema(implementation = ComponentVersion.class))) + ComponentVersion getVersion(); } diff --git a/reports-rest/src/main/java/org/jboss/da/rest/exceptions/AllExceptionsMapper.java b/reports-rest/src/main/java/org/jboss/da/rest/exceptions/AllExceptionsMapper.java index 28d6535c4..e7c42a41d 100644 --- a/reports-rest/src/main/java/org/jboss/da/rest/exceptions/AllExceptionsMapper.java +++ b/reports-rest/src/main/java/org/jboss/da/rest/exceptions/AllExceptionsMapper.java @@ -1,6 +1,6 @@ package org.jboss.da.rest.exceptions; -import lombok.extern.slf4j.Slf4j; +import jakarta.inject.Inject; import org.apache.maven.scm.ScmException; import org.jboss.da.common.CommunicationException; @@ -9,9 +9,10 @@ import org.jboss.da.model.rest.ErrorMessage; import org.jboss.da.validation.ValidationException; -import javax.ws.rs.core.Response; -import javax.ws.rs.ext.ExceptionMapper; -import javax.ws.rs.ext.Provider; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.ext.ExceptionMapper; +import jakarta.ws.rs.ext.Provider; +import org.slf4j.Logger; import java.util.NoSuchElementException; @@ -22,10 +23,12 @@ import static org.jboss.da.model.rest.ErrorMessage.ErrorType.SCM_ENDPOINT; import static org.jboss.da.model.rest.ErrorMessage.ErrorType.UNEXPECTED_SERVER_ERR; -@Slf4j @Provider public class AllExceptionsMapper implements ExceptionMapper { + @Inject + Logger log; + @Override public Response toResponse(Exception e) { if (e instanceof ValidationException) { // order of tests is important diff --git a/reports-rest/src/main/java/org/jboss/da/rest/facade/ReportsFacade.java b/reports-rest/src/main/java/org/jboss/da/rest/facade/ReportsFacade.java index da81ca9a5..f2cbeacaf 100644 --- a/reports-rest/src/main/java/org/jboss/da/rest/facade/ReportsFacade.java +++ b/reports-rest/src/main/java/org/jboss/da/rest/facade/ReportsFacade.java @@ -1,5 +1,7 @@ package org.jboss.da.rest.facade; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.transaction.Transactional; import org.apache.maven.scm.ScmException; import org.jboss.da.common.CommunicationException; import org.jboss.da.communication.pom.PomAnalysisException; @@ -25,7 +27,7 @@ import org.jboss.da.validation.Validation; import org.jboss.da.validation.ValidationException; -import javax.inject.Inject; +import jakarta.inject.Inject; import java.util.Iterator; import java.util.List; @@ -33,13 +35,15 @@ import java.util.Optional; import java.util.Set; +@ApplicationScoped +@Transactional public class ReportsFacade { @Inject - private ReportsGenerator reportsGenerator; + ReportsGenerator reportsGenerator; @Inject - private Validation validation; + Validation validation; public Set builtReport(BuiltReportRequest request) throws ScmException, PomAnalysisException, CommunicationException, ValidationException { @@ -54,7 +58,7 @@ public Set builtReport(BuiltReportRequest request) public AlignReport alignReport(AlignReportRequest request) throws ScmException, PomAnalysisException, ValidationException, CommunicationException { - validation.validation(request, "Getting allignment report for project specified in a repository URL failed"); + validation.validation(request, "Getting alignment report for project specified in a repository URL failed"); String pomPath = getPomPath(request.getPomPath()); SCMLocator locator = SCMLocator .generic(request.getScmUrl(), request.getRevision(), pomPath, request.getAdditionalRepos()); @@ -83,7 +87,7 @@ public Report scmReport(SCMReportRequest request) throws ScmException, PomAnalys Optional artifactReport = reportsGenerator.getReportFromSCM(request); - return artifactReport.map(Translate::toReport).orElseThrow(() -> new NoSuchElementException()); + return artifactReport.map(Translate::toReport).orElseThrow(NoSuchElementException::new); } public AdvancedReport advancedScmReport(SCMReportRequest request) @@ -105,7 +109,7 @@ public AdvancedReport advancedScmReport(SCMReportRequest request) Optional advancedArtifactReport = reportsGenerator.getAdvancedReportFromSCM(request); - return advancedArtifactReport.map(Translate::toAdvancedReport).orElseThrow(() -> new NoSuchElementException()); + return advancedArtifactReport.map(Translate::toAdvancedReport).orElseThrow(NoSuchElementException::new); } public List gavsReport(LookupGAVsRequest gavRequest) throws CommunicationException { diff --git a/reports-rest/src/main/java/org/jboss/da/rest/filter/MDCLoggingFilter.java b/reports-rest/src/main/java/org/jboss/da/rest/filter/MDCLoggingFilter.java index 3bffe02cf..0155cd7b4 100644 --- a/reports-rest/src/main/java/org/jboss/da/rest/filter/MDCLoggingFilter.java +++ b/reports-rest/src/main/java/org/jboss/da/rest/filter/MDCLoggingFilter.java @@ -17,51 +17,53 @@ */ package org.jboss.da.rest.filter; -import org.jboss.da.communication.auth.AuthenticatorService; +import io.opentelemetry.api.trace.Span; +import jakarta.ws.rs.container.ContainerRequestContext; +import jakarta.ws.rs.container.ContainerRequestFilter; +import jakarta.ws.rs.container.ContainerResponseContext; +import jakarta.ws.rs.container.ContainerResponseFilter; +import jakarta.ws.rs.core.Request; +import jakarta.ws.rs.core.UriInfo; +import jakarta.ws.rs.ext.Provider; import org.jboss.pnc.api.constants.MDCKeys; import org.jboss.pnc.common.log.MDCUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.slf4j.MDC; -import io.opentelemetry.api.trace.Span; - -import javax.inject.Inject; -import javax.servlet.http.HttpServletRequest; -import javax.ws.rs.container.ContainerRequestContext; -import javax.ws.rs.container.ContainerRequestFilter; -import javax.ws.rs.ext.Provider; -import java.io.IOException; - -/** - * @author Matej Lazar - */ @Provider -public class MDCLoggingFilter implements ContainerRequestFilter { +public class MDCLoggingFilter implements ContainerRequestFilter, ContainerResponseFilter { - private Logger logger = LoggerFactory.getLogger(MDCLoggingFilter.class); + private static final Logger logger = LoggerFactory.getLogger(MDCLoggingFilter.class); + private static final String REQUEST_EXECUTION_START = "request-execution-start"; - @Inject - private AuthenticatorService userService; + @Override + public void filter(ContainerRequestContext requestContext) { - @Inject - private HttpServletRequest sr; + requestContext.setProperty(REQUEST_EXECUTION_START, System.currentTimeMillis()); + MDCUtils.setMDCFromRequestContext(requestContext); + MDCUtils.addMDCFromOtelHeadersWithFallback(requestContext, Span.current().getSpanContext(), false); - @Override - public void filter(ContainerRequestContext containerRequestContext) throws IOException { - MDCUtils.setMDCFromRequestContext(containerRequestContext); - MDCUtils.addMDCFromOtelHeadersWithFallback(containerRequestContext, Span.current().getSpanContext(), true); - addAuditMDC(); + UriInfo uriInfo = requestContext.getUriInfo(); + Request request = requestContext.getRequest(); + logger.info("Requested {} {}.", request.getMethod(), uriInfo.getRequestUri()); } - public void addAuditMDC() { - userService.username().ifPresent(username -> MDC.put(MDCKeys.USER_NAME_KEY, username)); - if (sr != null) { - MDC.put(MDCKeys.SRC_IP_KEY, sr.getRemoteAddr()); - String forwardedFor = sr.getHeader("X-FORWARDED-FOR"); - if (forwardedFor != null) { - MDC.put(MDCKeys.X_FORWARDED_FOR_KEY, forwardedFor); - } + @Override + public void filter(ContainerRequestContext requestContext, ContainerResponseContext responseContext) { + Long startTime = (Long) requestContext.getProperty(REQUEST_EXECUTION_START); + + String took; + if (startTime == null) { + took = "-1"; + } else { + took = Long.toString(System.currentTimeMillis() - startTime); + } + + try (MDC.MDCCloseable ignored = MDC.putCloseable(MDCKeys.REQUEST_TOOK, took); + MDC.MDCCloseable ignored2 = MDC + .putCloseable(MDCKeys.RESPONSE_STATUS, Integer.toString(responseContext.getStatus()));) { + logger.info("Completed {}, took: {}ms.", requestContext.getUriInfo().getPath(), took); } } } diff --git a/reports-rest/src/main/java/org/jboss/da/rest/listings/BlackListImpl.java b/reports-rest/src/main/java/org/jboss/da/rest/listings/BlackListImpl.java index 4a5864c4b..b7c18f909 100644 --- a/reports-rest/src/main/java/org/jboss/da/rest/listings/BlackListImpl.java +++ b/reports-rest/src/main/java/org/jboss/da/rest/listings/BlackListImpl.java @@ -8,8 +8,9 @@ import org.jboss.da.listings.model.rest.SuccessResponse; import org.jboss.da.model.rest.ErrorMessage; -import javax.inject.Inject; -import javax.ws.rs.core.Response; +import jakarta.inject.Inject; +import jakarta.transaction.Transactional; +import jakarta.ws.rs.core.Response; import java.util.ArrayList; import java.util.Collection; @@ -26,20 +27,19 @@ * * @author Honza Brázdil <jbrazdil@redhat.com> */ +@Transactional public class BlackListImpl implements BlackList { @Inject - private RestConvert convert; + RestConvert convert; @Inject - private BlackArtifactService blackService; + BlackArtifactService blackService; @Override @WithSpan() public Collection getAllBlackArtifacts() { - List artifacts = new ArrayList<>(); - artifacts.addAll(convert.toRestArtifacts(blackService.getAll())); - return artifacts; + return new ArrayList<>(convert.toRestArtifacts(blackService.getAll())); } @Override diff --git a/reports-rest/src/main/java/org/jboss/da/rest/listings/RestConvert.java b/reports-rest/src/main/java/org/jboss/da/rest/listings/RestConvert.java index a0758aa94..b227fd311 100644 --- a/reports-rest/src/main/java/org/jboss/da/rest/listings/RestConvert.java +++ b/reports-rest/src/main/java/org/jboss/da/rest/listings/RestConvert.java @@ -2,18 +2,15 @@ import org.jboss.da.listings.api.model.Artifact; import org.jboss.da.listings.model.rest.RestArtifact; -import org.jboss.da.listings.model.rest.RestProduct; -import org.jboss.da.listings.model.rest.RestProductGAV; -import javax.enterprise.context.ApplicationScoped; +import jakarta.enterprise.context.ApplicationScoped; -import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.stream.Collectors; /** - * + * * @author Jozef Mrazek <jmrazek@redhat.com> * */ diff --git a/reports-rest/src/main/java/org/jboss/da/rest/reports/Reports.java b/reports-rest/src/main/java/org/jboss/da/rest/reports/Reports.java index d8fa931db..b6cfafef8 100644 --- a/reports-rest/src/main/java/org/jboss/da/rest/reports/Reports.java +++ b/reports-rest/src/main/java/org/jboss/da/rest/reports/Reports.java @@ -2,14 +2,23 @@ import io.opentelemetry.instrumentation.annotations.SpanAttribute; import io.opentelemetry.instrumentation.annotations.WithSpan; -import io.swagger.v3.oas.annotations.Operation; -import io.swagger.v3.oas.annotations.Parameter; -import io.swagger.v3.oas.annotations.media.ArraySchema; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.media.Schema; -import io.swagger.v3.oas.annotations.responses.ApiResponse; -import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.inject.Inject; +import jakarta.validation.Valid; +import jakarta.ws.rs.Consumes; +import jakarta.ws.rs.POST; +import jakarta.ws.rs.Path; +import jakarta.ws.rs.Produces; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import jakarta.ws.rs.core.Response.Status; import org.apache.maven.scm.ScmException; +import org.eclipse.microprofile.openapi.annotations.Operation; +import org.eclipse.microprofile.openapi.annotations.enums.SchemaType; +import org.eclipse.microprofile.openapi.annotations.media.Content; +import org.eclipse.microprofile.openapi.annotations.media.Schema; +import org.eclipse.microprofile.openapi.annotations.parameters.Parameter; +import org.eclipse.microprofile.openapi.annotations.responses.APIResponse; +import org.eclipse.microprofile.openapi.annotations.tags.Tag; import org.jboss.da.common.CommunicationException; import org.jboss.da.communication.pom.PomAnalysisException; import org.jboss.da.reports.model.request.AlignReportRequest; @@ -29,16 +38,6 @@ import org.jboss.da.validation.ValidationException; import org.slf4j.Logger; -import javax.inject.Inject; -import javax.validation.Valid; -import javax.ws.rs.Consumes; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; - import java.util.List; /** @@ -54,15 +53,15 @@ public class Reports { @Inject - private Logger log; + Logger log; @Inject - private ReportsFacade facade; + ReportsFacade facade; @POST @Path("/scm") @Operation(summary = "Get dependency report for a project specified in a repository URL.") - @ApiResponse(content = @Content(schema = @Schema(implementation = Report.class))) + @APIResponse(content = @Content(schema = @Schema(implementation = Report.class))) @WithSpan() public Response scmGenerator( @SpanAttribute(value = "request") @Parameter(description = "scm information") SCMReportRequest request) @@ -73,7 +72,7 @@ public Response scmGenerator( @POST @Path("/scm-advanced") @Operation(summary = "Get dependency report for a project specified in a repository URL.") - @ApiResponse(content = @Content(schema = @Schema(implementation = AdvancedReport.class))) + @APIResponse(content = @Content(schema = @Schema(implementation = AdvancedReport.class))) @WithSpan() public Response advancedScmGenerator( @SpanAttribute(value = "request") @Parameter(description = "scm information") SCMReportRequest request) @@ -88,8 +87,8 @@ public Response advancedScmGenerator( summary = "Lookup built versions for the list of provided GAVs.", deprecated = true, description = "DEPRECATED: use /lookup/maven endpoint instead.") - @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = LookupReport.class)))) - @ApiResponse(responseCode = "502", description = "Communication with remote repository failed") + @APIResponse(content = @Content(schema = @Schema(type = SchemaType.ARRAY, implementation = LookupReport.class))) + @APIResponse(responseCode = "502", description = "Communication with remote repository failed") @Tag(name = "deprecated") @Valid @WithSpan() @@ -109,8 +108,8 @@ public Response lookupGav( summary = "Lookup built versions for the list of provided NPM artifacts.", deprecated = true, description = "DEPRECATED: use /lookup/npm endpoint instead.") - @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = NPMLookupReport.class)))) - @ApiResponse(responseCode = "502", description = "Communication with remote repository failed") + @APIResponse(content = @Content(schema = @Schema(type = SchemaType.ARRAY, implementation = NPMLookupReport.class))) + @APIResponse(responseCode = "502", description = "Communication with remote repository failed") @Tag(name = "deprecated") @Valid @WithSpan() @@ -127,8 +126,9 @@ public Response lookupNPM( @POST @Path("/versions/npm") @Operation(summary = "Lookup and filter versions for the list of provided NPM artifacts.") - @ApiResponse(content = @Content(array = @ArraySchema(schema = @Schema(implementation = NPMVersionsReport.class)))) - @ApiResponse(responseCode = "502", description = "Communication with remote repository failed") + @APIResponse( + content = @Content(schema = @Schema(type = SchemaType.ARRAY, implementation = NPMVersionsReport.class))) + @APIResponse(responseCode = "502", description = "Communication with remote repository failed") @Valid @WithSpan() public Response versionsNPM( @@ -144,7 +144,7 @@ public Response versionsNPM( @POST @Path("/align") @Operation(summary = "Get alignment report for project specified in a repository URL.") - @ApiResponse(content = @Content(schema = @Schema(implementation = AlignReport.class))) + @APIResponse(content = @Content(schema = @Schema(implementation = AlignReport.class))) @WithSpan() public Response alignReport(@SpanAttribute(value = "request") AlignReportRequest request) throws ScmException, PomAnalysisException, CommunicationException, ValidationException { @@ -156,7 +156,7 @@ public Response alignReport(@SpanAttribute(value = "request") AlignReportRequest @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) @Operation(summary = "Get built artifacts for project specified in a repository URL.") - @ApiResponse(content = @Content(schema = @Schema(implementation = BuiltReport.class))) + @APIResponse(content = @Content(schema = @Schema(implementation = BuiltReport.class))) @WithSpan() public Response builtReport(@SpanAttribute(value = "request") BuiltReportRequest request) throws ScmException, PomAnalysisException, CommunicationException, ValidationException { diff --git a/reports-rest/src/main/java/org/jboss/da/rest/websocket/DefaultWebsocketEndpointHandler.java b/reports-rest/src/main/java/org/jboss/da/rest/websocket/DefaultWebsocketEndpointHandler.java index f8fbe9ba7..ef66e3745 100644 --- a/reports-rest/src/main/java/org/jboss/da/rest/websocket/DefaultWebsocketEndpointHandler.java +++ b/reports-rest/src/main/java/org/jboss/da/rest/websocket/DefaultWebsocketEndpointHandler.java @@ -1,11 +1,12 @@ package org.jboss.da.rest.websocket; -import org.jboss.weld.context.activator.ActivateRequestContext; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.enterprise.context.control.ActivateRequestContext; import org.slf4j.Logger; -import javax.inject.Inject; -import javax.websocket.RemoteEndpoint.Basic; -import javax.websocket.Session; +import jakarta.inject.Inject; +import jakarta.websocket.RemoteEndpoint.Basic; +import jakarta.websocket.Session; import java.io.IOException; @@ -21,13 +22,14 @@ * * @author Honza Brázdil <jbrazdil@redhat.com> */ +@ApplicationScoped public class DefaultWebsocketEndpointHandler implements WebsocketEndpointHandler { @Inject - private Logger log; + Logger log; @Inject - private ObjectMapper mapper; + ObjectMapper mapper; private Methods methods; @@ -108,19 +110,14 @@ private JSONRPC2Request getRequest(Basic remote, String msg) throws IOException try { return JSONRPC2Request.parse(msg); } catch (JSONRPC2ParseException ex) { - JSONRPC2Error error; - switch (ex.getCauseType()) { - case JSONRPC2ParseException.PROTOCOL: - error = JSONRPC2Error.INVALID_REQUEST; - break; - case JSONRPC2ParseException.JSON: - error = JSONRPC2Error.PARSE_ERROR; - break; - default: + JSONRPC2Error error = switch (ex.getCauseType()) { + case JSONRPC2ParseException.PROTOCOL -> JSONRPC2Error.INVALID_REQUEST; + case JSONRPC2ParseException.JSON -> JSONRPC2Error.PARSE_ERROR; + default -> { log.warn("Unknown exception cause type " + ex.getCauseType() + "."); - error = JSONRPC2Error.PARSE_ERROR; - break; - } + yield JSONRPC2Error.PARSE_ERROR; + } + }; error = error.setData(ex.getMessage()); remote.sendText(new JSONRPC2Response(error, null).toString()); log.warn("Failed to parse JSON RPC message", ex); diff --git a/reports-rest/src/main/java/org/jboss/da/rest/websocket/Method.java b/reports-rest/src/main/java/org/jboss/da/rest/websocket/Method.java index f18963308..12b6cd4d1 100644 --- a/reports-rest/src/main/java/org/jboss/da/rest/websocket/Method.java +++ b/reports-rest/src/main/java/org/jboss/da/rest/websocket/Method.java @@ -3,7 +3,7 @@ /** * * @author Honza Brázdil <jbrazdil@redhat.com> - * + * * @param parameter type * @param return type after method execution * @param Json output type (e.g. Map, Set, ..) @@ -11,11 +11,11 @@ public interface Method { - public String getName(); + String getName(); - public Class getParameterClass(); + Class getParameterClass(); - public Class getJsonOutputClass(); + Class getJsonOutputClass(); - public S execute(T params) throws Exception; + S execute(T params) throws Exception; } diff --git a/reports-rest/src/main/java/org/jboss/da/rest/websocket/WebsocketEndpointHandler.java b/reports-rest/src/main/java/org/jboss/da/rest/websocket/WebsocketEndpointHandler.java index 09ff471ae..ab90be13c 100644 --- a/reports-rest/src/main/java/org/jboss/da/rest/websocket/WebsocketEndpointHandler.java +++ b/reports-rest/src/main/java/org/jboss/da/rest/websocket/WebsocketEndpointHandler.java @@ -1,16 +1,16 @@ package org.jboss.da.rest.websocket; -import javax.websocket.Session; +import jakarta.websocket.Session; public interface WebsocketEndpointHandler { - public void onMessage(Session session, String msg); + void onMessage(Session session, String msg); /** * Provides the methods the instance can handle. - * + * * @param methods */ - public void setMethods(Methods methods); + void setMethods(Methods methods); } diff --git a/reports-rest/src/main/java/org/jboss/da/rest/ws/ReportsEndpoint.java b/reports-rest/src/main/java/org/jboss/da/rest/ws/ReportsEndpoint.java index e17a37dbc..c37cedd49 100644 --- a/reports-rest/src/main/java/org/jboss/da/rest/ws/ReportsEndpoint.java +++ b/reports-rest/src/main/java/org/jboss/da/rest/ws/ReportsEndpoint.java @@ -3,28 +3,27 @@ import org.jboss.da.common.logging.AuditLogger; import org.jboss.da.rest.websocket.Methods; import org.jboss.da.rest.websocket.WebsocketEndpointHandler; -import org.slf4j.MDC; -import javax.annotation.PostConstruct; -import javax.inject.Inject; -import javax.websocket.OnClose; -import javax.websocket.OnMessage; -import javax.websocket.OnOpen; -import javax.websocket.Session; -import javax.websocket.server.ServerEndpoint; +import jakarta.annotation.PostConstruct; +import jakarta.inject.Inject; +import jakarta.websocket.OnClose; +import jakarta.websocket.OnMessage; +import jakarta.websocket.OnOpen; +import jakarta.websocket.Session; +import jakarta.websocket.server.ServerEndpoint; @ServerEndpoint("/ws") public class ReportsEndpoint { @Inject @ReportsWebsocketMethods - private Methods methods; + Methods methods; @Inject - private WebsocketEndpointHandler endpointHandler; + WebsocketEndpointHandler endpointHandler; @PostConstruct - private void init() { + void init() { endpointHandler.setMethods(methods); } diff --git a/reports-rest/src/main/java/org/jboss/da/rest/ws/ReportsMethodsImpl.java b/reports-rest/src/main/java/org/jboss/da/rest/ws/ReportsMethodsImpl.java index 4a4ecc7a4..256eba282 100644 --- a/reports-rest/src/main/java/org/jboss/da/rest/ws/ReportsMethodsImpl.java +++ b/reports-rest/src/main/java/org/jboss/da/rest/ws/ReportsMethodsImpl.java @@ -14,8 +14,8 @@ import org.jboss.da.rest.websocket.Method; import org.jboss.da.rest.websocket.Methods; -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -40,40 +40,21 @@ public class ReportsMethodsImpl implements Methods { @Inject public ReportsMethodsImpl(ReportsFacade facade) { - SCM = put( - new DefaultMethod<>( - "reports.scm", - SCMReportRequest.class, - Map.class, - params -> facade.scmReport(params))); + SCM = put(new DefaultMethod<>("reports.scm", SCMReportRequest.class, Map.class, facade::scmReport)); SCM_ADVANCED = put( new DefaultMethod<>( "reports.scmAdvanced", SCMReportRequest.class, Map.class, - params -> facade.advancedScmReport(params))); + facade::advancedScmReport)); - BUILT = put( - new DefaultMethod<>( - "reports.built", - BuiltReportRequest.class, - Set.class, - params -> facade.builtReport(params))); + BUILT = put(new DefaultMethod<>("reports.built", BuiltReportRequest.class, Set.class, facade::builtReport)); - ALIGN = put( - new DefaultMethod<>( - "reports.align", - AlignReportRequest.class, - Map.class, - params -> facade.alignReport(params))); + ALIGN = put(new DefaultMethod<>("reports.align", AlignReportRequest.class, Map.class, facade::alignReport)); LOOKUP_GAV = put( - new DefaultMethod<>( - "reports.lookup.gav", - LookupGAVsRequest.class, - List.class, - params -> facade.gavsReport(params))); + new DefaultMethod<>("reports.lookup.gav", LookupGAVsRequest.class, List.class, facade::gavsReport)); } private DefaultMethod put(DefaultMethod method) { diff --git a/reports-rest/src/main/java/org/jboss/da/rest/ws/ReportsWebsocketMethods.java b/reports-rest/src/main/java/org/jboss/da/rest/ws/ReportsWebsocketMethods.java index febae3ace..41c541532 100644 --- a/reports-rest/src/main/java/org/jboss/da/rest/ws/ReportsWebsocketMethods.java +++ b/reports-rest/src/main/java/org/jboss/da/rest/ws/ReportsWebsocketMethods.java @@ -6,7 +6,7 @@ import static java.lang.annotation.ElementType.TYPE; import static java.lang.annotation.RetentionPolicy.RUNTIME; -import javax.inject.Qualifier; +import jakarta.inject.Qualifier; import java.lang.annotation.Documented; import java.lang.annotation.Retention; diff --git a/reports-rest/src/main/webapp/WEB-INF/beans.xml b/reports-rest/src/main/webapp/WEB-INF/beans.xml deleted file mode 100644 index a695c672f..000000000 --- a/reports-rest/src/main/webapp/WEB-INF/beans.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/reports-rest/src/main/webapp/WEB-INF/jboss-web.xml b/reports-rest/src/main/webapp/WEB-INF/jboss-web.xml deleted file mode 100644 index 90133e5ae..000000000 --- a/reports-rest/src/main/webapp/WEB-INF/jboss-web.xml +++ /dev/null @@ -1,5 +0,0 @@ - - true - \ No newline at end of file diff --git a/reports-rest/src/main/webapp/WEB-INF/oidc.json b/reports-rest/src/main/webapp/WEB-INF/oidc.json deleted file mode 100644 index 3c80b231d..000000000 --- a/reports-rest/src/main/webapp/WEB-INF/oidc.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "client-id" : "${env.OIDC_CLIENT_ID:myclient}", - "provider-url" : "${env.OIDC_PROVIDER_URL:http://localhost:8080/realms/myrealm}", - "public-client" : "true", - "principal-attribute" : "preferred_username", - "ssl-required" : "EXTERNAL" -} \ No newline at end of file diff --git a/reports-rest/src/main/webapp/WEB-INF/web.xml b/reports-rest/src/main/webapp/WEB-INF/web.xml deleted file mode 100644 index d53e4152d..000000000 --- a/reports-rest/src/main/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,95 +0,0 @@ - - - reports-rest - - - BASIC?silent=true,OIDC - - - - - - All Access for users on GET - /rest/* - GET - OPTIONS - - - - - - - Access to reports for all users on POST - /rest/v-${version.reports.rest}/reports/* - POST - - - - - Access to lookups for all users on POST - /rest/v-${version.reports.rest}/lookup/* - POST - - - - - - Access to lookups for all users on POST - /rest/v-${version.reports.rest}/listings/blacklist/gav - POST - DELETE - - - pnc-app-da-user - - - - - - - Authorized users Access - /rest/* - DELETE - PUT - TRACE - POST - - - * - - - - - * - - - pnc-app-da-user - - - - - cross-origin - org.eclipse.jetty.servlets.CrossOriginFilter - - allowedMethods - GET,POST,OPTIONS,HEAD - - - allowedHeaders - X-Requested-With,Content-Type,Accept,Origin,Authorization - - - chainPreflight - false - - - - cross-origin - ${corsUrlPattern} - - - org.wildfly.security.http.oidc.OidcConfigurationServletListener - - diff --git a/source-code-manager/pom.xml b/source-code-manager/pom.xml index 37086741a..d763e0e26 100644 --- a/source-code-manager/pom.xml +++ b/source-code-manager/pom.xml @@ -7,14 +7,9 @@ source-code-manager source-code-manager - ejb + jar - - org.jboss.spec.javax.ejb - jboss-ejb-api_3.2_spec - provided - org.slf4j slf4j-api @@ -33,12 +28,12 @@ - jakarta.enterprise - jakarta.enterprise.cdi-api + io.quarkus + quarkus-quartz - org.jboss.spec.javax.annotation - jboss-annotations-api_1.3_spec + jakarta.enterprise + jakarta.enterprise.cdi-api @@ -52,23 +47,13 @@ commons-io + - - - - org.apache.maven.plugins - maven-ejb-plugin - - - - - org.apache.httpcomponents export meta-inf - - - - - - - + + + io.smallrye + jandex-maven-plugin + + diff --git a/source-code-manager/src/main/java/org/jboss/da/scm/api/SCMType.java b/source-code-manager/src/main/java/org/jboss/da/scm/api/SCMType.java index 0631b4772..606b34c8a 100644 --- a/source-code-manager/src/main/java/org/jboss/da/scm/api/SCMType.java +++ b/source-code-manager/src/main/java/org/jboss/da/scm/api/SCMType.java @@ -9,13 +9,13 @@ public enum SCMType { private final String provider; - private SCMType(String provider) { + SCMType(String provider) { this.provider = provider; } /** * Returns provided url in Maven SCM format. - * + * * @param url * @return */ diff --git a/source-code-manager/src/main/java/org/jboss/da/scm/impl/SCMCache.java b/source-code-manager/src/main/java/org/jboss/da/scm/impl/SCMCache.java index 795a9b983..e49df9eb9 100644 --- a/source-code-manager/src/main/java/org/jboss/da/scm/impl/SCMCache.java +++ b/source-code-manager/src/main/java/org/jboss/da/scm/impl/SCMCache.java @@ -1,31 +1,29 @@ package org.jboss.da.scm.impl; +import jakarta.annotation.PreDestroy; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; import java.io.File; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Optional; - -import javax.annotation.PreDestroy; -import javax.ejb.Schedule; -import javax.inject.Inject; -import javax.inject.Singleton; - -import org.slf4j.Logger; - import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; +import io.quarkus.scheduler.Scheduled; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + /** * * @author Honza Brázdil <jbrazdil@redhat.com> */ -@Singleton +@ApplicationScoped public class SCMCache { - @Inject - Logger log; + private static final Logger log = LoggerFactory.getLogger(SCMCache.class); @Inject ScmFacade scm; @@ -61,13 +59,13 @@ private void checkFutureCache() { cache.put(e.getKey(), value.get(1, TimeUnit.SECONDS)); it.remove(); } catch (InterruptedException | ExecutionException | TimeoutException ex) { - log.error("Error while geting Future object.", ex); + log.error("Error while getting Future object.", ex); } } } } - @Schedule(hour = "*", minute = "*/10") + @Scheduled(every = "10m") public void invalidateCache() { checkFutureCache(); Iterator> it = cache.entrySet().iterator(); @@ -80,7 +78,7 @@ public void invalidateCache() { } @PreDestroy - private void cleanup() { + void cleanup() { Iterator> it = cache.entrySet().iterator(); while (it.hasNext()) { it.next().getValue().delete(); diff --git a/source-code-manager/src/main/java/org/jboss/da/scm/impl/SCMImpl.java b/source-code-manager/src/main/java/org/jboss/da/scm/impl/SCMImpl.java index 101912032..0e4533968 100644 --- a/source-code-manager/src/main/java/org/jboss/da/scm/impl/SCMImpl.java +++ b/source-code-manager/src/main/java/org/jboss/da/scm/impl/SCMImpl.java @@ -1,10 +1,11 @@ package org.jboss.da.scm.impl; +import jakarta.enterprise.context.ApplicationScoped; import org.apache.maven.scm.ScmException; import org.jboss.da.scm.api.SCM; import org.jboss.da.scm.api.SCMType; -import javax.inject.Inject; +import jakarta.inject.Inject; import java.io.File; import java.io.IOException; @@ -14,15 +15,16 @@ import java.util.concurrent.TimeoutException; import org.slf4j.Logger; import org.apache.commons.io.FileUtils; +import org.slf4j.LoggerFactory; /** * * @author Honza Brázdil <jbrazdil@redhat.com> */ +@ApplicationScoped public class SCMImpl implements SCM { - @Inject - Logger log; + private static final Logger log = LoggerFactory.getLogger(SCMImpl.class); @Inject ScmFacade scm; diff --git a/source-code-manager/src/main/java/org/jboss/da/scm/impl/SCMSpecifier.java b/source-code-manager/src/main/java/org/jboss/da/scm/impl/SCMSpecifier.java index 59ed6c83f..f310eb6bb 100644 --- a/source-code-manager/src/main/java/org/jboss/da/scm/impl/SCMSpecifier.java +++ b/source-code-manager/src/main/java/org/jboss/da/scm/impl/SCMSpecifier.java @@ -13,7 +13,7 @@ @RequiredArgsConstructor @EqualsAndHashCode @ToString -class SCMSpecifier { +public class SCMSpecifier { @Getter private final SCMType scmType; diff --git a/source-code-manager/src/main/java/org/jboss/da/scm/impl/ScmFacade.java b/source-code-manager/src/main/java/org/jboss/da/scm/impl/ScmFacade.java index e9d8882dd..bb3ab2199 100644 --- a/source-code-manager/src/main/java/org/jboss/da/scm/impl/ScmFacade.java +++ b/source-code-manager/src/main/java/org/jboss/da/scm/impl/ScmFacade.java @@ -16,8 +16,9 @@ import org.jboss.da.scm.api.SCMType; import org.slf4j.Logger; -import javax.enterprise.context.ApplicationScoped; -import javax.inject.Inject; +import jakarta.enterprise.context.ApplicationScoped; +import jakarta.inject.Inject; +import org.slf4j.LoggerFactory; import java.io.File; import java.io.IOException; @@ -26,13 +27,12 @@ /** * Facade, which simplifies operations with the SCM repositories - * + * */ @ApplicationScoped public class ScmFacade { - @Inject - private Logger logger; + private static final Logger logger = LoggerFactory.getLogger(ScmFacade.class); private final ScmManager scmManager; @@ -47,7 +47,7 @@ public ScmFacade() { /** * Tries to do a shallow clone (clone only the requested revision) of the remote repository to the local directory. * If it is not possible to do that, then it does the full clone. - * + * * @param scmType Type of the repository * @param scmUrl URL to the repository * @param revision Revision of the repository, which should be cloned @@ -69,7 +69,7 @@ public void shallowCloneRepository(SCMType scmType, String scmUrl, String revisi /** * Process full clone of the remote repository to the local directory. - * + * * @param scmType Type of the repository * @param scmUrl URL to the repository * @param revision Revision of the repository, which should be cloned @@ -87,7 +87,7 @@ public void cloneRepository(SCMType scmType, String scmUrl, String revision, Fil /** * Stages selected local files in the SCM repository and pushes them to the remote repository. - * + * * @param scmType Type of the repository * @param scmUrl URL to the repository * @param baseDir Directory of the local repository diff --git a/source-code-manager/src/main/resources/META-INF/beans.xml b/source-code-manager/src/main/resources/META-INF/beans.xml deleted file mode 100644 index a695c672f..000000000 --- a/source-code-manager/src/main/resources/META-INF/beans.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/testsuite/pom.xml b/testsuite/pom.xml index efdd96d16..144298a32 100644 --- a/testsuite/pom.xml +++ b/testsuite/pom.xml @@ -11,109 +11,47 @@ org.jboss.da - communication - ejb - - - org.jboss.da - source-code-manager - ejb - - - org.jboss.da - reports-backend - ejb - - - org.commonjava.atlas - atlas-identities + application - - - junit - junit - test - - org.jboss.resteasy - resteasy-client - test - - - org.jboss.resteasy - resteasy-jaxrs - test - - - org.hibernate - hibernate-core - test - - - com.github.tomakehurst - wiremock-standalone - test - - - jakarta.persistence - jakarta.persistence-api - test + org.projectlombok + lombok + provided - + - javax.xml.bind - jaxb-api + io.quarkus + quarkus-junit5 test - - - com.sun.xml.bind - jaxb-impl + io.quarkiverse.wiremock + quarkus-wiremock-test test - - - org.jboss.arquillian.junit - arquillian-junit-container + io.quarkiverse.wiremock + quarkus-wiremock test - - org.jboss.arquillian.protocol - arquillian-protocol-servlet + io.quarkus + quarkus-test-h2 test - - org.jboss.shrinkwrap.resolver - shrinkwrap-resolver-impl-maven-archive + io.quarkus + quarkus-jdbc-h2 test - org.wildfly.arquillian - wildfly-arquillian-container-managed - test - - - org.jboss.resteasy - resteasy-jackson2-provider - test - - - com.fasterxml.jackson.core - jackson-databind + org.wiremock + wiremock-standalone test - - org.projectlombok - lombok - provided - org.skyscreamer jsonassert @@ -124,25 +62,17 @@ jsonrpc2-base test - - io.undertow - undertow-websockets-jsr - test - - - maven-failsafe-plugin + org.apache.maven.plugins + maven-surefire-plugin - - ${testsuiteContainer} - 9154 - -Djboss.socket.binding.port-offset=100 - -Djboss.management.native.port=9054 - + + **/*TestIT.java + diff --git a/testsuite/src/test/java/org/jboss/da/test/ArquillianDeploymentFactory.java b/testsuite/src/test/java/org/jboss/da/test/ArquillianDeploymentFactory.java deleted file mode 100644 index ddf68e879..000000000 --- a/testsuite/src/test/java/org/jboss/da/test/ArquillianDeploymentFactory.java +++ /dev/null @@ -1,186 +0,0 @@ -package org.jboss.da.test; - -import org.jboss.arquillian.container.test.api.Testable; -import org.jboss.shrinkwrap.api.Archive; -import org.jboss.shrinkwrap.api.Assignable; -import org.jboss.shrinkwrap.api.ShrinkWrap; -import org.jboss.shrinkwrap.api.asset.FileAsset; -import org.jboss.shrinkwrap.api.exporter.ZipExporter; -import org.jboss.shrinkwrap.api.importer.ArchiveImportException; -import org.jboss.shrinkwrap.api.importer.ZipImporter; -import org.jboss.shrinkwrap.api.spec.EnterpriseArchive; -import org.jboss.shrinkwrap.api.spec.JavaArchive; -import org.jboss.shrinkwrap.api.spec.WebArchive; -import org.jboss.shrinkwrap.resolver.api.maven.Maven; - -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.zip.ZipException; -import java.util.zip.ZipFile; - -public class ArquillianDeploymentFactory { - - public enum DepType { - REPORTS - } - - public enum TestSide { - CLIENT, SERVER - } - - public static final String DEPLOYMENT_NAME = "testsuite"; - - private static final String TEST_JAR = "testsuite.jar"; - - private static final String TEST_EAR = DEPLOYMENT_NAME + ".ear"; - - public EnterpriseArchive createDeployment(DepType type, TestSide testSide) { - File earProjectBuildDir = new File(new File(getProjectTopLevelDir(), "application"), "target"); - File earFile = new File(earProjectBuildDir, "dependency-analysis.ear"); - EnterpriseArchive ear = createFromZipFile(EnterpriseArchive.class, earFile, TEST_EAR); - updateEar(ear, type); - switch (testSide) { - case SERVER: - updateEarServer(ear); - } - if (isCreateArchiveCopy()) { - writeArchiveToFile(ear, new File("target", ear.getName())); - } - return ear; - } - - private void updateEarServer(EnterpriseArchive ear) { - File wiremockJar = Maven.resolver() - .loadPomFromFile("pom.xml") - .resolve("com.github.tomakehurst:wiremock-standalone") - .withoutTransitivity() - .asSingleFile(); - ear.addAsLibraries(wiremockJar); - } - - private void updateEar(EnterpriseArchive ear, DepType type) { - updateManifestResource(ear, "persistence.xml"); - updateManifestResource(ear, "application.xml"); - updateManifestResource(ear, "jboss-deployment-structure.xml"); - JavaArchive communicationJar = ear.getAsType(JavaArchive.class, "communication.jar"); - JavaArchive reportsBackendJar = ear.getAsType(JavaArchive.class, "reports-backend.jar"); - WebArchive reportsRestWar; - switch (type) { - case REPORTS: { - reportsRestWar = Testable.archiveToTest(ear.getAsType(WebArchive.class, "reports-rest.war")); - break; - } - default: - throw new IllegalArgumentException("Unknown dependency type " + type); - } - updateArchiveWithReplacements(communicationJar, "communication"); - updateArchiveWithReplacements(reportsBackendJar, "reports-backend"); - updateArchiveWithReplacements(reportsRestWar, "reports-rest"); - ear.addAsModule(createTestsuiteJar()); - } - - private void updateManifestResource(EnterpriseArchive ear, String resource) { - ear.delete("META-INF/" + resource); - ear.addAsManifestResource(new File("src/test/resources/META-INF/" + resource)); - } - - private void updateArchiveWithReplacements(Archive archive, String name) { - try { - Path replacements = Paths.get("src/test/replacements", name).toAbsolutePath(); - Files.find(replacements, Integer.MAX_VALUE, (p, a) -> a.isRegularFile()).forEach(p -> { - String relpath = replacements.relativize(p).toString(); - archive.delete(relpath); - archive.add(new FileAsset(p.toFile()), relpath); - }); - } catch (IOException ex) { - throw new RuntimeException(ex); - } - } - - private JavaArchive createTestsuiteJar() { - JavaArchive testsuiteJar = ShrinkWrap.create(JavaArchive.class, TEST_JAR); - testsuiteJar.addPackages(true, "org.jboss.da.test.server"); - testsuiteJar.addAsManifestResource(new File("src/test/resources/META-INF/beans.xml")); - return testsuiteJar; - } - - private File getProjectTopLevelDir() { - File projectTopLevelDir = new File("").getAbsoluteFile(); - if (!isProjectTopLevelDir(projectTopLevelDir)) { - projectTopLevelDir = projectTopLevelDir.getParentFile(); - if (!isProjectTopLevelDir(projectTopLevelDir)) { - throw new IllegalStateException( - "Can not find project top level directory from " + projectTopLevelDir.getAbsolutePath()); - } - } - return projectTopLevelDir; - } - - private boolean isProjectTopLevelDir(File dir) { - File testModule = dir == null ? null : new File(dir, "testsuite"); - return testModule != null && testModule.exists() && testModule.isDirectory(); - } - - private boolean isCreateArchiveCopy() { - return System.getProperty("createArchiveCopy") != null; - } - - private void writeArchiveToFile(Archive archive, File file) { - archive.as(ZipExporter.class).exportTo(file, true); - } - - // copied from org.jboss.shrinkwrap.api.ArchiveFactory.createFromZipFile(final Class type, final File - // archiveFile) - - // added parameter archiveName - /** - * Creates a new archive of the specified type as imported from the specified {@link File}. The file is expected to - * be encoded as ZIP (ie. JAR/WAR/EAR). The name of the archive will be set to {@link File#getName()}. The archive - * will be be backed by the {@link org.jboss.shrinkwrap.api.Configuration} specific to this - * {@link org.jboss.shrinkwrap.api.ArchiveFactory}. - * - * @param type The type of the archive e.g. {@link org.jboss.shrinkwrap.api.spec.WebArchive} - * @param archiveFile the archiveFile to use - * @param archiveName the name of created archive - * @return An {@link Assignable} view - * @throws IllegalArgumentException If either argument is not supplied, if the specified {@link File} does not - * exist, or is not a valid ZIP file - * @throws org.jboss.shrinkwrap.api.importer.ArchiveImportException If an error occurred during the import process - */ - public T createFromZipFile(final Class type, final File archiveFile, String archiveName) - throws IllegalArgumentException, ArchiveImportException { - // Precondition checks - if (type == null) { - throw new IllegalArgumentException("Type must be specified"); - } - if (archiveFile == null) { - throw new IllegalArgumentException("File must be specified"); - } - if (!archiveFile.exists()) { - throw new IllegalArgumentException("File for import does not exist: " + archiveFile.getAbsolutePath()); - } - if (archiveFile.isDirectory()) { - throw new IllegalArgumentException( - "File for import must not be a directory: " + archiveFile.getAbsolutePath()); - } - - // Construct ZipFile - final ZipFile zipFile; - try { - zipFile = new ZipFile(archiveFile); - } catch (final ZipException ze) { - throw new IllegalArgumentException( - "Does not appear to be a valid ZIP file: " + archiveFile.getAbsolutePath()); - } catch (final IOException ioe) { - throw new RuntimeException( - "I/O Error in importing new archive from ZIP: " + archiveFile.getAbsolutePath(), - ioe); - } - - // Import - return ShrinkWrap.create(type, archiveName).as(ZipImporter.class).importFrom(zipFile).as(type); - - } -} diff --git a/testsuite/src/test/java/org/jboss/da/test/client/AbstractClientApiTest.java b/testsuite/src/test/java/org/jboss/da/test/client/AbstractClientApiTest.java index 8d32ff788..4e67f731d 100644 --- a/testsuite/src/test/java/org/jboss/da/test/client/AbstractClientApiTest.java +++ b/testsuite/src/test/java/org/jboss/da/test/client/AbstractClientApiTest.java @@ -1,31 +1,26 @@ package org.jboss.da.test.client; +import com.github.tomakehurst.wiremock.junit5.WireMockExtension; import org.apache.http.entity.ContentType; -import org.jboss.arquillian.container.test.api.RunAsClient; -import org.jboss.arquillian.junit.Arquillian; import org.json.JSONException; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; import org.skyscreamer.jsonassert.JSONAssert; import org.skyscreamer.jsonassert.JSONCompareMode; -import static org.junit.Assert.*; -import org.junit.Rule; - import java.io.File; import java.nio.file.Path; import java.nio.file.Paths; import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options; -import com.github.tomakehurst.wiremock.junit.WireMockRule; +import static org.junit.jupiter.api.Assertions.fail; -@RunWith(Arquillian.class) -@RunAsClient public abstract class AbstractClientApiTest { - @Rule - public WireMockRule wireMockRule = new WireMockRule( - options().port(8081).usingFilesUnderDirectory("src/test/resources/wiremock")); + @RegisterExtension + public static final WireMockExtension wireMockRule = WireMockExtension.newInstance() + .options(options().port(8081).usingFilesUnderDirectory("src/test/resources/wiremock")) + .build(); protected static final String ENCODING = "utf-8"; @@ -59,14 +54,14 @@ private Path readRestApiExpectedResponseFolder() { protected String readConfigurationValue(String name, String defaultValue) { String value = readConfigurationValue(name); - return value == null || "".equals(value.trim()) ? defaultValue : value; + return value == null || value.trim().isEmpty() ? defaultValue : value; } protected String readConfigurationValue(String name) { return System.getProperty(name); } - // TODO convert to builder pattern appropriatelly + // TODO convert to builder pattern appropriately protected static class ExpectedResponseFilenameBuilder { protected static final String DEFAULT_VARIANT = ""; @@ -120,7 +115,7 @@ private String convertContentType(ContentType contentType) { } - // TODO convert to builder pattern apropriatelly + // TODO convert to builder pattern appropriately protected static class RequestFilenameBuilder { protected static final String DEFAULT_VARIANT = ""; @@ -175,7 +170,7 @@ private String convertContentType(ContentType contentType) { } private String readHostUrl() { - return readConfigurationValue("testsuite.hostUrl", "localhost:8180"); + return readConfigurationValue("testsuite.hostUrl", "localhost:8083"); } protected abstract String readRestApiVersion(); @@ -208,12 +203,12 @@ protected void assertEqualsJson(String expected, String actual) { try { JSONAssert.assertEquals(expected, actual, JSONCompareMode.NON_EXTENSIBLE); } catch (JSONException ex) { - fail("The test wasn't able to compare JSON strings" + ex); + fail("The test wasn't able to compare JSON strings", ex); } } @Test - final public void testJsonEquals() throws JSONException { + final void testJsonEquals() { String s1 = "[{\"groupId\": \"com.google.guava\", \"artifactId\": \"guava\", \"version\": \"13.0.1\"}]"; String s2 = "[{\"groupId\": \"com.google.guava\", \"version\": \"13.0.1\", \"artifactId\": \"guava\"}]"; assertEqualsJson(s1, s2); diff --git a/testsuite/src/test/java/org/jboss/da/test/client/rest/AbstractRestApiTest.java b/testsuite/src/test/java/org/jboss/da/test/client/rest/AbstractRestApiTest.java index 6b7a9139e..904b1f02a 100644 --- a/testsuite/src/test/java/org/jboss/da/test/client/rest/AbstractRestApiTest.java +++ b/testsuite/src/test/java/org/jboss/da/test/client/rest/AbstractRestApiTest.java @@ -1,19 +1,23 @@ package org.jboss.da.test.client.rest; +import io.quarkus.logging.Log; +import jakarta.ws.rs.client.Client; import org.apache.commons.io.FileUtils; import org.jboss.da.test.client.AbstractClientApiTest; -import org.jboss.resteasy.client.jaxrs.BasicAuthentication; -import javax.ws.rs.client.ClientBuilder; -import javax.ws.rs.client.ClientRequestFilter; -import javax.ws.rs.client.Entity; -import javax.ws.rs.client.Invocation; -import javax.ws.rs.client.WebTarget; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; +import jakarta.ws.rs.client.ClientBuilder; +import jakarta.ws.rs.client.ClientRequestFilter; +import jakarta.ws.rs.client.Entity; +import jakarta.ws.rs.client.Invocation; +import jakarta.ws.rs.client.WebTarget; +import jakarta.ws.rs.core.MediaType; +import jakarta.ws.rs.core.Response; +import org.junit.jupiter.api.AutoClose; +import org.junit.jupiter.api.BeforeEach; import java.io.File; import java.io.IOException; +import java.nio.charset.Charset; /** * @@ -27,14 +31,22 @@ public abstract class AbstractRestApiTest extends AbstractClientApiTest { private final ClientBuilder builder; + @AutoClose + private Client client; + public AbstractRestApiTest() { this.restApiVersion = readRestApiVersion(); this.restApiURL = readRestApiUrl(); String userId = "user"; String password = "pass.1234"; - ClientRequestFilter crf = new BasicAuthentication(userId, password); - builder = ClientBuilder.newBuilder().register(crf); + ClientRequestFilter crf = null;// new BasicAuthentication(userId, password); + builder = ClientBuilder.newBuilder();// .register(crf); + } + + @BeforeEach + public void setup() { + client = builder.build(); } private String readRestApiUrl() { @@ -45,12 +57,11 @@ private String readRestApiUrl() { } protected WebTarget createWebTarget(String relativePath) { - return builder.build().target(restApiURL + relativePath); + return client.target(restApiURL + relativePath); } protected Invocation.Builder createClientRequest(String relativePath) { - WebTarget target = builder.build().target(restApiURL + relativePath); - return target.request(MediaType.APPLICATION_JSON_TYPE); + return createWebTarget(relativePath).request(MediaType.APPLICATION_JSON_TYPE); } protected Response getResponseForRequest(String endpoint, String requestFile) throws IOException { @@ -59,12 +70,12 @@ protected Response getResponseForRequest(String endpoint, String requestFile) th return createClientRequest(endpoint).post(Entity.json(entity)); } - protected Response assertResponseForRequest(String endpoint, String requestFile) throws IOException, Exception { + protected Response assertResponseForRequest(String endpoint, String requestFile) throws Exception { Response response = getResponseForRequest(endpoint, requestFile); File expectedResponseFile = getJsonResponseFile(endpoint, requestFile); final String actual = response.readEntity(String.class).trim(); - System.out.println("Actual: " + actual); - assertEqualsJson(FileUtils.readFileToString(expectedResponseFile).trim(), actual); + Log.info("Actual: " + actual); + assertEqualsJson(FileUtils.readFileToString(expectedResponseFile, Charset.defaultCharset()).trim(), actual); return response; } } diff --git a/testsuite/src/test/java/org/jboss/da/test/client/rest/AbstractRestReportsTest.java b/testsuite/src/test/java/org/jboss/da/test/client/rest/AbstractRestReportsTest.java index 22ae71baa..ee57a141a 100644 --- a/testsuite/src/test/java/org/jboss/da/test/client/rest/AbstractRestReportsTest.java +++ b/testsuite/src/test/java/org/jboss/da/test/client/rest/AbstractRestReportsTest.java @@ -2,24 +2,13 @@ import static org.jboss.da.common.Constants.REST_API_VERSION_REPORTS; -import org.jboss.arquillian.container.test.api.Deployment; -import org.jboss.da.test.ArquillianDeploymentFactory; -import org.jboss.da.test.ArquillianDeploymentFactory.DepType; -import org.jboss.da.test.ArquillianDeploymentFactory.TestSide; -import org.jboss.shrinkwrap.api.spec.EnterpriseArchive; - public abstract class AbstractRestReportsTest extends AbstractRestApiTest { private static final String DEFAULT_REST_API_VERSION = "v-" + REST_API_VERSION_REPORTS; - @Deployment - public static EnterpriseArchive createDeployment() { - return new ArquillianDeploymentFactory().createDeployment(DepType.REPORTS, TestSide.CLIENT); - } - @Override protected String getContextRoot() { - return ArquillianDeploymentFactory.DEPLOYMENT_NAME; + return ""; } @Override diff --git a/testsuite/src/test/java/org/jboss/da/test/client/rest/RestApiIndexTestIT.java b/testsuite/src/test/java/org/jboss/da/test/client/rest/RestApiIndexTestIT.java index 6c19965ae..4a823d05b 100644 --- a/testsuite/src/test/java/org/jboss/da/test/client/rest/RestApiIndexTestIT.java +++ b/testsuite/src/test/java/org/jboss/da/test/client/rest/RestApiIndexTestIT.java @@ -1,19 +1,23 @@ package org.jboss.da.test.client.rest; -import org.junit.Test; +import io.quarkus.test.common.QuarkusTestResource; +import io.quarkus.test.h2.H2DatabaseTestResource; +import io.quarkus.test.junit.QuarkusTest; +import jakarta.ws.rs.core.Response; +import org.junit.jupiter.api.Test; import static org.jboss.da.common.Constants.COMMIT_HASH; import static org.jboss.da.common.Constants.DA_VERSION; import static org.jboss.da.common.Constants.REST_API_VERSION_BC; import static org.jboss.da.common.Constants.REST_API_VERSION_REPORTS; -import static org.junit.Assert.assertEquals; - -import javax.ws.rs.core.Response; +import static org.junit.jupiter.api.Assertions.assertEquals; +@QuarkusTest +@QuarkusTestResource(value = H2DatabaseTestResource.class, restrictToAnnotatedClass = true) public class RestApiIndexTestIT extends AbstractRestReportsTest { @Test - public void testIndexHtml() throws Exception { + public void testIndexHtml() { String path = "/"; Response response = createWebTarget(path).request().get(); diff --git a/testsuite/src/test/java/org/jboss/da/test/client/rest/listings/AbstractRestApiListingTest.java b/testsuite/src/test/java/org/jboss/da/test/client/rest/listings/AbstractRestApiListingTest.java index 142d7f768..68e5b0155 100644 --- a/testsuite/src/test/java/org/jboss/da/test/client/rest/listings/AbstractRestApiListingTest.java +++ b/testsuite/src/test/java/org/jboss/da/test/client/rest/listings/AbstractRestApiListingTest.java @@ -2,19 +2,18 @@ import org.apache.commons.io.FileUtils; import org.jboss.da.test.client.rest.AbstractRestReportsTest; -import org.junit.After; +import org.junit.jupiter.api.AfterEach; import java.io.File; import java.io.IOException; import java.util.List; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; -import javax.ws.rs.client.Entity; -import javax.ws.rs.client.Invocation; -import javax.ws.rs.core.GenericType; -import javax.ws.rs.core.Response; +import jakarta.ws.rs.client.Entity; +import jakarta.ws.rs.core.GenericType; +import jakarta.ws.rs.core.Response; /** * @@ -23,11 +22,11 @@ public abstract class AbstractRestApiListingTest extends AbstractRestReportsTest { protected enum ListEntityType { - BLACK; + BLACK } protected enum OperationType { - POST, DELETE, PUT; + POST, DELETE, PUT } protected static final String PATH_FILES_LISTINGS_GAV = "/listings"; @@ -38,8 +37,8 @@ protected enum OperationType { protected static final String PATH_BLACK_LISTINGS_GA = "/listings/blacklist/ga"; - @After - public void dropTables() throws Exception { + @AfterEach + public void dropTables() { List blacklistedArtifacts = getAllArtifactsFromList(PATH_BLACK_LIST); blacklistedArtifacts.forEach(gav -> removeGavFromList(PATH_BLACK_LISTINGS_GAV, gav)); } @@ -52,20 +51,16 @@ private void removeGavFromList(String listUrl, RestArtifact gav) { } } - private String toRestProductRequest(RestProduct p) { - return "{" + "\"name\":" + "\"" + p.getName() + "\"," + "\"version\":" + "\"" + p.getVersion() + "\"" + "}"; - } - - protected List getAllArtifactsFromList(String listUrl) throws Exception { - return processGetRequest(new GenericType>() { + protected List getAllArtifactsFromList(String listUrl) { + return processGetRequest(new GenericType<>() { }, listUrl); } - private T processGetRequest(GenericType type, String url) throws Exception { + private T processGetRequest(GenericType type, String url) { Response response = createClientRequest(url).get(); if (response.getStatus() != 200) { - System.out.println("Respose: " + response.readEntity(String.class)); + System.out.println("Response: " + response.readEntity(String.class)); fail("Failed to get entity via REST API. Status " + response.getStatusInfo()); } @@ -77,44 +72,18 @@ protected String readJsonFile(String file) throws IOException { return FileUtils.readFileToString(jsonRequestFile, ENCODING); } - protected Response manipulateEntityFile( - ListEntityType entity, - OperationType operation, - String file, - Boolean checkSuccess) throws Exception { - return manipulateEntityString(entity, operation, readJsonFile(file), checkSuccess); + protected Response manipulateEntityFile(OperationType operation, String file) throws Exception { + return manipulateEntityString(operation, readJsonFile(file)); } - protected Response manipulateEntityString( - ListEntityType entity, - OperationType operation, - String requestString, - Boolean checkSuccess) throws Exception { - String path = null; - switch (entity) { - case BLACK: - path = PATH_BLACK_LISTINGS_GAV; - break; - } - - Invocation.Builder request = createClientRequest(path); - Response response; - switch (operation) { - case POST: - response = request.post(Entity.json(requestString)); - break; - - case DELETE: - response = request.method("DELETE", Entity.json(requestString)); - break; - case PUT: - response = request.put(Entity.json(requestString)); - break; - default: - throw new UnsupportedOperationException("Unknonw operation " + operation); - } - if (checkSuccess) - assertEquals(200, response.getStatus()); + protected Response manipulateEntityString(OperationType operation, String requestString) { + String path = PATH_BLACK_LISTINGS_GAV; + Response response = switch (operation) { + case POST -> createClientRequest(path).post(Entity.json(requestString)); + case DELETE -> createClientRequest(path).method("DELETE", Entity.json(requestString)); + case PUT -> createClientRequest(path).put(Entity.json(requestString)); + }; + assertEquals(200, response.getStatus()); return response; } diff --git a/testsuite/src/test/java/org/jboss/da/test/client/rest/listings/BugReporoducerRemoteTestIT.java b/testsuite/src/test/java/org/jboss/da/test/client/rest/listings/BugReporoducerRemoteTestIT.java deleted file mode 100644 index 8ad4e4829..000000000 --- a/testsuite/src/test/java/org/jboss/da/test/client/rest/listings/BugReporoducerRemoteTestIT.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * To change this license header, choose License Headers in Project Properties. - * To change this template file, choose Tools | Templates - * and open the template in the editor. - */ -package org.jboss.da.test.client.rest.listings; - -import static org.junit.Assert.assertEquals; - -import org.junit.Ignore; -import org.junit.Test; - -import javax.ws.rs.core.Response; - -/** - * - * @author Honza Brázdil <jbrazdil@redhat.com> - */ -@Ignore -public class BugReporoducerRemoteTestIT extends AbstractRestApiListingTest { - - private static final String PATH_LOOKUP_GAVS = "/reports/lookup/gavs"; - private static final String PATH_LOOKUP_MAVEN = "/lookup/maven"; - - @Test - public void testNCL5035() throws Exception { - manipulateEntityFile(ListEntityType.BLACK, OperationType.POST, "gavParent", true); - - Response response = assertResponseForRequest(PATH_LOOKUP_GAVS, "ncl5035"); - // File jsonRequestFile = getJsonRequestFile(PATH_LOOKUP_GAVS, "parent"); - // Response response = createClientRequest(PATH_LOOKUP_GAVS).post( - // Entity.json(FileUtils.readFileToString(jsonRequestFile, ENCODING))); - // System.out.println("Response: " + response.readEntity(String.class)); - - assertEquals(200, response.getStatus()); - } - - @Test - public void testNCL5035OnLookupEndpoint() throws Exception { - manipulateEntityFile(ListEntityType.BLACK, OperationType.POST, "gavParent", true); - - Response response = assertResponseForRequest(PATH_LOOKUP_MAVEN, "ncl5035"); - - assertEquals(200, response.getStatus()); - } -} diff --git a/testsuite/src/test/java/org/jboss/da/test/client/rest/listings/BugReproducerRemoteTestIT.java b/testsuite/src/test/java/org/jboss/da/test/client/rest/listings/BugReproducerRemoteTestIT.java new file mode 100644 index 000000000..fd5224b0c --- /dev/null +++ b/testsuite/src/test/java/org/jboss/da/test/client/rest/listings/BugReproducerRemoteTestIT.java @@ -0,0 +1,42 @@ +/* + * To change this license header, choose License Headers in Project Properties. + * To change this template file, choose Tools | Templates + * and open the template in the editor. + */ +package org.jboss.da.test.client.rest.listings; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; + +import jakarta.ws.rs.core.Response; + +/** + * + * @author Honza Brázdil <jbrazdil@redhat.com> + */ +@Disabled +public class BugReproducerRemoteTestIT extends AbstractRestApiListingTest { + + private static final String PATH_LOOKUP_GAVS = "/reports/lookup/gavs"; + private static final String PATH_LOOKUP_MAVEN = "/lookup/maven"; + + @Test + public void testNCL5035() throws Exception { + manipulateEntityFile(OperationType.POST, "gavParent").close(); + + try (Response response = assertResponseForRequest(PATH_LOOKUP_GAVS, "ncl5035")) { + assertEquals(200, response.getStatus()); + } + } + + @Test + public void testNCL5035OnLookupEndpoint() throws Exception { + manipulateEntityFile(OperationType.POST, "gavParent").close(); + + try (Response response = assertResponseForRequest(PATH_LOOKUP_MAVEN, "ncl5035")) { + assertEquals(200, response.getStatus()); + } + } +} diff --git a/testsuite/src/test/java/org/jboss/da/test/client/rest/listings/RequestGenerator.java b/testsuite/src/test/java/org/jboss/da/test/client/rest/listings/RequestGenerator.java index 046c14f5a..29ddd83fe 100644 --- a/testsuite/src/test/java/org/jboss/da/test/client/rest/listings/RequestGenerator.java +++ b/testsuite/src/test/java/org/jboss/da/test/client/rest/listings/RequestGenerator.java @@ -1,6 +1,6 @@ package org.jboss.da.test.client.rest.listings; -import javax.enterprise.context.ApplicationScoped; +import jakarta.enterprise.context.ApplicationScoped; @ApplicationScoped public class RequestGenerator { diff --git a/testsuite/src/test/java/org/jboss/da/test/client/rest/listings/RestApiListingsTestIT.java b/testsuite/src/test/java/org/jboss/da/test/client/rest/listings/RestApiListingsTestIT.java index 949e1c3c0..ebb3f5e20 100644 --- a/testsuite/src/test/java/org/jboss/da/test/client/rest/listings/RestApiListingsTestIT.java +++ b/testsuite/src/test/java/org/jboss/da/test/client/rest/listings/RestApiListingsTestIT.java @@ -1,25 +1,29 @@ package org.jboss.da.test.client.rest.listings; +import io.quarkus.test.common.QuarkusTestResource; +import io.quarkus.test.h2.H2DatabaseTestResource; +import io.quarkus.test.junit.QuarkusTest; +import jakarta.ws.rs.core.Response; import org.json.JSONException; -import org.junit.Test; +import org.junit.jupiter.api.Test; import org.skyscreamer.jsonassert.JSONAssert; import org.skyscreamer.jsonassert.JSONCompareMode; -import javax.ws.rs.core.Response; import java.io.File; import java.io.IOException; +import java.nio.charset.Charset; import static org.apache.commons.io.FileUtils.readFileToString; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.fail; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; +@QuarkusTest +@QuarkusTestResource(value = H2DatabaseTestResource.class, restrictToAnnotatedClass = true) public class RestApiListingsTestIT extends AbstractRestApiListingTest { - private final RequestGenerator generator = new RequestGenerator(); - @Test public void testAddBlackArtifact() throws Exception { - Response response = manipulateEntityFile(ListEntityType.BLACK, OperationType.POST, "gav", true); + Response response = manipulateEntityFile(OperationType.POST, "gav"); checkExpectedResponse(response, "success"); } @@ -27,10 +31,10 @@ public void testAddBlackArtifact() throws Exception { @Test public void testDeleteBlackArtifact() throws Exception { // add artifact - manipulateEntityFile(ListEntityType.BLACK, OperationType.POST, "gav", true); + manipulateEntityFile(OperationType.POST, "gav").close(); // delete artifact - Response response = manipulateEntityFile(ListEntityType.BLACK, OperationType.DELETE, "gav", true); + Response response = manipulateEntityFile(OperationType.DELETE, "gav"); checkExpectedResponse(response, "success"); } @@ -40,7 +44,7 @@ public void shouldBlackListSpecificRedhatBuild() throws Exception { String g = "org.jboss.da"; String a = "dependency-analyzer"; String v = "0.3.0"; - manipulateEntityFile(ListEntityType.BLACK, OperationType.POST, "gavRh", true); + manipulateEntityFile(OperationType.POST, "gavRh").close(); Response response = getBlacklistedGAV(g, a, v); assertEquals(404, response.getStatus()); @@ -57,7 +61,7 @@ public void shouldBlacklistWholeVersions() throws Exception { // String g = "org.jboss.da"; String a = "dependency-analyzer"; String v = "0.3.0"; - manipulateEntityFile(ListEntityType.BLACK, OperationType.POST, "gav", true); + manipulateEntityFile(OperationType.POST, "gav").close(); Response response = getBlacklistedGAV(g, a, v + "-redhat-1"); assertEquals(200, response.getStatus()); @@ -75,8 +79,8 @@ public void shouldUnBlacklistWithoutAndWithRHSuffix() throws Exception { String g = "org.jboss.da"; String a = "dependency-analyzer"; String v = "0.3.0"; - manipulateEntityFile(ListEntityType.BLACK, OperationType.POST, "gavRh", true); - manipulateEntityFile(ListEntityType.BLACK, OperationType.POST, "gav", true); + manipulateEntityFile(OperationType.POST, "gavRh").close(); + manipulateEntityFile(OperationType.POST, "gav").close(); Response response = getBlacklistedGAV(g, a, v); checkExpectedResponse(response, "gavNonRhResponse"); response = getBlacklistedGAV(g, a, v + "-redhat-1"); @@ -84,7 +88,7 @@ public void shouldUnBlacklistWithoutAndWithRHSuffix() throws Exception { response = getBlacklistedGAV(g, a, v + "-redhat-2"); checkExpectedResponse(response, "gavNonRhResponse"); - manipulateEntityFile(ListEntityType.BLACK, OperationType.DELETE, "gav", true); + manipulateEntityFile(OperationType.DELETE, "gav").close(); response = getBlacklistedGAV(g, a, v); assertEquals(404, response.getStatus()); response = getBlacklistedGAV(g, a, v + ".redhat-2"); @@ -93,7 +97,7 @@ public void shouldUnBlacklistWithoutAndWithRHSuffix() throws Exception { assertEquals(200, response.getStatus()); checkExpectedResponse(response, "gavRhNonOSGiResponse"); - manipulateEntityFile(ListEntityType.BLACK, OperationType.DELETE, "gavRh", true); + manipulateEntityFile(OperationType.DELETE, "gavRh").close(); response = getBlacklistedGAV(g, a, v); assertEquals(404, response.getStatus()); response = getBlacklistedGAV(g, a, v + ".redhat-2"); @@ -104,7 +108,7 @@ public void shouldUnBlacklistWithoutAndWithRHSuffix() throws Exception { @Test public void testDeleteNonExistingBlackArtifact() throws Exception { - Response response = manipulateEntityFile(ListEntityType.BLACK, OperationType.DELETE, "gav", true); + Response response = manipulateEntityFile(OperationType.DELETE, "gav"); checkExpectedResponse(response, "successFalse"); } @@ -112,10 +116,10 @@ public void testDeleteNonExistingBlackArtifact() throws Exception { @Test public void testAlreadyAddedBlackArtifact() throws Exception { // add first black artifact - manipulateEntityFile(ListEntityType.BLACK, OperationType.POST, "gav", true); + manipulateEntityFile(OperationType.POST, "gav").close(); // add second black artifact - Response response = manipulateEntityFile(ListEntityType.BLACK, OperationType.POST, "gav", true); + Response response = manipulateEntityFile(OperationType.POST, "gav"); checkExpectedResponse(response, "successFalse"); } @@ -123,9 +127,9 @@ public void testAlreadyAddedBlackArtifact() throws Exception { @Test public void testGetAllBlackArtifacts() throws Exception { // Add artifacts to blacklist - manipulateEntityFile(ListEntityType.BLACK, OperationType.POST, "gav", true); + manipulateEntityFile(OperationType.POST, "gav").close(); - manipulateEntityFile(ListEntityType.BLACK, OperationType.POST, "gav2", true); + manipulateEntityFile(OperationType.POST, "gav2").close(); // Get list Response response = createClientRequest(PATH_BLACK_LIST).get(); @@ -140,11 +144,11 @@ public void testGetGABlackArtifacts() throws Exception { checkExpectedResponse(getBlacklisted("foo", "bar"), "gaBlacklistEmpty"); // Add artifacts - manipulateEntityFile(ListEntityType.BLACK, OperationType.POST, "gavFoobar", true); - manipulateEntityFile(ListEntityType.BLACK, OperationType.POST, "gavFoobaz-1", true); - manipulateEntityFile(ListEntityType.BLACK, OperationType.POST, "gavFoobaz-2", true); - manipulateEntityFile(ListEntityType.BLACK, OperationType.POST, "gavFoobarbaz", true); - manipulateEntityFile(ListEntityType.BLACK, OperationType.POST, "gavFoobarbaz-4", true); + manipulateEntityFile(OperationType.POST, "gavFoobar").close(); + manipulateEntityFile(OperationType.POST, "gavFoobaz-1").close(); + manipulateEntityFile(OperationType.POST, "gavFoobaz-2").close(); + manipulateEntityFile(OperationType.POST, "gavFoobarbaz").close(); + manipulateEntityFile(OperationType.POST, "gavFoobarbaz-4").close(); // Check responses checkExpectedResponse(getBlacklisted("foo", "bar"), "gaBlacklistFoobar"); @@ -154,7 +158,7 @@ public void testGetGABlackArtifacts() throws Exception { @Test public void testCheckRHBlackArtifact() throws Exception { - manipulateEntityFile(ListEntityType.BLACK, OperationType.POST, "gav", true); + manipulateEntityFile(OperationType.POST, "gav").close(); Response response = getBlacklisted("org.jboss.da", "dependency-analyzer", "0.3.0.redhat-1"); @@ -162,10 +166,9 @@ public void testCheckRHBlackArtifact() throws Exception { } private Response getBlacklistedGAV(String groupId, String artifactId, String version) { - Response response = createClientRequest( + return createClientRequest( PATH_BLACK_LISTINGS_GAV + "?groupid=" + groupId + "&artifactid=" + artifactId + "&version=" + version) .get(); - return response; } private Response getBlacklisted(String groupId, String artifactId, String version) { @@ -184,12 +187,10 @@ private Response getBlacklisted(String groupId, String artifactId) { /** * Non RedHat but OSGi compliant black artifact test - * - * @throws Exception */ @Test public void testCheckNonRHBlackArtifact() throws Exception { - manipulateEntityFile(ListEntityType.BLACK, OperationType.POST, "gav", true); + manipulateEntityFile(OperationType.POST, "gav").close(); Response response = getBlacklisted("org.jboss.da", "dependency-analyzer", "0.3.0"); @@ -198,12 +199,10 @@ public void testCheckNonRHBlackArtifact() throws Exception { /** * Non RedHat non OSGi compliant black artifact test - * - * @throws Exception */ @Test public void testCheckNonRHNonOSGiBlackArtifact() throws Exception { - manipulateEntityFile(ListEntityType.BLACK, OperationType.POST, "gav", true); + manipulateEntityFile(OperationType.POST, "gav").close(); Response response = getBlacklisted("org.jboss.da", "dependency-analyzer", "0.3"); @@ -222,7 +221,9 @@ protected void assertEqualsJson(String expected, String actual) { private void checkExpectedResponse(Response response, String expectedFile) throws IOException { File expectedResponseFile = getJsonResponseFile(PATH_FILES_LISTINGS_GAV, expectedFile); - assertEqualsJson(readFileToString(expectedResponseFile), response.readEntity(String.class)); + assertEqualsJson( + readFileToString(expectedResponseFile, Charset.defaultCharset()), + response.readEntity(String.class)); + response.close(); } - } diff --git a/testsuite/src/test/java/org/jboss/da/test/client/rest/lookup/LookupBlocklistTestIT.java b/testsuite/src/test/java/org/jboss/da/test/client/rest/lookup/LookupBlocklistTestIT.java new file mode 100644 index 000000000..764db0cb0 --- /dev/null +++ b/testsuite/src/test/java/org/jboss/da/test/client/rest/lookup/LookupBlocklistTestIT.java @@ -0,0 +1,41 @@ +package org.jboss.da.test.client.rest.lookup; + +import io.quarkus.test.common.QuarkusTestResource; +import io.quarkus.test.h2.H2DatabaseTestResource; +import io.quarkus.test.junit.QuarkusTest; +import jakarta.ws.rs.client.Entity; +import jakarta.ws.rs.core.Response; +import org.jboss.da.test.client.rest.AbstractRestReportsTest; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; + +import static org.jboss.da.test.client.rest.listings.AbstractRestApiListingTest.PATH_BLACK_LISTINGS_GAV; +import static org.jboss.da.test.client.rest.lookup.LookupTestIT.PATH_LOOKUP_MAVEN; +import static org.junit.jupiter.api.Assertions.assertEquals; + +@QuarkusTest +@QuarkusTestResource(value = H2DatabaseTestResource.class, restrictToAnnotatedClass = true) +public class LookupBlocklistTestIT extends AbstractRestReportsTest { + + @BeforeEach + public void prepareBlocklist() { + String blocklist = "{\"groupId\":\"com.google.guava\",\"artifactId\":\"guava\",\"version\":\"13.0.1-redhat-2\"}"; + Response response = createClientRequest(PATH_BLACK_LISTINGS_GAV).post(Entity.json(blocklist)); + response.close(); + } + + @Test + public void testGavLookupSingleWithBlocklist() throws Exception { + try (Response response = assertResponseForRequest(PATH_LOOKUP_MAVEN, "guava13Blocklist")) { + assertEquals(200, response.getStatus()); + } + } + + @AfterEach + public void cleanBlocklist() { + String blocklist = "{\"groupId\":\"com.google.guava\",\"artifactId\":\"guava\",\"version\":\"13.0.1-redhat-2\"}"; + Response response = createClientRequest(PATH_BLACK_LISTINGS_GAV).method("DELTE", Entity.json(blocklist)); + response.close(); + } +} diff --git a/testsuite/src/test/java/org/jboss/da/test/client/rest/lookup/LookupTestIT.java b/testsuite/src/test/java/org/jboss/da/test/client/rest/lookup/LookupTestIT.java index 3326655e6..2fd579a9b 100644 --- a/testsuite/src/test/java/org/jboss/da/test/client/rest/lookup/LookupTestIT.java +++ b/testsuite/src/test/java/org/jboss/da/test/client/rest/lookup/LookupTestIT.java @@ -1,14 +1,16 @@ package org.jboss.da.test.client.rest.lookup; -import javax.ws.rs.client.Entity; -import javax.ws.rs.core.Response; - +import io.quarkus.test.common.QuarkusTestResource; +import io.quarkus.test.h2.H2DatabaseTestResource; +import io.quarkus.test.junit.QuarkusTest; +import jakarta.ws.rs.core.Response; import org.jboss.da.test.client.rest.AbstractRestReportsTest; -import org.junit.Test; +import org.junit.jupiter.api.Test; -import static org.jboss.da.test.client.rest.listings.AbstractRestApiListingTest.PATH_BLACK_LISTINGS_GAV; -import static org.junit.Assert.assertEquals; +import static org.junit.jupiter.api.Assertions.assertEquals; +@QuarkusTest +@QuarkusTestResource(value = H2DatabaseTestResource.class, restrictToAnnotatedClass = true) public class LookupTestIT extends AbstractRestReportsTest { static final String PATH_LOOKUP_MAVEN = "/lookup/maven"; @@ -20,42 +22,50 @@ public class LookupTestIT extends AbstractRestReportsTest { @Test public void testGavLookupSingle() throws Exception { - Response response = assertResponseForRequest(PATH_LOOKUP_MAVEN, "guava13"); - assertEquals(200, response.getStatus()); + try (Response response = assertResponseForRequest(PATH_LOOKUP_MAVEN, "guava13")) { + assertEquals(200, response.getStatus()); + } } @Test public void testGavLookupSingleTemporary() throws Exception { - Response response = assertResponseForRequest(PATH_LOOKUP_MAVEN, "guava13Temp"); - assertEquals(200, response.getStatus()); + try (Response response = assertResponseForRequest(PATH_LOOKUP_MAVEN, "guava13Temp")) { + assertEquals(200, response.getStatus()); + } } @Test public void testGavLatestTemporary() throws Exception { - Response response = assertResponseForRequest(PATH_LATEST_MAVEN, "guava13Temp"); - assertEquals(200, response.getStatus()); + try (Response response = assertResponseForRequest(PATH_LATEST_MAVEN, "guava13Temp")) { + assertEquals(200, response.getStatus()); + } } @Test public void testGavLatestMissingTemporary() throws Exception { - Response response = assertResponseForRequest(PATH_LATEST_MAVEN, "guava13Temp2"); - assertEquals(200, response.getStatus()); + try (Response response = assertResponseForRequest(PATH_LATEST_MAVEN, "guava13Temp2")) { + assertEquals(200, response.getStatus()); + } } @Test public void testGavLookupList() throws Exception { - Response response = assertResponseForRequest(PATH_LOOKUP_MAVEN, "guava13List"); - assertEquals(200, response.getStatus()); + try (Response response = assertResponseForRequest(PATH_LOOKUP_MAVEN, "guava13List")) { + assertEquals(200, response.getStatus()); + } } @Test public void testGavVersions() throws Exception { - Response response = assertResponseForRequest(PATH_MAVEN_VERSIONS, "guava13"); - assertEquals(200, response.getStatus()); - response = assertResponseForRequest(PATH_MAVEN_VERSIONS, "guava13Minor"); - assertEquals(200, response.getStatus()); - response = assertResponseForRequest(PATH_MAVEN_VERSIONS, "guava13Closest"); - assertEquals(200, response.getStatus()); + try (Response response = assertResponseForRequest(PATH_MAVEN_VERSIONS, "guava13")) { + assertEquals(200, response.getStatus()); + } + try (Response response = assertResponseForRequest(PATH_MAVEN_VERSIONS, "guava13Minor")) { + assertEquals(200, response.getStatus()); + } + try (Response response = assertResponseForRequest(PATH_MAVEN_VERSIONS, "guava13Closest")) { + assertEquals(200, response.getStatus()); + } } @Test @@ -66,21 +76,25 @@ public void testGavLookupInvalidMode() throws Exception { @Test public void testPackageVersions() throws Exception { - Response response = assertResponseForRequest(PATH_NPM_VERSIONS, "jquery151"); - assertEquals(200, response.getStatus()); - response = assertResponseForRequest(PATH_NPM_VERSIONS, "jquery151Major"); - assertEquals(200, response.getStatus()); + try (Response response = assertResponseForRequest(PATH_NPM_VERSIONS, "jquery151")) { + assertEquals(200, response.getStatus()); + } + try (Response response = assertResponseForRequest(PATH_NPM_VERSIONS, "jquery151Major")) { + assertEquals(200, response.getStatus()); + } } @Test public void testNCLSUP132() throws Exception { - Response response = assertResponseForRequest(PATH_LOOKUP_MAVEN, "NCLSUP132"); - assertEquals(200, response.getStatus()); + try (Response response = assertResponseForRequest(PATH_LOOKUP_MAVEN, "NCLSUP132")) { + assertEquals(200, response.getStatus()); + } } @Test public void testNPMLookupSingle() throws Exception { - Response response = assertResponseForRequest(PATH_LOOKUP_NPM, "jquery151"); - assertEquals(200, response.getStatus()); + try (Response response = assertResponseForRequest(PATH_LOOKUP_NPM, "jquery151")) { + assertEquals(200, response.getStatus()); + } } } diff --git a/testsuite/src/test/java/org/jboss/da/test/client/rest/lookup/LookupTestITBlocklist.java b/testsuite/src/test/java/org/jboss/da/test/client/rest/lookup/LookupTestITBlocklist.java deleted file mode 100644 index c61efa0c2..000000000 --- a/testsuite/src/test/java/org/jboss/da/test/client/rest/lookup/LookupTestITBlocklist.java +++ /dev/null @@ -1,34 +0,0 @@ -package org.jboss.da.test.client.rest.lookup; - -import org.jboss.da.test.client.rest.AbstractRestReportsTest; -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import javax.ws.rs.client.Entity; -import javax.ws.rs.core.Response; - -import static org.jboss.da.test.client.rest.listings.AbstractRestApiListingTest.PATH_BLACK_LISTINGS_GAV; -import static org.jboss.da.test.client.rest.lookup.LookupTestIT.PATH_LOOKUP_MAVEN; -import static org.junit.Assert.assertEquals; - -public class LookupTestITBlocklist extends AbstractRestReportsTest { - - @Before - public void prepareBlocklist() { - String blocklist = "{\"groupId\":\"com.google.guava\",\"artifactId\":\"guava\",\"version\":\"13.0.1-redhat-2\"}"; - createClientRequest(PATH_BLACK_LISTINGS_GAV).post(Entity.json(blocklist)).close(); - } - - @Test - public void testGavLookupSingleWithBlocklist() throws Exception { - Response response = assertResponseForRequest(PATH_LOOKUP_MAVEN, "guava13Blocklist"); - assertEquals(200, response.getStatus()); - } - - @After - public void cleanBlocklist() { - String blocklist = "{\"groupId\":\"com.google.guava\",\"artifactId\":\"guava\",\"version\":\"13.0.1-redhat-2\"}"; - createClientRequest(PATH_BLACK_LISTINGS_GAV).method("DELTE", Entity.json(blocklist)).close(); - } -} diff --git a/testsuite/src/test/java/org/jboss/da/test/client/rest/reports/AlignRemoteTestIT.java b/testsuite/src/test/java/org/jboss/da/test/client/rest/reports/AlignRemoteTestIT.java index 7e24570f5..392d57da3 100644 --- a/testsuite/src/test/java/org/jboss/da/test/client/rest/reports/AlignRemoteTestIT.java +++ b/testsuite/src/test/java/org/jboss/da/test/client/rest/reports/AlignRemoteTestIT.java @@ -5,21 +5,31 @@ */ package org.jboss.da.test.client.rest.reports; +import io.quarkus.test.common.QuarkusTestResource; +import io.quarkus.test.h2.H2DatabaseTestResource; +import io.quarkus.test.junit.QuarkusTest; import org.jboss.da.test.client.rest.AbstractRestReportsTest; -import static org.junit.Assert.assertEquals; -import org.junit.Test; -import javax.ws.rs.core.Response; +import static org.junit.jupiter.api.Assertions.assertEquals; + +import org.junit.jupiter.api.Test; + +import jakarta.ws.rs.core.Response; /** * * @author sknot */ +@QuarkusTest +@QuarkusTestResource(value = H2DatabaseTestResource.class, restrictToAnnotatedClass = true) public class AlignRemoteTestIT extends AbstractRestReportsTest { @Test public void test() throws Exception { - Response response = assertResponseForRequest(RestApiReportsRemoteTestIT.PATH_REPORTS_ALIGN, "align-test-wrong"); - assertEquals(500, response.getStatus()); + try (Response response = assertResponseForRequest( + RestApiReportsRemoteTestIT.PATH_REPORTS_ALIGN, + "align-test-wrong")) { + assertEquals(500, response.getStatus()); + } } } diff --git a/testsuite/src/test/java/org/jboss/da/test/client/rest/reports/BugReporoducerRemoteTestIT.java b/testsuite/src/test/java/org/jboss/da/test/client/rest/reports/BugReproducerRemoteTestIT.java similarity index 58% rename from testsuite/src/test/java/org/jboss/da/test/client/rest/reports/BugReporoducerRemoteTestIT.java rename to testsuite/src/test/java/org/jboss/da/test/client/rest/reports/BugReproducerRemoteTestIT.java index dcd8613ac..e84d9505d 100644 --- a/testsuite/src/test/java/org/jboss/da/test/client/rest/reports/BugReporoducerRemoteTestIT.java +++ b/testsuite/src/test/java/org/jboss/da/test/client/rest/reports/BugReproducerRemoteTestIT.java @@ -4,20 +4,20 @@ import org.apache.commons.io.FileUtils; import org.jboss.da.test.client.rest.AbstractRestReportsTest; -import static org.junit.Assert.assertEquals; -import org.junit.Assume; -import org.junit.Ignore; -import org.junit.Test; +import static org.junit.jupiter.api.Assertions.assertEquals; +import org.junit.jupiter.api.Assumptions; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; -import javax.ws.rs.client.Entity; -import javax.ws.rs.core.Response; +import jakarta.ws.rs.client.Entity; +import jakarta.ws.rs.core.Response; /** * * @author Honza Brázdil <jbrazdil@redhat.com> */ -@Ignore -public class BugReporoducerRemoteTestIT extends AbstractRestReportsTest { +@Disabled +public class BugReproducerRemoteTestIT extends AbstractRestReportsTest { private static final String ENCODING = "utf-8"; @@ -27,15 +27,15 @@ public class BugReporoducerRemoteTestIT extends AbstractRestReportsTest { @Test public void testDA176() throws Exception { final String repo = System.getenv("DA_hosted_repo"); - Assume.assumeTrue(repo != null); + Assumptions.assumeTrue(repo != null); String gavNonexisting = "keycloak-1.6.0.Final"; File jsonRequestFile = getJsonRequestFile(PATH_SCM, gavNonexisting); String json = FileUtils.readFileToString(jsonRequestFile, ENCODING); json = json.replace("${DA-hosted-repo}", repo); - Response response = createClientRequest(PATH_SCM).post(Entity.json(json)); - - assertEquals(200, response.getStatus()); + try (Response response = createClientRequest(PATH_SCM).post(Entity.json(json))) { + assertEquals(200, response.getStatus()); + } } @Test @@ -43,10 +43,10 @@ public void testDA179() throws Exception { String gavNonexisting = "pnc-3de7ed5"; File jsonRequestFile = getJsonRequestFile(PATH_SCM, gavNonexisting); - Response response = createClientRequest(PATH_SCM) - .post(Entity.json(FileUtils.readFileToString(jsonRequestFile, ENCODING))); - - assertEquals(200, response.getStatus()); + try (Response response = createClientRequest(PATH_SCM) + .post(Entity.json(FileUtils.readFileToString(jsonRequestFile, ENCODING)))) { + assertEquals(200, response.getStatus()); + } } @Test @@ -54,15 +54,16 @@ public void testNCL5377() throws Exception { String nonOSGiDependency = "NCL5377"; File jsonRequestFile = getJsonRequestFile(PATH_SCM, nonOSGiDependency); - Response response = createClientRequest(PATH_SCM) - .post(Entity.json(FileUtils.readFileToString(jsonRequestFile, ENCODING))); - - assertEquals(200, response.getStatus()); + try (Response response = createClientRequest(PATH_SCM) + .post(Entity.json(FileUtils.readFileToString(jsonRequestFile, ENCODING)))) { + assertEquals(200, response.getStatus()); + } } @Test public void testNCLSUP132() throws Exception { - Response response = assertResponseForRequest(PATH_LOOKUP_GAVS, "NCLSUP132"); - assertEquals(200, response.getStatus()); + try (Response response = assertResponseForRequest(PATH_LOOKUP_GAVS, "NCLSUP132")) { + assertEquals(200, response.getStatus()); + } } } diff --git a/testsuite/src/test/java/org/jboss/da/test/client/rest/reports/RestApiReportsRemoteTestIT.java b/testsuite/src/test/java/org/jboss/da/test/client/rest/reports/RestApiReportsRemoteTestIT.java index 833c36a1e..b7e5e8d72 100644 --- a/testsuite/src/test/java/org/jboss/da/test/client/rest/reports/RestApiReportsRemoteTestIT.java +++ b/testsuite/src/test/java/org/jboss/da/test/client/rest/reports/RestApiReportsRemoteTestIT.java @@ -1,22 +1,26 @@ package org.jboss.da.test.client.rest.reports; -import static org.junit.Assert.assertEquals; - +import io.quarkus.test.common.QuarkusTestResource; +import io.quarkus.test.h2.H2DatabaseTestResource; +import io.quarkus.test.junit.QuarkusTest; +import jakarta.ws.rs.client.Entity; +import jakarta.ws.rs.core.Response; import org.apache.commons.io.FileUtils; import org.jboss.da.test.client.rest.AbstractRestReportsTest; import org.json.JSONException; -import static org.junit.Assert.fail; -import org.junit.Assume; -import org.junit.Before; -import org.junit.Test; +import org.junit.jupiter.api.Assumptions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import org.skyscreamer.jsonassert.JSONAssert; import org.skyscreamer.jsonassert.JSONCompareMode; -import javax.ws.rs.client.Entity; -import javax.ws.rs.core.Response; - import java.io.File; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.fail; + +@QuarkusTest +@QuarkusTestResource(value = H2DatabaseTestResource.class, restrictToAnnotatedClass = true) public class RestApiReportsRemoteTestIT extends AbstractRestReportsTest { private static final String ENCODING = "utf-8"; @@ -31,70 +35,78 @@ public class RestApiReportsRemoteTestIT extends AbstractRestReportsTest { private static final String PATH_SCM = "/reports/scm"; - @Before + @BeforeEach public void workaroundNoHttpResponseException() throws InterruptedException { Thread.sleep(2000); } @Test public void testNPMLookupSingle() throws Exception { - Response response = assertResponseForRequest(PATH_LOOKUP_NPM, "jquery151"); - assertEquals(200, response.getStatus()); + try (Response response = assertResponseForRequest(PATH_LOOKUP_NPM, "jquery151")) { + assertEquals(200, response.getStatus()); + } } @Test public void testNPMVersionsSingle() throws Exception { - Response response = assertResponseForRequest(PATH_VERSIONS_NPM, "jquery151"); - assertEquals(200, response.getStatus()); + try (Response response = assertResponseForRequest(PATH_VERSIONS_NPM, "jquery151")) { + assertEquals(200, response.getStatus()); + } } @Test public void testNPMVersionsSingleIncludeAll() throws Exception { - Response response = assertResponseForRequest(PATH_VERSIONS_NPM, "jquery151-2"); - assertEquals(200, response.getStatus()); + try (Response response = assertResponseForRequest(PATH_VERSIONS_NPM, "jquery151-2")) { + assertEquals(200, response.getStatus()); + } } @Test public void testGavLookupSingle() throws Exception { - Response response = assertResponseForRequest(PATH_LOOKUP_GAVS, "guava13"); - assertEquals(200, response.getStatus()); + try (Response response = assertResponseForRequest(PATH_LOOKUP_GAVS, "guava13")) { + assertEquals(200, response.getStatus()); + } } @Test public void testGavLookupSingleTemporary() throws Exception { - Response response = assertResponseForRequest(PATH_LOOKUP_GAVS, "guava13Temp"); - assertEquals(200, response.getStatus()); + try (Response response = assertResponseForRequest(PATH_LOOKUP_GAVS, "guava13Temp")) { + assertEquals(200, response.getStatus()); + } } @Test public void testGavLookupList() throws Exception { - Response response = assertResponseForRequest(PATH_LOOKUP_GAVS, "guava13List"); - assertEquals(200, response.getStatus()); + try (Response response = assertResponseForRequest(PATH_LOOKUP_GAVS, "guava13List")) { + assertEquals(200, response.getStatus()); + } } @Test public void testScmReportBasic() throws Exception { - Response response = assertResponseForRequest(PATH_SCM, "dependency-analysis"); - assertEquals(200, response.getStatus()); + try (Response response = assertResponseForRequest(PATH_SCM, "dependency-analysis")) { + assertEquals(200, response.getStatus()); + } } @Test public void testAlignReportBasic() throws Exception { - Response response = assertResponseForRequest(PATH_REPORTS_ALIGN, "dependency-analysis"); - assertEquals(200, response.getStatus()); + try (Response response = assertResponseForRequest(PATH_REPORTS_ALIGN, "dependency-analysis")) { + assertEquals(200, response.getStatus()); + } } @Test public void testScmOptionalRepository() throws Exception { final String repo = System.getenv("DA_hosted_repo"); - Assume.assumeTrue(repo != null); + Assumptions.assumeTrue(repo != null); File jsonRequestFile = getJsonRequestFile(PATH_SCM, "keycloak-1.6.0.Final"); String json = FileUtils.readFileToString(jsonRequestFile, ENCODING); json = json.replace("${DA-hosted-repo}", repo); - Response response = createClientRequest(PATH_SCM).post(Entity.json(json)); - - assertEquals(200, response.getStatus()); + try (Response response = createClientRequest(PATH_SCM).post(Entity.json(json))) { + assertEquals(200, response.getStatus()); + } } @Override diff --git a/testsuite/src/test/java/org/jboss/da/test/client/ws/AbstractWebsocketApiTest.java b/testsuite/src/test/java/org/jboss/da/test/client/ws/AbstractWebsocketApiTest.java index 0aa161726..414673cff 100644 --- a/testsuite/src/test/java/org/jboss/da/test/client/ws/AbstractWebsocketApiTest.java +++ b/testsuite/src/test/java/org/jboss/da/test/client/ws/AbstractWebsocketApiTest.java @@ -1,71 +1,66 @@ package org.jboss.da.test.client.ws; -import org.jboss.arquillian.container.test.api.RunAsClient; -import org.jboss.arquillian.junit.Arquillian; -import org.junit.runner.RunWith; - -import static org.junit.Assert.*; - -import java.io.File; -import java.io.IOException; - +import com.fasterxml.jackson.databind.ObjectMapper; +import com.thetransactioncompany.jsonrpc2.JSONRPC2ParseException; +import com.thetransactioncompany.jsonrpc2.JSONRPC2Request; +import com.thetransactioncompany.jsonrpc2.JSONRPC2Response; +import jakarta.websocket.ClientEndpointConfig; +import jakarta.websocket.CloseReason; +import jakarta.websocket.ContainerProvider; +import jakarta.websocket.DeploymentException; +import jakarta.websocket.Endpoint; +import jakarta.websocket.EndpointConfig; +import jakarta.websocket.Session; import org.apache.commons.io.FileUtils; import org.jboss.da.test.client.AbstractClientApiTest; -import org.junit.After; -import org.junit.Before; - -import javax.websocket.ClientEndpointConfig; -import javax.websocket.CloseReason; -import javax.websocket.ContainerProvider; -import javax.websocket.DeploymentException; -import javax.websocket.Endpoint; -import javax.websocket.EndpointConfig; -import javax.websocket.MessageHandler; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; +import java.io.File; +import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; +import java.nio.charset.Charset; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; import java.util.concurrent.CountDownLatch; -import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.concurrent.atomic.AtomicLong; import java.util.logging.Level; import java.util.logging.Logger; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.thetransactioncompany.jsonrpc2.JSONRPC2ParseException; -import com.thetransactioncompany.jsonrpc2.JSONRPC2Request; -import com.thetransactioncompany.jsonrpc2.JSONRPC2Response; +import static org.junit.jupiter.api.Assertions.assertTrue; -@RunWith(Arquillian.class) -@RunAsClient public abstract class AbstractWebsocketApiTest extends AbstractClientApiTest { protected final String webSocketUrl; protected JSONRPCWebsocketEndpoint endpoint; + protected Session session; + public AbstractWebsocketApiTest() { this.webSocketUrl = readWebsocketApiUrl(); } - @Before + @BeforeEach public void setup() throws URISyntaxException, DeploymentException, IOException { URI uri = new URI(webSocketUrl); - endpoint = new JSONRPCWebsocketEndpoint(); ClientEndpointConfig cec = ClientEndpointConfig.Builder.create().build(); - ContainerProvider.getWebSocketContainer().connectToServer(endpoint, cec, uri); + session = ContainerProvider.getWebSocketContainer().connectToServer(endpoint, cec, uri); } - @After + @AfterEach public void cleanup() throws InterruptedException, IOException { if (endpoint != null) { endpoint.close(5, TimeUnit.SECONDS); } + if (session != null) { + session.close(); + } } private String readWebsocketApiUrl() { @@ -73,7 +68,7 @@ private String readWebsocketApiUrl() { } protected JSONRPC2Response assertResponseForRequest(String path, String requestFile, String method) - throws IOException, InterruptedException, ExecutionException, TimeoutException { + throws IOException, InterruptedException, TimeoutException { File jsonRequestFile = getJsonRequestFile(path, requestFile); ObjectMapper mapper = new ObjectMapper(); Map parameters = mapper.readValue(jsonRequestFile, Map.class); @@ -84,7 +79,9 @@ protected JSONRPC2Response assertResponseForRequest(String path, String requestF assertTrue(response.indicatesSuccess()); File expectedResponseFile = getJsonResponseFile(path, requestFile); - assertEqualsJson(FileUtils.readFileToString(expectedResponseFile).trim(), responseString.trim()); + assertEqualsJson( + FileUtils.readFileToString(expectedResponseFile, Charset.defaultCharset()).trim(), + responseString.trim()); return response; } @@ -96,13 +93,13 @@ protected static class JSONRPCWebsocketEndpoint extends Endpoint { private final AtomicLong sequence = new AtomicLong(); - private javax.websocket.Session session; + private jakarta.websocket.Session session; @Override - public void onOpen(javax.websocket.Session session, EndpointConfig config) { + public void onOpen(jakarta.websocket.Session session, EndpointConfig config) { System.out.printf("Got connect: %s%n", session); this.session = session; - session.addMessageHandler(String.class, (MessageHandler.Whole) (String message) -> { + session.addMessageHandler(String.class, (String message) -> { System.out.printf("Got message: " + message); try { JSONRPC2Response parse = JSONRPC2Response.parse(message); @@ -116,20 +113,22 @@ public void onOpen(javax.websocket.Session session, EndpointConfig config) { } public boolean close(int duration, TimeUnit unit) throws InterruptedException, IOException { - System.out.printf("Closing endpint"); - session.close(); + System.out.println("Closing endpoint"); + if (session != null) { + session.close(); + } return this.closeLatch.await(duration, unit); } @Override - public void onClose(javax.websocket.Session session, CloseReason closeReason) { - System.out.printf("Connection closed: %d - %s%n", closeReason); + public void onClose(jakarta.websocket.Session session, CloseReason closeReason) { + System.out.printf("Connection closed: - %s%n", closeReason); this.session = null; this.closeLatch.countDown(); // trigger latch } public JSONRPC2Response sendRequest(JSONRPC2Request request) - throws InterruptedException, ExecutionException, TimeoutException, IOException { + throws InterruptedException, TimeoutException, IOException { System.out.println("Sending message"); Long id = sequence.incrementAndGet(); request.setID(id); diff --git a/testsuite/src/test/java/org/jboss/da/test/client/ws/reports/AbstractWebsocketReportsTest.java b/testsuite/src/test/java/org/jboss/da/test/client/ws/reports/AbstractWebsocketReportsTest.java index 283d04a27..b1355f03a 100644 --- a/testsuite/src/test/java/org/jboss/da/test/client/ws/reports/AbstractWebsocketReportsTest.java +++ b/testsuite/src/test/java/org/jboss/da/test/client/ws/reports/AbstractWebsocketReportsTest.java @@ -1,26 +1,16 @@ package org.jboss.da.test.client.ws.reports; -import static org.jboss.da.common.Constants.REST_API_VERSION_BC; - -import org.jboss.arquillian.container.test.api.Deployment; -import org.jboss.da.test.ArquillianDeploymentFactory; -import org.jboss.da.test.ArquillianDeploymentFactory.DepType; -import org.jboss.da.test.ArquillianDeploymentFactory.TestSide; import org.jboss.da.test.client.ws.AbstractWebsocketApiTest; -import org.jboss.shrinkwrap.api.spec.EnterpriseArchive; + +import static org.jboss.da.common.Constants.REST_API_VERSION_BC; public abstract class AbstractWebsocketReportsTest extends AbstractWebsocketApiTest { private static final String DEFAULT_REST_API_VERSION = "v-" + REST_API_VERSION_BC; - @Deployment - public static EnterpriseArchive createDeployment() { - return new ArquillianDeploymentFactory().createDeployment(DepType.REPORTS, TestSide.CLIENT); - } - @Override protected String getContextRoot() { - return "testsuite"; + return ""; } @Override diff --git a/testsuite/src/test/java/org/jboss/da/test/client/ws/reports/WebsocketApiReportsTestIT.java b/testsuite/src/test/java/org/jboss/da/test/client/ws/reports/WebsocketApiReportsTestIT.java index d0b2ed725..72dae0710 100644 --- a/testsuite/src/test/java/org/jboss/da/test/client/ws/reports/WebsocketApiReportsTestIT.java +++ b/testsuite/src/test/java/org/jboss/da/test/client/ws/reports/WebsocketApiReportsTestIT.java @@ -1,13 +1,17 @@ package org.jboss.da.test.client.ws.reports; +import io.quarkus.test.junit.QuarkusTest; import org.json.JSONException; -import static org.junit.Assert.fail; -import org.junit.Test; + +import static org.junit.jupiter.api.Assertions.fail; + +import org.junit.jupiter.api.Test; import org.skyscreamer.jsonassert.JSONAssert; import org.skyscreamer.jsonassert.JSONCompareMode; import java.io.IOException; +@QuarkusTest public class WebsocketApiReportsTestIT extends AbstractWebsocketReportsTest { private static final String PATH_REPORTS_ALIGN = "/reports/align"; @@ -23,17 +27,17 @@ public class WebsocketApiReportsTestIT extends AbstractWebsocketReportsTest { private static final String METHOD_REPORTS_LOOKUP = "reports.lookup.gav"; @Test - public void testAlignReportBasic() throws IOException, Exception { + public void testAlignReportBasic() throws Exception { assertResponseForRequest(PATH_REPORTS_ALIGN, "dependency-analysis", METHOD_REPORTS_ALIGN); } @Test - public void testBuiltReportBasic() throws IOException, Exception { + public void testBuiltReportBasic() throws Exception { assertResponseForRequest(PATH_REPORTS_BUILT, "dependency-analysis", METHOD_REPORTS_BUILT); } @Test - public void testLookupReportBasic() throws IOException, Exception { + public void testLookupReportBasic() throws Exception { assertResponseForRequest(PATH_REPORTS_LOOKUP, "guava13", METHOD_REPORTS_LOOKUP); } diff --git a/testsuite/src/test/java/org/jboss/da/test/server/AbstractServerTest.java b/testsuite/src/test/java/org/jboss/da/test/server/AbstractServerTest.java index b72046277..c6dbd5bcf 100644 --- a/testsuite/src/test/java/org/jboss/da/test/server/AbstractServerTest.java +++ b/testsuite/src/test/java/org/jboss/da/test/server/AbstractServerTest.java @@ -1,14 +1,9 @@ package org.jboss.da.test.server; -import org.jboss.arquillian.container.test.api.Deployment; -import org.jboss.da.test.ArquillianDeploymentFactory; -import org.jboss.da.test.ArquillianDeploymentFactory.DepType; -import org.jboss.da.test.ArquillianDeploymentFactory.TestSide; -import org.jboss.shrinkwrap.api.spec.EnterpriseArchive; -import org.junit.Rule; +import com.github.tomakehurst.wiremock.junit5.WireMockExtension; +import org.junit.jupiter.api.extension.RegisterExtension; import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.options; -import com.github.tomakehurst.wiremock.junit.WireMockRule; /** * @@ -16,13 +11,8 @@ */ public class AbstractServerTest { - @Rule - public WireMockRule wireMockRule = new WireMockRule( - options().port(8081).usingFilesUnderDirectory("src/test/resources/wiremock")); - - @Deployment - public static EnterpriseArchive createDeployment() { - return new ArquillianDeploymentFactory().createDeployment(DepType.REPORTS, TestSide.SERVER); - } - + @RegisterExtension + public static final WireMockExtension wireMockRule = WireMockExtension.newInstance() + .options(options().port(8081).usingFilesUnderDirectory("src/test/resources/wiremock")) + .build(); } diff --git a/testsuite/src/test/java/org/jboss/da/test/server/DeploymentTestIT.java b/testsuite/src/test/java/org/jboss/da/test/server/DeploymentTestIT.java deleted file mode 100644 index 3cd7f1fdf..000000000 --- a/testsuite/src/test/java/org/jboss/da/test/server/DeploymentTestIT.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.jboss.da.test.server; - -import org.jboss.arquillian.container.test.api.Deployment; -import org.jboss.arquillian.junit.Arquillian; -import org.jboss.da.test.ArquillianDeploymentFactory; -import org.jboss.da.test.ArquillianDeploymentFactory.DepType; -import org.jboss.da.test.ArquillianDeploymentFactory.TestSide; -import org.jboss.shrinkwrap.api.spec.EnterpriseArchive; -import org.junit.Test; -import org.junit.runner.RunWith; - -/** - * - * @author Honza Brázdil <jbrazdil@redhat.com> - */ -@RunWith(Arquillian.class) -public class DeploymentTestIT { - - @Deployment - public static EnterpriseArchive createDeployment() { - return new ArquillianDeploymentFactory().createDeployment(DepType.REPORTS, TestSide.SERVER); - } - - @Test - public void testDeployment() { - } - -} diff --git a/testsuite/src/test/java/org/jboss/da/test/server/communication/GAVComparatorRemoteTestIT.java b/testsuite/src/test/java/org/jboss/da/test/server/communication/GAVComparatorRemoteTestIT.java index fe1a6d8a2..989a86af4 100644 --- a/testsuite/src/test/java/org/jboss/da/test/server/communication/GAVComparatorRemoteTestIT.java +++ b/testsuite/src/test/java/org/jboss/da/test/server/communication/GAVComparatorRemoteTestIT.java @@ -1,14 +1,19 @@ package org.jboss.da.test.server.communication; +import io.quarkus.test.junit.QuarkusTest; import org.jboss.da.model.rest.GAV; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import org.junit.Test; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +import org.junit.jupiter.api.Test; /** * * @author Stanislav Knot <sknot@redhat.com> */ +@QuarkusTest public class GAVComparatorRemoteTestIT { @Test @@ -16,7 +21,7 @@ public void test() { // identical strings GAV gav1 = new GAV("com.megginson.sax", "xml-writer", "0.2"); GAV gav2 = new GAV("com.megginson.sax", "xml-writer", "0.2"); - assertTrue(gav1.compareTo(gav2) == 0); + assertEquals(0, gav1.compareTo(gav2)); // first string is less gav1 = new GAV("com.megginson.sax", "xml-writer", "0.2"); @@ -52,7 +57,5 @@ public void test2() { assertTrue(gav2.compareTo(gav3) < 0); assertTrue(gav3.compareTo(gav4) < 0); assertTrue(gav4.compareTo(gav5) > 0); - } - } diff --git a/testsuite/src/test/java/org/jboss/da/test/server/communication/GalleyWrapperTestIT.java b/testsuite/src/test/java/org/jboss/da/test/server/communication/GalleyWrapperTestIT.java index 3977a13ac..2274174ec 100644 --- a/testsuite/src/test/java/org/jboss/da/test/server/communication/GalleyWrapperTestIT.java +++ b/testsuite/src/test/java/org/jboss/da/test/server/communication/GalleyWrapperTestIT.java @@ -1,11 +1,12 @@ package org.jboss.da.test.server.communication; +import io.quarkus.test.junit.QuarkusTest; +import jakarta.inject.Inject; import org.apache.maven.scm.ScmException; import org.commonjava.maven.galley.maven.parse.MavenPomReader; import org.commonjava.maven.galley.maven.rel.MavenModelProcessor; import org.commonjava.maven.galley.maven.rel.ModelProcessorConfig; import org.commonjava.maven.galley.maven.spi.type.TypeMapper; -import org.jboss.arquillian.junit.Arquillian; import org.jboss.da.common.util.Configuration; import org.jboss.da.communication.indy.model.GAVDependencyTree; import org.jboss.da.communication.pom.GalleyWrapper; @@ -16,26 +17,24 @@ import org.jboss.da.scm.api.SCM; import org.jboss.da.scm.api.SCMType; import org.jboss.da.test.server.AbstractServerTest; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; -import javax.inject.Inject; import java.io.File; import java.io.IOException; import java.util.Collections; import java.util.HashSet; import java.util.Set; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; /** * * @author Honza Brázdil <jbrazdil@redhat.com> */ -@RunWith(Arquillian.class) +@QuarkusTest public class GalleyWrapperTestIT extends AbstractServerTest { private static final String VERSION = "0.5.1"; @@ -47,7 +46,7 @@ public class GalleyWrapperTestIT extends AbstractServerTest { private static final GAV TESTSUITE_GAV = new GAV("org.jboss.da", "testsuite", VERSION); @Inject - private SCM scm; + SCM scm; @Inject MavenPomReader mavenPomReader; @@ -56,23 +55,23 @@ public class GalleyWrapperTestIT extends AbstractServerTest { TypeMapper typeMapper; @Inject - private PomReader pomReader; + PomReader pomReader; @Inject - private PomAnalyzer pomAnalyzer; + PomAnalyzer pomAnalyzer; @Inject - private Configuration config; + Configuration config; @Inject - private ModelProcessorConfig disConf; + ModelProcessorConfig disConf; @Inject - private MavenModelProcessor processor; + MavenModelProcessor processor; private File clonedRepository; - @Before + @BeforeEach public void cloneRepo() throws ScmException { clonedRepository = scm .cloneRepository(SCMType.GIT, "https://github.com/project-ncl/dependency-analysis.git", VERSION); diff --git a/testsuite/src/test/java/org/jboss/da/test/server/communication/IndyRemoteTestIT.java b/testsuite/src/test/java/org/jboss/da/test/server/communication/IndyRemoteTestIT.java index 4b0eb1a1d..337da877a 100644 --- a/testsuite/src/test/java/org/jboss/da/test/server/communication/IndyRemoteTestIT.java +++ b/testsuite/src/test/java/org/jboss/da/test/server/communication/IndyRemoteTestIT.java @@ -1,31 +1,29 @@ package org.jboss.da.test.server.communication; -import org.jboss.arquillian.junit.Arquillian; +import io.quarkus.test.junit.QuarkusTest; +import jakarta.inject.Inject; import org.jboss.da.common.CommunicationException; import org.jboss.da.communication.indy.api.IndyConnector; import org.jboss.da.model.rest.GA; import org.jboss.da.model.rest.GAV; import org.jboss.da.test.server.AbstractServerTest; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; - -import javax.inject.Inject; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; import java.util.Arrays; import java.util.List; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; -@RunWith(Arquillian.class) +@QuarkusTest public class IndyRemoteTestIT extends AbstractServerTest { @Inject - private IndyConnector indyConnector; + IndyConnector indyConnector; - @Before + @BeforeEach public void workaroundNoHttpResponseException() throws InterruptedException { Thread.sleep(2000); } @@ -34,9 +32,9 @@ public void workaroundNoHttpResponseException() throws InterruptedException { public void testGetVersionsOfGA() throws CommunicationException { GA ga = new GA("org.jboss.ballroom", "ballroom"); List ballroomTest = Arrays - .asList(new String[] { "1.3.0.Final-redhat-1", "1.4.0.Final-redhat-1", "1.6.0.Final-redhat-1" }); + .asList("1.3.0.Final-redhat-1", "1.4.0.Final-redhat-1", "1.6.0.Final-redhat-1"); List result = indyConnector.getVersionsOfGA(ga); - assertTrue(result.size() > 0); + assertFalse(result.isEmpty()); // future releases might make the size of result to be bigger assertTrue(ballroomTest.size() <= result.size()); assertTrue(result.containsAll(ballroomTest)); @@ -45,58 +43,57 @@ public void testGetVersionsOfGA() throws CommunicationException { @Test public void testGetVersionsOfNpm() throws CommunicationException { List jqueryVersions = Arrays.asList( - new String[] { - "1.11.0", - "1.11.0-beta3", - "1.11.0-rc1", - "1.11.1", - "1.11.1-beta1", - "1.11.1-rc1", - "1.11.1-rc2", - "1.11.2", - "1.11.3", - "1.12.0", - "1.12.1", - "1.12.2", - "1.12.3", - "1.12.4", - "1.5.1", - "1.5.1-redhat-1", - "1.5.2", - "1.6.2-redhat-1", - "1.6.2", - "1.6.3", - "1.7.2", - "1.7.3", - "1.8.2", - "1.8.3", - "1.9.1", - "2.1.0", - "2.1.0-beta2", - "2.1.0-beta3", - "2.1.0-rc1", - "2.1.1", - "2.1.1-beta1", - "2.1.1-rc1", - "2.1.1-rc2", - "2.1.2", - "2.1.3", - "2.1.4", - "2.2.0", - "2.2.1", - "2.2.2", - "2.2.3", - "2.2.4", - "3.0.0", - "3.0.0-alpha1", - "3.0.0-beta1", - "3.0.0-rc1", - "3.1.0", - "3.1.1", - "3.2.0", - "3.2.1", - "3.3.0", - "3.3.1" }); + "1.11.0", + "1.11.0-beta3", + "1.11.0-rc1", + "1.11.1", + "1.11.1-beta1", + "1.11.1-rc1", + "1.11.1-rc2", + "1.11.2", + "1.11.3", + "1.12.0", + "1.12.1", + "1.12.2", + "1.12.3", + "1.12.4", + "1.5.1", + "1.5.1-redhat-1", + "1.5.2", + "1.6.2-redhat-1", + "1.6.2", + "1.6.3", + "1.7.2", + "1.7.3", + "1.8.2", + "1.8.3", + "1.9.1", + "2.1.0", + "2.1.0-beta2", + "2.1.0-beta3", + "2.1.0-rc1", + "2.1.1", + "2.1.1-beta1", + "2.1.1-rc1", + "2.1.1-rc2", + "2.1.2", + "2.1.3", + "2.1.4", + "2.2.0", + "2.2.1", + "2.2.2", + "2.2.3", + "2.2.4", + "3.0.0", + "3.0.0-alpha1", + "3.0.0-beta1", + "3.0.0-rc1", + "3.1.0", + "3.1.1", + "3.2.0", + "3.2.1", + "3.3.0", + "3.3.1"); List result = indyConnector.getVersionsOfNpm("jquery"); assertEquals(jqueryVersions.size(), result.size()); assertTrue(result.containsAll(jqueryVersions)); diff --git a/testsuite/src/test/java/org/jboss/da/test/server/communication/SCMRemoteTestIT.java b/testsuite/src/test/java/org/jboss/da/test/server/communication/SCMRemoteTestIT.java index 109bce2a2..b0bbddb42 100644 --- a/testsuite/src/test/java/org/jboss/da/test/server/communication/SCMRemoteTestIT.java +++ b/testsuite/src/test/java/org/jboss/da/test/server/communication/SCMRemoteTestIT.java @@ -1,33 +1,31 @@ package org.jboss.da.test.server.communication; -import org.jboss.da.test.server.AbstractServerTest; - -import javax.inject.Inject; - +import io.quarkus.test.junit.QuarkusTest; +import jakarta.inject.Inject; import org.apache.maven.scm.ScmException; -import org.jboss.arquillian.junit.Arquillian; import org.jboss.da.communication.indy.model.GAVDependencyTree; import org.jboss.da.communication.pom.PomAnalysisException; import org.jboss.da.communication.scm.api.SCMConnector; import org.jboss.da.model.rest.GAV; - -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; - -import org.junit.Test; -import org.junit.runner.RunWith; +import org.jboss.da.test.server.AbstractServerTest; +import org.junit.jupiter.api.Test; import java.util.Collections; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertThrows; +import static org.junit.jupiter.api.Assertions.assertTrue; + /** * * @author Honza Brázdil <jbrazdil@redhat.com> */ -@RunWith(Arquillian.class) +@QuarkusTest public class SCMRemoteTestIT extends AbstractServerTest { @Inject - private SCMConnector scmConnector; + SCMConnector scmConnector; @Test public void testGetDependencyTreeOfRevision() throws ScmException, PomAnalysisException { @@ -40,34 +38,38 @@ public void testGetDependencyTreeOfRevision() throws ScmException, PomAnalysisEx GAVDependencyTree tree = scmConnector .getDependencyTreeOfRevision(scmUrl, revision, "", Collections.emptyList()); - assertTrue(tree.getGav().equals(new GAV("org.jboss.da", "parent", "0.3.0"))); + assertEquals(new GAV("org.jboss.da", "parent", "0.3.0"), tree.getGav()); assertTrue(tree.getDependencies().isEmpty()); // with a slash in the pomPath GAVDependencyTree treeWithSlash = scmConnector .getDependencyTreeOfRevision(scmUrl, revision, "/", Collections.emptyList()); - assertTrue(treeWithSlash.getGav().equals(new GAV("org.jboss.da", "parent", "0.3.0"))); + assertEquals(new GAV("org.jboss.da", "parent", "0.3.0"), treeWithSlash.getGav()); assertTrue(treeWithSlash.getDependencies().isEmpty()); // with application in the pomPath GAVDependencyTree treeApplication = scmConnector .getDependencyTreeOfRevision(scmUrl, revision, "application", Collections.emptyList()); - assertTrue(treeApplication.getGav().equals(new GAV("org.jboss.da", "application", "0.3.0"))); + assertEquals(new GAV("org.jboss.da", "application", "0.3.0"), treeApplication.getGav()); assertFalse(treeApplication.getDependencies().isEmpty()); } - @Test(expected = ScmException.class) - public void testDependencyTreeOfRevisionWrongRevision() throws ScmException, PomAnalysisException { + @Test + public void testDependencyTreeOfRevisionWrongRevision() { String scmUrl = "https://github.com/project-ncl/does_not_exist.git"; - scmConnector.getDependencyTreeOfRevision(scmUrl, "", "", Collections.emptyList()); + assertThrows( + ScmException.class, + () -> scmConnector.getDependencyTreeOfRevision(scmUrl, "", "", Collections.emptyList())); } - @Test(expected = ScmException.class) - public void testDependencyTreeOfRevisionWrongRevision2() throws ScmException, PomAnalysisException { + @Test + public void testDependencyTreeOfRevisionWrongRevision2() { String scmUrl = "https://github.com/project-ncl/dependency-analysis.git"; String revision = "doesnotexist"; - scmConnector.getDependencyTreeOfRevision(scmUrl, revision, "", Collections.emptyList()); + assertThrows( + ScmException.class, + () -> scmConnector.getDependencyTreeOfRevision(scmUrl, revision, "", Collections.emptyList())); } } diff --git a/testsuite/src/test/java/org/jboss/da/test/server/scm/SCMTestIT.java b/testsuite/src/test/java/org/jboss/da/test/server/scm/SCMTestIT.java index 78890e695..17ad8d8c4 100644 --- a/testsuite/src/test/java/org/jboss/da/test/server/scm/SCMTestIT.java +++ b/testsuite/src/test/java/org/jboss/da/test/server/scm/SCMTestIT.java @@ -1,14 +1,15 @@ package org.jboss.da.test.server.scm; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertTrue; +import io.quarkus.test.junit.QuarkusTest; import org.apache.commons.io.FileUtils; import org.apache.maven.scm.ScmException; import org.jboss.da.scm.api.SCMType; import org.jboss.da.scm.impl.ScmFacade; -import org.junit.Ignore; -import org.junit.Test; +import org.junit.jupiter.api.Disabled; +import org.junit.jupiter.api.Test; import java.io.BufferedReader; import java.io.InputStreamReader; @@ -19,6 +20,7 @@ import java.nio.file.Paths; import java.util.Scanner; +@QuarkusTest public class SCMTestIT { private void testDaGitClone(String scmUrl) throws Exception { @@ -51,7 +53,7 @@ private void testDaGitClone(String scmUrl) throws Exception { } @Test - @Ignore("Github discontinued support for git://") + @Disabled("Github discontinued support for git://") public void shouldCloneGitRepository_Git() throws Exception { testDaGitClone("git://github.com/project-ncl/dependency-analysis.git"); } @@ -110,7 +112,7 @@ public void shouldBeAbleToCloneGitTag() throws Exception { } } - @Ignore + @Disabled @Test public void shouldCloneSvnRepository() throws Exception { Path tempDir = Files.createTempDirectory("da_temp_svn_checkout"); diff --git a/testsuite/src/test/replacements/communication/META-INF/beans.xml b/testsuite/src/test/replacements/communication/META-INF/beans.xml deleted file mode 100644 index 71cb733ab..000000000 --- a/testsuite/src/test/replacements/communication/META-INF/beans.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - org.jboss.da.communication.auth.impl.JAASAuthenticatorService - - diff --git a/testsuite/src/test/replacements/reports-backend/META-INF/beans.xml b/testsuite/src/test/replacements/reports-backend/META-INF/beans.xml deleted file mode 100644 index 71cb733ab..000000000 --- a/testsuite/src/test/replacements/reports-backend/META-INF/beans.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - org.jboss.da.communication.auth.impl.JAASAuthenticatorService - - diff --git a/testsuite/src/test/replacements/reports-rest/WEB-INF/beans.xml b/testsuite/src/test/replacements/reports-rest/WEB-INF/beans.xml deleted file mode 100644 index 71cb733ab..000000000 --- a/testsuite/src/test/replacements/reports-rest/WEB-INF/beans.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - org.jboss.da.communication.auth.impl.JAASAuthenticatorService - - diff --git a/testsuite/src/test/replacements/reports-rest/WEB-INF/web.xml b/testsuite/src/test/replacements/reports-rest/WEB-INF/web.xml deleted file mode 100644 index c8f2e3e3d..000000000 --- a/testsuite/src/test/replacements/reports-rest/WEB-INF/web.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - reports-rest - - - - - All Access for users on GET - /rest/* - GET - OPTIONS - - - - - - - Access to blacklist for Authorized users on GET - /rest/v-${version.reports.rest}/reports/* - POST - - - - - - - Authorized users Access - /rest/* - DELETE - PUT - TRACE - POST - - - * - - - - - BASIC - ApplicationRealm - - - - * - - - - - cross-origin - org.eclipse.jetty.servlets.CrossOriginFilter - - allowedMethods - GET,POST,OPTIONS,HEAD - - - allowedHeaders - X-Requested-With,Content-Type,Accept,Origin,Authorization - - - chainPreflight - false - - - - cross-origin - ${corsUrlPattern} - - diff --git a/testsuite/src/test/resources/META-INF/application.xml b/testsuite/src/test/resources/META-INF/application.xml deleted file mode 100644 index 3ed90ab64..000000000 --- a/testsuite/src/test/resources/META-INF/application.xml +++ /dev/null @@ -1,35 +0,0 @@ - - - - Dependency-Analysis testsuite - Dependency-Analysis testsuite - - - common.jar - - - communication.jar - - - source-code-manager.jar - - - reports-model.jar - - - reports-backend.jar - - - - reports-rest.war - testsuite - - - - testsuite.jar - - lib - diff --git a/testsuite/src/test/resources/META-INF/beans.xml b/testsuite/src/test/resources/META-INF/beans.xml deleted file mode 100644 index a695c672f..000000000 --- a/testsuite/src/test/resources/META-INF/beans.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - diff --git a/testsuite/src/test/resources/META-INF/jboss-deployment-structure.xml b/testsuite/src/test/resources/META-INF/jboss-deployment-structure.xml deleted file mode 100644 index c99cfca56..000000000 --- a/testsuite/src/test/resources/META-INF/jboss-deployment-structure.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/testsuite/src/test/resources/META-INF/persistence.xml b/testsuite/src/test/resources/META-INF/persistence.xml deleted file mode 100644 index 65f2732d1..000000000 --- a/testsuite/src/test/resources/META-INF/persistence.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - org.hibernate.jpa.HibernatePersistenceProvider - java:jboss/datasources/ExampleDS - org.jboss.da.listings.api.model.BlackArtifact - org.jboss.da.listings.api.model.GA - - - - - - - - - diff --git a/testsuite/src/test/resources/application.properties b/testsuite/src/test/resources/application.properties new file mode 100644 index 000000000..f10a80038 --- /dev/null +++ b/testsuite/src/test/resources/application.properties @@ -0,0 +1,18 @@ + +# Datasource +quarkus.datasource.db-kind=h2 +quarkus.datasource.jdbc.url=jdbc:h2:mem:test +quarkus.datasource.username=admin +quarkus.datasource.password=admin + +# Hibernate / JPA +# Other hibernate configuration in application.yaml +quarkus.hibernate-orm.dialect=org.hibernate.dialect.H2Dialect + +# Testing +quarkus.http.test-port=8083 + +# Logging +quarkus.log.level=INFO +#quarkus.log.console.level=DEBUG +#quarkus.log.console.format=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%c] (%t) %s%e%n diff --git a/testsuite/src/test/resources/arquillian.xml b/testsuite/src/test/resources/arquillian.xml deleted file mode 100644 index 74792692f..000000000 --- a/testsuite/src/test/resources/arquillian.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - 8180 - MANAGED - - - ${jboss.home} - -Xmx1024m -XX:MaxPermSize=512m -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n - -Djboss.socket.binding.port-offset=100 - -Djboss.management.http.port=9054 -DtestMode - - 127.0.0.1 - ${jboss.port} - true - - - - /tmp/test-PNC/ - - diff --git a/testsuite/src/test/resources/da-config.json b/testsuite/src/test/resources/da-config.json new file mode 100644 index 000000000..cb2248915 --- /dev/null +++ b/testsuite/src/test/resources/da-config.json @@ -0,0 +1,44 @@ +{ + "@class": "ModuleConfigJson", + "name": "pnc-config", + "configs": [ + { + "@module-group": "global", + "indyUrl": "http://localhost:8081", + "pncUrl": "http://localhost:8081/pnc-rest/v2", + "config": [ + ] + }, + { + "@module-group": "pnc", + "configs": [] + }, + { + "@module-group": "da", + "configs": [ + { + "@module-config": "da-config", + "indyGroup": "test-DA", + "indyGroupPublic": "DApublic", + "indyRequestTimeout": 600000, + "modes": [ + { + "name": "PERSISTENT", + "suffixes": [ "redhat" ], + "incrementSuffix": "redhat", + "buildCategories": [ "STANDARD" ], + "artifactQualities": [ "NEW", "VERIFIED", "TESTED"] + }, + { + "name": "TEMPORARY", + "suffixes": ["temporary-redhat", "redhat" ], + "incrementSuffix": "temporary-redhat", + "buildCategories": [ "STANDARD" ], + "artifactQualities": [ "NEW", "VERIFIED", "TESTED", "TEMPORARY" ] + } + ] + } + ] + } + ] +} diff --git a/testsuite/src/test/rest/v-1/expectedResponse/lookup/maven/versions/guava13Closest.json b/testsuite/src/test/rest/v-1/expectedResponse/lookup/maven/versions/guava13Closest.json index 61a7f1a7b..e58954ed8 100644 --- a/testsuite/src/test/rest/v-1/expectedResponse/lookup/maven/versions/guava13Closest.json +++ b/testsuite/src/test/rest/v-1/expectedResponse/lookup/maven/versions/guava13Closest.json @@ -14,7 +14,7 @@ "18.0.0.redhat-1", "19.0.0.redhat-1", "20.0.0.redhat-1", - "25.0.0.redhat-1", + "25.0.0.redhat-1" ] } ]