Listing 7: Cookie.java
import java.net.*;
import java.text.*;
import java.util.*;
public class Cookie{
//clean information
private String key=null;
private String value=null;
private URI uri=null; //URI
private String domain=null; //domain
private Date expire_date=null; //expire
private String path=null; //path
//date formats
private static DateFormat DateFormat_I=
new SimpleDateFormat("E, dd MMM yyyy k:m:s 'GMT'");
private static DateFormat DateFormat_II=
new SimpleDateFormat("E, dd-MMM-yyyy k:m:s 'GMT'");
public Cookie(URI uri, String cookie_content) {
//initialization
this.uri = uri;
this.path = "/";
this.domain = uri.getHost();
System.out.println("cookie_content="+cookie_content);
//extract the domain, path and expiration date
StringTokenizer ST=new StringTokenizer(cookie_content,";");
String sir=ST.nextToken();
this.key=sir.substring(0,sir.indexOf('='));
this.value=sir.substring(sir.indexOf('='),sir.length());
String[] S=new String[ST.countTokens()];
int k=0;
while(ST.hasMoreTokens())
{
S[k]=ST.nextToken().trim();
k++;
}
for(int i=0;i<k;i++)
{
String key_side=S[i].substring(0,S[i].indexOf('='));
String value_side=S[i].substring(S[i].indexOf('=')+1,S[i].length());
if(key_side.equalsIgnoreCase("domain"))
{
//verify if uri.getHost coresponds to domain
this.domain=value_side;
}
if(key_side.equalsIgnoreCase("path"))
{
this.path=value_side;
}
if(key_side.equalsIgnoreCase("expires"))
{
try{
this.expire_date=DateFormat_I.parse(value_side);
}catch(ParseException e)
{
try{
this.expire_date=DateFormat_II.parse(value_side);
}catch(ParseException e2)
{throw new IllegalArgumentException(
"Bad date format in cookie_content: " + value);}}
}
}
System.out.println("-----------------------------------------------");
System.out.println("domain / path / expire_date = "+this.domain+" / "
+this.path+" / "+expire_date);
System.out.println("-----------------------------------------------");
}
//verify if the current cookie has expired
public boolean ExpireState()
{
if(this.expire_date==null)
{
return false;
}
Date today=new Date();
boolean aft=today.after(expire_date);
return aft;
}
//verify if the current cookie coresponds to the URI
public boolean MatchState(URI uri)
{
if (ExpireState())
{
return false;
}
String path=uri.getPath();
if (path==null)
{
path = "/";
}
if(path.startsWith(this.path))return true;
return false;
}
//returns the cookie inofrmation
public String toString()
{
StringBuilder SB=new StringBuilder(key);
SB.append(value);
return SB.toString();
}
//returns key
public String getCookieKey()
{
return this.key;
}
//return URI
public URI getURI()
{
return this.uri;
}
}
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.
|