KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > oreilly > servlet > multipart > ParamPart


1 // Copyright (C) 1999-2001 by Jason Hunter <jhunter_AT_acm_DOT_org>.
2
// All rights reserved. Use of this class is limited.
3
// Please see the LICENSE for more information.
4

5 package com.oreilly.servlet.multipart;
6
7 import java.io.ByteArrayOutputStream JavaDoc;
8 import java.io.IOException JavaDoc;
9 import java.io.UnsupportedEncodingException JavaDoc;
10 import javax.servlet.ServletInputStream JavaDoc;
11
12 /**
13  * A <code>ParamPart</code> is an upload part which represents a normal
14  * <code>INPUT</code> (for example a non <code>TYPE="file"</code>) form
15  * parameter.
16  *
17  * @author Geoff Soutter
18  * @author Jason Hunter
19  * @version 1.1, 2002/04/30, added better encoding support, thanks to
20  * Changshin Lee
21  * @version 1.0, 2000/10/27, initial revision
22  */

23 public class ParamPart extends Part {
24   
25   /** contents of the parameter */
26   private byte[] value;
27
28   private String JavaDoc encoding;
29
30   /**
31    * Constructs a parameter part; this is called by the parser.
32    *
33    * @param name the name of the parameter.
34    * @param in the servlet input stream to read the parameter value from.
35    * @param boundary the MIME boundary that delimits the end of parameter value.
36    * @param encoding the byte-to-char encoding to use by default
37    * value.
38    */

39   ParamPart(String JavaDoc name, ServletInputStream JavaDoc in,
40             String JavaDoc boundary, String JavaDoc encoding) throws IOException JavaDoc {
41     super(name);
42     this.encoding = encoding;
43
44     // Copy the part's contents into a byte array
45
PartInputStream pis = new PartInputStream(in, boundary);
46     ByteArrayOutputStream JavaDoc baos = new ByteArrayOutputStream JavaDoc(512);
47     byte[] buf = new byte[128];
48     int read;
49     while ((read = pis.read(buf)) != -1) {
50       baos.write(buf, 0, read);
51     }
52     pis.close();
53     baos.close();
54     
55     // save it for later
56
value = baos.toByteArray();
57   }
58
59   /**
60    * Returns the value of the parameter as an array of bytes or a zero length
61    * array if the user entered no value for this parameter.
62    *
63    * @return value of parameter as raw bytes
64    */

65   public byte[] getValue() {
66     return value;
67   }
68   
69   /**
70    * Returns the value of the parameter in as a string (using the
71    * parser-specified encoding to convert from bytes) or the empty string
72    * if the user entered no value for this parameter.
73    *
74    * @return value of parameter as a string.
75    */

76   public String JavaDoc getStringValue()
77       throws UnsupportedEncodingException JavaDoc {
78     return getStringValue(encoding);
79   }
80   
81   /**
82    * Returns the value of the parameter in the supplied encoding
83    * or empty string if the user entered no value for this parameter.
84    *
85    * @return value of parameter as a string.
86    */

87   public String JavaDoc getStringValue(String JavaDoc encoding)
88       throws UnsupportedEncodingException JavaDoc {
89     return new String JavaDoc(value, encoding);
90   }
91   
92   /**
93    * Returns <code>true</code> to indicate this part is a parameter.
94    *
95    * @return true.
96    */

97   public boolean isParam() {
98     return true;
99   }
100 }
101
Popular Tags