diff --git a/.github/native-tests.json b/.github/native-tests.json index 68736ec9e9ef6b..fbd8e62dbe16ad 100644 --- a/.github/native-tests.json +++ b/.github/native-tests.json @@ -117,7 +117,7 @@ { "category": "Misc4", "timeout": 130, - "test-modules": "picocli-native, gradle, micrometer-mp-metrics, micrometer-prometheus, logging-json, jaxp, jaxb, opentelemetry, opentelemetry-jdbc-instrumentation, opentelemetry-redis-instrumentation, webjars-locator", + "test-modules": "picocli-native, gradle, micrometer-mp-metrics, micrometer-prometheus, logging-json, jaxp, jaxb, opentelemetry, opentelemetry-jdbc-instrumentation, opentelemetry-redis-instrumentation, web-dependency-locator", "os-name": "ubuntu-latest" }, { diff --git a/core/deployment/src/main/java/io/quarkus/deployment/builditem/BytecodeTransformerBuildItem.java b/core/deployment/src/main/java/io/quarkus/deployment/builditem/BytecodeTransformerBuildItem.java index adfdbec20bf84f..ec968f494b8b09 100644 --- a/core/deployment/src/main/java/io/quarkus/deployment/builditem/BytecodeTransformerBuildItem.java +++ b/core/deployment/src/main/java/io/quarkus/deployment/builditem/BytecodeTransformerBuildItem.java @@ -10,13 +10,6 @@ public final class BytecodeTransformerBuildItem extends MultiBuildItem { - /** - * If this is true it means the class should be loaded eagerly by a thread pool in dev mode - * on multithreaded systems. - *

- * Transformation is expensive, so doing it this way can speed up boot time. - */ - final boolean eager; final String classToTransform; final BiFunction visitorFunction; @@ -75,7 +68,6 @@ public BytecodeTransformerBuildItem(boolean eager, String classToTransform, BiFunction visitorFunction, Set requireConstPoolEntry, boolean cacheable) { Objects.requireNonNull(visitorFunction, "visitorFunction"); - this.eager = eager; this.classToTransform = classToTransform; this.visitorFunction = visitorFunction; this.requireConstPoolEntry = requireConstPoolEntry; @@ -87,7 +79,6 @@ public BytecodeTransformerBuildItem(boolean eager, String classToTransform, } public BytecodeTransformerBuildItem(Builder builder) { - this.eager = builder.eager; this.classToTransform = builder.classToTransform; this.visitorFunction = builder.visitorFunction; this.requireConstPoolEntry = builder.requireConstPoolEntry; @@ -113,8 +104,9 @@ public Set getRequireConstPoolEntry() { return requireConstPoolEntry; } + @Deprecated public boolean isEager() { - return eager; + return false; } public boolean isCacheable() { @@ -161,7 +153,6 @@ public static class Builder { private String classToTransform; private BiFunction visitorFunction; private Set requireConstPoolEntry = null; - private boolean eager = false; private boolean cacheable = false; private int classReaderOptions = 0; private int priority = 0; @@ -191,8 +182,8 @@ public Builder setRequireConstPoolEntry(Set requireConstPoolEntry) { return this; } + @Deprecated public Builder setEager(boolean eager) { - this.eager = eager; return this; } diff --git a/core/deployment/src/main/java/io/quarkus/deployment/builditem/TransformedClassesBuildItem.java b/core/deployment/src/main/java/io/quarkus/deployment/builditem/TransformedClassesBuildItem.java index 551b778d6a5370..2e8715f3f641af 100644 --- a/core/deployment/src/main/java/io/quarkus/deployment/builditem/TransformedClassesBuildItem.java +++ b/core/deployment/src/main/java/io/quarkus/deployment/builditem/TransformedClassesBuildItem.java @@ -46,13 +46,18 @@ public static class TransformedClass { */ private final byte[] data; private final String fileName; - private final boolean eager; + @Deprecated public TransformedClass(String className, byte[] data, String fileName, boolean eager) { this.className = className; this.data = data; this.fileName = fileName; - this.eager = eager; + } + + public TransformedClass(String className, byte[] data, String fileName) { + this.className = className; + this.data = data; + this.fileName = fileName; } public byte[] getData() { @@ -67,8 +72,9 @@ public String getClassName() { return className; } + @Deprecated public boolean isEager() { - return eager; + return false; } @Override diff --git a/core/deployment/src/main/java/io/quarkus/deployment/steps/ClassTransformingBuildStep.java b/core/deployment/src/main/java/io/quarkus/deployment/steps/ClassTransformingBuildStep.java index 363339d88abdc4..45eca2642b7af3 100644 --- a/core/deployment/src/main/java/io/quarkus/deployment/steps/ClassTransformingBuildStep.java +++ b/core/deployment/src/main/java/io/quarkus/deployment/steps/ClassTransformingBuildStep.java @@ -94,7 +94,6 @@ TransformedClassesBuildItem handleClassTransformation(List noConstScanning = new HashSet<>(); Map> constScanning = new HashMap<>(); - Set eager = new HashSet<>(); Set nonCacheable = new HashSet<>(); Map classReaderOptions = new HashMap<>(); for (BytecodeTransformerBuildItem i : bytecodeTransformerBuildItems) { @@ -106,9 +105,6 @@ TransformedClassesBuildItem handleClassTransformation(List new HashSet<>()) .addAll(i.getRequireConstPoolEntry()); } - if (i.isEager()) { - eager.add(i.getClassToTransform()); - } if (!i.isCacheable()) { nonCacheable.add(i.getClassToTransform()); } @@ -164,7 +160,7 @@ public byte[] apply(String className, byte[] originalBytes) { classReaderOptions.getOrDefault(className, 0)); TransformedClassesBuildItem.TransformedClass transformedClass = new TransformedClassesBuildItem.TransformedClass( className, data, - classFileName, eager.contains(className)); + classFileName); return transformedClass.getData(); } else { return originalBytes; @@ -241,7 +237,7 @@ public TransformedClassesBuildItem.TransformedClass call() throws Exception { classReaderOptions.getOrDefault(className, 0)); TransformedClassesBuildItem.TransformedClass transformedClass = new TransformedClassesBuildItem.TransformedClass( className, data, - classFileName, eager.contains(className)); + classFileName); if (cacheable && launchModeBuildItem.getLaunchMode() == LaunchMode.DEVELOPMENT && classData != null) { transformedClassesCache.put(className, transformedClass); diff --git a/core/deployment/src/main/java/io/quarkus/runner/bootstrap/StartupActionImpl.java b/core/deployment/src/main/java/io/quarkus/runner/bootstrap/StartupActionImpl.java index fc195c8eee40af..3cb39c10b387fc 100644 --- a/core/deployment/src/main/java/io/quarkus/runner/bootstrap/StartupActionImpl.java +++ b/core/deployment/src/main/java/io/quarkus/runner/bootstrap/StartupActionImpl.java @@ -10,7 +10,6 @@ import java.nio.file.Files; import java.nio.file.StandardOpenOption; import java.util.HashMap; -import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Set; @@ -60,8 +59,7 @@ public StartupActionImpl(CuratedApplication curatedApplication, BuildResult buil this.devServicesProperties = extractDevServicesProperties(buildResult); this.runtimeApplicationShutdownBuildItems = buildResult.consumeMulti(RuntimeApplicationShutdownBuildItem.class); - Set eagerClasses = new HashSet<>(); - Map transformedClasses = extractTransformers(buildResult, eagerClasses); + Map transformedClasses = extractTransformedClasses(buildResult); QuarkusClassLoader baseClassLoader = curatedApplication.getBaseRuntimeClassLoader(); QuarkusClassLoader runtimeClassLoader; @@ -347,16 +345,13 @@ private static Map extractDevServicesProperties(BuildResult buil return new HashMap<>(result.getConfig()); } - private static Map extractTransformers(BuildResult buildResult, Set eagerClasses) { + private static Map extractTransformedClasses(BuildResult buildResult) { Map ret = new HashMap<>(); TransformedClassesBuildItem transformers = buildResult.consume(TransformedClassesBuildItem.class); for (Set i : transformers.getTransformedClassesByJar().values()) { for (TransformedClassesBuildItem.TransformedClass clazz : i) { if (clazz.getData() != null) { ret.put(clazz.getFileName(), clazz.getData()); - if (clazz.isEager()) { - eagerClasses.add(clazz.getClassName()); - } } } } diff --git a/extensions/arc/deployment/src/main/java/io/quarkus/arc/deployment/SplitPackageProcessor.java b/extensions/arc/deployment/src/main/java/io/quarkus/arc/deployment/SplitPackageProcessor.java index f68b4256900b6d..998c040af65d45 100644 --- a/extensions/arc/deployment/src/main/java/io/quarkus/arc/deployment/SplitPackageProcessor.java +++ b/extensions/arc/deployment/src/main/java/io/quarkus/arc/deployment/SplitPackageProcessor.java @@ -39,16 +39,6 @@ public class SplitPackageProcessor { private static final Logger LOGGER = Logger.getLogger(SplitPackageProcessor.class); - private static final Predicate IGNORE_PACKAGE = new Predicate<>() { - - @Override - public boolean test(String packageName) { - // Remove the elements from this list when the original issue is fixed - // so that we can detect further issues. - return packageName.startsWith("io.fabric8.kubernetes"); - } - }; - @BuildStep void splitPackageDetection(ApplicationArchivesBuildItem archivesBuildItem, ArcConfig config, @@ -82,9 +72,6 @@ void splitPackageDetection(ApplicationArchivesBuildItem archivesBuildItem, // - "com.me.app.sub" found in [archiveA, archiveB] StringBuilder splitPackagesWarning = new StringBuilder(); for (String packageName : packageToArchiveMap.keySet()) { - if (IGNORE_PACKAGE.test(packageName)) { - continue; - } // skip packages based on pre-built predicates boolean skipEvaluation = false; diff --git a/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmProcessor.java b/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmProcessor.java index f4d603e7a3a740..54b5f4de5f5aa1 100644 --- a/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmProcessor.java +++ b/extensions/hibernate-orm/deployment/src/main/java/io/quarkus/hibernate/orm/deployment/HibernateOrmProcessor.java @@ -1217,7 +1217,11 @@ private void enhanceEntities(final JpaModelBuildItem jpaModel, BuildProducer additionalClasses) { HibernateEntityEnhancer hibernateEntityEnhancer = new HibernateEntityEnhancer(); for (String i : jpaModel.getManagedClassNames()) { - transformers.produce(new BytecodeTransformerBuildItem(true, i, hibernateEntityEnhancer, true)); + + transformers.produce(new BytecodeTransformerBuildItem.Builder() + .setClassToTransform(i) + .setVisitorFunction(hibernateEntityEnhancer) + .setCacheable(true).build()); } Set additionalClassNames = new HashSet<>(); for (AdditionalJpaModelBuildItem additionalJpaModel : additionalJpaModelBuildItems) { diff --git a/extensions/panache/hibernate-orm-panache/deployment/src/main/java/io/quarkus/hibernate/orm/panache/deployment/PanacheHibernateResourceProcessor.java b/extensions/panache/hibernate-orm-panache/deployment/src/main/java/io/quarkus/hibernate/orm/panache/deployment/PanacheHibernateResourceProcessor.java index 41064ad0fb4665..a77e10b89193af 100644 --- a/extensions/panache/hibernate-orm-panache/deployment/src/main/java/io/quarkus/hibernate/orm/panache/deployment/PanacheHibernateResourceProcessor.java +++ b/extensions/panache/hibernate-orm-panache/deployment/src/main/java/io/quarkus/hibernate/orm/panache/deployment/PanacheHibernateResourceProcessor.java @@ -119,7 +119,7 @@ void build( for (PanacheEntityClassBuildItem entityClass : entityClasses) { String entityClassName = entityClass.get().name().toString(); modelClasses.add(entityClassName); - transformers.produce(new BytecodeTransformerBuildItem(true, entityClassName, entityOperationsEnhancer)); + transformers.produce(new BytecodeTransformerBuildItem(entityClassName, entityOperationsEnhancer)); } panacheEntities.addAll(modelClasses); diff --git a/extensions/panache/hibernate-reactive-panache/deployment/src/main/java/io/quarkus/hibernate/reactive/panache/common/deployment/PanacheHibernateResourceProcessor.java b/extensions/panache/hibernate-reactive-panache/deployment/src/main/java/io/quarkus/hibernate/reactive/panache/common/deployment/PanacheHibernateResourceProcessor.java index 4c3b8de770e1a6..1467d4f43a0c35 100644 --- a/extensions/panache/hibernate-reactive-panache/deployment/src/main/java/io/quarkus/hibernate/reactive/panache/common/deployment/PanacheHibernateResourceProcessor.java +++ b/extensions/panache/hibernate-reactive-panache/deployment/src/main/java/io/quarkus/hibernate/reactive/panache/common/deployment/PanacheHibernateResourceProcessor.java @@ -118,7 +118,7 @@ void build(CombinedIndexBuildItem index, ReactiveJavaJpaTypeBundle.BUNDLE); for (PanacheEntityClassBuildItem entityClass : entityClasses) { String entityClassName = entityClass.get().name().toString(); - transformers.produce(new BytecodeTransformerBuildItem(true, entityClassName, entityOperationsEnhancer)); + transformers.produce(new BytecodeTransformerBuildItem(entityClassName, entityOperationsEnhancer)); } } diff --git a/extensions/panache/panache-hibernate-common/deployment/src/main/java/io/quarkus/panache/common/deployment/PanacheHibernateCommonResourceProcessor.java b/extensions/panache/panache-hibernate-common/deployment/src/main/java/io/quarkus/panache/common/deployment/PanacheHibernateCommonResourceProcessor.java index c8c3966ea5fc3e..b764e7df152b02 100644 --- a/extensions/panache/panache-hibernate-common/deployment/src/main/java/io/quarkus/panache/common/deployment/PanacheHibernateCommonResourceProcessor.java +++ b/extensions/panache/panache-hibernate-common/deployment/src/main/java/io/quarkus/panache/common/deployment/PanacheHibernateCommonResourceProcessor.java @@ -106,7 +106,7 @@ void replaceFieldAccesses(CombinedIndexBuildItem index, PanacheJpaEntityAccessorsEnhancer entityAccessorsEnhancer = new PanacheJpaEntityAccessorsEnhancer(index.getIndex(), modelInfo); for (String entityClassName : entitiesWithExternallyAccessibleFields) { - transformers.produce(new BytecodeTransformerBuildItem(true, entityClassName, entityAccessorsEnhancer)); + transformers.produce(new BytecodeTransformerBuildItem(entityClassName, entityAccessorsEnhancer)); } // Replace field access in application code with calls to accessors diff --git a/extensions/resteasy-classic/resteasy-server-common/deployment/src/main/java/io/quarkus/resteasy/server/common/deployment/ResteasyServerCommonProcessor.java b/extensions/resteasy-classic/resteasy-server-common/deployment/src/main/java/io/quarkus/resteasy/server/common/deployment/ResteasyServerCommonProcessor.java index 44d29016987f44..3dedbf5ee5108c 100644 --- a/extensions/resteasy-classic/resteasy-server-common/deployment/src/main/java/io/quarkus/resteasy/server/common/deployment/ResteasyServerCommonProcessor.java +++ b/extensions/resteasy-classic/resteasy-server-common/deployment/src/main/java/io/quarkus/resteasy/server/common/deployment/ResteasyServerCommonProcessor.java @@ -755,7 +755,7 @@ private static void generateDefaultConstructors(BuildProducer() { + .produce(new BytecodeTransformerBuildItem(name, new BiFunction() { @Override public ClassVisitor apply(String className, ClassVisitor classVisitor) { ClassVisitor cv = new ClassVisitor(Gizmo.ASM_API_VERSION, classVisitor) { diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml index 57f966d6d7b6a2..355b11472b6ae4 100644 --- a/integration-tests/pom.xml +++ b/integration-tests/pom.xml @@ -340,7 +340,7 @@ simple with space picocli picocli-native - webjars-locator + web-dependency-locator devmode ide-launcher elasticsearch-rest-client diff --git a/integration-tests/webjars-locator/pom.xml b/integration-tests/web-dependency-locator/pom.xml similarity index 93% rename from integration-tests/webjars-locator/pom.xml rename to integration-tests/web-dependency-locator/pom.xml index f739130a51c0dc..0dff717428ee24 100644 --- a/integration-tests/webjars-locator/pom.xml +++ b/integration-tests/web-dependency-locator/pom.xml @@ -10,9 +10,9 @@ 999-SNAPSHOT - quarkus-integration-test-webjars-locator + quarkus-integration-test-web-dependency-locator - Quarkus - Integration Tests - WebJar Locator + Quarkus - Integration Tests - Web Dependency Locator @@ -27,7 +27,7 @@ io.quarkus - quarkus-webjars-locator + quarkus-web-dependency-locator org.webjars @@ -67,7 +67,7 @@ io.quarkus - quarkus-webjars-locator-deployment + quarkus-web-dependency-locator-deployment ${project.version} pom test diff --git a/integration-tests/webjars-locator/src/main/resources/application.properties b/integration-tests/web-dependency-locator/src/main/resources/application.properties similarity index 100% rename from integration-tests/webjars-locator/src/main/resources/application.properties rename to integration-tests/web-dependency-locator/src/main/resources/application.properties diff --git a/integration-tests/webjars-locator/src/test/java/io/quarkus/it/webjar/locator/WebJarResourceIT.java b/integration-tests/web-dependency-locator/src/test/java/io/quarkus/it/webjar/locator/WebJarResourceIT.java similarity index 100% rename from integration-tests/webjars-locator/src/test/java/io/quarkus/it/webjar/locator/WebJarResourceIT.java rename to integration-tests/web-dependency-locator/src/test/java/io/quarkus/it/webjar/locator/WebJarResourceIT.java diff --git a/integration-tests/webjars-locator/src/test/java/io/quarkus/it/webjar/locator/WebJarResourceTest.java b/integration-tests/web-dependency-locator/src/test/java/io/quarkus/it/webjar/locator/WebJarResourceTest.java similarity index 100% rename from integration-tests/webjars-locator/src/test/java/io/quarkus/it/webjar/locator/WebJarResourceTest.java rename to integration-tests/web-dependency-locator/src/test/java/io/quarkus/it/webjar/locator/WebJarResourceTest.java diff --git a/integration-tests/webjars-locator/src/test/resources/application.properties b/integration-tests/web-dependency-locator/src/test/resources/application.properties similarity index 100% rename from integration-tests/webjars-locator/src/test/resources/application.properties rename to integration-tests/web-dependency-locator/src/test/resources/application.properties