From 5af68f1fa99f168fab790589a6ba6d8d735040eb Mon Sep 17 00:00:00 2001 From: Daniel Fiala Date: Wed, 10 Apr 2024 23:01:52 +0200 Subject: [PATCH] feat(grpc): added grpc transcoding --- .github/native-tests.json | 20 +- .github/quarkus-github-bot.yml | 2 + .github/virtual-threads-tests.json | 6 + .github/workflows/ci-actions-incremental.yml | 32 +- .../workflows/native-it-selected-graalvm.yml | 396 ++++++ .github/workflows/preview.yml | 30 +- .github/workflows/release-build.yml | 6 +- .mvn/extensions.xml | 2 +- bom/application/pom.xml | 101 +- bom/dev-ui/pom.xml | 4 +- core/deployment/pom.xml | 24 + .../quarkus/deployment/BootstrapConfig.java | 9 + .../java/io/quarkus/deployment/Feature.java | 1 + .../BytecodeTransformerBuildItem.java | 15 +- .../DevServicesSharedNetworkBuildItem.java | 50 +- .../TransformedClassesBuildItem.java | 12 +- .../NativeImageResourceBuildItem.java | 6 +- .../BuildTimeConfigurationReader.java | 2 + .../configuration/ConfigCompatibility.java | 24 +- .../console/StartupLogCompressor.java | 19 +- .../dev/RuntimeUpdatesProcessor.java | 27 +- .../devservices/GlobalDevServicesConfig.java | 6 + .../pkg/steps/JarResultBuildStep.java | 64 +- .../steps/ClassTransformingBuildStep.java | 8 +- .../steps/NativeImageResourceConfigStep.java | 7 +- .../runner/bootstrap/StartupActionImpl.java | 9 +- .../CascadingConditionalDependenciesTest.java | 22 +- .../ConditionalDependencyScenarioTwoTest.java | 55 +- ...onalDependencyWithSingleConditionTest.java | 35 +- ...tionalDependencyWithTwoConditionsTest.java | 16 +- ...itionMatchesConditionalDependencyTest.java | 38 + .../pkg/steps/JarResultBuildStepTest.java | 34 + .../BootstrapFromOriginalJarTestBase.java | 76 +- .../DeploymentDependencyConvergenceTest.java | 68 + .../runnerjar/ReloadableFlagsTest.java | 71 + .../io/quarkus/dev/console/BasicConsole.java | 2 +- .../quarkus/dev/console/QuarkusConsole.java | 2 +- .../io/quarkus/dev/console/TerminalUtils.java | 27 + core/processor/pom.xml | 11 + .../ExtensionAnnotationProcessor.java | 342 +++-- .../ExtensionAnnotationProcessorTest.java | 76 + .../processor/fs/CustomMemoryFileSystem.java | 158 ++ .../fs/CustomMemoryFileSystemProvider.java | 152 ++ .../java.nio.file.spi.FileSystemProvider | 1 + .../deployment/annotations/BuildStep.java | 13 + .../org/acme/examples/ArbitraryBuildItem.java | 6 + .../org/acme/examples/ClassWithBuildStep.java | 10 + .../acme/examples/ClassWithoutBuildStep.java | 6 + .../runtime/annotations/RuntimeInit.java | 14 + .../runtime/annotations/StaticInit.java | 14 + .../quarkus/runtime/util/EnumerationUtil.java | 69 + devtools/bom-descriptor-json/pom.xml | 28 +- .../distribution/jreleaser-maintenance.yml | 2 +- .../cli/distribution/jreleaser-preview.yml | 2 +- devtools/cli/distribution/jreleaser.yml | 2 +- .../GradleApplicationModelBuilder.java | 6 +- devtools/gradle/settings.gradle.kts | 2 +- .../io/quarkus/maven/DependencyTreeMojo.java | 37 +- .../main/java/io/quarkus/maven/DevMojo.java | 2 + .../maven/QuarkusBootstrapProvider.java | 27 +- .../maven/BasicDependencyTreeTestBase.java | 26 + .../ConditionalDependencyGraphMojoTest.java | 53 + .../ConditionalDependencyTreeMojoTest.java | 48 + .../maven/DependencyTreeMojoTestBase.java | 71 +- .../maven/DevDependencyTreeMojoTest.java | 2 +- .../maven/ProdDependencyTreeMojoTest.java | 2 +- .../maven/TestDependencyTreeMojoTest.java | 2 +- .../app-with-conditional-deps-1.jar.prod | 15 + .../app-with-conditional-graph-1.jar.prod | 30 + .../src/test/resources/test-app-1.jar.dev | 26 +- .../src/test/resources/test-app-1.jar.prod | 24 +- .../src/test/resources/test-app-1.jar.test | 28 +- docs/pom.xml | 28 +- .../asciidoc/cache-infinispan-reference.adoc | 138 ++ docs/src/main/asciidoc/cassandra.adoc | 2 +- docs/src/main/asciidoc/config-yaml.adoc | 3 +- .../main/asciidoc/deploying-to-openshift.adoc | 2 +- docs/src/main/asciidoc/dev-services.adoc | 8 + .../main/asciidoc/hibernate-orm-panache.adoc | 4 +- docs/src/main/asciidoc/http-reference.adoc | 68 +- .../asciidoc/images/web-bundle-transition.png | Bin 0 -> 105564 bytes .../asciidoc/infinispan-client-reference.adoc | 41 +- docs/src/main/asciidoc/javascript/config.js | 6 +- docs/src/main/asciidoc/kafka.adoc | 2 +- docs/src/main/asciidoc/logging.adoc | 32 +- .../observability-devservices-lgtm.adoc | 282 ++++ .../asciidoc/observability-devservices.adoc | 42 + docs/src/main/asciidoc/opentelemetry.adoc | 20 +- docs/src/main/asciidoc/qute-reference.adoc | 42 +- docs/src/main/asciidoc/qute.adoc | 55 +- docs/src/main/asciidoc/rest-client.adoc | 209 ++- docs/src/main/asciidoc/security-jdbc.adoc | 6 +- ...rity-oidc-bearer-token-authentication.adoc | 60 + ...ecurity-oidc-code-flow-authentication.adoc | 31 +- ...urity-openid-connect-client-reference.adoc | 9 + .../security-openid-connect-providers.adoc | 14 +- .../asciidoc/smallrye-fault-tolerance.adoc | 4 +- .../asciidoc/smallrye-graphql-client.adoc | 13 + docs/src/main/asciidoc/smallrye-graphql.adoc | 11 +- docs/src/main/asciidoc/spring-data-jpa.adoc | 2 + docs/src/main/asciidoc/validation.adoc | 2 +- docs/src/main/asciidoc/web.adoc | 272 ++++ .../AssembleDownstreamDocumentation.java | 15 +- .../arc/deployment/ConfigBuildStep.java | 108 +- .../deployment/ConfigPropertyBuildItem.java | 36 +- .../arc/deployment/SplitPackageProcessor.java | 13 - .../arc/deployment/StartupBuildSteps.java | 8 +- .../arc/runtime/ConfigBeanCreator.java | 2 +- .../ConfigStaticInitCheckInterceptor.java | 13 +- .../runtime/caffeine/CaffeineCacheImpl.java | 3 - .../DevServicesDatasourceProcessor.java | 2 + .../devservices/common/ConfigureUtil.java | 11 + .../devservices/common/ContainerLocator.java | 26 + .../deployment/DB2DevServicesProcessor.java | 9 +- .../MariaDBDevServicesProcessor.java | 9 +- .../deployment/MSSQLDevServicesProcessor.java | 7 +- .../deployment/MySQLDevServicesProcessor.java | 9 +- .../OracleDevServicesProcessor.java | 9 +- .../PostgresqlDevServicesProcessor.java | 9 +- .../DevServicesElasticsearchProcessor.java | 4 +- .../jdbc/BcryptPasswordKeyMapperConfig.java | 10 +- .../security/ldap/DelegatingLdapContext.java | 13 +- .../ldap/QuarkusDirContextFactory.java | 11 +- extensions/grpc-common/runtime/pom.xml | 4 + extensions/grpc/api/pom.xml | 7 +- .../java/io/quarkus/grpc/GrpcTranscoding.java | 11 + .../grpc/GrpcTranscodingDescriptor.java | 21 + .../grpc/GrpcTranscodingMarshaller.java | 67 + .../quarkus/grpc/GrpcTranscodingMethod.java | 18 + .../quarkus/grpc/deployment/GrpcCodeGen.java | 35 +- .../grpc/deployment/GrpcClientBuildItem.java | 2 - .../quarkus/grpc/deployment/GrpcDotNames.java | 5 + .../deployment/GrpcTranscodingBuildItem.java | 27 + .../deployment/GrpcTranscodingProcessor.java | 127 ++ .../GrpcTranscodingServerBuildItem.java | 17 + .../resources/dev-ui/qwc-grpc-services.js | 73 +- .../MultiThreadedBlockingImplTest.java | 88 ++ .../proto/blocking/BlockingGrpcService.proto | 19 + extensions/grpc/protoc/pom.xml | 4 + .../protoc/plugin/MutinyGrpcGenerator.java | 79 +- .../main/resources/MutinyMarshalling.mustache | 44 + extensions/grpc/runtime/pom.xml | 6 +- .../grpc/runtime/GrpcServerRecorder.java | 7 +- .../runtime/config/GrpcTranscodingConfig.java | 20 + .../runtime/supports/SSLConfigHelper.java | 2 +- .../blocking/BlockingServerInterceptor.java | 2 +- .../transcoding/GrpcTranscodingBridge.java | 208 +++ .../transcoding/GrpcTranscodingContainer.java | 18 + .../transcoding/GrpcTranscodingHttpUtils.java | 84 ++ .../GrpcTranscodingMessageDecoder.java | 21 + .../GrpcTranscodingMessageEncoder.java | 45 + .../GrpcTranscodingMessageWriter.java | 79 + .../transcoding/GrpcTranscodingMetadata.java | 45 + .../transcoding/GrpcTranscodingMethod.java | 26 + .../GrpcTranscodingReadStreamAdapter.java | 51 + .../transcoding/GrpcTranscodingRecorder.java | 183 +++ .../transcoding/GrpcTranscodingRequest.java | 294 ++++ .../transcoding/GrpcTranscodingResponse.java | 241 ++++ .../transcoding/GrpcTranscodingServer.java | 139 ++ .../GrpcTranscodingWriteStreamAdapter.java | 49 + .../orm/deployment/HibernateOrmProcessor.java | 6 +- .../ArcConstraintValidatorFactoryImpl.java | 13 +- .../infinispan-cache/deployment/pom.xml | 94 ++ .../deployment/InfinispanCacheProcessor.java | 52 + .../src/main/resources/application.properties | 2 + .../cache/infinispan/InfinispanCacheTest.java | 355 +++++ ...y-application-infinispan-client.properties | 0 .../pom.xml | 5 +- extensions/infinispan-cache/runtime/pom.xml | 79 + .../runtime/CompositeCacheKeyMarshaller.java | 47 + .../runtime/CompositeKeyMarshallerBean.java | 30 + .../runtime/InfinispanCacheBuildRecorder.java | 70 + .../runtime/InfinispanCacheImpl.java | 181 +++ .../runtime/InfinispanCacheInfo.java | 23 + .../runtime/InfinispanCacheInfoBuilder.java | 42 + .../runtime/InfinispanCacheRuntimeConfig.java | 23 + .../InfinispanCachesBuildTimeConfig.java | 19 + .../runtime/InfinispanCachesConfig.java | 29 + .../resources/META-INF/quarkus-extension.yaml | 14 + .../infinispan/client/CacheInvalidate.java | 3 + .../infinispan/client/CacheInvalidateAll.java | 3 + .../infinispan/client/CacheResult.java | 3 + .../test/LiquibaseExtensionConfigFixture.java | 8 + .../quarkus/liquibase/LiquibaseFactory.java | 21 +- .../liquibase/runtime/LiquibaseConfig.java | 12 + .../liquibase/runtime/LiquibaseCreator.java | 2 + .../LiquibaseDataSourceRuntimeConfig.java | 14 + .../json/runtime/AdditionalFieldConfig.java | 2 +- .../deployment/DevServicesMongoProcessor.java | 4 +- .../observability-devservices/common/pom.xml | 27 + .../common/ContainerConstants.java | 15 + .../config/AbstractContainerConfig.java | 51 + .../common/config/AbstractGrafanaConfig.java | 51 + .../common/config/ContainerConfig.java | 69 + .../common/config/ContainerConfigUtil.java | 41 + .../common/config/GrafanaConfig.java | 33 + .../common/config/LgtmConfig.java | 23 + .../common/config/ModulesConfiguration.java | 8 + .../deployment/pom.xml | 81 ++ .../deployment/DevResourcesBuildItem.java | 6 + .../deployment/DevResourcesProcessor.java | 51 + .../ObservabilityDevServiceProcessor.java | 216 +++ extensions/observability-devservices/pom.xml | 56 + .../observability-devservices/runtime/pom.xml | 89 ++ .../runtime/DevResourceShutdownRecorder.java | 12 + .../runtime/DevResourcesConfigBuilder.java | 18 + .../config/ObservabilityConfiguration.java | 35 + .../sink/lgtm/pom.xml | 26 + .../testcontainers/pom.xml | 45 + .../testcontainers/GrafanaContainer.java | 35 + .../testcontainers/LgtmContainer.java | 45 + .../ObservabilityContainer.java | 72 + .../testlibs/devresource-common/pom.xml | 39 + .../observability/devresource/Container.java | 21 + .../DevResourceLifecycleManager.java | 83 ++ .../devresource/DevResources.java | 88 ++ .../devresource/DevResourcesConfigSource.java | 28 + .../testlibs/devresource-lgtm/pom.xml | 26 + .../devresource/lgtm/LgtmResource.java | 54 + ...ty.devresource.DevResourceLifecycleManager | 1 + .../devresource-testcontainers/pom.xml | 39 + .../testcontainers/ContainerResource.java | 45 + .../TestcontainerContainer.java | 47 + .../testlibs/pom.xml | 22 + ...lientCredentialsJwtPrivateKeyTestCase.java | 10 + .../oidc/client/OidcClientResource.java | 14 +- .../oidc/client/OidcClientsResource.java | 2 +- ...ent-credentials-jwt-private-key.properties | 4 + .../oidc/common/OidcRequestFilter.java | 2 +- .../oidc/common/runtime/OidcCommonConfig.java | 16 + .../oidc/common/runtime/OidcCommonUtils.java | 9 +- extensions/oidc/deployment/pom.xml | 5 + .../oidc/deployment/OidcBuildStep.java | 5 +- ...BasicAuthAndBearerAuthCombinationTest.java | 77 + ...sicAuthAndCodeFlowAuthCombinationTest.java | 118 ++ .../quarkus/oidc/AuthorizationCodeTokens.java | 63 +- .../io/quarkus/oidc/OidcTenantConfig.java | 14 +- .../oidc/TokenCertificateValidator.java | 25 + .../runtime/CertChainPublicKeyResolver.java | 68 +- .../runtime/CodeAuthenticationMechanism.java | 20 +- .../DynamicVerificationKeyResolver.java | 2 +- .../oidc/runtime/OidcIdentityProvider.java | 4 +- .../io/quarkus/oidc/runtime/OidcProvider.java | 59 +- .../oidc/runtime/OidcProviderClient.java | 9 +- .../io/quarkus/oidc/runtime/OidcUtils.java | 12 + ...erFinder.java => TenantFeatureFinder.java} | 30 +- .../runtime/OpenTelemetryRecorder.java | 10 +- .../runtime/tracing/TracerRecorder.java | 5 +- .../InstrumentationRecorder.java | 4 +- .../PanacheHibernateResourceProcessor.java | 2 +- .../PanacheHibernateResourceProcessor.java | 2 +- ...nacheHibernateCommonResourceProcessor.java | 2 +- extensions/pom.xml | 4 +- .../MessageBundleMethodBuildItem.java | 31 +- .../deployment/MessageBundleProcessor.java | 316 +++- .../qute/deployment/QuteProcessor.java | 213 ++- .../MessageBundleProcessorTest.java | 26 + .../qute/deployment/i18n/EmailBundles.java | 45 + .../i18n/MessageBundleDefaultedNameTest.java | 6 +- .../i18n/MessageBundleEnumTest.java | 74 + .../i18n/MessageBundleLocaleTest.java | 6 +- .../i18n/MessageBundleLogicalLineTest.java | 21 +- .../i18n/MessageBundleNameCollisionTest.java | 38 + .../deployment/i18n/MessageBundleTest.java | 4 +- .../quarkus/qute/deployment/i18n/MyEnum.java | 10 + .../AdditionalTemplateRootTest.java | 7 +- .../messages/EmailBundles_started.properties | 6 + .../EmailBundles_startedValidator.properties | 5 + ...mailBundles_startedValidator_en.properties | 5 + .../EmailBundles_started_en.properties | 6 + .../test/resources/messages/enu.properties | 13 + .../test/resources/messages/enu_cs.properties | 13 + .../test/resources/messages/msg_cs.properties | 11 +- .../java/io/quarkus/qute/i18n/Message.java | 29 +- .../io/quarkus/qute/i18n/MessageBundles.java | 2 +- .../client/DevServicesRedisProcessor.java | 4 +- .../runtime/QuarkusRestClientBuilder.java | 13 +- .../ResteasyServerCommonProcessor.java | 2 +- .../JaxrsClientReactiveProcessor.java | 94 +- .../rest/client/reactive/FormListTest.java | 51 + .../multipart/MultipartDetectionTest.java | 37 + .../multipart/MultipartFilenameTest.java | 52 + .../jaxb/deployment/test/SimpleXmlTest.java | 11 + .../ServerJaxbMessageBodyReader.java | 4 + .../qute/deployment/RestQuteConfig.java | 22 + .../ResteasyReactiveQuteProcessor.java | 7 +- ...emplateInstanceNonBlockingEnabledTest.java | 48 + .../TemplateInstanceNonBlockingTest.java | 3 +- .../spi/NonBlockingReturnTypeBuildItem.java | 3 + .../DevServicesApicurioRegistryProcessor.java | 4 +- ...ontextPropagationInitializedBuildItem.java | 11 + .../SmallRyeContextPropagationProcessor.java | 3 + .../QuarkusContextManagerProvider.java | 42 + .../SmallRyeContextPropagationRecorder.java | 108 +- .../faulttolerance/deployment/DotNames.java | 4 +- .../deployment/FaultToleranceScanner.java | 4 +- .../SmallRyeFaultToleranceProcessor.java | 22 +- .../dev-ui/qwc-fault-tolerance-methods.js | 10 + .../additional/AsyncNonBlockingService.java | 2 +- .../additional/BlockingService.java | 2 +- .../additional/NonblockingService.java | 2 +- .../NoncompatNonblockingService.java | 2 +- .../test/ratelimit/RateLimitTest.java | 4 +- .../when/IsIllegalArgumentException.java | 10 + .../test/retry/when/IsNull.java | 10 + .../RetryOnAndRetryWhenExceptionService.java | 15 + .../RetryOnAndRetryWhenExceptionTest.java | 27 + .../RetryOnClassRetryWhenOnMethodService.java | 16 + .../RetryOnClassRetryWhenOnMethodTest.java | 27 + .../RetryOnMethodRetryWhenOnClassService.java | 16 + .../RetryOnMethodRetryWhenOnClassTest.java | 27 + .../RetryWhenResultAndExceptionService.java | 31 + .../when/RetryWhenResultAndExceptionTest.java | 26 + .../SmallRyeFaultToleranceRecorder.java | 2 +- .../devui/FaultToleranceJsonRpcService.java | 6 + .../spi/QuarkusClassloadingService.java | 12 +- .../runtime/auth/RawOptionalClaimCreator.java | 2 +- .../filter/AutoRolesAllowedFilter.java | 8 +- .../ClassConfigurationPropertiesUtil.java | 5 +- .../InterfaceConfigurationPropertiesUtil.java | 4 +- .../SqlFileConfigBuilderCustomizer.java | 36 + ...rye.config.SmallRyeConfigBuilderCustomizer | 1 + .../deployment/BothImportAndDataSqlTest.java | 33 + ...ueryWithFlushAndClearUsingDataSqlTest.java | 119 ++ .../RepositoryReloadWithDataSqlTest.java | 39 + .../deployment/src/test/resources/users1.sql | 1 + .../deployment/src/test/resources/users2.sql | 1 + .../devui/deployment/DevUIProcessor.java | 14 +- .../deployment/HttpSecurityProcessor.java | 51 +- .../deployment/StaticResourcesProcessor.java | 111 +- .../dev-ui/controller/router-controller.js | 1 - .../java/io/quarkus/devui/spi/page/Page.java | 9 + .../quarkus/devui/spi/page/PageBuilder.java | 5 +- .../vertx/http/runtime/AuthConfig.java | 3 +- .../http/runtime/StaticResourcesConfig.java | 7 + .../http/runtime/StaticResourcesRecorder.java | 2 +- .../runtime/security/HttpAuthenticator.java | 63 +- .../deployment/pom.xml | 8 +- .../deployment/ImportMapBuildItem.java | 2 +- .../WebDependencyLocatorConfig.java} | 6 +- .../WebDependencyLocatorProcessor.java} | 14 +- .../deployment/devui/WebDependencyAsset.java} | 10 +- .../WebDependencyLibrariesBuildItem.java | 23 + .../devui/WebDependencyLibrary.java | 32 + ...DependencyLocatorDevModeApiProcessor.java} | 79 +- .../WebDependencyLocatorDevUIProcessor.java} | 28 +- .../qwc-web-dependency-locator-importmap.js} | 4 +- .../qwc-web-dependency-locator-libraries.js} | 20 +- .../locator/test/ImportMapTest.java | 4 +- .../locator/test/PostResource.java | 2 +- .../WebDependencyLocatorDevModeTest.java} | 4 +- .../WebDependencyLocatorRootPathTest.java} | 4 +- .../test/WebDependencyLocatorTest.java} | 4 +- .../WebDependencyLocatorTestSupport.java} | 4 +- extensions/web-dependency-locator/pom.xml | 21 + .../runtime/pom.xml | 8 +- .../WebDependencyLocatorRecorder.java} | 25 +- .../resources/META-INF/quarkus-extension.yaml | 8 +- .../devui/WebJarLibrariesBuildItem.java | 23 - .../deployment/devui/WebJarLibrary.java | 32 - .../next/deployment/WebSocketDotNames.java | 7 + .../deployment/WebSocketServerProcessor.java | 60 +- .../WriteErrorClosedConnectionTest.java | 70 + .../BlockingAnnotationTest.java | 54 + .../NonBlockingAnnotationTest.java | 53 + .../maxmessagesize/MaxMessageSizeTest.java | 63 + .../SubprotocolNotAvailableTest.java | 13 + .../websockets/next/test/utils/WSClient.java | 7 +- .../next/WebSocketsRuntimeConfig.java | 27 +- .../next/runtime/ContextSupport.java | 2 +- .../next/runtime/WebSocketEndpoint.java | 7 + .../next/runtime/WebSocketEndpointBase.java | 21 + .../WebSocketHttpServerOptionsCustomizer.java | 13 +- .../next/runtime/WebSocketServerRecorder.java | 15 + .../quarkus/arc/processor/BeanGenerator.java | 52 +- .../arc/processor/DecoratorGenerator.java | 17 +- .../arc/processor/MethodDescriptors.java | 11 +- .../arc/processor/SubclassGenerator.java | 6 +- .../io/quarkus/arc/impl/ArcContainerImpl.java | 4 +- .../io/quarkus/arc/impl/BeanManagerImpl.java | 8 +- .../arc/impl/CreationalContextImpl.java | 50 + .../impl/CurrentInjectionPointProvider.java | 4 +- .../arc/impl/DecoratorDelegateProvider.java | 36 +- .../java/io/quarkus/arc/impl/EventBean.java | 2 +- .../quarkus/arc/impl/InjectionPointBean.java | 2 +- .../arc/impl/InjectionPointProvider.java | 32 +- .../io/quarkus/arc/impl/InstanceBean.java | 2 +- .../io/quarkus/arc/impl/InstanceImpl.java | 8 +- .../java/io/quarkus/arc/impl/Instances.java | 12 +- .../quarkus/bootstrap/model/AppArtifact.java | 8 + .../bootstrap/model/AppDependency.java | 8 + .../model/ApplicationModelBuilder.java | 30 +- .../model/DefaultApplicationModel.java | 6 +- .../model/MutableJarApplicationModel.java | 2 +- .../quarkus/bootstrap/util/PropertyUtils.java | 26 +- .../quarkus/maven/dependency/Dependency.java | 6 +- .../maven/dependency/DependencyFlags.java | 1 - .../ResolvedArtifactDependency.java | 17 +- .../maven/dependency/ResolvedDependency.java | 3 + .../dependency/ResolvedDependencyBuilder.java | 35 +- independent-projects/bootstrap/bom/pom.xml | 5 - .../bootstrap/BootstrapAppModelFactory.java | 25 +- .../resolver/CollectDependenciesBase.java | 3 +- .../resolver/ResolverSetupCleanup.java | 2 + .../bootstrap/resolver/TsArtifact.java | 12 +- .../bootstrap/maven-resolver/pom.xml | 4 - .../resolver/BootstrapAppModelResolver.java | 127 +- .../ApplicationDependencyTreeResolver.java | 3 +- .../maven/BootstrapModelResolver.java | 8 +- .../maven/BuildDependencyGraphVisitor.java | 11 +- .../maven/DependencyLoggingConfig.java | 65 + .../IncubatingApplicationModelResolver.java | 1266 +++++++++++++++++ .../resolver/maven/workspace/ModelUtils.java | 30 +- .../bootstrap/util/DependencyUtils.java | 10 + independent-projects/bootstrap/pom.xml | 3 +- .../bootstrap/runner/RunnerClassLoader.java | 77 +- .../io/quarkus/qute/TemplateInstance.java | 43 +- .../io/quarkus/qute/TemplateInstanceTest.java | 30 + .../client/api/ClientMultipartForm.java | 6 + .../reactive/multipart/FileDownload.java | 5 + .../reactive/multipart/FileUpload.java | 5 + .../handlers/VariableProducesHandler.java | 14 +- .../test/matching/PreMatchAcceptInHeader.java | 124 -- .../matching/PreMatchAcceptInHeaderTest.java | 230 +++ .../registry/config/PropertiesUtil.java | 26 +- .../BouncyCastleFipsEndpoint.java | 38 + .../BouncyCastleFipsTestCase.java | 9 + .../quarkus/it/cache/ExpensiveResource.java | 4 +- .../it/cache/GetIfPresentResource.java | 36 + .../src/main/resources/application.properties | 1 + .../io/quarkus/it/cache/CacheTestCase.java | 60 +- .../RandomPortSeparateServerPlainIT.java | 24 + .../hello/RandomPortSeparateServerTlsIT.java | 9 - .../examples/hello/RandomPortTestBase.java | 2 + .../hello/RandomPortVertxServerPlainIT.java | 24 + .../hello/RandomPortVertxServerTlsIT.java | 9 - integration-tests/grpc-transcoding/pom.xml | 114 ++ .../examples/hello/HelloWorldNewEndpoint.java | 32 + .../examples/hello/HelloWorldNewService.java | 48 + .../src/main/proto/helloworld.proto | 112 ++ .../src/main/resources/application.properties | 20 + .../hello/HelloWorldNewEndpointTest.java | 105 ++ .../hello/HelloWorldNewEndpointTestBase.java | 5 + .../reactive/mssql/DialectEndpoint.java | 9 +- .../HibernateReactiveMSSQLTestEndpoint.java | 7 +- integration-tests/infinispan-cache/pom.xml | 144 ++ .../cache/infinispan/ExpensiveResource.java | 53 + .../cache/infinispan/RestClientResource.java | 88 ++ .../cache/infinispan/SunriseRestClient.java | 52 + .../infinispan/SunriseRestServerResource.java | 41 + .../src/main/resources/application.properties | 1 + .../quarkus/it/cache/infinispan/CacheIT.java | 7 + .../it/cache/infinispan/CacheTest.java | 33 + .../InfinspanCacheClientTestCase.java | 87 ++ .../kafka-oauth-keycloak/pom.xml | 5 - .../LiquibaseFunctionalityResource.java | 41 +- .../src/main/resources/application.properties | 15 +- .../main/resources/db/second/changeLog.xml | 9 + .../main/resources/db/second/create-table.xml | 18 + .../src/main/resources/db/second/initdb.sql | 5 + .../resources/db/second/insert-into-table.xml | 14 + .../liquibase/LiquibaseFunctionalityTest.java | 7 + .../java/io/quarkus/maven/it/DevMojoIT.java | 33 - .../io/quarkus/maven/it/FlakyDevMojoIT.java | 55 + .../projects/classic-with-log/.env | 1 + .../projects/classic-with-log/pom.xml | 108 ++ .../java/org/acme/ClasspathResources.java | 195 +++ .../src/main/java/org/acme/HelloResource.java | 74 + .../src/main/java/org/acme/MyApplication.java | 9 + .../main/java/org/acme/ProtectionDomain.java | 77 + .../resources/META-INF/resources/index.html | 156 ++ .../src/main/resources/application.properties | 9 + .../src/main/resources/assets/test.txt | 0 .../src/main/resources/db/location/test.sql | 7 + .../test/java/org/acme/HelloResourceTest.java | 21 + integration-tests/observability-lgtm/pom.xml | 121 ++ .../observability/example/SimpleEndpoint.java | 48 + .../src/main/resources/application.properties | 17 + .../observability/test/LgtmLifecycleTest.java | 17 + .../observability/test/LgtmResourcesIT.java | 11 + .../observability/test/LgtmResourcesTest.java | 14 + .../observability/test/LgtmServicesTest.java | 11 + .../observability/test/LgtmTestBase.java | 33 + .../test/support/DevResourcesTestProfile.java | 14 + .../test/support/GrafanaClient.java | 92 ++ .../QuarkusTestResourceTestProfile.java | 14 + .../test/support/QueryResult.java | 73 + .../observability/test/support/User.java | 14 + .../src/test/resources/application.properties | 16 + .../io/quarkus/it/keycloak/AdminResource.java | 8 + .../BearerGlobalTokenChainValidator.java | 29 + .../BearerTenantTokenChainValidator.java | 34 + .../it/keycloak/CodeFlowUserInfoResource.java | 6 + .../CustomSecurityIdentityAugmentor.java | 3 +- .../keycloak/CustomTenantConfigResolver.java | 1 + .../src/main/resources/application.properties | 18 + .../BearerTokenAuthorizationTest.java | 54 +- .../keycloak/CodeFlowAuthorizationTest.java | 59 +- .../io/quarkus/it/keycloak/TestUtils.java | 2 + .../QuarkusOpenTelemetryRedisIT.java | 8 +- .../QuarkusOpenTelemetryRedisTest.java | 9 +- integration-tests/pom.xml | 5 +- .../spring/data/jpa/CountryResourceTest.java | 2 +- .../webauthn/RunOnVirtualThreadIT.java | 49 +- .../webauthn/RunOnVirtualThreadTest.java | 2 +- .../pom.xml | 8 +- .../src/main/resources/application.properties | 0 .../it/webjar/locator/WebJarResourceIT.java | 0 .../it/webjar/locator/WebJarResourceTest.java | 0 .../src/test/resources/application.properties | 0 pom.xml | 5 +- relocations/generaterelocations.java | 5 + relocations/pom.xml | 2 + .../pom.xml | 22 + relocations/quarkus-webjars-locator/pom.xml | 22 + tcks/microprofile-config/pom.xml | 6 +- .../test/junit/IntegrationTestUtil.java | 4 +- .../NativeBuildOutputExtension.java | 12 +- 518 files changed, 16286 insertions(+), 2003 deletions(-) create mode 100644 .github/workflows/native-it-selected-graalvm.yml create mode 100644 core/deployment/src/test/java/io/quarkus/deployment/pkg/steps/JarResultBuildStepTest.java create mode 100644 core/deployment/src/test/java/io/quarkus/deployment/runnerjar/DeploymentDependencyConvergenceTest.java create mode 100644 core/deployment/src/test/java/io/quarkus/deployment/runnerjar/ReloadableFlagsTest.java create mode 100644 core/devmode-spi/src/main/java/io/quarkus/dev/console/TerminalUtils.java create mode 100644 core/processor/src/test/java/io/quarkus/annotation/processor/ExtensionAnnotationProcessorTest.java create mode 100644 core/processor/src/test/java/io/quarkus/annotation/processor/fs/CustomMemoryFileSystem.java create mode 100644 core/processor/src/test/java/io/quarkus/annotation/processor/fs/CustomMemoryFileSystemProvider.java create mode 100644 core/processor/src/test/resources/META-INF/services/java.nio.file.spi.FileSystemProvider create mode 100644 core/processor/src/test/resources/io/quarkus/deployment/annotations/BuildStep.java create mode 100644 core/processor/src/test/resources/org/acme/examples/ArbitraryBuildItem.java create mode 100644 core/processor/src/test/resources/org/acme/examples/ClassWithBuildStep.java create mode 100644 core/processor/src/test/resources/org/acme/examples/ClassWithoutBuildStep.java create mode 100644 core/runtime/src/main/java/io/quarkus/runtime/annotations/RuntimeInit.java create mode 100644 core/runtime/src/main/java/io/quarkus/runtime/annotations/StaticInit.java create mode 100644 core/runtime/src/main/java/io/quarkus/runtime/util/EnumerationUtil.java create mode 100644 devtools/maven/src/test/java/io/quarkus/maven/BasicDependencyTreeTestBase.java create mode 100644 devtools/maven/src/test/java/io/quarkus/maven/ConditionalDependencyGraphMojoTest.java create mode 100644 devtools/maven/src/test/java/io/quarkus/maven/ConditionalDependencyTreeMojoTest.java create mode 100644 devtools/maven/src/test/resources/app-with-conditional-deps-1.jar.prod create mode 100644 devtools/maven/src/test/resources/app-with-conditional-graph-1.jar.prod create mode 100644 docs/src/main/asciidoc/cache-infinispan-reference.adoc create mode 100644 docs/src/main/asciidoc/images/web-bundle-transition.png create mode 100644 docs/src/main/asciidoc/observability-devservices-lgtm.adoc create mode 100644 docs/src/main/asciidoc/observability-devservices.adoc create mode 100644 docs/src/main/asciidoc/web.adoc create mode 100644 extensions/grpc/api/src/main/java/io/quarkus/grpc/GrpcTranscoding.java create mode 100644 extensions/grpc/api/src/main/java/io/quarkus/grpc/GrpcTranscodingDescriptor.java create mode 100644 extensions/grpc/api/src/main/java/io/quarkus/grpc/GrpcTranscodingMarshaller.java create mode 100644 extensions/grpc/api/src/main/java/io/quarkus/grpc/GrpcTranscodingMethod.java create mode 100644 extensions/grpc/deployment/src/main/java/io/quarkus/grpc/deployment/GrpcTranscodingBuildItem.java create mode 100644 extensions/grpc/deployment/src/main/java/io/quarkus/grpc/deployment/GrpcTranscodingProcessor.java create mode 100644 extensions/grpc/deployment/src/main/java/io/quarkus/grpc/deployment/GrpcTranscodingServerBuildItem.java create mode 100644 extensions/grpc/deployment/src/test/java/io/quarkus/grpc/server/blocking/MultiThreadedBlockingImplTest.java create mode 100644 extensions/grpc/deployment/src/test/proto/blocking/BlockingGrpcService.proto create mode 100644 extensions/grpc/protoc/src/main/resources/MutinyMarshalling.mustache create mode 100644 extensions/grpc/runtime/src/main/java/io/quarkus/grpc/runtime/config/GrpcTranscodingConfig.java create mode 100644 extensions/grpc/runtime/src/main/java/io/quarkus/grpc/transcoding/GrpcTranscodingBridge.java create mode 100644 extensions/grpc/runtime/src/main/java/io/quarkus/grpc/transcoding/GrpcTranscodingContainer.java create mode 100644 extensions/grpc/runtime/src/main/java/io/quarkus/grpc/transcoding/GrpcTranscodingHttpUtils.java create mode 100644 extensions/grpc/runtime/src/main/java/io/quarkus/grpc/transcoding/GrpcTranscodingMessageDecoder.java create mode 100644 extensions/grpc/runtime/src/main/java/io/quarkus/grpc/transcoding/GrpcTranscodingMessageEncoder.java create mode 100644 extensions/grpc/runtime/src/main/java/io/quarkus/grpc/transcoding/GrpcTranscodingMessageWriter.java create mode 100644 extensions/grpc/runtime/src/main/java/io/quarkus/grpc/transcoding/GrpcTranscodingMetadata.java create mode 100644 extensions/grpc/runtime/src/main/java/io/quarkus/grpc/transcoding/GrpcTranscodingMethod.java create mode 100644 extensions/grpc/runtime/src/main/java/io/quarkus/grpc/transcoding/GrpcTranscodingReadStreamAdapter.java create mode 100644 extensions/grpc/runtime/src/main/java/io/quarkus/grpc/transcoding/GrpcTranscodingRecorder.java create mode 100644 extensions/grpc/runtime/src/main/java/io/quarkus/grpc/transcoding/GrpcTranscodingRequest.java create mode 100644 extensions/grpc/runtime/src/main/java/io/quarkus/grpc/transcoding/GrpcTranscodingResponse.java create mode 100644 extensions/grpc/runtime/src/main/java/io/quarkus/grpc/transcoding/GrpcTranscodingServer.java create mode 100644 extensions/grpc/runtime/src/main/java/io/quarkus/grpc/transcoding/GrpcTranscodingWriteStreamAdapter.java create mode 100644 extensions/infinispan-cache/deployment/pom.xml create mode 100644 extensions/infinispan-cache/deployment/src/main/java/io/quarkus/cache/infinispan/deployment/InfinispanCacheProcessor.java create mode 100644 extensions/infinispan-cache/deployment/src/main/resources/application.properties create mode 100644 extensions/infinispan-cache/deployment/src/test/java/io/quarkus/cache/infinispan/InfinispanCacheTest.java create mode 100644 extensions/infinispan-cache/deployment/src/test/resources/empty-application-infinispan-client.properties rename extensions/{webjars-locator => infinispan-cache}/pom.xml (85%) create mode 100644 extensions/infinispan-cache/runtime/pom.xml create mode 100644 extensions/infinispan-cache/runtime/src/main/java/io/quarkus/cache/infinispan/runtime/CompositeCacheKeyMarshaller.java create mode 100644 extensions/infinispan-cache/runtime/src/main/java/io/quarkus/cache/infinispan/runtime/CompositeKeyMarshallerBean.java create mode 100644 extensions/infinispan-cache/runtime/src/main/java/io/quarkus/cache/infinispan/runtime/InfinispanCacheBuildRecorder.java create mode 100644 extensions/infinispan-cache/runtime/src/main/java/io/quarkus/cache/infinispan/runtime/InfinispanCacheImpl.java create mode 100644 extensions/infinispan-cache/runtime/src/main/java/io/quarkus/cache/infinispan/runtime/InfinispanCacheInfo.java create mode 100644 extensions/infinispan-cache/runtime/src/main/java/io/quarkus/cache/infinispan/runtime/InfinispanCacheInfoBuilder.java create mode 100644 extensions/infinispan-cache/runtime/src/main/java/io/quarkus/cache/infinispan/runtime/InfinispanCacheRuntimeConfig.java create mode 100644 extensions/infinispan-cache/runtime/src/main/java/io/quarkus/cache/infinispan/runtime/InfinispanCachesBuildTimeConfig.java create mode 100644 extensions/infinispan-cache/runtime/src/main/java/io/quarkus/cache/infinispan/runtime/InfinispanCachesConfig.java create mode 100644 extensions/infinispan-cache/runtime/src/main/resources/META-INF/quarkus-extension.yaml create mode 100644 extensions/observability-devservices/common/pom.xml create mode 100644 extensions/observability-devservices/common/src/main/java/io/quarkus/observability/common/ContainerConstants.java create mode 100644 extensions/observability-devservices/common/src/main/java/io/quarkus/observability/common/config/AbstractContainerConfig.java create mode 100644 extensions/observability-devservices/common/src/main/java/io/quarkus/observability/common/config/AbstractGrafanaConfig.java create mode 100644 extensions/observability-devservices/common/src/main/java/io/quarkus/observability/common/config/ContainerConfig.java create mode 100644 extensions/observability-devservices/common/src/main/java/io/quarkus/observability/common/config/ContainerConfigUtil.java create mode 100644 extensions/observability-devservices/common/src/main/java/io/quarkus/observability/common/config/GrafanaConfig.java create mode 100644 extensions/observability-devservices/common/src/main/java/io/quarkus/observability/common/config/LgtmConfig.java create mode 100644 extensions/observability-devservices/common/src/main/java/io/quarkus/observability/common/config/ModulesConfiguration.java create mode 100644 extensions/observability-devservices/deployment/pom.xml create mode 100644 extensions/observability-devservices/deployment/src/main/java/io/quarkus/observability/deployment/DevResourcesBuildItem.java create mode 100644 extensions/observability-devservices/deployment/src/main/java/io/quarkus/observability/deployment/DevResourcesProcessor.java create mode 100644 extensions/observability-devservices/deployment/src/main/java/io/quarkus/observability/deployment/ObservabilityDevServiceProcessor.java create mode 100644 extensions/observability-devservices/pom.xml create mode 100644 extensions/observability-devservices/runtime/pom.xml create mode 100644 extensions/observability-devservices/runtime/src/main/java/io/quarkus/observability/runtime/DevResourceShutdownRecorder.java create mode 100644 extensions/observability-devservices/runtime/src/main/java/io/quarkus/observability/runtime/DevResourcesConfigBuilder.java create mode 100644 extensions/observability-devservices/runtime/src/main/java/io/quarkus/observability/runtime/config/ObservabilityConfiguration.java create mode 100644 extensions/observability-devservices/sink/lgtm/pom.xml create mode 100644 extensions/observability-devservices/testcontainers/pom.xml create mode 100644 extensions/observability-devservices/testcontainers/src/main/java/io/quarkus/observability/testcontainers/GrafanaContainer.java create mode 100644 extensions/observability-devservices/testcontainers/src/main/java/io/quarkus/observability/testcontainers/LgtmContainer.java create mode 100644 extensions/observability-devservices/testcontainers/src/main/java/io/quarkus/observability/testcontainers/ObservabilityContainer.java create mode 100644 extensions/observability-devservices/testlibs/devresource-common/pom.xml create mode 100644 extensions/observability-devservices/testlibs/devresource-common/src/main/java/io/quarkus/observability/devresource/Container.java create mode 100644 extensions/observability-devservices/testlibs/devresource-common/src/main/java/io/quarkus/observability/devresource/DevResourceLifecycleManager.java create mode 100644 extensions/observability-devservices/testlibs/devresource-common/src/main/java/io/quarkus/observability/devresource/DevResources.java create mode 100644 extensions/observability-devservices/testlibs/devresource-common/src/main/java/io/quarkus/observability/devresource/DevResourcesConfigSource.java create mode 100644 extensions/observability-devservices/testlibs/devresource-lgtm/pom.xml create mode 100644 extensions/observability-devservices/testlibs/devresource-lgtm/src/main/java/io/quarkus/observability/devresource/lgtm/LgtmResource.java create mode 100644 extensions/observability-devservices/testlibs/devresource-lgtm/src/main/resources/META-INF/services/io.quarkus.observability.devresource.DevResourceLifecycleManager create mode 100644 extensions/observability-devservices/testlibs/devresource-testcontainers/pom.xml create mode 100644 extensions/observability-devservices/testlibs/devresource-testcontainers/src/main/java/io/quarkus/observability/devresource/testcontainers/ContainerResource.java create mode 100644 extensions/observability-devservices/testlibs/devresource-testcontainers/src/main/java/io/quarkus/observability/devresource/testcontainers/TestcontainerContainer.java create mode 100644 extensions/observability-devservices/testlibs/pom.xml create mode 100644 extensions/oidc/deployment/src/test/java/io/quarkus/oidc/test/ImplicitBasicAuthAndBearerAuthCombinationTest.java create mode 100644 extensions/oidc/deployment/src/test/java/io/quarkus/oidc/test/ImplicitBasicAuthAndCodeFlowAuthCombinationTest.java create mode 100644 extensions/oidc/runtime/src/main/java/io/quarkus/oidc/TokenCertificateValidator.java rename extensions/oidc/runtime/src/main/java/io/quarkus/oidc/runtime/{TokenCustomizerFinder.java => TenantFeatureFinder.java} (53%) create mode 100644 extensions/qute/deployment/src/test/java/io/quarkus/qute/deployment/MessageBundleProcessorTest.java create mode 100644 extensions/qute/deployment/src/test/java/io/quarkus/qute/deployment/i18n/EmailBundles.java create mode 100644 extensions/qute/deployment/src/test/java/io/quarkus/qute/deployment/i18n/MessageBundleEnumTest.java create mode 100644 extensions/qute/deployment/src/test/java/io/quarkus/qute/deployment/i18n/MessageBundleNameCollisionTest.java create mode 100644 extensions/qute/deployment/src/test/java/io/quarkus/qute/deployment/i18n/MyEnum.java create mode 100644 extensions/qute/deployment/src/test/resources/messages/EmailBundles_started.properties create mode 100644 extensions/qute/deployment/src/test/resources/messages/EmailBundles_startedValidator.properties create mode 100644 extensions/qute/deployment/src/test/resources/messages/EmailBundles_startedValidator_en.properties create mode 100644 extensions/qute/deployment/src/test/resources/messages/EmailBundles_started_en.properties create mode 100644 extensions/qute/deployment/src/test/resources/messages/enu.properties create mode 100644 extensions/qute/deployment/src/test/resources/messages/enu_cs.properties create mode 100644 extensions/resteasy-reactive/rest-client/deployment/src/test/java/io/quarkus/rest/client/reactive/FormListTest.java create mode 100644 extensions/resteasy-reactive/rest-qute/deployment/src/main/java/io/quarkus/resteasy/reactive/qute/deployment/RestQuteConfig.java create mode 100644 extensions/resteasy-reactive/rest-qute/deployment/src/test/java/io/quarkus/resteasy/reactive/qute/deployment/TemplateInstanceNonBlockingEnabledTest.java create mode 100644 extensions/smallrye-context-propagation/deployment/src/main/java/io/quarkus/smallrye/context/deployment/ContextPropagationInitializedBuildItem.java create mode 100644 extensions/smallrye-context-propagation/runtime/src/main/java/io/quarkus/smallrye/context/runtime/QuarkusContextManagerProvider.java create mode 100644 extensions/smallrye-fault-tolerance/deployment/src/test/java/io/quarkus/smallrye/faulttolerance/test/retry/when/IsIllegalArgumentException.java create mode 100644 extensions/smallrye-fault-tolerance/deployment/src/test/java/io/quarkus/smallrye/faulttolerance/test/retry/when/IsNull.java create mode 100644 extensions/smallrye-fault-tolerance/deployment/src/test/java/io/quarkus/smallrye/faulttolerance/test/retry/when/RetryOnAndRetryWhenExceptionService.java create mode 100644 extensions/smallrye-fault-tolerance/deployment/src/test/java/io/quarkus/smallrye/faulttolerance/test/retry/when/RetryOnAndRetryWhenExceptionTest.java create mode 100644 extensions/smallrye-fault-tolerance/deployment/src/test/java/io/quarkus/smallrye/faulttolerance/test/retry/when/RetryOnClassRetryWhenOnMethodService.java create mode 100644 extensions/smallrye-fault-tolerance/deployment/src/test/java/io/quarkus/smallrye/faulttolerance/test/retry/when/RetryOnClassRetryWhenOnMethodTest.java create mode 100644 extensions/smallrye-fault-tolerance/deployment/src/test/java/io/quarkus/smallrye/faulttolerance/test/retry/when/RetryOnMethodRetryWhenOnClassService.java create mode 100644 extensions/smallrye-fault-tolerance/deployment/src/test/java/io/quarkus/smallrye/faulttolerance/test/retry/when/RetryOnMethodRetryWhenOnClassTest.java create mode 100644 extensions/smallrye-fault-tolerance/deployment/src/test/java/io/quarkus/smallrye/faulttolerance/test/retry/when/RetryWhenResultAndExceptionService.java create mode 100644 extensions/smallrye-fault-tolerance/deployment/src/test/java/io/quarkus/smallrye/faulttolerance/test/retry/when/RetryWhenResultAndExceptionTest.java create mode 100644 extensions/spring-data-jpa/deployment/src/main/java/io/quarkus/spring/data/deployment/SqlFileConfigBuilderCustomizer.java create mode 100644 extensions/spring-data-jpa/deployment/src/main/resources/META-INF/services/io.smallrye.config.SmallRyeConfigBuilderCustomizer create mode 100644 extensions/spring-data-jpa/deployment/src/test/java/io/quarkus/spring/data/deployment/BothImportAndDataSqlTest.java create mode 100644 extensions/spring-data-jpa/deployment/src/test/java/io/quarkus/spring/data/deployment/ModifyingQueryWithFlushAndClearUsingDataSqlTest.java create mode 100644 extensions/spring-data-jpa/deployment/src/test/java/io/quarkus/spring/data/devmode/RepositoryReloadWithDataSqlTest.java create mode 100644 extensions/spring-data-jpa/deployment/src/test/resources/users1.sql create mode 100644 extensions/spring-data-jpa/deployment/src/test/resources/users2.sql rename extensions/{webjars-locator => web-dependency-locator}/deployment/pom.xml (93%) rename extensions/{webjars-locator/deployment/src/main/java/io/quarkus/webjar => web-dependency-locator/deployment/src/main/java/io/quarkus/webdependency}/locator/deployment/ImportMapBuildItem.java (85%) rename extensions/{webjars-locator/deployment/src/main/java/io/quarkus/webjar/locator/deployment/WebJarLocatorConfig.java => web-dependency-locator/deployment/src/main/java/io/quarkus/webdependency/locator/deployment/WebDependencyLocatorConfig.java} (72%) rename extensions/{webjars-locator/deployment/src/main/java/io/quarkus/webjar/locator/deployment/WebJarLocatorStandaloneBuildStep.java => web-dependency-locator/deployment/src/main/java/io/quarkus/webdependency/locator/deployment/WebDependencyLocatorProcessor.java} (94%) rename extensions/{webjars-locator/deployment/src/main/java/io/quarkus/webjar/locator/deployment/devui/WebJarAsset.java => web-dependency-locator/deployment/src/main/java/io/quarkus/webdependency/locator/deployment/devui/WebDependencyAsset.java} (70%) create mode 100644 extensions/web-dependency-locator/deployment/src/main/java/io/quarkus/webdependency/locator/deployment/devui/WebDependencyLibrariesBuildItem.java create mode 100644 extensions/web-dependency-locator/deployment/src/main/java/io/quarkus/webdependency/locator/deployment/devui/WebDependencyLibrary.java rename extensions/{webjars-locator/deployment/src/main/java/io/quarkus/webjar/locator/deployment/devui/WebJarLocatorDevModeApiProcessor.java => web-dependency-locator/deployment/src/main/java/io/quarkus/webdependency/locator/deployment/devui/WebDependencyLocatorDevModeApiProcessor.java} (59%) rename extensions/{webjars-locator/deployment/src/main/java/io/quarkus/webjar/locator/deployment/devui/WebJarLocatorDevUIProcessor.java => web-dependency-locator/deployment/src/main/java/io/quarkus/webdependency/locator/deployment/devui/WebDependencyLocatorDevUIProcessor.java} (54%) rename extensions/{webjars-locator/deployment/src/main/resources/dev-ui/qwc-webjar-locator-importmap.js => web-dependency-locator/deployment/src/main/resources/dev-ui/qwc-web-dependency-locator-importmap.js} (87%) rename extensions/{webjars-locator/deployment/src/main/resources/dev-ui/qwc-webjar-locator-webjar-libraries.js => web-dependency-locator/deployment/src/main/resources/dev-ui/qwc-web-dependency-locator-libraries.js} (80%) rename extensions/{webjars-locator/deployment/src/test/java/io/quarkus/webjar => web-dependency-locator/deployment/src/test/java/io/quarkus/webdependency}/locator/test/ImportMapTest.java (91%) rename extensions/{webjars-locator/deployment/src/test/java/io/quarkus/webjar => web-dependency-locator/deployment/src/test/java/io/quarkus/webdependency}/locator/test/PostResource.java (88%) rename extensions/{webjars-locator/deployment/src/test/java/io/quarkus/webjar/locator/test/WebJarLocatorDevModeTest.java => web-dependency-locator/deployment/src/test/java/io/quarkus/webdependency/locator/test/WebDependencyLocatorDevModeTest.java} (97%) rename extensions/{webjars-locator/deployment/src/test/java/io/quarkus/webjar/locator/test/WebJarLocatorRootPathTest.java => web-dependency-locator/deployment/src/test/java/io/quarkus/webdependency/locator/test/WebDependencyLocatorRootPathTest.java} (95%) rename extensions/{webjars-locator/deployment/src/test/java/io/quarkus/webjar/locator/test/WebJarLocatorTest.java => web-dependency-locator/deployment/src/test/java/io/quarkus/webdependency/locator/test/WebDependencyLocatorTest.java} (95%) rename extensions/{webjars-locator/deployment/src/test/java/io/quarkus/webjar/locator/test/WebJarLocatorTestSupport.java => web-dependency-locator/deployment/src/test/java/io/quarkus/webdependency/locator/test/WebDependencyLocatorTestSupport.java} (76%) create mode 100644 extensions/web-dependency-locator/pom.xml rename extensions/{webjars-locator => web-dependency-locator}/runtime/pom.xml (84%) rename extensions/{webjars-locator/runtime/src/main/java/io/quarkus/webjar/locator/runtime/WebJarLocatorRecorder.java => web-dependency-locator/runtime/src/main/java/io/quarkus/webdependency/locator/runtime/WebDependencyLocatorRecorder.java} (69%) rename extensions/{webjars-locator => web-dependency-locator}/runtime/src/main/resources/META-INF/quarkus-extension.yaml (51%) delete mode 100644 extensions/webjars-locator/deployment/src/main/java/io/quarkus/webjar/locator/deployment/devui/WebJarLibrariesBuildItem.java delete mode 100644 extensions/webjars-locator/deployment/src/main/java/io/quarkus/webjar/locator/deployment/devui/WebJarLibrary.java create mode 100644 extensions/websockets-next/server/deployment/src/test/java/io/quarkus/websockets/next/test/errors/WriteErrorClosedConnectionTest.java create mode 100644 extensions/websockets-next/server/deployment/src/test/java/io/quarkus/websockets/next/test/executionmodel/BlockingAnnotationTest.java create mode 100644 extensions/websockets-next/server/deployment/src/test/java/io/quarkus/websockets/next/test/executionmodel/NonBlockingAnnotationTest.java create mode 100644 extensions/websockets-next/server/deployment/src/test/java/io/quarkus/websockets/next/test/maxmessagesize/MaxMessageSizeTest.java create mode 100644 independent-projects/bootstrap/maven-resolver/src/main/java/io/quarkus/bootstrap/resolver/maven/DependencyLoggingConfig.java create mode 100644 independent-projects/bootstrap/maven-resolver/src/main/java/io/quarkus/bootstrap/resolver/maven/IncubatingApplicationModelResolver.java delete mode 100644 independent-projects/resteasy-reactive/server/vertx/src/test/java/org/jboss/resteasy/reactive/server/vertx/test/matching/PreMatchAcceptInHeader.java create mode 100644 independent-projects/resteasy-reactive/server/vertx/src/test/java/org/jboss/resteasy/reactive/server/vertx/test/matching/PreMatchAcceptInHeaderTest.java create mode 100644 integration-tests/cache/src/main/java/io/quarkus/it/cache/GetIfPresentResource.java delete mode 100644 integration-tests/grpc-test-random-port/src/test/java/io/quarkus/grpc/examples/hello/RandomPortSeparateServerTlsIT.java delete mode 100644 integration-tests/grpc-test-random-port/src/test/java/io/quarkus/grpc/examples/hello/RandomPortVertxServerTlsIT.java create mode 100644 integration-tests/grpc-transcoding/pom.xml create mode 100644 integration-tests/grpc-transcoding/src/main/java/io/quarkus/grpc/examples/hello/HelloWorldNewEndpoint.java create mode 100644 integration-tests/grpc-transcoding/src/main/java/io/quarkus/grpc/examples/hello/HelloWorldNewService.java create mode 100644 integration-tests/grpc-transcoding/src/main/proto/helloworld.proto create mode 100644 integration-tests/grpc-transcoding/src/main/resources/application.properties create mode 100644 integration-tests/grpc-transcoding/src/test/java/io/quarkus/grpc/examples/hello/HelloWorldNewEndpointTest.java create mode 100644 integration-tests/grpc-transcoding/src/test/java/io/quarkus/grpc/examples/hello/HelloWorldNewEndpointTestBase.java create mode 100644 integration-tests/infinispan-cache/pom.xml create mode 100644 integration-tests/infinispan-cache/src/main/java/io/quarkus/it/cache/infinispan/ExpensiveResource.java create mode 100644 integration-tests/infinispan-cache/src/main/java/io/quarkus/it/cache/infinispan/RestClientResource.java create mode 100644 integration-tests/infinispan-cache/src/main/java/io/quarkus/it/cache/infinispan/SunriseRestClient.java create mode 100644 integration-tests/infinispan-cache/src/main/java/io/quarkus/it/cache/infinispan/SunriseRestServerResource.java create mode 100644 integration-tests/infinispan-cache/src/main/resources/application.properties create mode 100644 integration-tests/infinispan-cache/src/test/java/io/quarkus/it/cache/infinispan/CacheIT.java create mode 100644 integration-tests/infinispan-cache/src/test/java/io/quarkus/it/cache/infinispan/CacheTest.java create mode 100644 integration-tests/infinispan-cache/src/test/java/io/quarkus/it/cache/infinispan/InfinspanCacheClientTestCase.java create mode 100644 integration-tests/liquibase/src/main/resources/db/second/changeLog.xml create mode 100644 integration-tests/liquibase/src/main/resources/db/second/create-table.xml create mode 100644 integration-tests/liquibase/src/main/resources/db/second/initdb.sql create mode 100644 integration-tests/liquibase/src/main/resources/db/second/insert-into-table.xml create mode 100644 integration-tests/maven/src/test/java/io/quarkus/maven/it/FlakyDevMojoIT.java create mode 100644 integration-tests/maven/src/test/resources-filtered/projects/classic-with-log/.env create mode 100644 integration-tests/maven/src/test/resources-filtered/projects/classic-with-log/pom.xml create mode 100644 integration-tests/maven/src/test/resources-filtered/projects/classic-with-log/src/main/java/org/acme/ClasspathResources.java create mode 100644 integration-tests/maven/src/test/resources-filtered/projects/classic-with-log/src/main/java/org/acme/HelloResource.java create mode 100644 integration-tests/maven/src/test/resources-filtered/projects/classic-with-log/src/main/java/org/acme/MyApplication.java create mode 100644 integration-tests/maven/src/test/resources-filtered/projects/classic-with-log/src/main/java/org/acme/ProtectionDomain.java create mode 100644 integration-tests/maven/src/test/resources-filtered/projects/classic-with-log/src/main/resources/META-INF/resources/index.html create mode 100644 integration-tests/maven/src/test/resources-filtered/projects/classic-with-log/src/main/resources/application.properties create mode 100644 integration-tests/maven/src/test/resources-filtered/projects/classic-with-log/src/main/resources/assets/test.txt create mode 100644 integration-tests/maven/src/test/resources-filtered/projects/classic-with-log/src/main/resources/db/location/test.sql create mode 100644 integration-tests/maven/src/test/resources-filtered/projects/classic-with-log/src/test/java/org/acme/HelloResourceTest.java create mode 100644 integration-tests/observability-lgtm/pom.xml create mode 100644 integration-tests/observability-lgtm/src/main/java/io/quarkus/observability/example/SimpleEndpoint.java create mode 100644 integration-tests/observability-lgtm/src/main/resources/application.properties create mode 100644 integration-tests/observability-lgtm/src/test/java/io/quarkus/observability/test/LgtmLifecycleTest.java create mode 100644 integration-tests/observability-lgtm/src/test/java/io/quarkus/observability/test/LgtmResourcesIT.java create mode 100644 integration-tests/observability-lgtm/src/test/java/io/quarkus/observability/test/LgtmResourcesTest.java create mode 100644 integration-tests/observability-lgtm/src/test/java/io/quarkus/observability/test/LgtmServicesTest.java create mode 100644 integration-tests/observability-lgtm/src/test/java/io/quarkus/observability/test/LgtmTestBase.java create mode 100644 integration-tests/observability-lgtm/src/test/java/io/quarkus/observability/test/support/DevResourcesTestProfile.java create mode 100644 integration-tests/observability-lgtm/src/test/java/io/quarkus/observability/test/support/GrafanaClient.java create mode 100644 integration-tests/observability-lgtm/src/test/java/io/quarkus/observability/test/support/QuarkusTestResourceTestProfile.java create mode 100644 integration-tests/observability-lgtm/src/test/java/io/quarkus/observability/test/support/QueryResult.java create mode 100644 integration-tests/observability-lgtm/src/test/java/io/quarkus/observability/test/support/User.java create mode 100644 integration-tests/observability-lgtm/src/test/resources/application.properties create mode 100644 integration-tests/oidc-wiremock/src/main/java/io/quarkus/it/keycloak/BearerGlobalTokenChainValidator.java create mode 100644 integration-tests/oidc-wiremock/src/main/java/io/quarkus/it/keycloak/BearerTenantTokenChainValidator.java rename integration-tests/{webjars-locator => web-dependency-locator}/pom.xml (93%) rename integration-tests/{webjars-locator => web-dependency-locator}/src/main/resources/application.properties (100%) rename integration-tests/{webjars-locator => web-dependency-locator}/src/test/java/io/quarkus/it/webjar/locator/WebJarResourceIT.java (100%) rename integration-tests/{webjars-locator => web-dependency-locator}/src/test/java/io/quarkus/it/webjar/locator/WebJarResourceTest.java (100%) rename integration-tests/{webjars-locator => web-dependency-locator}/src/test/resources/application.properties (100%) create mode 100644 relocations/quarkus-webjars-locator-deployment/pom.xml create mode 100644 relocations/quarkus-webjars-locator/pom.xml diff --git a/.github/native-tests.json b/.github/native-tests.json index 1b05bb4e97989..fbd8e62dbe16a 100644 --- a/.github/native-tests.json +++ b/.github/native-tests.json @@ -86,14 +86,14 @@ }, { "category": "Cache", - "timeout": 65, - "test-modules": "infinispan-cache-jpa, infinispan-client, cache, redis-cache", + "timeout": 75, + "test-modules": "infinispan-cache-jpa, infinispan-client, cache, redis-cache, infinispan-cache", "os-name": "ubuntu-latest" }, { "category": "HTTP", "timeout": 110, - "test-modules": "elytron-resteasy, resteasy-jackson, elytron-resteasy-reactive, resteasy-mutiny, resteasy-reactive-kotlin/standard, vertx, vertx-http, vertx-web, vertx-web-jackson, vertx-graphql, virtual-http, rest-client, rest-client-reactive, rest-client-reactive-stork, rest-client-reactive-multipart, websockets, management-interface, management-interface-auth", + "test-modules": "elytron-resteasy, resteasy-jackson, elytron-resteasy-reactive, resteasy-mutiny, resteasy-reactive-kotlin/standard, vertx, vertx-http, vertx-web, vertx-web-jackson, vertx-graphql, virtual-http, rest-client, rest-client-reactive, rest-client-reactive-stork, rest-client-reactive-multipart, websockets, management-interface, management-interface-auth, mutiny-native-jctools", "os-name": "ubuntu-latest" }, { @@ -116,8 +116,8 @@ }, { "category": "Misc4", - "timeout": 125, - "test-modules": "picocli-native, gradle, micrometer-mp-metrics, micrometer-prometheus, logging-json, jaxp, jaxb, opentelemetry, opentelemetry-jdbc-instrumentation, webjars-locator", + "timeout": 130, + "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" }, { @@ -128,14 +128,14 @@ }, { "category": "gRPC", - "timeout": 75, - "test-modules": "grpc-health, grpc-interceptors, grpc-mutual-auth, grpc-plain-text-gzip, grpc-plain-text-mutiny, grpc-proto-v2, grpc-streaming, grpc-tls, grpc-tls-p12", + "timeout": 80, + "test-modules": "grpc-health, grpc-interceptors, grpc-mutual-auth, grpc-plain-text-gzip, grpc-plain-text-mutiny, grpc-proto-v2, grpc-streaming, grpc-tls, grpc-tls-p12, grpc-test-random-port", "os-name": "ubuntu-latest" }, { - "category": "Windows - RESTEasy Jackson", - "timeout": 25, - "test-modules": "resteasy-jackson", + "category": "Windows support", + "timeout": 50, + "test-modules": "resteasy-jackson, qute", "os-name": "windows-latest" }, { diff --git a/.github/quarkus-github-bot.yml b/.github/quarkus-github-bot.yml index 4c62bcbc07290..06178aae8af14 100644 --- a/.github/quarkus-github-bot.yml +++ b/.github/quarkus-github-bot.yml @@ -474,10 +474,12 @@ triage: notify: [ebullient] - id: config labels: [area/config] + title: "config" directories: - extensions/config-yaml/ - core/deployment/src/main/java/io/quarkus/deployment/configuration/ - core/runtime/src/main/java/io/quarkus/runtime/configuration/ + notify: [radcortez] - id: core labels: [area/core] notify: [aloubyansky, gsmet, geoand, radcortez, Sanne, stuartwdouglas] diff --git a/.github/virtual-threads-tests.json b/.github/virtual-threads-tests.json index 9a8a190876a79..a17c515aeeb5b 100644 --- a/.github/virtual-threads-tests.json +++ b/.github/virtual-threads-tests.json @@ -11,6 +11,12 @@ "timeout": 45, "test-modules": "amqp-virtual-threads, jms-virtual-threads, kafka-virtual-threads", "os-name": "ubuntu-latest" + }, + { + "category": "Security", + "timeout": 20, + "test-modules": "security-webauthn-virtual-threads", + "os-name": "ubuntu-latest" } ] } diff --git a/.github/workflows/ci-actions-incremental.yml b/.github/workflows/ci-actions-incremental.yml index c3a92701dcb76..9ceec26f92325 100644 --- a/.github/workflows/ci-actions-incremental.yml +++ b/.github/workflows/ci-actions-incremental.yml @@ -18,6 +18,8 @@ on: - '.github/*.yml' - '.github/*.java' - '.github/*.conf' + - '.github/workflows/doc-build.yml' + - '.github/workflows/preview.yml' pull_request: types: [opened, synchronize, reopened, ready_for_review] paths-ignore: @@ -33,6 +35,8 @@ on: - '.github/*.yml' - '.github/*.java' - '.github/*.conf' + - '.github/workflows/doc-build.yml' + - '.github/workflows/preview.yml' workflow_dispatch: concurrency: @@ -89,18 +93,12 @@ jobs: name: "Initial JDK 17 Build" runs-on: ubuntu-latest # Skip main in forks - # Skip draft PRs and those with WIP in the subject, rerun as soon as its removed + # Skip draft PRs, rerun as soon as its removed if: "(github.repository == 'quarkusio/quarkus' || !endsWith(github.ref, '/main')) && ( \ github.event_name != 'pull_request' || ( \ github.event.pull_request.draft == false && \ github.event.pull_request.state != 'closed' && \ - contains(github.event.pull_request.title, 'wip ') == false && \ - contains(github.event.pull_request.title, '[wip]') == false && \ - ( - github.event.action != 'edited' || \ - contains(github.event.changes.title.from, 'wip ') || \ - contains(github.event.changes.title.from, '[wip]') \ - ) \ + github.event.action != 'edited' \ ) \ )" outputs: @@ -210,7 +208,7 @@ jobs: 7z a -tzip build-reports.zip -r \ 'target/build-report.json' \ 'target/gradle-build-scan-url.txt' \ - LICENSE.txt + LICENSE - name: Upload build reports uses: actions/upload-artifact@v4 if: always() @@ -400,7 +398,7 @@ jobs: '**/target/*-reports/TEST-*.xml' \ 'target/build-report.json' \ 'target/gradle-build-scan-url.txt' \ - LICENSE.txt + LICENSE - name: Upload build reports uses: actions/upload-artifact@v4 if: always() @@ -510,7 +508,7 @@ jobs: '**/target/*-reports/TEST-*.xml' \ 'target/build-report.json' \ 'target/gradle-build-scan-url.txt' \ - LICENSE.txt + LICENSE - name: Upload build reports uses: actions/upload-artifact@v4 if: always() @@ -596,7 +594,7 @@ jobs: '**/target/*-reports/TEST-*.xml' \ 'target/build-report.json' \ 'target/gradle-build-scan-url.txt' \ - LICENSE.txt + LICENSE - name: Upload build reports uses: actions/upload-artifact@v4 if: always() @@ -688,7 +686,7 @@ jobs: '**/target/*-reports/TEST-*.xml' \ 'target/build-report.json' \ 'target/gradle-build-scan-url.txt' \ - LICENSE.txt + LICENSE - name: Upload build reports uses: actions/upload-artifact@v4 if: always() @@ -780,7 +778,7 @@ jobs: '**/target/*-reports/TEST-*.xml' \ 'target/build-report.json' \ 'target/gradle-build-scan-url.txt' \ - LICENSE.txt + LICENSE - name: Upload build reports uses: actions/upload-artifact@v4 if: always() @@ -937,7 +935,7 @@ jobs: 'integration-tests/virtual-threads/**/target/*-reports/TEST-*.xml' \ 'integration-tests/virtual-threads/target/build-report.json' \ 'integration-tests/virtual-threads/target/gradle-build-scan-url.txt' \ - LICENSE.txt + LICENSE - name: Upload build reports uses: actions/upload-artifact@v4 if: always() @@ -1018,7 +1016,7 @@ jobs: '**/target/*-reports/TEST-*.xml' \ 'target/build-report.json' \ 'target/gradle-build-scan-url.txt' \ - LICENSE.txt + LICENSE - name: Upload build reports uses: actions/upload-artifact@v4 if: always() @@ -1130,7 +1128,7 @@ jobs: '**/build/test-results/test/TEST-*.xml' \ 'target/build-report.json' \ 'target/gradle-build-scan-url.txt' \ - LICENSE.txt + LICENSE - name: Upload build reports uses: actions/upload-artifact@v4 if: always() diff --git a/.github/workflows/native-it-selected-graalvm.yml b/.github/workflows/native-it-selected-graalvm.yml new file mode 100644 index 0000000000000..8103432d9f1df --- /dev/null +++ b/.github/workflows/native-it-selected-graalvm.yml @@ -0,0 +1,396 @@ +name: Quarkus CI - Native IT on selected GraalVM + +on: + workflow_dispatch: + inputs: + BRANCH: + description: 'Branch to use' + required: true + default: 'main' + type: string + NATIVE_COMPILER: + description: 'the native compiler to use' + required: true + default: 'mandrel' + type: choice + options: + - mandrel + - graalvm-community + - graalvm + - liberica + NATIVE_COMPILER_VERSION: + description: 'the native compiler version to use' + required: true + default: '21' + type: choice + options: + - '17' + - '21' + - '22' + +env: + # Workaround testsuite locale issue + LANG: en_US.UTF-8 + COMMON_MAVEN_ARGS: "-e -B --settings .github/mvn-settings.xml --fail-at-end" + COMMON_TEST_MAVEN_ARGS: "-Dformat.skip -Denforcer.skip -DskipDocs -Dforbiddenapis.skip -DskipExtensionValidation -DskipCodestartValidation" + NATIVE_TEST_MAVEN_ARGS: "-Dtest-containers -Dstart-containers -Dquarkus.native.native-image-xmx=6g -Dnative -Dnative.surefire.skip -Dno-descriptor-tests clean install -DskipDocs" + JVM_TEST_MAVEN_ARGS: "-Dtest-containers -Dstart-containers -Dquarkus.test.hang-detection-timeout=60" + PTS_MAVEN_ARGS: "-Ddevelocity.pts.enabled=${{ github.event_name == 'pull_request' && github.base_ref == 'main' && 'true' || 'false' }}" + DB_USER: hibernate_orm_test + DB_PASSWORD: hibernate_orm_test + DB_NAME: hibernate_orm_test + DEVELOCITY_ACCESS_KEY: ${{ secrets.GRADLE_ENTERPRISE_ACCESS_KEY }} + PULL_REQUEST_NUMBER: ${{ github.event.number }} + +defaults: + run: + shell: bash + +jobs: + build-jdk17: + name: "Initial JDK 17 Build - ${{ inputs.BRANCH }}" + runs-on: ubuntu-latest + outputs: + gib_args: ${{ steps.get-gib-args.outputs.gib_args }} + gib_impacted: ${{ steps.get-gib-impacted.outputs.impacted_modules }} + m2-cache-key: ${{ steps.m2-cache-key.outputs.key }} + steps: + - name: Gradle Enterprise environment + run: | + echo "GE_TAGS=jdk-17" >> "$GITHUB_ENV" + echo "GE_CUSTOM_VALUES=gh-job-name=Initial JDK 17 Build" >> "$GITHUB_ENV" + - uses: actions/checkout@v4 + with: + ref: ${{ inputs.BRANCH }} + # this is important for GIB to work + fetch-depth: 0 + - name: Add quarkusio remote + run: git remote show quarkusio &> /dev/null || git remote add quarkusio https://github.com/quarkusio/quarkus.git + - name: Reclaim Disk Space + run: .github/ci-prerequisites.sh + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 17 + - name: Generate .m2 cache key + id: m2-cache-key + run: | + echo "key=m2-cache-$(/bin/date -u "+%Y-%U")" >> $GITHUB_OUTPUT + - name: Cache Maven Repository + id: cache-maven + uses: actions/cache@v4 + with: + path: ~/.m2/repository + # refresh cache every week to avoid unlimited growth + key: ${{ steps.m2-cache-key.outputs.key }} + - name: Verify native-tests.json + run: ./.github/verify-tests-json.sh native-tests.json integration-tests/ + - name: Verify virtual-threads-tests.json + run: ./.github/verify-tests-json.sh virtual-threads-tests.json integration-tests/virtual-threads/ + - name: Setup Develocity Build Scan capture + uses: gradle/develocity-actions/maven-setup@v1 + with: + capture-strategy: ON_DEMAND + job-name: "Initial JDK 17 Build" + add-pr-comment: false + add-job-summary: false + - name: Build + env: + CAPTURE_BUILD_SCAN: true + run: | + ./mvnw -T1C $COMMON_MAVEN_ARGS -DskipTests -DskipITs -DskipDocs -Dinvoker.skip -Dskip.gradle.tests -Djbang.skip -Dtruststore.skip -Dno-format -Dtcks -Prelocations clean install + - name: Verify extension dependencies + run: ./update-extension-dependencies.sh $COMMON_MAVEN_ARGS + - name: Get GIB arguments + id: get-gib-args + env: + PULL_REQUEST_BASE: ${{ github.event.pull_request.base.ref }} + run: | + # See also: https://github.com/gitflow-incremental-builder/gitflow-incremental-builder#configuration (GIB) + # Common GIB_ARGS for all CI cases (hint: see also root pom.xml): + # - disableSelectedProjectsHandling: required to detect changes in jobs that use -pl + # - untracked: to ignore files created by jobs (and uncommitted to be consistent) + GIB_ARGS="-Dincremental -Dgib.disableSelectedProjectsHandling -Dgib.untracked=false -Dgib.uncommitted=false" + if [ -n "$PULL_REQUEST_BASE" ] + then + # The PR defines a clear merge target so just use that branch for reference, *unless*: + # - the current branch is a backport branch targeting some released branch like 1.10 (merge target is not main) + GIB_ARGS+=" -Dgib.referenceBranch=origin/$PULL_REQUEST_BASE -Dgib.disableIfReferenceBranchMatches='origin/\d+\.\d+'" + else + # No PR means the merge target is uncertain so fetch & use main of quarkusio/quarkus, *unless*: + # - the current branch is main or some released branch like 1.10 + # - the current branch is a backport branch which is going to target some released branch like 1.10 (merge target is not main) + GIB_ARGS+=" -Dgib.referenceBranch=refs/remotes/quarkusio/main -Dgib.fetchReferenceBranch -Dgib.disableIfBranchMatches='main|\d+\.\d+|.*backport.*'" + fi + echo "GIB_ARGS: $GIB_ARGS" + echo "gib_args=${GIB_ARGS}" >> $GITHUB_OUTPUT + - name: Get GIB impacted modules + id: get-gib-impacted + # mvnw just for creating gib-impacted.log ("validate" should not waste much time if not incremental at all, e.g. on main) + run: | + ./mvnw -q -T1C $COMMON_MAVEN_ARGS -Dscan=false -Dtcks -Dquickly-ci ${{ steps.get-gib-args.outputs.gib_args }} -Dgib.logImpactedTo=gib-impacted.log validate + if [ -f gib-impacted.log ] + then + GIB_IMPACTED=$(cat gib-impacted.log) + else + GIB_IMPACTED='_all_' + fi + echo "GIB_IMPACTED: ${GIB_IMPACTED}" + # three steps to retain linefeeds in output for other jobs + # (see https://github.com/github/docs/issues/21529 and https://github.com/orgs/community/discussions/26288#discussioncomment-3876281) + echo 'impacted_modules<> $GITHUB_OUTPUT + echo "${GIB_IMPACTED}" >> $GITHUB_OUTPUT + echo 'EOF' >> $GITHUB_OUTPUT + - name: Tar .m2/repository/io/quarkus + run: tar -czf m2-io-quarkus.tgz -C ~ .m2/repository/io/quarkus + - name: Upload .m2/repository/io/quarkus + uses: actions/upload-artifact@v4 + with: + name: m2-io-quarkus + path: m2-io-quarkus.tgz + retention-days: 7 + - name: Delete snapshots artifacts from cache + run: find ~/.m2 -name \*-SNAPSHOT -type d -exec rm -rf {} + + - name: Prepare build reports archive + if: always() + run: | + 7z a -tzip build-reports.zip -r \ + 'target/build-report.json' \ + 'target/gradle-build-scan-url.txt' \ + LICENSE + - name: Upload build reports + uses: actions/upload-artifact@v4 + if: always() + with: + name: "build-reports-Initial JDK 17 Build" + path: | + build-reports.zip + retention-days: 7 + + calculate-test-jobs: + name: Calculate Test Jobs + runs-on: ubuntu-latest + needs: build-jdk17 + env: + GIB_IMPACTED_MODULES: ${{ needs.build-jdk17.outputs.gib_impacted }} + outputs: + native_matrix: ${{ steps.calc-native-matrix.outputs.matrix }} + virtual_threads_matrix: ${{ steps.calc-virtual-threads-matrix.outputs.matrix }} + steps: + - uses: actions/checkout@v4 + - name: Calculate matrix from native-tests.json + id: calc-native-matrix + run: | + echo "GIB_IMPACTED_MODULES: ${GIB_IMPACTED_MODULES}" + json=$(.github/filter-native-tests-json.sh "${GIB_IMPACTED_MODULES}" | tr -d '\n') + # Remove Windows from the matrix + json=$(echo $json | jq 'del(.include[] | select(."os-name" == "windows-latest"))') + json=$(echo $json | tr -d '\n') + echo "${json}" + echo "matrix=${json}" >> $GITHUB_OUTPUT + - name: Calculate matrix from virtual-threads-tests.json + id: calc-virtual-threads-matrix + run: | + echo "GIB_IMPACTED_MODULES: ${GIB_IMPACTED_MODULES}" + json=$(.github/filter-virtual-threads-tests-json.sh "${GIB_IMPACTED_MODULES}" | tr -d '\n') + # Remove Windows from the matrix + json=$(echo $json | jq 'del(.include[] | select(."os-name" == "windows-latest"))') + json=$(echo $json | tr -d '\n') + echo "${json}" + echo "matrix=${json}" >> $GITHUB_OUTPUT + + virtual-thread-native-tests: + name: Native Tests - Virtual Thread - ${{matrix.category}} - ${{inputs.NATIVE_COMPILER}} ${{inputs.NATIVE_COMPILER_VERSION}} - ${{inputs.BRANCH}} + runs-on: ${{matrix.os-name}} + needs: [build-jdk17, calculate-test-jobs] + timeout-minutes: ${{matrix.timeout}} + strategy: + max-parallel: 12 + fail-fast: false + matrix: ${{ fromJson(needs.calculate-test-jobs.outputs.virtual_threads_matrix) }} + steps: + - name: Gradle Enterprise environment + run: | + category=$(echo -n '${{matrix.category}}' | tr '[:upper:]' '[:lower:]' | tr -c '[:alnum:]-' '-' | sed -E 's/-+/-/g') + echo "GE_TAGS=virtual-thread-native-${category}" >> "$GITHUB_ENV" + echo "GE_CUSTOM_VALUES=gh-job-name=Native Tests - Virtual Thread - ${{matrix.category}}" >> "$GITHUB_ENV" + - uses: actions/checkout@v4 + - name: Restore Maven Repository + uses: actions/cache/restore@v4 + with: + path: ~/.m2/repository + # refresh cache every week to avoid unlimited growth + key: ${{ needs.build-jdk17.outputs.m2-cache-key }} + - name: Download .m2/repository/io/quarkus + uses: actions/download-artifact@v4 + with: + name: m2-io-quarkus + path: . + - name: Extract .m2/repository/io/quarkus + run: tar -xzf m2-io-quarkus.tgz -C ~ + - name: Set up JDK 21 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 21 + - name: Setup GraalVM + id: setup-graalvm + uses: graalvm/setup-graalvm@v1 + with: + java-version: ${{ inputs.NATIVE_COMPILER_VERSION }} + distribution: ${{ inputs.NATIVE_COMPILER }} + github-token: ${{ secrets.GITHUB_TOKEN }} + # We do this so we can get better analytics for the downloaded version of the build images + - name: Update Docker Client User Agent + run: | + if [ -f ~/.docker/config.json ]; then + cat <<< $(jq '.HttpHeaders += {"User-Agent": "Quarkus-CI-Docker-Client"}' ~/.docker/config.json) > ~/.docker/config.json + fi + - name: Setup Develocity Build Scan capture + uses: gradle/develocity-actions/maven-setup@v1 + with: + capture-strategy: ON_DEMAND + job-name: "Native Tests - Virtual Thread - ${{matrix.category}}" + add-pr-comment: false + add-job-summary: false + - name: Build + env: + TEST_MODULES: ${{matrix.test-modules}} + CAPTURE_BUILD_SCAN: true + run: | + export LANG=en_US && ./mvnw $COMMON_MAVEN_ARGS $COMMON_TEST_MAVEN_ARGS $PTS_MAVEN_ARGS -f integration-tests/virtual-threads -pl "$TEST_MODULES" $NATIVE_TEST_MAVEN_ARGS + - name: Prepare build reports archive + if: always() + run: | + 7z a -tzip build-reports.zip -r \ + 'integration-tests/virtual-threads/**/target/*-reports/TEST-*.xml' \ + 'integration-tests/virtual-threads/target/build-report.json' \ + 'integration-tests/virtual-threads/target/gradle-build-scan-url.txt' \ + LICENSE + - name: Upload build reports + uses: actions/upload-artifact@v4 + if: always() + with: + name: "build-reports-Virtual Thread Support Tests Native - ${{matrix.category}}" + path: | + build-reports.zip + retention-days: 7 + + native-tests: + name: Native Tests - ${{matrix.category}} - ${{inputs.NATIVE_COMPILER}} ${{inputs.NATIVE_COMPILER_VERSION}} - ${{inputs.BRANCH}} + needs: [build-jdk17, calculate-test-jobs] + runs-on: ${{matrix.os-name}} + env: + # leave more space for the actual native compilation and execution + MAVEN_OPTS: -Xmx1g + # Ignore the following YAML Schema error + timeout-minutes: ${{matrix.timeout}} + strategy: + max-parallel: 12 + fail-fast: false + matrix: ${{ fromJson(needs.calculate-test-jobs.outputs.native_matrix) }} + steps: + - name: Gradle Enterprise environment + run: | + category=$(echo -n '${{matrix.category}}' | tr '[:upper:]' '[:lower:]' | tr -c '[:alnum:]-' '-' | sed -E 's/-+/-/g') + echo "GE_TAGS=native-${category}" >> "$GITHUB_ENV" + echo "GE_CUSTOM_VALUES=gh-job-name=Native Tests - ${{matrix.category}}" >> "$GITHUB_ENV" + - uses: actions/checkout@v4 + - name: Reclaim Disk Space + run: .github/ci-prerequisites.sh + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 17 + - name: Setup GraalVM + id: setup-graalvm + uses: graalvm/setup-graalvm@v1 + with: + java-version: ${{ inputs.NATIVE_COMPILER_VERSION }} + distribution: ${{ inputs.NATIVE_COMPILER }} + github-token: ${{ secrets.GITHUB_TOKEN }} + # We do this so we can get better analytics for the downloaded version of the build images + - name: Update Docker Client User Agent + run: | + if [ -f ~/.docker/config.json ]; then + cat <<< $(jq '.HttpHeaders += {"User-Agent": "Quarkus-CI-Docker-Client"}' ~/.docker/config.json) > ~/.docker/config.json + fi + - name: Restore Maven Repository + uses: actions/cache/restore@v4 + with: + path: ~/.m2/repository + # refresh cache every week to avoid unlimited growth + key: ${{ needs.build-jdk17.outputs.m2-cache-key }} + - name: Download .m2/repository/io/quarkus + uses: actions/download-artifact@v4 + with: + name: m2-io-quarkus + path: . + - name: Extract .m2/repository/io/quarkus + run: tar -xzf m2-io-quarkus.tgz -C ~ + - name: Setup Develocity Build Scan capture + uses: gradle/develocity-actions/maven-setup@v1 + with: + capture-strategy: ON_DEMAND + job-name: "Native Tests - ${{matrix.category}}" + add-pr-comment: false + add-job-summary: false + - name: Cache Quarkus metadata + uses: actions/cache@v4 + with: + path: '**/.quarkus/quarkus-prod-config-dump' + key: ${{ runner.os }}-quarkus-metadata + - name: Build + env: + TEST_MODULES: ${{matrix.test-modules}} + CAPTURE_BUILD_SCAN: true + run: ./mvnw $COMMON_MAVEN_ARGS $COMMON_TEST_MAVEN_ARGS $PTS_MAVEN_ARGS -f integration-tests -pl "$TEST_MODULES" $NATIVE_TEST_MAVEN_ARGS + - name: Prepare failure archive (if maven failed) + if: failure() + run: find . -type d -name '*-reports' -o -wholename '*/build/reports/tests/functionalTest' -o -name '*.log' | tar -czf test-reports.tgz -T - + - name: Upload failure Archive (if maven failed) + uses: actions/upload-artifact@v4 + if: failure() + with: + name: test-reports-native-${{matrix.category}} + path: 'test-reports.tgz' + retention-days: 7 + - name: Prepare build reports archive + if: always() + run: | + 7z a -tzip build-reports.zip -r \ + '**/target/*-reports/TEST-*.xml' \ + '**/build/test-results/test/TEST-*.xml' \ + 'target/build-report.json' \ + 'target/gradle-build-scan-url.txt' \ + LICENSE + - name: Upload build reports + uses: actions/upload-artifact@v4 + if: always() + with: + name: "build-reports-Native Tests - ${{matrix.category}}" + path: | + build-reports.zip + retention-days: 7 + + build-report: + runs-on: ubuntu-latest + name: Build report - ${{inputs.NATIVE_COMPILER}} ${{inputs.NATIVE_COMPILER_VERSION}} - ${{inputs.BRANCH}} + needs: [build-jdk17,native-tests,virtual-thread-native-tests] + if: always() + steps: + - uses: actions/download-artifact@v4 + with: + path: build-reports-artifacts + - name: Set up JDK 17 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: 17 + - name: Produce report and add it as job summary + uses: quarkusio/action-build-reporter@main + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + build-reports-artifacts-path: build-reports-artifacts diff --git a/.github/workflows/preview.yml b/.github/workflows/preview.yml index 25b59f46942e8..32208ac9fb5d6 100644 --- a/.github/workflows/preview.yml +++ b/.github/workflows/preview.yml @@ -14,10 +14,22 @@ jobs: - uses: actions/checkout@v4 with: repository: quarkusio/quarkusio.github.io + fetch-depth: 5000 + fetch-tags: false + + - name: Install git-restore-time + run: sudo apt-get install -y git-restore-mtime + + - name: Restore mtime + run: git restore-mtime + + # There is a weird issue with download-artifact@v4 + # keeping the external action for now - name: Download PR Artifact - uses: actions/download-artifact@v4 + uses: dawidd6/action-download-artifact@v3 with: - run-id: ${{ github.event.workflow_run.workflow_id }} + workflow: ${{ github.event.workflow_run.workflow_id }} + workflow_conclusion: success name: documentation path: documentation-temp - name: Store PR id as variable @@ -33,7 +45,7 @@ jobs: - name: Set up ruby uses: ruby/setup-ruby@v1 with: - ruby-version: 2.7 # can change this to 2.7 or whatever version you prefer + ruby-version: 3.2.3 - name: Build Jekyll site uses: limjh16/jekyll-action-ts@v2 with: @@ -72,6 +84,14 @@ jobs: custom_opts: '--config _config.yml,_only_latest_guides_config.yml' ### If you need to specify any Jekyll build options, enable the above input ### Flags accepted can be found here https://jekyllrb.com/docs/configuration/options/#build-command-options + + - name: Reduce the size of the website to be compatible with surge + run: | + find assets/images/posts/ -mindepth 1 -maxdepth 1 -type d -mtime +100 -exec rm -rf _site/{} \; + find newsletter/ -mindepth 1 -maxdepth 1 -type d -mtime +100 -exec rm -rf _site/{} \; + rm -rf _site/assets/images/worldtour/2023 + rm -rf _site/assets/images/desktopwallpapers + - name: Publishing to surge for preview id: deploy run: npx surge ./_site --domain https://quarkus-pr-main-${{ steps.pr.outputs.id }}-preview.surge.sh --token ${{ secrets.SURGE_TOKEN }} @@ -81,6 +101,10 @@ jobs: token: ${{ secrets.GITHUB_TOKEN }} body: | 🎊 PR Preview ${{ github.sha }} has been successfully built and deployed to https://quarkus-pr-main-${{ steps.pr.outputs.id }}-preview.surge.sh/version/main/guides/ + + - Images of blog posts older than 3 months are not available. + - Newsletters older than 3 months are not available. + body-include: '' diff --git a/.github/workflows/release-build.yml b/.github/workflows/release-build.yml index 33adbbdecaa23..c7ebbe6f2f743 100644 --- a/.github/workflows/release-build.yml +++ b/.github/workflows/release-build.yml @@ -30,10 +30,14 @@ jobs: run: | ./mvnw --settings .github/mvn-settings.xml \ -B \ + -Dscan=false \ + -Dno-build-cache \ + -Dgradle.cache.local.enabled=false \ + -Dgradle.cache.remote.enabled=false \ -Prelease \ -DskipTests -DskipITs \ -Ddokka \ - -Dmaven.repo.local=$HOME/release/repository \ + -Dno-test-modules \ -Dgpg.skip \ clean install - name: Report diff --git a/.mvn/extensions.xml b/.mvn/extensions.xml index 25380d5a91342..8de42849403a8 100644 --- a/.mvn/extensions.xml +++ b/.mvn/extensions.xml @@ -2,7 +2,7 @@ com.gradle develocity-maven-extension - 1.21 + 1.21.2 com.gradle diff --git a/bom/application/pom.xml b/bom/application/pom.xml index bf068f93dfd8f..64955a0c05812 100644 --- a/bom/application/pom.xml +++ b/bom/application/pom.xml @@ -15,7 +15,7 @@ 2.0.2 - 1.77 + 1.78.1 1.0.2.4 1.0.18 5.0.0 @@ -26,7 +26,7 @@ 1.1.5 2.1.5.Final 3.1.2.Final - 6.2.7.Final + 6.2.8.Final 0.33.0 0.2.4 0.1.15 @@ -34,12 +34,12 @@ 1.32.0 1.32.0-alpha 1.21.0-alpha - 5.2.1.Final + 5.2.2.Final 1.12.4 2.1.12 0.22.0 21.3 - 3.0.3 + 3.1 4.0.1 4.0.1 1.3 @@ -56,13 +56,13 @@ 4.0.0 3.10.0 2.8.2 - 6.2.6 - 4.5.0 + 6.3.0 + 4.5.1 2.1.0 1.0.13 3.0.1 3.12.0 - 4.20.0 + 4.21.0 2.6.0 2.1.3 2.1.1 @@ -101,7 +101,7 @@ bytebuddy.version (just below), hibernate-orm.version-for-documentation (in docs/pom.xml) and both hibernate-orm.version and antlr.version in build-parent/pom.xml WARNING again for diffs that don't provide enough context: when updating, see above --> - 6.4.4.Final + 6.4.5.Final 1.14.11 6.0.6.Final 2.2.2.Final @@ -120,7 +120,7 @@ 2.0.0.Final 1.7.0.Final 1.0.1.Final - 2.3.1.Final + 2.4.1.Final 3.6.1.Final 4.5.7 4.5.14 @@ -138,11 +138,10 @@ 10.14.2.0 11.5.8.0 1.2.6 - 5.4.0 2.2 5.10.2 - 15.0.0.Final - 5.0.1.Final + 15.0.1.Final + 5.0.2.Final 3.1.5 4.1.108.Final 1.16.0 @@ -168,7 +167,7 @@ 3.2.0 4.2.1 3.0.4.Final - 10.10.0 + 10.11.1 3.0.3 4.27.0 @@ -217,7 +216,7 @@ 2.4.0 6.9.0.202403050737-r - 0.14.0 + 0.15.0 9.37.3 0.9.6 0.0.6 @@ -227,6 +226,8 @@ 1.1.0 3.0.0 2.12.3 + + 0.16.0 1.0.10 @@ -491,6 +492,18 @@ import + + + io.prometheus + simpleclient + ${prometheus.version} + + + io.prometheus + simpleclient_common + ${prometheus.version} + + @@ -1266,6 +1279,16 @@ quarkus-infinispan-client-deployment ${project.version} + + io.quarkus + quarkus-infinispan-cache + ${project.version} + + + io.quarkus + quarkus-infinispan-cache-deployment + ${project.version} + io.quarkus quarkus-jdbc-db2 @@ -2992,6 +3015,42 @@ quarkus-virtual-threads-deployment ${project.version} + + io.quarkus + quarkus-observability-devservices-common + ${project.version} + + + io.quarkus + quarkus-observability-devservices + ${project.version} + + + io.quarkus + quarkus-observability-devservices-lgtm + ${project.version} + provided + + + io.quarkus + quarkus-observability-testcontainers + ${project.version} + + + io.quarkus + quarkus-observability-devresource-common + ${project.version} + + + io.quarkus + quarkus-observability-devresource-testcontainers + ${project.version} + + + io.quarkus + quarkus-observability-devresource-lgtm + ${project.version} + @@ -3126,12 +3185,12 @@ io.quarkus - quarkus-webjars-locator + quarkus-web-dependency-locator ${project.version} io.quarkus - quarkus-webjars-locator-deployment + quarkus-web-dependency-locator-deployment ${project.version} @@ -6671,6 +6730,16 @@ quarkus-smallrye-reactive-messaging-rabbitmq-deployment ${project.version} + + io.quarkus + quarkus-webjars-locator + ${project.version} + + + io.quarkus + quarkus-webjars-locator-deployment + ${project.version} + diff --git a/bom/dev-ui/pom.xml b/bom/dev-ui/pom.xml index c461772d70c91..291e317c99a73 100644 --- a/bom/dev-ui/pom.xml +++ b/bom/dev-ui/pom.xml @@ -14,7 +14,7 @@ 24.3.10 - 3.1.2 + 3.1.3 4.0.4 3.1.2 1.2.0 @@ -28,7 +28,7 @@ 1.7.5 1.7.0 5.5.0 - 1.0.12 + 1.0.13 1.8.3 2.4.0 diff --git a/core/deployment/pom.xml b/core/deployment/pom.xml index 0878028369f03..852e752a75c70 100644 --- a/core/deployment/pom.xml +++ b/core/deployment/pom.xml @@ -143,6 +143,30 @@ + + maven-dependency-plugin + + + download-signed-jar + generate-test-resources + + copy + + + + + org.eclipse.jgit + org.eclipse.jgit.ssh.apache + 6.9.0.202403050737-r + jar + signed.jar + + + ${project.build.testOutputDirectory} + + + + maven-surefire-plugin diff --git a/core/deployment/src/main/java/io/quarkus/deployment/BootstrapConfig.java b/core/deployment/src/main/java/io/quarkus/deployment/BootstrapConfig.java index 8f3e059be79f0..fc4e1e776034c 100644 --- a/core/deployment/src/main/java/io/quarkus/deployment/BootstrapConfig.java +++ b/core/deployment/src/main/java/io/quarkus/deployment/BootstrapConfig.java @@ -41,6 +41,15 @@ public class BootstrapConfig { @ConfigItem(defaultValue = "false") boolean disableJarCache; + /** + * A temporary option introduced to avoid a logging warning when {@code }-Dquarkus.bootstrap.incubating-model-resolver} + * is added to the build command line. + * This option enables an incubating implementation of the Quarkus Application Model resolver. + * This option will be removed as soon as the incubating implementation becomes the default one. + */ + @ConfigItem(defaultValue = "false") + boolean incubatingModelResolver; + /** * Whether to throw an error, warn or silently ignore misaligned platform BOM imports */ diff --git a/core/deployment/src/main/java/io/quarkus/deployment/Feature.java b/core/deployment/src/main/java/io/quarkus/deployment/Feature.java index 14b9fd7c89bf8..25c5149188eb4 100644 --- a/core/deployment/src/main/java/io/quarkus/deployment/Feature.java +++ b/core/deployment/src/main/java/io/quarkus/deployment/Feature.java @@ -69,6 +69,7 @@ public enum Feature { NARAYANA_LRA, NARAYANA_STM, NEO4J, + OBSERVABILITY, OIDC, OIDC_CLIENT, RESTEASY_CLIENT_OIDC_FILTER, 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 adfdbec20bf84..ec968f494b8b0 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/DevServicesSharedNetworkBuildItem.java b/core/deployment/src/main/java/io/quarkus/deployment/builditem/DevServicesSharedNetworkBuildItem.java index fbce82559bd27..459d3b9605e50 100644 --- a/core/deployment/src/main/java/io/quarkus/deployment/builditem/DevServicesSharedNetworkBuildItem.java +++ b/core/deployment/src/main/java/io/quarkus/deployment/builditem/DevServicesSharedNetworkBuildItem.java @@ -9,15 +9,43 @@ import io.quarkus.builder.BuildChainBuilder; import io.quarkus.builder.BuildStepBuilder; import io.quarkus.builder.item.MultiBuildItem; +import io.quarkus.deployment.dev.devservices.GlobalDevServicesConfig; /** * A marker build item that indicates, if any instances are provided during the build, the containers started by DevServices - * will use a shared network. + * may use a shared network. * This is mainly useful in integration tests where the application container needs to be able * to communicate with the service containers. */ public final class DevServicesSharedNetworkBuildItem extends MultiBuildItem { + private final String source; + + /** Create a build item without identifying the creator source. */ + public DevServicesSharedNetworkBuildItem() { + this.source = UNKNOWN_SOURCE; + } + + /** + * Create a build item identifying the creator source. + * + * @param source The identifier of the creator + */ + public DevServicesSharedNetworkBuildItem(String source) { + this.source = source; + } + + /** The creator source of this build item. May be useful to decide whether a DevService should join a shared network. */ + public String getSource() { + return source; + } + + /* Property used by factory to retrieve the source of instanciation. */ + public static final String SOURCE_PROPERTY = "source"; + + /* Value of source field when instanciation origin is unknown. */ + public static final String UNKNOWN_SOURCE = "unknown"; + /** * Generates a {@code List> build chain builder} which creates a build step * producing the {@link DevServicesSharedNetworkBuildItem} build item. @@ -28,10 +56,28 @@ public static final class Factory implements Function, List< public List> apply(final Map props) { return Collections.singletonList((builder) -> { BuildStepBuilder stepBuilder = builder.addBuildStep((ctx) -> { - ctx.produce(new DevServicesSharedNetworkBuildItem()); + DevServicesSharedNetworkBuildItem buildItem; + if (props != null && props.containsKey(SOURCE_PROPERTY)) { + buildItem = new DevServicesSharedNetworkBuildItem(props.get(SOURCE_PROPERTY).toString()); + } else { + buildItem = new DevServicesSharedNetworkBuildItem(); + } + ctx.produce(buildItem); }); stepBuilder.produces(DevServicesSharedNetworkBuildItem.class).build(); }); } } + + /** + * Helper method for DevServices processors that tells if joining the shared network is required. + * Joining this network may be required if explicitily asked by user properties or if running a containerized + * application during integration tests. + */ + public static boolean isSharedNetworkRequired(GlobalDevServicesConfig globalDevServicesConfig, + List devServicesSharedNetworkBuildItem) { + return globalDevServicesConfig.launchOnSharedNetwork || + (!devServicesSharedNetworkBuildItem.isEmpty() + && devServicesSharedNetworkBuildItem.get(0).getSource().equals("io.quarkus.test.junit")); + } } 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 551b778d6a537..2e8715f3f641a 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/builditem/nativeimage/NativeImageResourceBuildItem.java b/core/deployment/src/main/java/io/quarkus/deployment/builditem/nativeimage/NativeImageResourceBuildItem.java index 56ecff462a4d0..f58313c940ae5 100644 --- a/core/deployment/src/main/java/io/quarkus/deployment/builditem/nativeimage/NativeImageResourceBuildItem.java +++ b/core/deployment/src/main/java/io/quarkus/deployment/builditem/nativeimage/NativeImageResourceBuildItem.java @@ -7,7 +7,11 @@ import io.quarkus.builder.item.MultiBuildItem; /** - * A build item that indicates that a static resource should be included in the native image + * A build item that indicates that a static resource should be included in the native image. + *

+ * A static resource is a file that is not processed by the build steps, but is included in the native image as-is. + * The resource path passed to the constructor is a {@code /}-separated path name (with the same semantics as the parameters + * passed to {@link java.lang.ClassLoader#getResources(String)}. *

* Related build items: *