Package org.w3c.jigsaw.filters

Source Code of org.w3c.jigsaw.filters.CookieFilter

// CookieFilter.java
// $Id: CookieFilter.java,v 1.6 2000/08/17 10:18:01 ylafon Exp $
// (c) COPYRIGHT MIT and INRIA, 1996.
// Please first read the full copyright statement in file COPYRIGHT.html

package org.w3c.jigsaw.filters;

import java.net.URL;

import org.w3c.tools.resources.Attribute;
import org.w3c.tools.resources.AttributeHolder;
import org.w3c.tools.resources.AttributeRegistry;
import org.w3c.tools.resources.FramedResource;
import org.w3c.tools.resources.IntegerAttribute;
import org.w3c.tools.resources.ProtocolException;
import org.w3c.tools.resources.ReplyInterface;
import org.w3c.tools.resources.RequestInterface;
import org.w3c.tools.resources.ResourceFilter;
import org.w3c.tools.resources.ResourceFrame;

import org.w3c.www.http.HttpCookie;
import org.w3c.www.http.HttpCookieList;
import org.w3c.www.http.HttpFactory;
import org.w3c.www.http.HttpMessage;
import org.w3c.www.http.HttpSetCookie;
import org.w3c.www.http.HttpSetCookieList;

import org.w3c.jigsaw.frames.HTTPFrame;

import org.w3c.jigsaw.http.Reply;
import org.w3c.jigsaw.http.Request;

/**
* A demo for how to use cookies from Jigsaw.
*/

public class CookieFilter extends ResourceFilter {
    public static final
  String NAME = "org.w3c.jigsaw.filters.counter";

    /**
     * Attribute index - The duration of the cookie.
     */
    protected static int ATTR_COOKIE_MAXAGE = -1;

    static {
  Class     c = null;
  Attribute a = null;
  try {
      c = Class.forName("org.w3c.jigsaw.filters.CookieFilter");
  } catch (Exception ex) {
      ex.printStackTrace();
      System.exit(1);
  }
  a = new IntegerAttribute("cookie-maxage"
         , new Integer(20)
         , Attribute.EDITABLE);
  ATTR_COOKIE_MAXAGE = AttributeRegistry.registerAttribute(c, a);
    }

    /**
     * Get the cookie's allowed max age.
     * @return The max allowed age in seconds.
     */

    public int getCookieMaxAge() {
  return getInt(ATTR_COOKIE_MAXAGE, 20);
    }

    /**
     * @return A Reply instance, if the filter did know how to answer
     * the request without further processing, <strong>null</strong>
     * otherwise.
     * @exception org.w3c.tools.resources.ProtocolException
     * If processing should be interrupted,
     * because an abnormal situation occured.
     */
    public ReplyInterface ingoingFilter(RequestInterface request)
  throws ProtocolException
    {
  return null;
    }

    /**
     * @param request The original request.
     * @param reply It's original reply.
     * @return A Reply instance, or <strong>null</strong> if processing
     * should continue normally.
     * @exception ProtocolException If processing should be interrupted, 
     * because an abnormal situation occured.
     */
    public ReplyInterface outgoingFilter(RequestInterface req,
           ReplyInterface rep)
  throws ProtocolException
    {
  Request request = (Request) req;
  Reply   reply   = (Reply) rep;
  int count = 1;
  HttpCookieList cookies = request.getCookie();
  // Display and get available count:
  if ( cookies != null ) {
      HttpCookie c = cookies.getCookie(NAME);
      if ( c != null ) {
    System.out.println("cookie-count="+c.getValue());
    try {
        count = Integer.parseInt(c.getValue())+1;
    } catch (Exception ex) {
    }
      }
  }
  String strcount = Integer.toString(count);
  // Set cookie with next value:
  FramedResource frame = (FramedResource) getResource();
  if (frame instanceof HTTPFrame) {
      HTTPFrame target = (HTTPFrame) frame;
      HttpSetCookieList setcookies = HttpFactory.makeSetCookieList(null);
      HttpSetCookie     setcookie  = setcookies.addSetCookie(NAME,
                   strcount);
      setcookie.setMaxAge(getCookieMaxAge());
      URL url = target.getURL(request);
      setcookie.setPath(url.getFile());
      setcookie.setDomain(url.getHost());
      reply.setSetCookie(setcookies);
      reply.addNoCache("Set-Cookie");
  }
  return null;
    }

}

TOP

Related Classes of org.w3c.jigsaw.filters.CookieFilter

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.