📄 repositoryid.java
字号:
while ((type = clazz.getComponentType()) != null) { numOfDims++; clazz = type; } if (clazz.isPrimitive()) repid = kValuePrefix + originalClazz.getName() + kPrimitiveSequenceValueHash; else { StringBuffer buf = new StringBuffer(); buf.append(kValuePrefix); while(numOfDims-- > 0) { buf.append("["); } buf.append("L"); buf.append(convertToISOLatin1(clazz.getName())); buf.append(";"); buf.append(createHashString(clazz)); repid = buf.toString(); } classSeqToRepStr.put(originalClazz,repid); return repid; } } public static String createForSpecialCase(java.lang.Class clazz){ if (clazz.isArray()){ return createSequenceRepID(clazz); } else { return (String)kSpecialCasesRepIDs.get(clazz); } } public static String createForSpecialCase(java.io.Serializable ser){ Class clazz = ser.getClass(); if (clazz.isArray()){ return createSequenceRepID(ser); } else return createForSpecialCase(clazz); } /** * Creates a repository ID for a normal Java Type. * @param ser The Java object to create a repository ID for * @exception com.sun.corba.se.impl.io.TypeMismatchException if ser implements the * org.omg.CORBA.portable.IDLEntity interface which indicates it is an IDL Value type. **/ public static String createForJavaType(java.io.Serializable ser) throws com.sun.corba.se.impl.io.TypeMismatchException { synchronized (classToRepStr) { String repid = createForSpecialCase(ser); if (repid != null) return repid; Class clazz = ser.getClass(); repid = (String)classToRepStr.get(clazz); if (repid != null) return repid; repid = kValuePrefix + convertToISOLatin1(clazz.getName()) + createHashString(clazz); classToRepStr.put(clazz, repid); repStrToClass.put(repid, clazz); return repid; } } /** * Creates a repository ID for a normal Java Type. * @param clz The Java class to create a repository ID for * @exception com.sun.corba.se.impl.io.TypeMismatchException if ser implements the * org.omg.CORBA.portable.IDLEntity interface which indicates it is an IDL Value type. **/ public static String createForJavaType(Class clz) throws com.sun.corba.se.impl.io.TypeMismatchException { synchronized (classToRepStr){ String repid = createForSpecialCase(clz); if (repid != null) return repid; repid = (String)classToRepStr.get(clz); if (repid != null) return repid; repid = kValuePrefix + convertToISOLatin1(clz.getName()) + createHashString(clz); classToRepStr.put(clz, repid); repStrToClass.put(repid, clz); return repid; } } /** * Creates a repository ID for an IDL Java Type. * @param ser The IDL Value object to create a repository ID for * @param major The major version number * @param minor The minor version number * @exception com.sun.corba.se.impl.io.TypeMismatchException if ser does not implement the * org.omg.CORBA.portable.IDLEntity interface which indicates it is an IDL Value type. **/ public static String createForIDLType(Class ser, int major, int minor) throws com.sun.corba.se.impl.io.TypeMismatchException { synchronized (classIDLToRepStr){ String repid = (String)classIDLToRepStr.get(ser); if (repid != null) return repid; repid = kIDLPrefix + convertToISOLatin1(ser.getName()).replace('.','/') + ":" + major + "." + minor; classIDLToRepStr.put(ser, repid); return repid; } } private static String getIdFromHelper(Class clazz){ try { Class helperClazz = Utility.loadClassForClass(clazz.getName()+"Helper", null, clazz.getClassLoader(), clazz, clazz.getClassLoader()); Method idMethod = helperClazz.getDeclaredMethod("id", kNoParamTypes); return (String)idMethod.invoke(null, kNoArgs); } catch(java.lang.ClassNotFoundException cnfe) { throw new org.omg.CORBA.MARSHAL(cnfe.toString()); } catch(java.lang.NoSuchMethodException nsme) { throw new org.omg.CORBA.MARSHAL(nsme.toString()); } catch(java.lang.reflect.InvocationTargetException ite) { throw new org.omg.CORBA.MARSHAL(ite.toString()); } catch(java.lang.IllegalAccessException iae) { throw new org.omg.CORBA.MARSHAL(iae.toString()); } } /** * Createa a repository ID for the type if it is either a java type * or an IDL type. * @param type The type to create rep. id for * @return The rep. id. **/ public static String createForAnyType(Class type) { try{ if (type.isArray()) return createSequenceRepID(type); else if (IDLEntity.class.isAssignableFrom(type)) { try{ return getIdFromHelper(type); } catch(Throwable t) { return createForIDLType(type, 1, 0); } } else return createForJavaType(type); } catch(com.sun.corba.se.impl.io.TypeMismatchException e){ return null; } } public static boolean isAbstractBase(Class clazz) { return (clazz.isInterface() && IDLEntity.class.isAssignableFrom(clazz) && (!ValueBase.class.isAssignableFrom(clazz)) && (!org.omg.CORBA.Object.class.isAssignableFrom(clazz))); } public static boolean isAnyRequired(Class clazz) { return ((clazz == java.lang.Object.class) || (clazz == java.io.Serializable.class) || (clazz == java.io.Externalizable.class)); } public static long fromHex(String hexNumber) { if (hexNumber.startsWith("0x")) return Long.valueOf(hexNumber.substring(2), 16).longValue(); else return Long.valueOf(hexNumber, 16).longValue(); } /** * Convert strings with illegal IDL identifier characters. * <p> * Section 5.5.7 of OBV spec. */ public static String convertToISOLatin1 (String name) { int length = name.length(); if (length == 0) { return name; } StringBuffer buffer = null; for (int i = 0; i < length; i++) { char c = name.charAt(i); if (c > 255 || IDL_IDENTIFIER_CHARS[c] == 0) { // We gotta convert. Have we already started? if (buffer == null) { // No, so get set up... buffer = new StringBuffer(name.substring(0,i)); } // Convert the character into the IDL escape syntax... buffer.append( "\\U" + (char)ASCII_HEX[(c & 0xF000) >>> 12] + (char)ASCII_HEX[(c & 0x0F00) >>> 8] + (char)ASCII_HEX[(c & 0x00F0) >>> 4] + (char)ASCII_HEX[(c & 0x000F)]); } else { if (buffer != null) { buffer.append(c); } } } if (buffer != null) { name = buffer.toString(); } return name; } /** * Convert strings with ISO Latin 1 escape sequences back to original strings. * <p> * Section 5.5.7 of OBV spec. */ private static String convertFromISOLatin1 (String name) { int index = -1; StringBuffer buf = new StringBuffer(name); while ((index = buf.toString().indexOf("\\U")) != -1){ String str = "0000" + buf.toString().substring(index+2, index+6); // Convert Hexadecimal byte[] buffer = new byte[(str.length() - 4) / 2]; for (int i=4, j=0; i < str.length(); i +=2, j++) { buffer[j] = (byte)((Utility.hexOf(str.charAt(i)) << 4) & 0xF0); buffer[j] |= (byte)((Utility.hexOf(str.charAt(i+1)) << 0) & 0x0F); } buf = new StringBuffer(delete(buf.toString(), index, index+6)); buf.insert(index, (char)buffer[1]); } return buf.toString(); } private static String delete(String str, int from, int to) { return str.substring(0, from) + str.substring(to, str.length()); } private static String replace(String target, String arg, String source) { int i = 0; i = target.indexOf(arg); while(i != -1) { String left = target.substring(0, i); String right = target.substring(i+arg.length()); target = new String(left+source+right); i = target.indexOf(arg); } return target; } public static int computeValueTag(boolean codeBasePresent, int typeInfo, boolean chunkedEncoding){ int value_tag = kInitialValueTag; if (codeBasePresent) value_tag = value_tag | 0x00000001; value_tag = value_tag | typeInfo; if (chunkedEncoding) value_tag = value_tag | kChunkedMask; return value_tag; } public static boolean isCodeBasePresent(int value_tag){ return ((value_tag & 0x00000001) == 1); } public static int getTypeInfo(int value_tag){ return (value_tag & 0x00000006); } public static boolean isChunkedEncoding(int value_tag){ return ((value_tag & kChunkedMask) != 0); } public static String getServerURL(){ return defaultServerURL; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -