/* * Copyright 2006-2012 ICEsoft Technologies Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the * License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an "AS * IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language * governing permissions and limitations under the License. */ package org.icepdf.examples.jsf.viewer.util; import javax.faces.FactoryFinder; import javax.faces.application.Application; import javax.faces.application.ApplicationFactory; import javax.faces.application.FacesMessage; import javax.faces.context.ExternalContext; import javax.faces.context.FacesContext; import javax.faces.el.ValueBinding; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; /** * JSF utilities. * * @since 3.0 */ public class FacesUtils { /** * Get servlet context. * * @return the servlet context */ public static ServletContext getServletContext() { return (ServletContext) FacesContext.getCurrentInstance().getExternalContext().getContext(); } public static String getContextParam(String contextParam){ return getServletContext().getInitParameter(contextParam); } public static ExternalContext getExternalContext() { FacesContext fc = FacesContext.getCurrentInstance(); return fc.getExternalContext(); } public static HttpSession getHttpSession(boolean create) { return (HttpSession) FacesContext.getCurrentInstance(). getExternalContext().getSession(create); } /** * Get managed bean based on the bean name. * * @param beanName the bean name * @return the managed bean associated with the bean name */ public static Object getManagedBean(String beanName) { return getValueBinding(getJsfEl(beanName)).getValue(FacesContext.getCurrentInstance()); } /** * Remove the managed bean based on the bean name. * * @param beanName the bean name of the managed bean to be removed */ public static void resetManagedBean(String beanName) { getValueBinding(getJsfEl(beanName)).setValue(FacesContext.getCurrentInstance(), null); } /** * Store the managed bean inside the session scope. * * @param beanName the name of the managed bean to be stored * @param managedBean the managed bean to be stored */ public static void setManagedBeanInSession(String beanName, Object managedBean) { FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put(beanName, managedBean); } /** * Get parameter value from request scope. * * @param name the name of the parameter * @return the parameter value */ public static String getRequestParameter(String name) { return (String) FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(name); } /** * Add information message. * * @param msg the information message */ public static void addInfoMessage(String msg) { addInfoMessage(null, msg); } /** * Add information message to a specific client. * * @param clientId the client id * @param msg the information message */ public static void addInfoMessage(String clientId, String msg) { FacesContext.getCurrentInstance().addMessage(clientId, new FacesMessage(FacesMessage.SEVERITY_INFO, msg, msg)); } /** * Add error message. * * @param msg the error message */ public static void addErrorMessage(String msg) { addErrorMessage(null, msg); } /** * Add error message to a specific client. * * @param clientId the client id * @param msg the error message */ public static void addErrorMessage(String clientId, String msg) { FacesContext.getCurrentInstance().addMessage(clientId, new FacesMessage(FacesMessage.SEVERITY_ERROR, msg, msg)); } private static Application getApplication() { ApplicationFactory appFactory = (ApplicationFactory) FactoryFinder.getFactory(FactoryFinder.APPLICATION_FACTORY); return appFactory.getApplication(); } private static ValueBinding getValueBinding(String el) { return getApplication().createValueBinding(el); } private static HttpServletRequest getServletRequest() { return (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest(); } private static Object getElValue(String el) { return getValueBinding(el).getValue(FacesContext.getCurrentInstance()); } private static String getJsfEl(String value) { return "#{" + value + "}"; } }