⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 valueutility.java

📁 java jdk 1.4的源码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
            }	    switch (fields[i].getTypeCode()) {	    case 'B':		members[i].type = orb.get_primitive_tc(TCKind.tk_octet); //11638		break;	    case 'C':		members[i].type                     = orb.get_primitive_tc(vhandler.getJavaCharTCKind()); // 11638		break;	    case 'F':		members[i].type = orb.get_primitive_tc(TCKind.tk_float); //11638		break;	    case 'D' :		members[i].type = orb.get_primitive_tc(TCKind.tk_double); //11638		break;	    case 'I':		members[i].type = orb.get_primitive_tc(TCKind.tk_long); //11638		break;	    case 'J':		members[i].type = orb.get_primitive_tc(TCKind.tk_longlong); //11638		break;	    case 'S':		members[i].type = orb.get_primitive_tc(TCKind.tk_short); //11638		break;	    case 'Z':		members[i].type = orb.get_primitive_tc(TCKind.tk_boolean); //11638		break;        // case '[':        //	members[i].type = orb.get_primitive_tc(TCKind.tk_value_box); //11638        //	members[i].id = RepositoryId.createForAnyType(fields[i].getType());        //	break;	    default:		members[i].type = createTypeCodeForClassInternal(orb, fields[i].getClazz(), vhandler,                                  createdIDs);		members[i].id = vhandler.createForAnyType(fields[i].getType());		break;	    } // end switch	} // end for loop	return members;    }    private static boolean exists(String str, String strs[]){	for (int i = 0; i < strs.length; i++)	    if (str.equals(strs[i]))		return true;			return false;    }    public static boolean isAssignableFrom(String clzRepositoryId, FullValueDescription type,					   com.sun.org.omg.SendingContext.CodeBase sender){			if (exists(clzRepositoryId, type.supported_interfaces))	    return true;	if (clzRepositoryId.equals(type.id))	    return true;			if ((type.base_value != null) &&	    (!type.base_value.equals(""))) {	    FullValueDescription parent = sender.meta(type.base_value);				    return isAssignableFrom(clzRepositoryId, parent, sender);	}	return false;    }    public static TypeCode createTypeCodeForClass (ORB orb, java.lang.Class c, ValueHandler vh) {        // Maps classes to repositoryIDs strings. This is used to detect recursive types.        IdentityKeyValueStack createdIDs = new IdentityKeyValueStack();        // Stores all types created for resolving indirect types at the end.         TypeCode tc = createTypeCodeForClassInternal(orb, c, vh, createdIDs);        return tc;    }    private static TypeCode createTypeCodeForClassInternal (ORB orb,                                                            java.lang.Class c,                                                            ValueHandler vh,                                                            IdentityKeyValueStack createdIDs)    {        // This wrapper method is the protection against infinite recursion.        TypeCode tc = null;        String id = (String)createdIDs.get(c);        if (id != null) {            return orb.create_recursive_tc(id);        } else {            id = vh.getRMIRepositoryID(c);            if (id == null) id = "";            // cache the rep id BEFORE creating a new typecode.            // so that recursive tc can look up the rep id.            createdIDs.push(c, id);            tc = createTypeCodeInternal(orb, c, vh, id, createdIDs);            createdIDs.pop();            return tc;        }    }    // Maintains a stack of key-value pairs. Compares elements using == operator.    private static class IdentityKeyValueStack {        private static class KeyValuePair {            Object key;            Object value;            KeyValuePair(Object key, Object value) {                this.key = key;                this.value = value;            }            boolean equals(KeyValuePair pair) {                return pair.key == this.key;            }        }        Stack pairs = null;        Object get(Object key) {            if (pairs == null) {                return null;            }            for (Iterator i = pairs.iterator(); i.hasNext();) {                KeyValuePair pair = (KeyValuePair)i.next();                if (pair.key == key) {                    return pair.value;                }            }            return null;        }        void push(Object key, Object value) {            if (pairs == null) {                pairs = new Stack();            }            pairs.push(new KeyValuePair(key, value));        }        void pop() {            pairs.pop();        }    }    private static TypeCode createTypeCodeInternal (ORB orb,                                                    java.lang.Class c,                                                    ValueHandler vh,                                                    String id,                                                    IdentityKeyValueStack createdIDs)    {        if ( c.isArray() ) {	    // Arrays - may recurse for multi-dimensional arrays	    Class componentClass = c.getComponentType();	    TypeCode embeddedType;	    if ( componentClass.isPrimitive() ){		embeddedType                     = ValueUtility.getPrimitiveTypeCodeForClass(orb,                                                                 componentClass,                                                                vh);	    } else {		embeddedType = createTypeCodeForClassInternal(orb, componentClass, vh,                                                              createdIDs);	    }	    TypeCode t = orb.create_sequence_tc (0, embeddedType);	    return orb.create_value_box_tc (id, "Sequence", t);	} else if ( c == java.lang.String.class ) {	    // Strings	    TypeCode t = orb.create_string_tc (0);	    return orb.create_value_box_tc (id, "StringValue", t);	} else if (java.rmi.Remote.class.isAssignableFrom(c)) {	    return orb.get_primitive_tc(TCKind.tk_objref);	} else if (org.omg.CORBA.Object.class.isAssignableFrom(c)) {	    return orb.get_primitive_tc(TCKind.tk_objref);	} 			// Anything else        ObjectStreamClass osc = ObjectStreamClass.lookup(c);        if (osc == null) {            return orb.create_value_box_tc (id, "Value", orb.get_primitive_tc (TCKind.tk_value));        }        // type modifier        // REVISIT truncatable and abstract?        short modifier = (osc.isCustomMarshaled() ? org.omg.CORBA.VM_CUSTOM.value : org.omg.CORBA.VM_NONE.value);        // concrete base        TypeCode base = null;        Class superClass = c.getSuperclass();        if (superClass != null && java.io.Serializable.class.isAssignableFrom(superClass)) {            base = createTypeCodeForClassInternal(orb, superClass, vh, createdIDs);        }        // members        ValueMember[] members = translateMembers (orb, osc, vh, createdIDs);        return orb.create_value_tc(id, c.getName(), modifier, base, members);    }    public static TypeCode getPrimitiveTypeCodeForClass (ORB orb,                                                          Class c,                                                         ValueHandler vh) {			if (c == Integer.TYPE) {	    return orb.get_primitive_tc (TCKind.tk_long);	} else if (c == Byte.TYPE) {	    return orb.get_primitive_tc (TCKind.tk_octet);	} else if (c == Long.TYPE) {	    return orb.get_primitive_tc (TCKind.tk_longlong);	} else if (c == Float.TYPE) {	    return orb.get_primitive_tc (TCKind.tk_float);	} else if (c == Double.TYPE) {	    return orb.get_primitive_tc (TCKind.tk_double);	} else if (c == Short.TYPE) {	    return orb.get_primitive_tc (TCKind.tk_short);	} else if (c == Character.TYPE) {            return orb.get_primitive_tc (((ValueHandlerImpl)vh).getJavaCharTCKind());	} else if (c == Boolean.TYPE) {	    return orb.get_primitive_tc (TCKind.tk_boolean);	} else {	    // _REVISIT_ Not sure if this is right.	    return orb.get_primitive_tc (TCKind.tk_any);	}    }}

⌨️ 快捷键说明

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