Adding JMCR-Stable version
[Benchmarks_CSolver.git] / JMCR-Stable / real-world application / jigsaw / src / org / w3c / www / http / HttpAcceptCharset.java
diff --git a/JMCR-Stable/real-world application/jigsaw/src/org/w3c/www/http/HttpAcceptCharset.java b/JMCR-Stable/real-world application/jigsaw/src/org/w3c/www/http/HttpAcceptCharset.java
new file mode 100644 (file)
index 0000000..c3b00a7
--- /dev/null
@@ -0,0 +1,121 @@
+// HttpAcceptCharset.java\r
+// $Id: HttpAcceptCharset.java,v 1.1 2010/06/15 12:19:44 smhuang Exp $\r
+// (c) COPYRIGHT MIT and INRIA, 1996.\r
+// Please first read the full copyright statement in file COPYRIGHT.html\r
+\r
+package org.w3c.www.http;\r
+\r
+public class HttpAcceptCharset extends BasicValue {\r
+    String charset = null;\r
+    double quality  = 1.0;\r
+    HttpAcceptCharsetList list = null;\r
+\r
+    /**\r
+     * parse.\r
+     * @exception HttpParserException if parsing failed.\r
+     */\r
+    protected void parse() \r
+       throws HttpParserException\r
+    {\r
+       ParseState ps = new ParseState(roff, rlen);\r
+       ps.separator  = (byte) ';';\r
+       ps.spaceIsSep = false;\r
+       // Get the charset:\r
+       if ( HttpParser.nextItem(raw, ps) < 0 )\r
+           error("Invalid Accept-Charset: no charset.");\r
+       this.charset = new String(raw, 0, ps.start, ps.end-ps.start);\r
+       // And the optional quality:\r
+       ps.prepare();\r
+       ps.separator = (byte) '=';\r
+       if ( HttpParser.nextItem(raw, ps) < 0 ) {\r
+           this.quality = 1.0;\r
+       } else {\r
+           ps.prepare();\r
+           this.quality = HttpParser.parseQuality(raw, ps);\r
+       }\r
+    }\r
+\r
+    protected void invalidateByteValue() {\r
+       super.invalidateByteValue();\r
+       if ( list != null )\r
+           list.invalidateByteValue();\r
+    }\r
+\r
+    protected void updateByteValue() {\r
+       HttpBuffer buf = new HttpBuffer();\r
+       buf.append(charset);\r
+       buf.append(';');\r
+       buf.append(quality);\r
+       raw  = buf.getByteCopy();\r
+       roff = 0;\r
+       rlen = raw.length;\r
+    }\r
+\r
+    public Object getValue() {\r
+       validate();\r
+       return this;\r
+    }\r
+\r
+    /**\r
+     * Get this accept charset clause charset.\r
+     * @return A String encoding the charset token.\r
+     */\r
+\r
+    public String getCharset() {\r
+       validate();\r
+       return charset;\r
+    }\r
+\r
+    /**\r
+     * Set the charset accepted by this clause.\r
+     * @param charset The accepted charset.\r
+     */\r
+\r
+    public void setCharset(String charset) {\r
+       if ( this.charset.equals(charset) )\r
+           return;\r
+       invalidateByteValue();\r
+       this.charset = charset;\r
+    }\r
+\r
+    /**\r
+     * Get the quality at which this charset is accepted.\r
+     * @return A double value, encoding the quality, or <strong>1.0</strong>\r
+     * if undefined.\r
+     */\r
+\r
+    public double getQuality() {\r
+       validate();\r
+       return quality;\r
+    }\r
+\r
+    /**\r
+     * Set the quality under which this charset is accepted.\r
+     * @param q The quality for this charset.\r
+     */\r
+\r
+    public void setQuality(double quality) {\r
+       if ( this.quality != quality )\r
+           invalidateByteValue();\r
+       this.quality = quality;\r
+    }\r
+\r
+    HttpAcceptCharset(HttpAcceptCharsetList list, byte raw[], int o, int l) {\r
+       this.list = list;\r
+       this.raw  = raw;\r
+       this.roff = o;\r
+       this.rlen = l;\r
+       this.isValid = false;\r
+    }\r
+\r
+    HttpAcceptCharset(boolean isValid, String charset, double quality) {\r
+       this.isValid = isValid;\r
+       setCharset(charset);\r
+       setQuality(quality);\r
+    }\r
+\r
+    public HttpAcceptCharset() {\r
+       this.isValid = false;\r
+    }\r
+\r
+}\r