set/remove cookie using applet
jdk/jre 1.4 later, the library is included in plugin.jar file.
import java.applet.Applet;
import java.util.ArrayList;
import java.util.Date;
import netscape.javascript.JSObject;
import sgb.util.Strings;
public class CookieManager {
private Applet applet;
public CookieManager(Applet applet) {
this.applet = applet;
}
private JSObject getDocument() {
JSObject win = (JSObject) JSObject.getWindow(applet);
return (JSObject) win.getMember("document");
}
public void setCookie(String name, String value) {
if (Strings.isNullOrEmpty(name))
throw new IllegalArgumentException();
Cookie cookie = new Cookie();
cookie.setName(name);
cookie.setValue(value);
setCookie(cookie);
}
public void setCookie(Cookie cookie) {
if (cookie == null)
throw new IllegalArgumentException();
JSObject doc = getDocument();
doc.setMember("cookie", cookie.toString());
}
public String getCookieValue(String name) {
return getCookie(name).getValue();
}
public Cookie getCookie(String name) {
if (Strings.isNullOrEmpty(name))
throw new IllegalArgumentException();
Cookie[] cookies = getCookies();
for (Cookie cookie : cookies)
if (cookie.getName().equals(name))
return cookie;
return null;
}
public Cookie[] getCookies() {
JSObject doc = getDocument();
String[] token = ((String) doc.getMember("cookie")).trim().split(";");
ArrayList<Cookie> cks = new ArrayList<Cookie>();
for (String tk : token) {
String[] tks = tk.trim().split("=");
String name = tks[0];
String value = tks.length > 1 ? tks[1] : null;
Cookie cookie = new Cookie();
cookie.setName(name);
cookie.setValue(value);
cks.add(cookie);
}
return cks.toArray(new Cookie[0]);
}
public void removeCookie(String name) {
if (Strings.isNullOrEmpty(name))
throw new IllegalArgumentException();
Cookie cookie = new Cookie();
cookie.setName(name);
cookie.setExpireDate(new Date(0));
setCookie(cookie);
}
}