You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by vo...@apache.org on 2022/04/13 16:00:27 UTC

[myfaces] branch 2.3.x updated: MYFACES-4432 - Resolve request object (Ports MYFACES-4394)

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

volosied pushed a commit to branch 2.3.x
in repository https://gitbox.apache.org/repos/asf/myfaces.git


The following commit(s) were added to refs/heads/2.3.x by this push:
     new c354bc668 MYFACES-4432 - Resolve request object (Ports MYFACES-4394)
     new 2572d54fd Merge pull request #243 from volosied/MYFACES-4432-2.3
c354bc668 is described below

commit c354bc668b394be5029f6293ec998114f50467cf
Author: Volodymyr Siedlecki <vo...@gmail.com>
AuthorDate: Fri Apr 1 11:00:30 2022 -0400

    MYFACES-4432 - Resolve request object (Ports MYFACES-4394)
---
 .../apache/myfaces/cdi/JsfArtifactProducer.java    | 34 ++++++++++++++++------
 .../implicitobject/ImplicitObjectResolver.java     |  7 +++++
 2 files changed, 32 insertions(+), 9 deletions(-)

diff --git a/impl/src/main/java/org/apache/myfaces/cdi/JsfArtifactProducer.java b/impl/src/main/java/org/apache/myfaces/cdi/JsfArtifactProducer.java
index c014dbd01..7d7cd6791 100644
--- a/impl/src/main/java/org/apache/myfaces/cdi/JsfArtifactProducer.java
+++ b/impl/src/main/java/org/apache/myfaces/cdi/JsfArtifactProducer.java
@@ -171,15 +171,6 @@ public class JsfArtifactProducer
    {
        return FacesContext.getCurrentInstance().getViewRoot();
    }
-
-   @Produces
-   @Named("session")
-   @FacesScoped
-   public Object getSession()
-   {
-       return FacesContext.getCurrentInstance().getExternalContext().getSession(false);
-   }
-   
    
    /*
    The spec actually forces us the use producers for "cc" and "component but it leads to a bad performance.
@@ -226,4 +217,29 @@ public class JsfArtifactProducer
        return FacesContext.getCurrentInstance().getViewRoot().getViewMap();
    }
 
+
+    /*
+    The spec actually forces us the use producers for "session" and "request" but this conflicts with CDI spec actually,
+    because CDI is responsible for producing HttpServletRequest and HttpSession
+    We will still use ELResolvers for this - see ImplicitObjectResolver#makeResolverForFacesCDI().
+
+    See  MYFACES-4432 / MYFACES-4394
+
+    /*
+    @Produces
+    @Named("session")
+    @FacesScoped
+    public Object getSession()
+    {
+        return FacesContext.getCurrentInstance().getExternalContext().getSession(false);
+    }
+    @Produces
+    @Named("request")
+    @FacesScoped 
+    public Object getRequest()
+    {
+       return FacesContext.getCurrentInstance().getExternalContext().getRequest();
+    }
+    */
+   
 }
diff --git a/impl/src/main/java/org/apache/myfaces/el/unified/resolver/implicitobject/ImplicitObjectResolver.java b/impl/src/main/java/org/apache/myfaces/el/unified/resolver/implicitobject/ImplicitObjectResolver.java
index 8822fba57..5dd7e4795 100644
--- a/impl/src/main/java/org/apache/myfaces/el/unified/resolver/implicitobject/ImplicitObjectResolver.java
+++ b/impl/src/main/java/org/apache/myfaces/el/unified/resolver/implicitobject/ImplicitObjectResolver.java
@@ -113,6 +113,13 @@ public class ImplicitObjectResolver extends ELResolver
         
         io = new CompositeComponentImplicitObject();
         forFacesCDIList.put(io.getName(), io);
+
+        // see  MYFACES-4432 / MYFACES-4394
+        io = new RequestImplicitObject();
+        forFacesCDIList.put(io.getName(), io);
+
+        io = new SessionImplicitObject();
+        forFacesCDIList.put(io.getName(), io);
         
         return new ImplicitObjectResolver(forFacesCDIList);
     }