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 4ebc98933c..ee9b2a3364 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 UIViewRoot getViewRoot() { 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. @@ -213,4 +204,29 @@ public Map getViewMap() 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/resolver/implicitobject/ImplicitObjectResolver.java b/impl/src/main/java/org/apache/myfaces/el/resolver/implicitobject/ImplicitObjectResolver.java index 18ace9020a..db7eb0b9e7 100644 --- a/impl/src/main/java/org/apache/myfaces/el/resolver/implicitobject/ImplicitObjectResolver.java +++ b/impl/src/main/java/org/apache/myfaces/el/resolver/implicitobject/ImplicitObjectResolver.java @@ -113,6 +113,13 @@ public static ELResolver makeResolverForFacesCDI() 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); }