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);
- }
-
- }