001package de.cuioss.test.jsf.producer; 002 003import javax.enterprise.context.ApplicationScoped; 004import javax.enterprise.context.Dependent; 005import javax.enterprise.context.RequestScoped; 006import javax.enterprise.inject.Produces; 007import javax.enterprise.inject.Typed; 008import javax.faces.context.FacesContext; 009import javax.servlet.ServletContext; 010import javax.servlet.http.HttpServletRequest; 011import javax.servlet.http.HttpServletResponse; 012 013import org.apache.myfaces.test.mock.MockExternalContext22; 014 015/** 016 * Produces a 017 * <ul> 018 * <li>{@link RequestScoped} {@link HttpServletResponse}</li> 019 * <li>{@link RequestScoped} {@link HttpServletRequest}.</li> 020 * <li>{@link Dependent} {@link ServletContext}</li> 021 * </ul> 022 * The objects are derived from the {@link FacesContext} 023 * 024 * It is designed as 'opt-in'. Use with {@code @AddBeanClasses}. 025 * 026 */ 027@ApplicationScoped 028public class ServletObjectsFromJSFContextProducers { 029 030 @Produces 031 @Typed({ HttpServletRequest.class }) 032 @RequestScoped 033 HttpServletRequest produceServletRequest() { 034 return (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest(); 035 } 036 037 @Produces 038 @Typed({ HttpServletResponse.class }) 039 @RequestScoped 040 HttpServletResponse produceServletResponse() { 041 return (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); 042 } 043 044 @Produces 045// @Typed({ ServletContext.class }) 046 @Dependent 047 ServletContext produceServletContext() { 048 return (ServletContext) ((MockExternalContext22) FacesContext.getCurrentInstance().getExternalContext()) 049 .getContext(); 050 } 051}