/* AuRedirect.java
{{IS_NOTE
Purpose:
Description:
History:
Oct 29, 2013 5:45:24 PM, Created by Vincent
}}IS_NOTE
Copyright (C) 2013 Potix Corporation. All Rights Reserved.
{{IS_RIGHT
This program is distributed under LGPL Version 3.0 in the hope that
it will be useful, but WITHOUT ANY WARRANTY.
}}IS_RIGHT
*/
package org.zkoss.zk.au.http;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.zkoss.zk.au.AuWriter;
import org.zkoss.zk.au.AuWriters;
import org.zkoss.zk.au.out.AuSendRedirect;
import org.zkoss.zk.ui.WebApp;
import org.zkoss.zk.ui.util.WebAppInit;
/**
* The AU processor to handle the HTTP redirect via status 302.
*
* @author Vincent, Robert Wenzel
* @since 7.0.0
*/
public class AuRedirect implements AuExtension, WebAppInit {
private static final Logger log = LoggerFactory.getLogger(AuRedirect.class);
public static final String URI_PREFIX = "/redirect";
public static final String REDIRECT_URL_PARAMETER = "redirectUrl";
public void init(WebApp wapp) throws Exception {
if (DHtmlUpdateServlet.getAuExtension(wapp, URI_PREFIX) == null) {
try {
DHtmlUpdateServlet.addAuExtension(wapp, URI_PREFIX, this);
} catch (Throwable ex) {
log.error("could not initialize AuRedirect extension", ex);
throw new IllegalStateException("could not initialize AuRedirect extension", ex);
}
}
}
public void init(DHtmlUpdateServlet servlet) throws ServletException {
}
public void destroy() {
}
public void service(HttpServletRequest request, HttpServletResponse response, String pi)
throws ServletException, IOException {
String redirectUrl = request.getParameter(REDIRECT_URL_PARAMETER);
AuSendRedirect auSendRedirect = new AuSendRedirect(redirectUrl, null);
AuWriter auWriter = AuWriters.newInstance();
auWriter.open(request, response);
auWriter.write(auSendRedirect);
auWriter.close(request, response);
}
}