Java Code Examples for javax.servlet.http.Cookie#setComment()

The following examples show how to use javax.servlet.http.Cookie#setComment() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: SimpleCookieManager.java    From lastaflute with Apache License 2.0 6 votes vote down vote up
protected Cookie createSnapshotCookie(Cookie src) {
    // not use close() to avoid dependency to ServletContainer
    final Cookie snapshot = new Cookie(src.getName(), src.getValue());
    snapshot.setPath(src.getPath());
    snapshot.setMaxAge(src.getMaxAge());
    final String domain = src.getDomain();
    if (domain != null) { // the setter has filter process
        snapshot.setDomain(domain);
    }
    snapshot.setSecure(src.getSecure());
    final String comment = src.getComment();
    if (comment != null) { // just in case
        snapshot.setComment(comment);
    }
    snapshot.setVersion(src.getVersion());
    snapshot.setHttpOnly(src.isHttpOnly());
    return snapshot;
}
 
Example 2
Source File: PreservingCookiePathProxyServlet.java    From bonita-ui-designer with GNU General Public License v2.0 6 votes vote down vote up
/**
 * Copy cookie from the proxy to the servlet client.
 * Replaces cookie path to local path and renames cookie to avoid collisions.
 */
@Override
protected void copyProxyCookie(HttpServletRequest servletRequest,
                               HttpServletResponse servletResponse, String headerValue) {
    List<HttpCookie> cookies = HttpCookie.parse(headerValue);
    String path = servletRequest.getContextPath(); // path starts with / or is empty string
    path += servletRequest.getServletPath(); // servlet path starts with / or is empty string
    if (path.isEmpty()) {
        path = "/";
    }

    for (HttpCookie cookie : cookies) {
        //set cookie name prefixed w/ a proxy value so it won't collide w/ other cookies
        String cookieName = doPreserveCookies ? cookie.getName() : getCookieNamePrefix(cookie.getName()) + cookie.getName();
        Cookie servletCookie = new Cookie(cookieName, cookie.getValue());
        servletCookie.setComment(cookie.getComment());
        servletCookie.setMaxAge((int) cookie.getMaxAge());
        //fix: preserve path when preserving cookies
        String cookiePath = doPreserveCookies ? cookie.getPath() : path;
        servletCookie.setPath(cookiePath); //set to the path of the proxy servlet
        // don't set cookie domain
        servletCookie.setSecure(cookie.getSecure());
        servletCookie.setVersion(cookie.getVersion());
        servletResponse.addCookie(servletCookie);
    }
}
 
Example 3
Source File: ApiCatalogLogoutSuccessHandler.java    From api-layer with Eclipse Public License 2.0 6 votes vote down vote up
/**
 * Clears cookie, session, context and sets response code
 *
 * @param httpServletRequest  Http request
 * @param httpServletResponse Http response
 * @param authentication      Valid authentication
 */
@Override
public void onLogoutSuccess(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse,
                            Authentication authentication) {
    HttpSession session = httpServletRequest.getSession(false);
    if (session != null) {
        session.invalidate();
    }
    httpServletResponse.setStatus(HttpServletResponse.SC_OK);

    // Set the cookie to null and expired
    Cookie tokenCookie = new Cookie(authConfigurationProperties.getCookieProperties().getCookieName(), null);
    tokenCookie.setPath(authConfigurationProperties.getCookieProperties().getCookiePath());
    tokenCookie.setComment(authConfigurationProperties.getCookieProperties().getCookieComment());
    tokenCookie.setSecure(true);
    tokenCookie.setHttpOnly(true);
    tokenCookie.setMaxAge(0);
    httpServletResponse.addCookie(tokenCookie);

    SecurityContext context = SecurityContextHolder.getContext();
    context.setAuthentication(null);
    SecurityContextHolder.clearContext();
}
 
Example 4
Source File: NettyHttpServletRequest.java    From Jinx with Apache License 2.0 6 votes vote down vote up
@Override
public Cookie[] getCookies() {
    String cookieString = this.request.headers().get(COOKIE);
    if (cookieString != null) {
        Set<io.netty.handler.codec.http.Cookie> cookies = CookieDecoder.decode(cookieString);
        if (!cookies.isEmpty()) {
            Cookie[] cookiesArray = new Cookie[cookies.size()];
            int indx = 0;
            for (io.netty.handler.codec.http.Cookie c : cookies) {
                Cookie cookie = new Cookie(c.getName(), c.getValue());
                cookie.setComment(c.getComment());
                cookie.setDomain(c.getDomain());
                cookie.setMaxAge((int) c.getMaxAge());
                cookie.setPath(c.getPath());
                cookie.setSecure(c.isSecure());
                cookie.setVersion(c.getVersion());
                cookiesArray[indx] = cookie;
                indx++;
            }
            return cookiesArray;

        }
    }
    return new Cookie[0];
}
 
Example 5
Source File: ApiProxyServlet.java    From onboard with Apache License 2.0 6 votes vote down vote up
/**
 * Copy cookie from the proxy to the servlet client. Replaces cookie path to local path and renames cookie to avoid
 * collisions.
 */
protected void copyProxyCookie(HttpServletRequest servletRequest, HttpServletResponse servletResponse, Header header) {
    List<HttpCookie> cookies = HttpCookie.parse(header.getValue());
    String path = getServletContext().getServletContextName();
    if (path == null) {
        path = "";
    }
    path += servletRequest.getServletPath();

    for (HttpCookie cookie : cookies) {
        // set cookie name prefixed w/ a proxy value so it won't collide w/ other cookies
        String proxyCookieName = getCookieNamePrefix() + cookie.getName();
        Cookie servletCookie = new Cookie(proxyCookieName, cookie.getValue());
        servletCookie.setComment(cookie.getComment());
        servletCookie.setMaxAge((int) cookie.getMaxAge());
        servletCookie.setPath(path); // set to the path of the proxy servlet
        // don't set cookie domain
        servletCookie.setSecure(cookie.getSecure());
        servletCookie.setVersion(cookie.getVersion());
        servletResponse.addCookie(servletCookie);
    }
}
 
Example 6
Source File: JaxRsResponseHandler.java    From packagedrone with Eclipse Public License 1.0 5 votes vote down vote up
private static Cookie mapCookie ( final Map.Entry<String, NewCookie> entry )
{
    final String name = entry.getKey ();
    final NewCookie nc = entry.getValue ();

    final Cookie cookie = new Cookie ( name, nc.getValue () );
    cookie.setComment ( nc.getComment () );
    cookie.setDomain ( nc.getDomain () );
    cookie.setHttpOnly ( nc.isHttpOnly () );
    cookie.setMaxAge ( nc.getMaxAge () );
    cookie.setPath ( nc.getPath () );
    cookie.setSecure ( nc.isSecure () );
    cookie.setVersion ( nc.getVersion () );
    return cookie;
}
 
Example 7
Source File: NettyToServletCookieConvertor.java    From netty-servlet with Apache License 2.0 5 votes vote down vote up
public static Cookie convert(org.jboss.netty.handler.codec.http.Cookie nettyCookie){
    Cookie servletCookie = new Cookie(nettyCookie.getName(),nettyCookie.getValue());
    servletCookie.setDomain(nettyCookie.getDomain());
    servletCookie.setMaxAge(nettyCookie.getMaxAge());
    servletCookie.setHttpOnly(nettyCookie.isHttpOnly());
    servletCookie.setPath(nettyCookie.getPath());
    servletCookie.setSecure(nettyCookie.isSecure());
    servletCookie.setVersion(nettyCookie.getVersion());
    servletCookie.setComment(nettyCookie.getComment());
    return servletCookie;
}
 
Example 8
Source File: SuccessfulLoginHandler.java    From api-layer with Eclipse Public License 2.0 5 votes vote down vote up
/**
 * Add the cookie to the response
 *
 * @param token    the authentication token
 * @param response send back this response
 */
private void setCookie(String token, HttpServletResponse response) {
    Cookie tokenCookie = new Cookie(authConfigurationProperties.getCookieProperties().getCookieName(), token);
    tokenCookie.setComment(authConfigurationProperties.getCookieProperties().getCookieComment());
    tokenCookie.setPath(authConfigurationProperties.getCookieProperties().getCookiePath());
    tokenCookie.setHttpOnly(true);
    tokenCookie.setMaxAge(authConfigurationProperties.getCookieProperties().getCookieMaxAge());
    tokenCookie.setSecure(authConfigurationProperties.getCookieProperties().isCookieSecure());

    response.addCookie(tokenCookie);
}
 
Example 9
Source File: ProxyServlet.java    From openwebbeans-meecrowave with Apache License 2.0 5 votes vote down vote up
protected void addCookie(final HttpServletResponse resp, final Map.Entry<String, NewCookie> cookie) {
    final NewCookie nc = cookie.getValue();
    final Cookie servletCookie = new Cookie(cookie.getKey(), nc.getValue());
    servletCookie.setComment(nc.getComment());
    if (nc.getDomain() != null) {
        servletCookie.setDomain(nc.getDomain());
    }
    servletCookie.setHttpOnly(nc.isHttpOnly());
    servletCookie.setSecure(nc.isSecure());
    servletCookie.setMaxAge(nc.getMaxAge());
    servletCookie.setPath(nc.getPath());
    servletCookie.setVersion(nc.getVersion());
    resp.addCookie(servletCookie);
}
 
Example 10
Source File: SetCookie.java    From journaldev with MIT License 5 votes vote down vote up
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	PrintWriter out = response.getWriter();
	Cookie[] requestCookies = request.getCookies();
	
	out.write("<html><head></head><body>");
	out.write("<h3>Hello Browser!!</h3>");
	if(requestCookies != null){
	out.write("<h3>Request Cookies:</h3>");
	for(Cookie c : requestCookies){
		out.write("Name="+c.getName()+", Value="+c.getValue()+", Comment="+c.getComment()
				+", Domain="+c.getDomain()+", MaxAge="+c.getMaxAge()+", Path="+c.getPath()
				+", Version="+c.getVersion());
		out.write("<br>");
	}
	}
	//Set cookies for counter, accessible to only this servlet
	count++;
	Cookie counterCookie = new Cookie("Counter", String.valueOf(count));
	//add some description to be viewed in browser cookie viewer
	counterCookie.setComment("SetCookie Counter");
	//setting max age to be 1 day
	counterCookie.setMaxAge(24*60*60);
	//set path to make it accessible to only this servlet
	counterCookie.setPath("/ServletCookie/cookie/SetCookie");

	//adding cookie to the response
	response.addCookie(counterCookie);
	
	//set a domain specific cookie
	Cookie domainCookie = new Cookie("Test", "Test Cookie"+String.valueOf(count));
	domainCookie.setComment("Test Cookie");
	response.addCookie(domainCookie);
	
	out.write("</body></html>");
}
 
Example 11
Source File: CrossSubdomainSessionValve.java    From scipio-erp with Apache License 2.0 4 votes vote down vote up
protected void replaceCookie(Request request, Response response, Cookie cookie) {

        Delegator delegator = (Delegator) request.getAttribute("delegator");
        // copy the existing session cookie, but use a different domain (only if domain is valid)
        String cookieDomain = null;
        cookieDomain = EntityUtilProperties.getPropertyValue("url", "cookie.domain", "", delegator);

        if (UtilValidate.isEmpty(cookieDomain)) {
            String serverName = request.getServerName();
            String[] domainArray = serverName.split("\\.");
            // check that the domain isn't an IP address
            if (domainArray.length == 4) {
                boolean isIpAddress = true;
                for (String domainSection : domainArray) {
                    if (!UtilValidate.isIntegerInRange(domainSection, 0, 255)) {
                        isIpAddress = false;
                        break;
                    }
                }
                if (isIpAddress) {
                    return;
                }
            }
            if (domainArray.length > 2) {
                cookieDomain = "." + domainArray[domainArray.length - 2] + "." + domainArray[domainArray.length - 1];
            }
        }


        if (UtilValidate.isNotEmpty(cookieDomain)) {
            Cookie newCookie = new Cookie(cookie.getName(), cookie.getValue());
            if (cookie.getPath() != null) {
                newCookie.setPath(cookie.getPath());
            }
            newCookie.setDomain(cookieDomain);
            newCookie.setMaxAge(cookie.getMaxAge());
            newCookie.setVersion(cookie.getVersion());
            if (cookie.getComment() != null) {
                newCookie.setComment(cookie.getComment());
            }
            newCookie.setSecure(cookie.getSecure());
            newCookie.setHttpOnly(cookie.isHttpOnly());

            // if the response has already been committed, our replacement strategy will have no effect
            if (response.isCommitted()) {
                Debug.logError("CrossSubdomainSessionValve: response was already committed!", module);
            }

            // find the Set-Cookie header for the existing cookie and replace its value with new cookie
            MimeHeaders mimeHeaders = request.getCoyoteRequest().getMimeHeaders();
            for (int i = 0, size = mimeHeaders.size(); i < size; i++) {
                if (mimeHeaders.getName(i).equals("Set-Cookie")) {
                    MessageBytes value = mimeHeaders.getValue(i);
                    if (value.indexOf(cookie.getName()) >= 0) {
                        String newCookieValue = request.getContext().getCookieProcessor().generateHeader(newCookie);
                        if (Debug.verboseOn()) Debug.logVerbose("CrossSubdomainSessionValve: old Set-Cookie value: " + value.toString(), module);
                        if (Debug.verboseOn()) Debug.logVerbose("CrossSubdomainSessionValve: new Set-Cookie value: " + newCookieValue, module);
                        value.setString(newCookieValue);
                    }
                }
            }
        }
    }
 
Example 12
Source File: ApplicationSessionCookieConfig.java    From tomcatsrc with Apache License 2.0 4 votes vote down vote up
/**
 * Creates a new session cookie for the given session ID
 *
 * @param context     The Context for the web application
 * @param sessionId   The ID of the session for which the cookie will be
 *                    created
 * @param secure      Should session cookie be configured as secure
 */
public static Cookie createSessionCookie(Context context,
        String sessionId, boolean secure) {

    SessionCookieConfig scc =
        context.getServletContext().getSessionCookieConfig();

    // NOTE: The priority order for session cookie configuration is:
    //       1. Context level configuration
    //       2. Values from SessionCookieConfig
    //       3. Defaults

    Cookie cookie = new Cookie(
            SessionConfig.getSessionCookieName(context), sessionId);
   
    // Just apply the defaults.
    cookie.setMaxAge(scc.getMaxAge());
    cookie.setComment(scc.getComment());
   
    if (context.getSessionCookieDomain() == null) {
        // Avoid possible NPE
        if (scc.getDomain() != null) {
            cookie.setDomain(scc.getDomain());
        }
    } else {
        cookie.setDomain(context.getSessionCookieDomain());
    }

    // Always set secure if the request is secure
    if (scc.isSecure() || secure) {
        cookie.setSecure(true);
    }

    // Always set httpOnly if the context is configured for that
    if (scc.isHttpOnly() || context.getUseHttpOnly()) {
        cookie.setHttpOnly(true);
    }
   
    String contextPath = context.getSessionCookiePath();
    if (contextPath == null || contextPath.length() == 0) {
        contextPath = scc.getPath();
    }
    if (contextPath == null || contextPath.length() == 0) {
        contextPath = context.getEncodedPath();
    }
    if (context.getSessionCookiePathUsesTrailingSlash()) {
        // Handle special case of ROOT context where cookies require a path of
        // '/' but the servlet spec uses an empty string
        // Also ensure the cookies for a context with a path of /foo don't get
        // sent for requests with a path of /foobar
        if (!contextPath.endsWith("/")) {
            contextPath = contextPath + "/";
        }
    } else {
        // Only handle special case of ROOT context where cookies require a
        // path of '/' but the servlet spec uses an empty string
        if (contextPath.length() == 0) {
            contextPath = "/";
        }
    }
    cookie.setPath(contextPath);

    return cookie;
}
 
Example 13
Source File: Request.java    From tomcatsrc with Apache License 2.0 4 votes vote down vote up
/**
 * Parse cookies.
 */
protected void parseCookies() {

    cookiesParsed = true;

    Cookies serverCookies = coyoteRequest.getCookies();
    int count = serverCookies.getCookieCount();
    if (count <= 0) {
        return;
    }

    cookies = new Cookie[count];

    int idx=0;
    for (int i = 0; i < count; i++) {
        ServerCookie scookie = serverCookies.getCookie(i);
        try {
            /*
            we must unescape the '\\' escape character
            */
            Cookie cookie = new Cookie(scookie.getName().toString(),null);
            int version = scookie.getVersion();
            cookie.setVersion(version);
            cookie.setValue(unescape(scookie.getValue().toString()));
            cookie.setPath(unescape(scookie.getPath().toString()));
            String domain = scookie.getDomain().toString();
            if (domain!=null)
             {
                cookie.setDomain(unescape(domain));//avoid NPE
            }
            String comment = scookie.getComment().toString();
            cookie.setComment(version==1?unescape(comment):null);
            cookies[idx++] = cookie;
        } catch(IllegalArgumentException e) {
            // Ignore bad cookie
        }
    }
    if( idx < count ) {
        Cookie [] ncookies = new Cookie[idx];
        System.arraycopy(cookies, 0, ncookies, 0, idx);
        cookies = ncookies;
    }

}
 
Example 14
Source File: PrintingResultHandlerTests.java    From spring4-understanding with Apache License 2.0 4 votes vote down vote up
@Test
@SuppressWarnings("deprecation")
public void printResponse() throws Exception {
	Cookie enigmaCookie = new Cookie("enigma", "42");
	enigmaCookie.setComment("This is a comment");
	enigmaCookie.setHttpOnly(true);
	enigmaCookie.setMaxAge(1234);
	enigmaCookie.setDomain(".example.com");
	enigmaCookie.setPath("/crumbs");
	enigmaCookie.setSecure(true);

	this.response.setStatus(400, "error");
	this.response.addHeader("header", "headerValue");
	this.response.setContentType("text/plain");
	this.response.getWriter().print("content");
	this.response.setForwardedUrl("redirectFoo");
	this.response.sendRedirect("/redirectFoo");
	this.response.addCookie(new Cookie("cookie", "cookieValue"));
	this.response.addCookie(enigmaCookie);

	this.handler.handle(this.mvcResult);

	HttpHeaders headers = new HttpHeaders();
	headers.set("header", "headerValue");
	headers.setContentType(MediaType.TEXT_PLAIN);
	headers.setLocation(new URI("/redirectFoo"));

	String heading = "MockHttpServletResponse";
	assertValue(heading, "Status", this.response.getStatus());
	assertValue(heading, "Error message", response.getErrorMessage());
	assertValue(heading, "Headers", headers);
	assertValue(heading, "Content type", this.response.getContentType());
	assertValue(heading, "Body", this.response.getContentAsString());
	assertValue(heading, "Forwarded URL", this.response.getForwardedUrl());
	assertValue(heading, "Redirected URL", this.response.getRedirectedUrl());

	Map<String, Map<String, Object>> printedValues = this.handler.getPrinter().printedValues;
	String[] cookies = (String[]) printedValues.get(heading).get("Cookies");
	assertEquals(2, cookies.length);
	String cookie1 = cookies[0];
	String cookie2 = cookies[1];
	assertTrue(cookie1.startsWith("[" + Cookie.class.getSimpleName()));
	assertTrue(cookie1.contains("name = 'cookie', value = 'cookieValue'"));
	assertTrue(cookie1.endsWith("]"));
	assertTrue(cookie2.startsWith("[" + Cookie.class.getSimpleName()));
	assertTrue(cookie2.contains("name = 'enigma', value = '42', comment = 'This is a comment', domain = '.example.com', maxAge = 1234, path = '/crumbs', secure = true, version = 0, httpOnly = true"));
	assertTrue(cookie2.endsWith("]"));
}
 
Example 15
Source File: Request.java    From Tomcat8-Source-Read with MIT License 4 votes vote down vote up
/**
 * Converts the parsed cookies (parsing the Cookie headers first if they
 * have not been parsed) into Cookie objects.
 */
protected void convertCookies() {
    if (cookiesConverted) {
        return;
    }

    cookiesConverted = true;

    if (getContext() == null) {
        return;
    }

    parseCookies();

    ServerCookies serverCookies = coyoteRequest.getCookies();
    CookieProcessor cookieProcessor = getContext().getCookieProcessor();

    int count = serverCookies.getCookieCount();
    if (count <= 0) {
        return;
    }

    cookies = new Cookie[count];

    int idx=0;
    for (int i = 0; i < count; i++) {
        ServerCookie scookie = serverCookies.getCookie(i);
        try {
            // We must unescape the '\\' escape character
            Cookie cookie = new Cookie(scookie.getName().toString(),null);
            int version = scookie.getVersion();
            cookie.setVersion(version);
            scookie.getValue().getByteChunk().setCharset(cookieProcessor.getCharset());
            cookie.setValue(unescape(scookie.getValue().toString()));
            cookie.setPath(unescape(scookie.getPath().toString()));
            String domain = scookie.getDomain().toString();
            if (domain!=null) {
                cookie.setDomain(unescape(domain));//avoid NPE
            }
            String comment = scookie.getComment().toString();
            cookie.setComment(version==1?unescape(comment):null);
            cookies[idx++] = cookie;
        } catch(IllegalArgumentException e) {
            // Ignore bad cookie
        }
    }
    if( idx < count ) {
        Cookie [] ncookies = new Cookie[idx];
        System.arraycopy(cookies, 0, ncookies, 0, idx);
        cookies = ncookies;
    }
}
 
Example 16
Source File: ApplicationSessionCookieConfig.java    From Tomcat7.0.67 with Apache License 2.0 4 votes vote down vote up
/**
 * Creates a new session cookie for the given session ID
 *
 * @param context     The Context for the web application
 * @param sessionId   The ID of the session for which the cookie will be
 *                    created
 * @param secure      Should session cookie be configured as secure
 */
public static Cookie createSessionCookie(Context context,
        String sessionId, boolean secure) {

    SessionCookieConfig scc =
        context.getServletContext().getSessionCookieConfig();

    // NOTE: The priority order for session cookie configuration is:
    //       1. Context level configuration
    //       2. Values from SessionCookieConfig
    //       3. Defaults

    Cookie cookie = new Cookie(
            SessionConfig.getSessionCookieName(context), sessionId);
   
    // Just apply the defaults.
    cookie.setMaxAge(scc.getMaxAge());
    cookie.setComment(scc.getComment());
   
    if (context.getSessionCookieDomain() == null) {
        // Avoid possible NPE
        if (scc.getDomain() != null) {
            cookie.setDomain(scc.getDomain());
        }
    } else {
        cookie.setDomain(context.getSessionCookieDomain());
    }

    // Always set secure if the request is secure
    if (scc.isSecure() || secure) {
        cookie.setSecure(true);
    }

    // Always set httpOnly if the context is configured for that
    if (scc.isHttpOnly() || context.getUseHttpOnly()) {
        cookie.setHttpOnly(true);
    }
   
    String contextPath = context.getSessionCookiePath();
    if (contextPath == null || contextPath.length() == 0) {
        contextPath = scc.getPath();
    }
    if (contextPath == null || contextPath.length() == 0) {
        contextPath = context.getEncodedPath();
    }
    if (context.getSessionCookiePathUsesTrailingSlash()) {
        // Handle special case of ROOT context where cookies require a path of
        // '/' but the servlet spec uses an empty string
        // Also ensure the cookies for a context with a path of /foo don't get
        // sent for requests with a path of /foobar
        if (!contextPath.endsWith("/")) {
            contextPath = contextPath + "/";
        }
    } else {
        // Only handle special case of ROOT context where cookies require a
        // path of '/' but the servlet spec uses an empty string
        if (contextPath.length() == 0) {
            contextPath = "/";
        }
    }
    cookie.setPath(contextPath);

    return cookie;
}
 
Example 17
Source File: Request.java    From Tomcat7.0.67 with Apache License 2.0 4 votes vote down vote up
/**
 * Parse cookies.
 */
protected void parseCookies() {

    cookiesParsed = true;

    Cookies serverCookies = coyoteRequest.getCookies();
    int count = serverCookies.getCookieCount();
    if (count <= 0) {
        return;
    }

    cookies = new Cookie[count];

    int idx=0;
    for (int i = 0; i < count; i++) {
        ServerCookie scookie = serverCookies.getCookie(i);
        try {
            /*
            we must unescape the '\\' escape character
            */
            Cookie cookie = new Cookie(scookie.getName().toString(),null);
            int version = scookie.getVersion();
            cookie.setVersion(version);
            cookie.setValue(unescape(scookie.getValue().toString()));
            cookie.setPath(unescape(scookie.getPath().toString()));
            String domain = scookie.getDomain().toString();
            if (domain!=null)
             {
                cookie.setDomain(unescape(domain));//avoid NPE
            }
            String comment = scookie.getComment().toString();
            cookie.setComment(version==1?unescape(comment):null);
            cookies[idx++] = cookie;
        } catch(IllegalArgumentException e) {
            // Ignore bad cookie
        }
    }
    if( idx < count ) {
        Cookie [] ncookies = new Cookie[idx];
        System.arraycopy(cookies, 0, ncookies, 0, idx);
        cookies = ncookies;
    }

}
 
Example 18
Source File: PrintingResultHandlerTests.java    From java-technology-stack with MIT License 4 votes vote down vote up
@Test
@SuppressWarnings("deprecation")
public void printResponse() throws Exception {
	Cookie enigmaCookie = new Cookie("enigma", "42");
	enigmaCookie.setComment("This is a comment");
	enigmaCookie.setHttpOnly(true);
	enigmaCookie.setMaxAge(1234);
	enigmaCookie.setDomain(".example.com");
	enigmaCookie.setPath("/crumbs");
	enigmaCookie.setSecure(true);

	this.response.setStatus(400, "error");
	this.response.addHeader("header", "headerValue");
	this.response.setContentType("text/plain");
	this.response.getWriter().print("content");
	this.response.setForwardedUrl("redirectFoo");
	this.response.sendRedirect("/redirectFoo");
	this.response.addCookie(new Cookie("cookie", "cookieValue"));
	this.response.addCookie(enigmaCookie);

	this.handler.handle(this.mvcResult);

	// Manually validate cookie values since maxAge changes...
	List<String> cookieValues = this.response.getHeaders("Set-Cookie");
	assertEquals(2, cookieValues.size());
	assertEquals("cookie=cookieValue", cookieValues.get(0));
	assertTrue("Actual: " + cookieValues.get(1), cookieValues.get(1).startsWith(
			"enigma=42; Path=/crumbs; Domain=.example.com; Max-Age=1234; Expires="));

	HttpHeaders headers = new HttpHeaders();
	headers.set("header", "headerValue");
	headers.setContentType(MediaType.TEXT_PLAIN);
	headers.setLocation(new URI("/redirectFoo"));
	headers.put("Set-Cookie", cookieValues);

	String heading = "MockHttpServletResponse";
	assertValue(heading, "Status", this.response.getStatus());
	assertValue(heading, "Error message", response.getErrorMessage());
	assertValue(heading, "Headers", headers);
	assertValue(heading, "Content type", this.response.getContentType());
	assertValue(heading, "Body", this.response.getContentAsString());
	assertValue(heading, "Forwarded URL", this.response.getForwardedUrl());
	assertValue(heading, "Redirected URL", this.response.getRedirectedUrl());

	Map<String, Map<String, Object>> printedValues = this.handler.getPrinter().printedValues;
	String[] cookies = (String[]) printedValues.get(heading).get("Cookies");
	assertEquals(2, cookies.length);
	String cookie1 = cookies[0];
	String cookie2 = cookies[1];
	assertTrue(cookie1.startsWith("[" + Cookie.class.getSimpleName()));
	assertTrue(cookie1.contains("name = 'cookie', value = 'cookieValue'"));
	assertTrue(cookie1.endsWith("]"));
	assertTrue(cookie2.startsWith("[" + Cookie.class.getSimpleName()));
	assertTrue(cookie2.contains("name = 'enigma', value = '42', " +
			"comment = 'This is a comment', domain = '.example.com', maxAge = 1234, " +
			"path = '/crumbs', secure = true, version = 0, httpOnly = true"));
	assertTrue(cookie2.endsWith("]"));
}
 
Example 19
Source File: PrintingResultHandlerTests.java    From spring-analysis-note with MIT License 4 votes vote down vote up
@Test
@SuppressWarnings("deprecation")
public void printResponse() throws Exception {
	Cookie enigmaCookie = new Cookie("enigma", "42");
	enigmaCookie.setComment("This is a comment");
	enigmaCookie.setHttpOnly(true);
	enigmaCookie.setMaxAge(1234);
	enigmaCookie.setDomain(".example.com");
	enigmaCookie.setPath("/crumbs");
	enigmaCookie.setSecure(true);

	this.response.setStatus(400, "error");
	this.response.addHeader("header", "headerValue");
	this.response.setContentType("text/plain");
	this.response.getWriter().print("content");
	this.response.setForwardedUrl("redirectFoo");
	this.response.sendRedirect("/redirectFoo");
	this.response.addCookie(new Cookie("cookie", "cookieValue"));
	this.response.addCookie(enigmaCookie);

	this.handler.handle(this.mvcResult);

	// Manually validate cookie values since maxAge changes...
	List<String> cookieValues = this.response.getHeaders("Set-Cookie");
	assertEquals(2, cookieValues.size());
	assertEquals("cookie=cookieValue", cookieValues.get(0));
	assertTrue("Actual: " + cookieValues.get(1), cookieValues.get(1).startsWith(
			"enigma=42; Path=/crumbs; Domain=.example.com; Max-Age=1234; Expires="));

	HttpHeaders headers = new HttpHeaders();
	headers.set("header", "headerValue");
	headers.setContentType(MediaType.TEXT_PLAIN);
	headers.setLocation(new URI("/redirectFoo"));
	headers.put("Set-Cookie", cookieValues);

	String heading = "MockHttpServletResponse";
	assertValue(heading, "Status", this.response.getStatus());
	assertValue(heading, "Error message", response.getErrorMessage());
	assertValue(heading, "Headers", headers);
	assertValue(heading, "Content type", this.response.getContentType());
	assertValue(heading, "Body", this.response.getContentAsString());
	assertValue(heading, "Forwarded URL", this.response.getForwardedUrl());
	assertValue(heading, "Redirected URL", this.response.getRedirectedUrl());

	Map<String, Map<String, Object>> printedValues = this.handler.getPrinter().printedValues;
	String[] cookies = (String[]) printedValues.get(heading).get("Cookies");
	assertEquals(2, cookies.length);
	String cookie1 = cookies[0];
	String cookie2 = cookies[1];
	assertTrue(cookie1.startsWith("[" + Cookie.class.getSimpleName()));
	assertTrue(cookie1.contains("name = 'cookie', value = 'cookieValue'"));
	assertTrue(cookie1.endsWith("]"));
	assertTrue(cookie2.startsWith("[" + Cookie.class.getSimpleName()));
	assertTrue(cookie2.contains("name = 'enigma', value = '42', " +
			"comment = 'This is a comment', domain = '.example.com', maxAge = 1234, " +
			"path = '/crumbs', secure = true, version = 0, httpOnly = true"));
	assertTrue(cookie2.endsWith("]"));
}
 
Example 20
Source File: ApplicationSessionCookieConfig.java    From Tomcat8-Source-Read with MIT License 4 votes vote down vote up
/**
 * Creates a new session cookie for the given session ID
 *
 * @param context     The Context for the web application
 * @param sessionId   The ID of the session for which the cookie will be
 *                    created
 * @param secure      Should session cookie be configured as secure
 * @return the cookie for the session
 */
public static Cookie createSessionCookie(Context context,
        String sessionId, boolean secure) {

    SessionCookieConfig scc =
        context.getServletContext().getSessionCookieConfig();

    // NOTE: The priority order for session cookie configuration is:
    //       1. Context level configuration
    //       2. Values from SessionCookieConfig
    //       3. Defaults

    Cookie cookie = new Cookie(
            SessionConfig.getSessionCookieName(context), sessionId);

    // Just apply the defaults.
    cookie.setMaxAge(scc.getMaxAge());
    cookie.setComment(scc.getComment());

    if (context.getSessionCookieDomain() == null) {
        // Avoid possible NPE
        if (scc.getDomain() != null) {
            cookie.setDomain(scc.getDomain());
        }
    } else {
        cookie.setDomain(context.getSessionCookieDomain());
    }

    // Always set secure if the request is secure
    if (scc.isSecure() || secure) {
        cookie.setSecure(true);
    }

    // Always set httpOnly if the context is configured for that
    if (scc.isHttpOnly() || context.getUseHttpOnly()) {
        cookie.setHttpOnly(true);
    }

    cookie.setPath(SessionConfig.getSessionCookiePath(context));

    return cookie;
}