You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by ta...@apache.org on 2025/11/26 12:12:58 UTC

(myfaces) branch main updated: MYFACES-4735: 5.0 Quarkus null check WebMetadata.getContextParams() (#936)

This is an automated email from the ASF dual-hosted git repository.

tandraschko pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/myfaces.git


The following commit(s) were added to refs/heads/main by this push:
     new d8f9fcc9d MYFACES-4735: 5.0 Quarkus null check WebMetadata.getContextParams() (#936)
d8f9fcc9d is described below

commit d8f9fcc9da04f50c3a3543b69951d782dd0d6e00
Author: Melloware <me...@gmail.com>
AuthorDate: Wed Nov 26 07:12:53 2025 -0500

    MYFACES-4735: 5.0 Quarkus null check WebMetadata.getContextParams() (#936)
---
 .../quarkus/deployment/FacesUberJarProcessor.java  |  6 ++--
 .../quarkus/deployment/MyFacesProcessor.java       | 38 +++++++++++++---------
 2 files changed, 25 insertions(+), 19 deletions(-)

diff --git a/extensions/quarkus/deployment/src/main/java/org/apache/myfaces/core/extensions/quarkus/deployment/FacesUberJarProcessor.java b/extensions/quarkus/deployment/src/main/java/org/apache/myfaces/core/extensions/quarkus/deployment/FacesUberJarProcessor.java
index 3fe700c9f..49090ab8d 100644
--- a/extensions/quarkus/deployment/src/main/java/org/apache/myfaces/core/extensions/quarkus/deployment/FacesUberJarProcessor.java
+++ b/extensions/quarkus/deployment/src/main/java/org/apache/myfaces/core/extensions/quarkus/deployment/FacesUberJarProcessor.java
@@ -32,7 +32,7 @@
 import javax.xml.parsers.ParserConfigurationException;
 import javax.xml.transform.TransformerException;
 
-import io.quarkus.deployment.IsNormal;
+import io.quarkus.deployment.IsProduction;
 import io.quarkus.deployment.pkg.builditem.UberJarMergedResourceBuildItem;
 import org.atteo.xmlcombiner.XmlCombiner;
 import org.jboss.logging.Logger;
@@ -61,7 +61,7 @@ public class FacesUberJarProcessor
      *
      * @param producer The build item producer for creating `UberJarMergedResourceBuildItem` instances.
      */
-    @BuildStep(onlyIf = IsNormal.class)
+    @BuildStep(onlyIf = IsProduction.class)
     void uberJarServiceLoaders(BuildProducer<UberJarMergedResourceBuildItem> producer)
     {
         List<String> serviceFiles = List.of(
@@ -89,7 +89,7 @@ void uberJarServiceLoaders(BuildProducer<UberJarMergedResourceBuildItem> produce
      * @param generatedResourcesProducer the producer to add generated resources
      * @param packageConfig the package configuration to check for UBER_JAR type
      */
-    @BuildStep(onlyIf = IsNormal.class)
+    @BuildStep(onlyIf = IsProduction.class)
     void uberJarXmlFiles(BuildProducer<GeneratedResourceBuildItem> generatedResourcesProducer,
             PackageConfig packageConfig)
     {
diff --git a/extensions/quarkus/deployment/src/main/java/org/apache/myfaces/core/extensions/quarkus/deployment/MyFacesProcessor.java b/extensions/quarkus/deployment/src/main/java/org/apache/myfaces/core/extensions/quarkus/deployment/MyFacesProcessor.java
index b6c9e60e7..eaa61d63b 100644
--- a/extensions/quarkus/deployment/src/main/java/org/apache/myfaces/core/extensions/quarkus/deployment/MyFacesProcessor.java
+++ b/extensions/quarkus/deployment/src/main/java/org/apache/myfaces/core/extensions/quarkus/deployment/MyFacesProcessor.java
@@ -18,7 +18,6 @@
  */
 package org.apache.myfaces.core.extensions.quarkus.deployment;
 
-import java.io.IOException;
 import java.lang.reflect.Modifier;
 import java.nio.file.Files;
 import java.util.ArrayList;
@@ -235,15 +234,19 @@ void buildFeature(BuildProducer<FeatureBuildItem> feature)
 
     @BuildStep
     void buildServlet(WebMetadataBuildItem  webMetaDataBuildItem,
-                      BuildProducer<FeatureBuildItem> feature,
                       BuildProducer<ServletBuildItem> servlet,
-                      BuildProducer<ListenerBuildItem> listener) throws IOException
+                      BuildProducer<ListenerBuildItem> listener)
     {
         WebMetaData webMetaData = webMetaDataBuildItem.getWebMetaData();
 
-        boolean extensionlessViews = webMetaData.getContextParams().stream().anyMatch(p ->
-                FacesServlet.AUTOMATIC_EXTENSIONLESS_MAPPING_PARAM_NAME.equals(p.getParamName())
-                        && "true".equals(p.getParamValue()));
+        boolean extensionlessViews = false;
+
+        if (webMetaData.getContextParams() != null)
+        {
+            extensionlessViews = webMetaData.getContextParams().stream().anyMatch(p ->
+                    FacesServlet.AUTOMATIC_EXTENSIONLESS_MAPPING_PARAM_NAME.equals(p.getParamName())
+                            && "true".equals(p.getParamValue()));
+        }
 
         // handle jakarta.faces.AUTOMATIC_EXTENSIONLESS_MAPPING
         Set<String> extensionlessViewMappings = extensionlessViews
@@ -284,7 +287,7 @@ void buildServlet(WebMetadataBuildItem  webMetaDataBuildItem,
         }
         else if (!extensionlessViewMappings.isEmpty())
         {
-            // in case when there are extensionless views enabled, we have add mappings for it
+            // in case when there are extensionless views enabled, we have added mappings for it
             // this is currently only possible by re-register the FacesServlet
             // https://github.com/quarkusio/quarkus/issues/49705
             builder = createServletBuilderFromMetaData(webMetaData, facesServlet);
@@ -471,12 +474,12 @@ void buildFlowScopedMapping(MyFacesRecorder recorder,
 
     @BuildStep
     @Record(ExecutionTime.STATIC_INIT)
-    void collectTopLevelViews(MyFacesRecorder recorder) throws IOException
+    void collectTopLevelViews(MyFacesRecorder recorder)
     {
         findTopLevelViews().forEach(recorder::registerTopLevelView);
     }
 
-    Set<String> findTopLevelViews() throws IOException
+    Set<String> findTopLevelViews()
     {
         Set<String> topLevelViews = new HashSet<>();
         visitRuntimeMetaInfResources(visit ->
@@ -499,7 +502,7 @@ else if (!Files.isDirectory(visit.getPath()))
                     return;
                 }
 
-                String viewId = "/" + visit.getRelativePath().toString()
+                String viewId = "/" + visit.getRelativePath()
                         .replace("META-INF/resources/", "");
                 topLevelViews.add(viewId);
             }
@@ -766,7 +769,7 @@ public List<String> collectSubclasses(CombinedIndexBuildItem combinedIndex, Stri
     public List<String> collectImplementors(CombinedIndexBuildItem combinedIndex, String className)
     {
         List<String> classes = combinedIndex.getIndex()
-                .getAllKnownImplementors(DotName.createSimple(className))
+                .getAllKnownImplementations(DotName.createSimple(className))
                 .stream()
                 .map(ClassInfo::toString)
                 .collect(Collectors.toList());
@@ -996,13 +999,16 @@ private ServletBuildItem.Builder createServletBuilderFromMetaData(WebMetaData we
         ServletBuildItem.Builder builder = ServletBuildItem.builder(servletMeta.getName(),
                 servletMeta.getServletClass());
 
-        webMetaData.getServletMappings().forEach(mapping ->
+        if (webMetaData.getServletMappings() != null)
         {
-            if (servletMeta.getName().equals(mapping.getServletName()))
+            webMetaData.getServletMappings().forEach(mapping ->
             {
-                mapping.getUrlPatterns().forEach(builder::addMapping);
-            }
-        });
+                if (servletMeta.getName().equals(mapping.getServletName()))
+                {
+                    mapping.getUrlPatterns().forEach(builder::addMapping);
+                }
+            });
+        }
         if (servletMeta.getInitParam() != null)
         {
             servletMeta.getInitParam()