Author: markt Date: Fri Oct 16 10:05:38 2015 New Revision: 1708941 URL: http://svn.apache.org/viewvc?rev=1708941&view=rev Log: Servlet 4.0 Complete a PushBuilder TODO - Cookies
Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationPushBuilder.java Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationPushBuilder.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationPushBuilder.java?rev=1708941&r1=1708940&r2=1708941&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/catalina/core/ApplicationPushBuilder.java (original) +++ tomcat/trunk/java/org/apache/catalina/core/ApplicationPushBuilder.java Fri Oct 16 10:05:38 2015 @@ -40,6 +40,7 @@ import org.apache.coyote.ActionCode; import org.apache.tomcat.util.buf.B2CConverter; import org.apache.tomcat.util.buf.HexUtils; import org.apache.tomcat.util.collections.CaseInsensitiveKeyMap; +import org.apache.tomcat.util.http.CookieProcessor; import org.apache.tomcat.util.res.StringManager; public class ApplicationPushBuilder implements PushBuilder { @@ -385,7 +386,8 @@ public class ApplicationPushBuilder impl } // Cookies - // TODO + setHeader("cookie", generateCookieHeader(cookies, + catalinaRequest.getContext().getCookieProcessor())); coyoteRequest.action(ActionCode.PUSH_REQUEST, pushTarget); @@ -437,6 +439,7 @@ public class ApplicationPushBuilder impl return result.toString(); } + private static String decode(String percentSequence, Charset charset) { byte[] bytes = new byte[percentSequence.length()/3]; for (int i = 0; i < bytes.length; i += 3) { @@ -446,4 +449,24 @@ public class ApplicationPushBuilder impl return new String(bytes, charset); } + + + private static String generateCookieHeader(List<Cookie> cookies, CookieProcessor cookieProcessor) { + StringBuilder result = new StringBuilder(); + boolean first = true; + for (Cookie cookie : cookies) { + if (first) { + first = false; + } else { + result.append(';'); + } + // The cookie header value generated by the CookieProcessor was + // originally intended for the Set-Cookie header on the response. + // However, if passed a Cookie with just a name and value set it + // will generate an appropriate header for the Cookie header on the + // pushed request. + result.append(cookieProcessor.generateHeader(cookie)); + } + return result.toString(); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org