JsfVariableResolver.java
// license-header java merge-point
// Generated by andromda-jsf cartridge (utils\JsfVariableResolver.java.vsl) DO NOT EDIT!
package org.andromda.presentation.jsf;
import java.util.Map;
import javax.faces.context.FacesContext;
import javax.faces.el.EvaluationException;
import javax.faces.el.VariableResolver;
import javax.servlet.http.HttpServletRequest;
import org.apache.myfaces.trinidad.context.RequestContext;
/**
*
*/
public class JsfVariableResolver extends VariableResolver
{
private VariableResolver originalVariableResolver;
/**
* Constructor.
* @param originalVariableResolverIn Original JSF variable resolver.
*/
public JsfVariableResolver(VariableResolver originalVariableResolverIn) {
this.originalVariableResolver = originalVariableResolverIn;
}
/**
* @see javax.faces.el.VariableResolver#resolveVariable(javax.faces.context.FacesContext, java.lang.String)
*/
@Override
@SuppressWarnings("unchecked")
public Object resolveVariable(FacesContext context, String name) throws EvaluationException
{
Object result = this.originalVariableResolver.resolveVariable(context, name);
if(result == null)
{
final Map<String, Object> pageFlowScope = RequestContext.getCurrentInstance().getPageFlowScope();
final Map<String, Object> controllerForms = (Map<String, Object>)pageFlowScope.get(ControllerBase.USE_CASE_FORMS_KEY);
if(controllerForms != null)
{
result = controllerForms.get(name);
}
if(result == null)
{
final Map<String, Object> controllerVariables = (Map<String, Object>)pageFlowScope.get(ControllerBase.USE_CASE_PAGE_VARIABLES_KEY);
if(controllerVariables != null)
{
result = controllerVariables.get(name);
}
}
if(result != null)
{
getRequest(context).setAttribute(name,result);
}
}
return result;
}
/**
* A helper method that gets the current request from the faces
* context.
*
* @param context a faces context
* @return the current request instance.
*/
protected HttpServletRequest getRequest(FacesContext context)
{
return (HttpServletRequest)context.getExternalContext().getRequest();
}
}