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

📄 repositoryid_1_3_1.java

📁 java jdk 1.4的源码
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
/* * Copyright 2003 Sun Microsystems, Inc. All rights reserved. * SUN PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. *//* * @(#)RepositoryId_1_3_1.java	1.3 03/01/23 */package com.sun.corba.se.internal.orbutil;import java.util.StringTokenizer;import java.util.Hashtable;import java.io.IOException;import java.lang.reflect.Method;import java.net.MalformedURLException;import org.omg.CORBA.portable.ValueBase;import org.omg.CORBA.portable.IDLEntity;//d11638 files in the same package, therefore remove their reference//import com.sun.corba.se.internal.util.JDKBridge;//import com.sun.corba.se.internal.util.IdentityHashtable;import com.sun.corba.se.internal.util.JDKBridge;import com.sun.corba.se.internal.util.Utility;import com.sun.corba.se.internal.util.PackagePrefixChecker;import com.sun.corba.se.internal.util.IdentityHashtable;import javax.rmi.CORBA.Util;/** * Because all methods in RepositoryId are static, we have * to duplicate all of this code, freezing it in its 1.3.1 * form for backwards compatibility. * * For security reasons, we can't expose enough of * io/ObjectStreamClass, so it has to be duplicated in * orbutil. */public class RepositoryId_1_3_1 {	    // Legal IDL Identifier characters (1 = legal). Note    // that '.' (2E) is marked as legal even though it is    // not legal in IDL. This allows us to treat a fully    // qualified Java name with '.' package separators    // uniformly, and is safe because that is the only    // legal use of '.' in a Java name.    public static final byte[] IDL_IDENTIFIER_CHARS = {	    	// 0 1 2 3  4 5 6 7  8 9 a b  c d e f	0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // 00-0f	0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // 10-1f	0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,1,0, // 20-2f	1,1,1,1, 1,1,1,1, 1,1,0,0, 0,0,0,0, // 30-3f	0,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, // 40-4f	1,1,1,1, 1,1,1,1, 1,1,1,0, 0,0,0,1, // 50-5f	0,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, // 60-6f	1,1,1,1, 1,1,1,1, 1,1,1,0, 0,0,0,0, // 70-7f	0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // 80-8f	0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // 90-9f	0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // a0-af	0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0, // b0-bf	1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, // c0-cf	0,1,1,1, 1,1,1,0, 1,1,1,1, 1,0,0,1, // d0-df	1,1,1,1, 1,1,1,1, 1,1,1,1, 1,1,1,1, // e0-ef	0,1,1,1, 1,1,1,0, 1,1,1,1, 1,0,0,1, // f0-ff    };	    private static final long serialVersionUID = 123456789L;    private static String defaultServerURL = null;    private static boolean useCodebaseOnly = false;    static {	if (defaultServerURL == null)	    defaultServerURL = (String)JDKBridge.getLocalCodebase();	useCodebaseOnly = JDKBridge.useCodebaseOnly();    }    private static IdentityHashtable classToRepStr = new IdentityHashtable();    private static IdentityHashtable classIDLToRepStr = new IdentityHashtable();    private static IdentityHashtable classSeqToRepStr = new IdentityHashtable();    private static IdentityHashtable repStrToByteArray = new IdentityHashtable();    private static Hashtable repStrToClass = new Hashtable();    private String repId = null;    private boolean isSupportedFormat = true;    private String typeString = null;    private String versionString = null;    private boolean isSequence = false;    private boolean isRMIValueType = false;    private boolean isIDLType = false;    private String completeClassName = null;    private String unqualifiedName = null;    private String definedInId = null;    private Class clazz = null;    private String suid = null, actualSuid = null;    private long suidLong = ObjectStreamClass_1_3_1.kDefaultUID, actualSuidLong = ObjectStreamClass_1_3_1.kDefaultUID;    // Repository ID fragments    private static final String kSequenceKeyword = "seq";    private static final String kValuePrefix = "RMI:";    private static final String kIDLPrefix = "IDL:";    private static final String kIDLNamePrefix = "omg.org/";    private static final String kIDLClassnamePrefix = "org.omg.";    private static final String kSequencePrefix = "[";    private static final String kCORBAPrefix = "CORBA/";    private static final String kArrayPrefix = kValuePrefix + kSequencePrefix + kCORBAPrefix;    private static final int kValuePrefixLength = kValuePrefix.length();    private static final int kIDLPrefixLength = kIDLPrefix.length();    private static final int kSequencePrefixLength = kSequencePrefix.length();    private static final String kInterfaceHashCode = ":0000000000000000";    private static final String kInterfaceOnlyHashStr = "0000000000000000";    private static final String kExternalizableHashStr = "0000000000000001";    // Value tag utility methods and constants    public static final int kInitialValueTag= 0x7fffff00;    public static final int kNoTypeInfo = 0;    public static final int kSingleRepTypeInfo = 0x02;    public static final int  kPartialListTypeInfo = 0x06;    public static final int  kChunkedMask = 0x08;    public static final int kPreComputed_StandardRMIUnchunked = RepositoryId_1_3_1.computeValueTag(false, RepositoryId_1_3_1.kSingleRepTypeInfo, false);    public static final int kPreComputed_CodeBaseRMIUnchunked = RepositoryId_1_3_1.computeValueTag(true, RepositoryId_1_3_1.kSingleRepTypeInfo, false);    public static final int kPreComputed_StandardRMIChunked = RepositoryId_1_3_1.computeValueTag(false, RepositoryId_1_3_1.kSingleRepTypeInfo, true);    public static final int kPreComputed_CodeBaseRMIChunked = RepositoryId_1_3_1.computeValueTag(true, RepositoryId_1_3_1.kSingleRepTypeInfo, true);    public static final int kPreComputed_StandardRMIUnchunked_NoRep = RepositoryId_1_3_1.computeValueTag(false, RepositoryId_1_3_1.kNoTypeInfo, false);    public static final int kPreComputed_CodeBaseRMIUnchunked_NoRep = RepositoryId_1_3_1.computeValueTag(true, RepositoryId_1_3_1.kNoTypeInfo, false);    public static final int kPreComputed_StandardRMIChunked_NoRep = RepositoryId_1_3_1.computeValueTag(false, RepositoryId_1_3_1.kNoTypeInfo, true);    public static final int kPreComputed_CodeBaseRMIChunked_NoRep = RepositoryId_1_3_1.computeValueTag(true, RepositoryId_1_3_1.kNoTypeInfo, true);    // Public, well known repository IDs	    // _REVISIT_ : A table structure with a good search routine for all of this     // would be more efficient and easier to maintain...    // String    public static final String kWStringValueVersion = "1.0";     public static final String kWStringValueHash = ":"+kWStringValueVersion;     public static final String kWStringStubValue = "WStringValue";    public static final String kWStringTypeStr = "omg.org/CORBA/"+kWStringStubValue;    public static final String kWStringValueRepID = kIDLPrefix + kWStringTypeStr + kWStringValueHash;    // Any    public static final String kAnyRepID = kIDLPrefix + "omg.org/CORBA/Any";    // Class    // Anita4: convert to uppercase    public static final String kClassDescValueHash = ":" +        Long.toHexString(       ObjectStreamClass_1_3_1.getActualSerialVersionUID(javax.rmi.CORBA.ClassDesc.class)).toUpperCase() + ":" +      Long.toHexString(       ObjectStreamClass_1_3_1.getSerialVersionUID(javax.rmi.CORBA.ClassDesc.class)).toUpperCase();    public static final String kClassDescStubValue = "ClassDesc";    public static final String kClassDescTypeStr = "javax.rmi.CORBA."+kClassDescStubValue;    public static final String kClassDescValueRepID = kValuePrefix + kClassDescTypeStr + kClassDescValueHash;    // Object    public static final String kObjectValueHash = ":1.0";    public static final String kObjectStubValue = "Object";    // Sequence    public static final String kSequenceValueHash = ":1.0";    public static final String kPrimitiveSequenceValueHash = ":0000000000000000";    // Serializable    public static final String kSerializableValueHash = ":1.0";    public static final String kSerializableStubValue = "Serializable";    // Externalizable    public static final String kExternalizableValueHash = ":1.0";    public static final String kExternalizableStubValue = "Externalizable";    // Remote (The empty string is used for java.rmi.Remote)    public static final String kRemoteValueHash = "";    public static final String kRemoteStubValue = "";    public static final String kRemoteTypeStr = "";    public static final String kRemoteValueRepID = "";    public static final Hashtable kSpecialArrayTypeStrings = new Hashtable();    static {	kSpecialArrayTypeStrings.put("CORBA.WStringValue", new StringBuffer(java.lang.String.class.getName()));	kSpecialArrayTypeStrings.put("javax.rmi.CORBA.ClassDesc", new StringBuffer(java.lang.Class.class.getName()));	kSpecialArrayTypeStrings.put("CORBA.Object", new StringBuffer(java.rmi.Remote.class.getName()));		    }    public static final Hashtable kSpecialCasesRepIDs = new Hashtable();    static {	kSpecialCasesRepIDs.put(java.lang.String.class, kWStringValueRepID);	kSpecialCasesRepIDs.put(java.lang.Class.class, kClassDescValueRepID);	kSpecialCasesRepIDs.put(java.rmi.Remote.class, kRemoteValueRepID);    }    public static final Hashtable kSpecialCasesStubValues = new Hashtable();    static {	kSpecialCasesStubValues.put(java.lang.String.class, kWStringStubValue);	kSpecialCasesStubValues.put(java.lang.Class.class, kClassDescStubValue);	kSpecialCasesStubValues.put(java.lang.Object.class, kObjectStubValue);	kSpecialCasesStubValues.put(java.io.Serializable.class, kSerializableStubValue);	kSpecialCasesStubValues.put(java.io.Externalizable.class, kExternalizableStubValue);	kSpecialCasesStubValues.put(java.rmi.Remote.class, kRemoteStubValue);    }    public static final Hashtable kSpecialCasesVersions = new Hashtable();    static {	kSpecialCasesVersions.put(java.lang.String.class, kWStringValueHash);	kSpecialCasesVersions.put(java.lang.Class.class, kClassDescValueHash);	kSpecialCasesVersions.put(java.lang.Object.class, kObjectValueHash);	kSpecialCasesVersions.put(java.io.Serializable.class, kSerializableValueHash);	kSpecialCasesVersions.put(java.io.Externalizable.class, kExternalizableValueHash);	kSpecialCasesVersions.put(java.rmi.Remote.class, kRemoteValueHash);    }    public static final Hashtable kSpecialCasesClasses = new Hashtable();    static {	kSpecialCasesClasses.put(kWStringTypeStr, java.lang.String.class);	kSpecialCasesClasses.put(kClassDescTypeStr, java.lang.Class.class);	kSpecialCasesClasses.put(kRemoteTypeStr, java.rmi.Remote.class);	kSpecialCasesClasses.put("org.omg.CORBA.WStringValue", java.lang.String.class);	kSpecialCasesClasses.put("javax.rmi.CORBA.ClassDesc", java.lang.Class.class);	//kSpecialCasesClasses.put(kRemoteTypeStr, java.rmi.Remote.class);    }    public static final Hashtable kSpecialCasesArrayPrefix = new Hashtable();    static {	kSpecialCasesArrayPrefix.put(java.lang.String.class, kValuePrefix + kSequencePrefix + kCORBAPrefix);	kSpecialCasesArrayPrefix.put(java.lang.Class.class, kValuePrefix + kSequencePrefix + "javax/rmi/CORBA/");	kSpecialCasesArrayPrefix.put(java.lang.Object.class, kValuePrefix + kSequencePrefix + "java/lang/");	kSpecialCasesArrayPrefix.put(java.io.Serializable.class, kValuePrefix + kSequencePrefix + "java/io/");	kSpecialCasesArrayPrefix.put(java.io.Externalizable.class, kValuePrefix + kSequencePrefix + "java/io/");	kSpecialCasesArrayPrefix.put(java.rmi.Remote.class, kValuePrefix + kSequencePrefix + kCORBAPrefix);    }    public static final Hashtable kSpecialPrimitives = new Hashtable();    static {	kSpecialPrimitives.put("int","long");	kSpecialPrimitives.put("long","longlong");	kSpecialPrimitives.put("byte","octet");    }    /**     * Used to convert ascii to hex.     */    private static final byte ASCII_HEX[] =	{	(byte)'0',	(byte)'1',	(byte)'2',	(byte)'3',	(byte)'4',	(byte)'5',	(byte)'6',	(byte)'7',	(byte)'8',	(byte)'9',	(byte)'A',	(byte)'B',	(byte)'C',	(byte)'D',	(byte)'E',	(byte)'F',    };    // bug fix for 4328952; to eliminate possibility of overriding this    // in a subclass.    public static final RepositoryIdCache_1_3_1 cache = new RepositoryIdCache_1_3_1();    // Interface Rep ID Strings    public static final String kjava_rmi_Remote = createForAnyType(java.rmi.Remote.class);    public static final String korg_omg_CORBA_Object = createForAnyType(org.omg.CORBA.Object.class);    // Dummy arguments for getIdFromHelper method    public static final Class kNoParamTypes[] ={};    public static final Object kNoArgs[] = {};    // To create a RepositoryID, use code similar to the following:    // RepositoryId.cache.getId( id );        RepositoryId_1_3_1(){}    RepositoryId_1_3_1(String aRepId){	init(aRepId);    }    RepositoryId_1_3_1 init(String aRepId){        this.repId = aRepId;			// Special case for remote	if (aRepId.length() == 0) {	    clazz = java.rmi.Remote.class;	    typeString = "";	    isRMIValueType = true;	    suid = kInterfaceOnlyHashStr;	    return this;	}	else if (aRepId.equals(kWStringValueRepID)) {	    clazz = java.lang.String.class;	    typeString = kWStringTypeStr;	    isIDLType = true;	    // fix where Attempting to obtain a FullValueDescription 	    // for an RMI value type with a String field causes an exception. 	    completeClassName = "java.lang.String";	    versionString = kWStringValueVersion;	    return this;				}	else {				String repId = convertFromISOLatin1(aRepId);	versionString = repId.substring(repId.indexOf(':', repId.indexOf(':')+1));        if (repId.startsWith(kIDLPrefix)) {            typeString =                repId.substring(kIDLPrefixLength, repId.indexOf(':', kIDLPrefixLength));	    isIDLType = true;	    if (typeString.startsWith(kIDLNamePrefix))		completeClassName = kIDLClassnamePrefix + 		    typeString.substring(kIDLNamePrefix.length()).replace('/','.');	    else completeClassName = typeString.replace('/','.');        }        else if (repId.startsWith(kValuePrefix)) {            typeString =                repId.substring(kValuePrefixLength, repId.indexOf(':', kValuePrefixLength));	    isRMIValueType = true;	    if (versionString.indexOf('.') == -1) {		    actualSuid = versionString.substring(1);		    suid = actualSuid;  // default if not explicitly specified						    if (actualSuid.indexOf(':') != -1){		    // we have a declared hash also			int pos = actualSuid.indexOf(':')+1;			// actualSuid = suid.substring(pos);			// suid = suid.substring(0, pos-1);			suid = actualSuid.substring(pos);			actualSuid = actualSuid.substring(0, pos-1);

⌨️ 快捷键说明

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