package org.ocpsoft.rewrite.faces.annotation.binding;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import org.ocpsoft.rewrite.annotation.Join;
import org.ocpsoft.rewrite.annotation.Parameter;
import org.ocpsoft.rewrite.faces.annotation.Deferred;
import org.ocpsoft.rewrite.faces.annotation.Phase;
@ManagedBean
@RequestScoped
@Join(path = "/binding/{value}/", to = "/faces/binding.xhtml")
public class DeferredBindingBean
{
private final List<String> log = new ArrayList<String>();
@Parameter("value")
@Deferred
private String defaultPhase;
@Parameter("value")
@Deferred(after = Phase.INVOKE_APPLICATION)
private String afterInvokeApplication;
@Parameter("value")
@Deferred(before = Phase.RENDER_RESPONSE)
private String beforeRenderResponse;
public String getDefaultPhase()
{
return defaultPhase;
}
public void setDefaultPhase(String defaultPhase)
{
this.defaultPhase = defaultPhase;
log.add("Wrote [" + defaultPhase + "] to [defaultPhase] during " + getCurrentPhase());
}
public String getAfterInvokeApplication()
{
return afterInvokeApplication;
}
public void setAfterInvokeApplication(String afterInvokeApplication)
{
this.afterInvokeApplication = afterInvokeApplication;
log.add("Wrote [" + afterInvokeApplication + "] to [afterInvokeApplication] during " + getCurrentPhase());
}
public String getBeforeRenderResponse()
{
return beforeRenderResponse;
}
public void setBeforeRenderResponse(String beforeRenderResponse)
{
this.beforeRenderResponse = beforeRenderResponse;
log.add("Wrote [" + beforeRenderResponse + "] to [beforeRenderResponse] during " + getCurrentPhase());
}
public List<String> getLog()
{
return log;
}
private static String getCurrentPhase()
{
return FacesContext.getCurrentInstance().getCurrentPhaseId().toString();
}
}