001: /*
002: *
003: *
004: * Copyright 1990-2007 Sun Microsystems, Inc. All Rights Reserved.
005: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License version
009: * 2 only, as published by the Free Software Foundation.
010: *
011: * This program is distributed in the hope that it will be useful, but
012: * WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * General Public License version 2 for more details (a copy is
015: * included at /legal/license.txt).
016: *
017: * You should have received a copy of the GNU General Public License
018: * version 2 along with this work; if not, write to the Free Software
019: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA
021: *
022: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
023: * Clara, CA 95054 or visit www.sun.com if you need additional
024: * information or have any questions.
025: */
026:
027: package com.sun.midp.io;
028:
029: import java.util.Vector;
030:
031: /** Contains static utility methods for IO protocol classes to use. */
032: public abstract class Util {
033: /**
034: * Converts <code>string</code> into a null terminated
035: * byte array. Expects the characters in <code>string
036: * </code> to be in th ASCII range (0-127 base 10).
037: *
038: * @param string the string to convert
039: *
040: * @return byte array with contents of <code>string</code>
041: */
042: public static byte[] toCString(String string) {
043: int length = string.length();
044: byte[] cString = new byte[length + 1];
045:
046: for (int i = 0; i < length; i++) {
047: cString[i] = (byte) string.charAt(i);
048: }
049:
050: return cString;
051: }
052:
053: /**
054: * Converts an ASCII null terminated byte array in to a
055: * <code>String</code>. Expects the characters in byte array
056: * to be in th Ascii range (0-127 base 10).
057: *
058: * @param cString the byte array to convert
059: *
060: * @return string with contents of the byte array
061: * @exception ArrayIndexOutOfBounds if the C string does not end with 0
062: */
063: public static String toJavaString(byte[] cString) {
064: int i;
065: String jString;
066:
067: // find the string length
068: for (i = 0; cString[i] != 0; i++)
069: ;
070:
071: try {
072: return new String(cString, 0, i, "ISO8859_1");
073: } catch (java.io.UnsupportedEncodingException e) {
074: return null;
075: }
076: }
077:
078: /**
079: * Create a vector of values from a string containing comma separated
080: * values. The values cannot contain a comma. The output values will be
081: * trimmed of whitespace. The vector may contain zero length strings
082: * where there are 2 commas in a row or a comma at the end of the input
083: * string.
084: *
085: * @param input input string of comma separated values
086: *
087: * @return vector of string values.
088: */
089: public static Vector getCommaSeparatedValues(String input) {
090: return getDelimSeparatedValues(input, ',');
091: }
092:
093: /**
094: * Create a vector of values from a string containing delimiter separated
095: * values. The values cannot contain the delimiter. The output values will
096: * be trimmed of whitespace. The vector may contain zero length strings
097: * where there are 2 delimiters in a row or a comma at the end of the input
098: * string.
099: *
100: * @param input input string of delimiter separated values
101: * @param delim the delimiter separating values
102: * @return vector of string values.
103: */
104: public static Vector getDelimSeparatedValues(String input,
105: char delim) {
106: Vector output = new Vector(5, 5);
107: int len;
108: int start;
109: int end;
110:
111: len = input.length();
112: if (len == 0) {
113: return output;
114: }
115:
116: for (start = 0;;) {
117: end = input.indexOf(delim, start);
118: if (end == -1) {
119: break;
120: }
121:
122: output.addElement(input.substring(start, end).trim());
123: start = end + 1;
124: }
125:
126: end = len;
127: output.addElement(input.substring(start, end).trim());
128:
129: return output;
130: }
131:
132: /**
133: * Parses out the media-type from the given HTTP content-type field and
134: * converts it to lower case.
135: * The media-type everything for the ';' that marks the parameters.
136: *
137: * @param contentType value of the content-type field
138: *
139: * @return media-type in lower case
140: */
141: public static String getHttpMediaType(String contentType) {
142: int semiColon;
143:
144: if (contentType == null) {
145: return null;
146: }
147:
148: semiColon = contentType.indexOf(';');
149: if (semiColon < 0) {
150: return contentType.toLowerCase();
151: }
152:
153: return contentType.substring(0, semiColon).toLowerCase();
154: }
155: }
|