stringarrayattribute.java

来自「很棒的web服务器源代码」· Java 代码 · 共 116 行

JAVA
116
字号
// StringArrayAttribute.java// $Id: StringArrayAttribute.java,v 1.4 2000/08/16 21:37:56 ylafon Exp $// (c) COPYRIGHT MIT and INRIA, 1996.// Please first read the full copyright statement in file COPYRIGHT.htmlpackage org.w3c.tools.resources.upgrade ;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;/** * The generic description of an StringArrayAttribute. */public class StringArrayAttribute extends Attribute {    /**     * Turn a StringArray attribute into a String.     * We use the <em>normal</em> property convention, which is to separate     * each item with a <strong>|</strong>.     * @return A String based encoding for that value.     */    public String stringify(Object value) {	if ((value == null) || ( ! (value instanceof String[])) )	    return null;	String       as[] = (String[]) value;	StringBuffer sb   = new StringBuffer();	for (int i = 0 ; i < as.length ; i++) {	    if ( i > 0 )		sb.append('|');	    sb.append(as[i]);	}	return sb.toString();    }    /**     * Is the given object a valid StringArrayAttribute value ?     * @param obj The object to test.     * @return A boolean <strong>true</strong> if okay.     */    public boolean checkValue(Object obj) {	return (obj instanceof String[]) ;    }    /**     * Get the number of bytes required to save that attribute value.     * @param The value about to be pickled.     * @return The number of bytes needed to pickle that value.     */    public int getPickleLength(Object value) {	String strs[] = (String[]) value;	int    sz     = 4;	for (int n = 0 ; n < strs.length ; n++) {	    String str    = strs[n];	    int    strlen = str.length() ;	    int    utflen = 0 ;	    for (int i = 0 ; i < strlen ; i++) {		int c = str.charAt(i);		if ((c >= 0x0001) && (c <= 0x007F)) {		    utflen++;		} else if (c > 0x07FF) {		    utflen += 3;		} else {		    utflen += 2;		}	    }	    sz += (utflen+2);	}	return sz;    }    /**     * Pickle a String array to the given output stream.     * @param out The output stream to pickle to.     * @param obj The object to pickle.     * @exception IOException If some IO error occured.     */    public void pickle(DataOutputStream out, Object sa) 	throws IOException    {	String strs[] = (String[]) sa ;	out.writeInt(strs.length) ;	for (int i = 0 ; i < strs.length ; i++)	    out.writeUTF(strs[i]) ;    }    /**     * Unpickle an String array from the given input stream.     * @param in The input stream to unpickle from.     * @return An instance of String[].     * @exception IOException If some IO error occured.     */    public Object unpickle (DataInputStream in) 	throws IOException    {	int    cnt    = in.readInt() ;	String strs[] = new String[cnt] ;	for (int i = 0 ; i < cnt ; i++)	    strs[i] = in.readUTF() ;	return strs ;    }    public StringArrayAttribute(String name, String def[], Integer flags) {	super(name, def, flags) ;	this.type = "java.lang.String[]";    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?