package org.hdiv.context;
import java.io.IOException;
import javax.faces.context.ExternalContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
/**
* Wrapper of ExternalContext.
*
* Generates HDIV's state for redirects and adds it to the url as a
* parameter
*
* @author Gotzon Illarramendi
*
*/
public class RedirectExternalContext2 extends javax.faces.context.ExternalContextWrapper {
private static Log log = LogFactory.getLog(RedirectExternalContext2.class);
/**
* Class for helping with the redirect logic
*/
private RedirectHelper redirectHelper = new RedirectHelper();
/**
* Original ExternalContext
*/
private ExternalContext wrapped;
/**
* Default constructor
*
* @param wrapped
* original ExternalContext
*/
public RedirectExternalContext2(ExternalContext wrapped) {
super();
this.wrapped = wrapped;
}
/*
* (non-Javadoc)
*
* @see javax.faces.context.ExternalContextWrapper#getWrapped()
*/
public ExternalContext getWrapped() {
return this.wrapped;
}
/**
* If it is an internal redirect (to the application itself) generates
* the state, stores it in session and adds corresponding parameter
* to url.
*/
public void redirect(String url) throws IOException {
// Add state to url
String finalUrl = this.redirectHelper.addHDIVStateToURL(url);
if (log.isDebugEnabled()) {
log.debug("redireccionando a la url:" + finalUrl);
}
this.wrapped.redirect(finalUrl);
}
}