Listing 6: MyCookieHandler.java
import java.io.*;
import java.net.*;
import java.util.*;
//extend the CookieHandler class
public class MyCookieHandler extends CookieHandler{
//a store list for cookie
private List<Cookie> myCookieBriefcase=new LinkedList<Cookie>();
//implementing the put method
public void put(URI uri,Map<String,List<String>> responseHeaders)throws
IOException {
//a store list for all "Set-Cookie" headers
List<String> getCookies=responseHeaders.get("Set-Cookie");
if(getCookies!=null)
{
ListIterator getCookies_iterator=getCookies.listIterator();
while(getCookies_iterator.hasNext())
{
String cookie_item=(String)getCookies_iterator.next();
Cookie cookie=new Cookie(uri,cookie_item);
//checking for duplicate cookies
ListIterator myCookieBriefcase_iterator=myCookieBriefcase.listIterator();
while(myCookieBriefcase_iterator.hasNext())
{
Cookie cookie_from_briefcase=(Cookie)myCookieBriefcase_iterator.next();
if((cookie.getURI().equals(cookie_from_briefcase.getURI()))&&
(cookie.getCookieKey().equals(cookie_from_briefcase.getCookieKey())))
{
myCookieBriefcase.remove(cookie_from_briefcase);
break;
}
}
System.out.println("myCookieBriefcase: " + cookie);
//store the cookie
myCookieBriefcase.add(cookie);
}
}
}
//implementing the get method
public Map<String, List<String>> get(URI uri,Map<String,
List<String>> requestHeaders)throws IOException {
//keep a copy of requestHeaders
Map<String, List<String>> setCookies = new HashMap<String,
List<String>>(requestHeaders);
StringBuilder selectCookies=new StringBuilder();
ListIterator myCookieBriefcase_iterator=myCookieBriefcase.listIterator();
while(myCookieBriefcase_iterator.hasNext())
{
Cookie cookie=(Cookie)myCookieBriefcase_iterator.next();
//delete all the expired cookies
if(cookie.ExpireState())
{
myCookieBriefcase.remove(cookie);
}
//verify if the current cookie coresponds to the accessed URI
else if(cookie.MatchState(uri))
{
if(selectCookies.length()>0)
{
//cookies are separated by ", "
selectCookies.append(", ");
}
selectCookies.append(cookie.toString());
}
}
//converting the StringBuilder object, selectCookies,to a List object
if(selectCookies.length()>0)
{
List<String>
finalCookies=Collections.singletonList(selectCookies.toString());
setCookies.put("Cookie",finalCookies);
}
System.out.println("###"+setCookies+"###");
//set the setCookies as read-only
Collections.unmodifiableMap(setCookies);
//returning the headers list
return(setCookies);
}
}
New on the Java Boutique:
New Review:
Time Management Made Easy with the Quartz Enterprise Job Scheduler
Why not just use the Java timer API? This open source scheduling
API boasts simplicity, ease-of-integration, a well-rounded feature
set, and it's free!
New Applet:
Reverse Complement
Reverse Complement is a simple applet that converts DNA or RNA
sequences into three useful formats.
Elsewhere on internet.com:
WebDeveloper Java
Lots of Java information on webdeveloper.com
WDVL Java
Thorough Java resource at the Web Developer's Virtual Library.
ScriptSearch Java
Hundreds of free Java code files to download.
jGuru: Your View of the Java Universe
Customizable portal with online training, FAQs, regular news updates, and tutorials.
|