package org.jboss.test.faces.stub.faces;
import java.io.IOException;
import java.util.Locale;
import javax.faces.FacesException;
import javax.faces.application.ViewHandler;
import javax.faces.component.UIViewRoot;
import javax.faces.context.FacesContext;
public class StubViewHandler extends ViewHandler
{
@Override
public Locale calculateLocale(FacesContext ctx)
{
return Locale.getDefault();
}
@Override
public String calculateRenderKitId(FacesContext ctx)
{
return null;
}
@Override
public UIViewRoot createView(FacesContext ctx, String viewId)
{
UIViewRoot viewRoot = new UIViewRoot();
viewRoot.setViewId(viewId);
//TODO: set locale?
return viewRoot;
}
@Override
public String getActionURL(FacesContext ctx, String viewId)
{
String contextPath = ctx.getExternalContext().getRequestContextPath();
String pathInfo = ctx.getExternalContext().getRequestPathInfo();
String servletPath = ctx.getExternalContext().getRequestServletPath();
if (pathInfo == null || pathInfo.length() == 0)
{
int sploc = servletPath.lastIndexOf('.');
if (sploc < 0)
{
throw new IllegalArgumentException("no file extension in servlet path: " + servletPath);
}
return contextPath + getViewIdSansSuffix(viewId) + servletPath.substring(sploc);
}
else
{
return contextPath + (servletPath != null ? servletPath : "") + viewId;
}
}
private static String getViewIdSansSuffix(String viewId)
{
int loc = viewId.lastIndexOf('.');
if (loc < 0)
{
throw new IllegalArgumentException("no file extension in view id: " + viewId);
}
return viewId.substring(0, loc);
}
@Override
public String getResourceURL(FacesContext ctx, String url)
{
return url;
}
@Override
public void renderView(FacesContext ctx, UIViewRoot viewRoot)
throws IOException, FacesException
{
}
@Override
public UIViewRoot restoreView(FacesContext ctx, String id)
{
return null;
}
@Override
public void writeState(FacesContext ctx) throws IOException
{
}
}