--- /dev/null
+// HttpExt.java\r
+// $Id: HttpExt.java,v 1.1 2010/06/15 12:19:53 smhuang Exp $\r
+// (c) COPYRIGHT MIT and INRIA, 1998.\r
+// Please first read the full copyright statement in file COPYRIGHT.html\r
+\r
+package org.w3c.www.http;\r
+\r
+import java.util.Hashtable;\r
+import java.util.Enumeration;\r
+\r
+/**\r
+ * @version $Revision: 1.1 $\r
+ * @author Benoît Mahé (bmahe@w3.org)\r
+ */\r
+public class HttpExt {\r
+\r
+ protected String name = null;\r
+ protected String ns = null;\r
+ protected Hashtable exts = null;\r
+ protected boolean generated = true;\r
+ protected boolean headers = false;\r
+\r
+ protected void setName(String name) {\r
+ this.name = name;\r
+ }\r
+\r
+ /**\r
+ * Get the http extension declaration name.\r
+ * @return a String instance\r
+ */\r
+ public String getName() {\r
+ return name;\r
+ }\r
+\r
+ protected void setNamespace(String ns) {\r
+ this.ns = ns;\r
+ this.headers = true;\r
+ }\r
+\r
+ /**\r
+ * Get the http extension declaration namespace.\r
+ * @return a String instance\r
+ */\r
+ public String getNamespace() {\r
+ return ns;\r
+ }\r
+\r
+ /**\r
+ * Does this extension needs specific headers?\r
+ * @return a boolean.\r
+ */\r
+ public boolean needsHeaders() {\r
+ return headers;\r
+ }\r
+\r
+ /**\r
+ * Add an http extension declaration <token/value>\r
+ * @param name the token name.\r
+ * @param value the value. \r
+ */\r
+ public void addDeclExt(String token, String value) {\r
+ exts.put(token, value);\r
+ }\r
+\r
+ /**\r
+ * Get an http extension declaration token value.\r
+ * @param name the token name.\r
+ * @return a String instance\r
+ */\r
+ public String getDeclExt(String name) {\r
+ return (String)exts.get(name);\r
+ }\r
+\r
+ /**\r
+ * Get all http extension declaration <token/value>\r
+ * @return an Enumeration instance\r
+ */\r
+ public Enumeration getDeclExtNames() {\r
+ return exts.keys();\r
+ }\r
+\r
+ protected String getRealHeader(String header) {\r
+ return ns+header;\r
+ }\r
+\r
+ public String toString() {\r
+ String string = "\""+name+"\" ; ns="+ns;\r
+ Enumeration e = exts.keys();\r
+ while (e.hasMoreElements()) {\r
+ String tok = (String) e.nextElement();\r
+ String val = (String) exts.get(tok);\r
+ string += ("; "+tok+"="+val);\r
+ }\r
+ return string;\r
+ }\r
+\r
+ protected boolean isGenerated() {\r
+ return generated;\r
+ }\r
+\r
+ /**\r
+ * Constructor, for User\r
+ * @param name the Http extension declaration name \r
+ * @param header Does this extension needs specific headers?\r
+ * (absoluteURI or field-name)\r
+ */\r
+ public HttpExt(String name, boolean headers) {\r
+ this.generated = false;\r
+ this.name = name;\r
+ this.exts = new Hashtable(3);\r
+ this.headers = headers;\r
+ }\r
+\r
+ /**\r
+ * Constructor, for User\r
+ * @param old the old Http extension declaration \r
+ * If you want to reply the same extension, use this\r
+ * contructor.\r
+ */\r
+ public HttpExt(HttpExt old) {\r
+ this.generated = false;\r
+ this.name = old.name;\r
+ this.exts = new Hashtable(3);\r
+ this.headers = old.headers;\r
+ }\r
+\r
+ protected HttpExt() {\r
+ this.generated = true;\r
+ this.headers = false;\r
+ this.exts = new Hashtable(3);\r
+ }\r
+}\r