/* * * * Copyright 1990-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 only, as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License version 2 for more details (a copy is * included at /legal/license.txt). * * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions. */ package com.sun.midp.io; import java.util.Vector; /** Contains static utility methods for IO protocol classes to use. */ public abstract class Util { /** * Converts <code>string</code> into a null terminated * byte array. Expects the characters in <code>string * </code> to be in th ASCII range (0-127 base 10). * * @param string the string to convert * * @return byte array with contents of <code>string</code> */ public static byte[] toCString(String string) { int length = string.length(); byte[] cString = new byte[length + 1]; for (int i = 0; i < length; i++) { cString[i] = (byte)string.charAt(i); } return cString; } /** * Converts an ASCII null terminated byte array in to a * <code>String</code>. Expects the characters in byte array * to be in th Ascii range (0-127 base 10). * * @param cString the byte array to convert * * @return string with contents of the byte array * @exception ArrayIndexOutOfBounds if the C string does not end with 0 */ public static String toJavaString(byte[] cString) { int i; String jString; // find the string length for (i = 0; cString[i] != 0; i++); try { return new String(cString, 0, i, "ISO8859_1"); } catch (java.io.UnsupportedEncodingException e) { return null; } } /** * Create a vector of values from a string containing comma separated * values. The values cannot contain a comma. The output values will be * trimmed of whitespace. The vector may contain zero length strings * where there are 2 commas in a row or a comma at the end of the input * string. * * @param input input string of comma separated values * * @return vector of string values. */ public static Vector getCommaSeparatedValues(String input) { return getDelimSeparatedValues(input, ','); } /** * Create a vector of values from a string containing delimiter separated * values. The values cannot contain the delimiter. The output values will * be trimmed of whitespace. The vector may contain zero length strings * where there are 2 delimiters in a row or a comma at the end of the input * string. * * @param input input string of delimiter separated values * @param delim the delimiter separating values * @return vector of string values. */ public static Vector getDelimSeparatedValues(String input, char delim) { Vector output = new Vector(5, 5); int len; int start; int end; len = input.length(); if (len == 0) { return output; } for (start = 0; ; ) { end = input.indexOf(delim, start); if (end == -1) { break; } output.addElement(input.substring(start, end).trim()); start = end + 1; } end = len; output.addElement(input.substring(start, end).trim()); return output; } /** * Parses out the media-type from the given HTTP content-type field and * converts it to lower case. * The media-type everything for the ';' that marks the parameters. * * @param contentType value of the content-type field * * @return media-type in lower case */ public static String getHttpMediaType(String contentType) { int semiColon; if (contentType == null) { return null; } semiColon = contentType.indexOf(';'); if (semiColon < 0) { return contentType.toLowerCase(); } return contentType.substring(0, semiColon).toLowerCase(); } }