import java.io.IOException;
import java.io.InputStream;
import java.net.URLEncoder;
+import java.util.Date;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
}
req.setAttribute("shire", getSHIRE(req));
req.setAttribute("target", getTarget(req));
- req.setAttribute("encodedShire", URLEncoder.encode(getSHIRE(req), "UTF-8"));
- req.setAttribute("encodedTarget", URLEncoder.encode(getTarget(req), "UTF-8"));
+ String providerId = getProviderId(req);
+ if (providerId != null) {
+ req.setAttribute("providerId", providerId);
+ req.setAttribute("time", new Long(new Date().getTime() / 1000).toString()); // Unix Time
+ }
req.setAttribute("requestURL", req.getRequestURI().toString());
log.debug("Displaying WAYF selection page.");
private void forwardToHS(HttpServletRequest req, HttpServletResponse res, String handleService)
throws WayfException {
- String shire = getSHIRE(req);
- String target = getTarget(req);
log.info("Redirecting to selected Handle Service");
try {
- res.sendRedirect(
- handleService
- + "?target="
- + URLEncoder.encode(target, "UTF-8")
- + "&shire="
- + URLEncoder.encode(shire, "UTF-8"));
+ StringBuffer buffer = new StringBuffer(handleService + "?target="
+ + URLEncoder.encode(getTarget(req), "UTF-8") + "&shire="
+ + URLEncoder.encode(getSHIRE(req), "UTF-8"));
+ String providerId = getProviderId(req);
+ if (providerId != null) {
+ buffer.append("&providerId=" + URLEncoder.encode(getProviderId(req), "UTF-8"));
+ buffer.append("&time=" + new Long(new Date().getTime() / 1000).toString()); // Unix Time
+ }
+ res.sendRedirect(buffer.toString());
} catch (IOException ioe) {
throw new WayfException("Error forwarding to HS: " + ioe.toString());
}
}
return target;
}
+
+ private String getProviderId(HttpServletRequest req) {
+ if (req.getParameter("providerId") != null) {
+ return req.getParameter("providerId");
+ } else {
+ return (String) req.getAttribute("providerId");
+ }
+ }
private WayfOrigins getOrigins() {
synchronized (originConfig) {
<jsp:useBean id="supportContact" scope="application" class="java.lang.String"/>
<jsp:useBean id="shire" scope="request" class="java.lang.String"/>
<jsp:useBean id="target" scope="request" class="java.lang.String"/>
- <jsp:useBean id="encodedShire" scope="request" class="java.lang.String"/>
- <jsp:useBean id="encodedTarget" scope="request" class="java.lang.String"/>
+ <jsp:useBean id="providerId" scope="request" class="java.lang.String"/>
+ <jsp:useBean id="time" scope="request" class="java.lang.String"/>
<jsp:useBean id="searchResultEmptyText" scope="application" class="java.lang.String"/>
<jsp:useBean id="logoLocation" scope="application" class="java.lang.String"/>
<logic:present name="searchresults" scope="request">
<p>
<input type="hidden" name="shire" value="<bean:write name="shire" />" />
<input type="hidden" name="target" value="<bean:write name="target" />" />
+ <logic:present name="providerId" scope="request">
+ <input type="hidden" name="providerId" value="<bean:write name="providerId" />" />
+ </logic:present>
+ <logic:present name="time" scope="request">
+ <input type="hidden" name="time" value="<bean:write name="time" />" />
+ </logic:present>
<input type="hidden" name="action" value="selection" />
<select name="origin">
<logic:iterate id="origin" name="originset" property="origins">
<p>
<input type="hidden" name="shire" value="<bean:write name="shire" />" />
<input type="hidden" name="target" value="<bean:write name="target" />" />
+ <logic:present name="providerId" scope="request">
+ <input type="hidden" name="providerId" value="<bean:write name="providerId" />" />
+ </logic:present>
+ <logic:present name="time" scope="request">
+ <input type="hidden" name="time" value="<bean:write name="time" />" />
+ </logic:present>
<input type="hidden" name="action" value="search" />
<input type="text" name="string" />
<input type="submit" value="Search" />
<p>
<input type="hidden" name="shire" value="<bean:write name="shire" />" />
<input type="hidden" name="target" value="<bean:write name="target" />" />
+ <logic:present name="providerId" scope="request">
+ <input type="hidden" name="providerId" value="<bean:write name="providerId" />" />
+ </logic:present>
+ <logic:present name="time" scope="request">
+ <input type="hidden" name="time" value="<bean:write name="time" />" />
+ </logic:present>
<input type="hidden" name="action" value="selection" />
<input type="submit" value="Select" />
<input type="checkbox" checked="checked" name="cache" value="TRUE" /><span class="warning">Remember my selection on this computer.</span>