--- old/src/jdk.rmic/share/classes/sun/rmi/rmic/iiop/ArrayType.java 2018-02-06 17:16:39.000000000 -0500 +++ /dev/null 2018-02-06 17:16:39.000000000 -0500 @@ -1,270 +0,0 @@ -/* - * Copyright (c) 1998, 2007, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code 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. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code 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 in the LICENSE file that - * accompanied this code). - * - * 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 Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * Licensed Materials - Property of IBM - * RMI-IIOP v1.0 - * Copyright IBM Corp. 1998 1999 All Rights Reserved - * - */ - -package sun.rmi.rmic.iiop; - -import java.util.Vector; -import java.util.HashSet; -import sun.tools.java.CompilerError; -import sun.tools.java.Identifier; -import sun.tools.java.ClassDefinition; -import java.lang.reflect.Array; - -/** - * ArrayType is a wrapper for any of the other types. The getElementType() - * method can be used to get the array element type. The getArrayDimension() - * method can be used to get the array dimension. - * - * @author Bryan Atsatt - */ -public class ArrayType extends Type { - - private Type type; - private int arrayDimension; - private String brackets; - private String bracketsSig; - - //_____________________________________________________________________ - // Public Interfaces - //_____________________________________________________________________ - - /** - * Create an ArrayType object for the given type. - * - * If the class is not a properly formed or if some other error occurs, the - * return value will be null, and errors will have been reported to the - * supplied BatchEnvironment. - */ - public static ArrayType forArray( sun.tools.java.Type theType, - ContextStack stack) { - - - ArrayType result = null; - sun.tools.java.Type arrayType = theType; - - if (arrayType.getTypeCode() == TC_ARRAY) { - - // Find real type... - - while (arrayType.getTypeCode() == TC_ARRAY) { - arrayType = arrayType.getElementType(); - } - - // Do we already have it? - - Type existing = getType(theType,stack); - if (existing != null) { - - if (!(existing instanceof ArrayType)) return null; // False hit. - - // Yep, so return it... - - return (ArrayType) existing; - } - - // Now try to make a Type from it... - - Type temp = CompoundType.makeType(arrayType,null,stack); - - if (temp != null) { - - // Got a valid one. Make an array type... - - result = new ArrayType(stack,temp,theType.getArrayDimension()); - - // Add it... - - putType(theType,result,stack); - - // Do the stack thing in case tracing on... - - stack.push(result); - stack.pop(true); - } - } - - return result; - } - - /** - * Return signature for this type (e.g. com.acme.Dynamite - * would return "com.acme.Dynamite", byte = "B") - */ - public String getSignature() { - return bracketsSig + type.getSignature(); - } - - /** - * Get element type. Returns null if not an array. - */ - public Type getElementType () { - return type; - } - - /** - * Get array dimension. Returns zero if not an array. - */ - public int getArrayDimension () { - return arrayDimension; - } - - /** - * Get brackets string. Returns "" if not an array. - */ - public String getArrayBrackets () { - return brackets; - } - - /** - * Return a string representation of this type. - */ - public String toString () { - return getQualifiedName() + brackets; - } - - /** - * Return a string describing this type. - */ - public String getTypeDescription () { - return "Array of " + type.getTypeDescription(); - } - - - /** - * Return the name of this type. For arrays, will include "[]" if useIDLNames == false. - * @param useQualifiedNames If true, print qualified names; otherwise, print unqualified names. - * @param useIDLNames If true, print IDL names; otherwise, print java names. - * @param globalIDLNames If true and useIDLNames true, prepends "::". - */ - public String getTypeName ( boolean useQualifiedNames, - boolean useIDLNames, - boolean globalIDLNames) { - if (useIDLNames) { - return super.getTypeName(useQualifiedNames,useIDLNames,globalIDLNames); - } else { - return super.getTypeName(useQualifiedNames,useIDLNames,globalIDLNames) + brackets; - } - } - - //_____________________________________________________________________ - // Subclass/Internal Interfaces - //_____________________________________________________________________ - - - /** - * Convert all invalid types to valid ones. - */ - protected void swapInvalidTypes () { - if (type.getStatus() != STATUS_VALID) { - type = getValidType(type); - } - } - - /* - * Add matching types to list. Return true if this type has not - * been previously checked, false otherwise. - */ - protected boolean addTypes (int typeCodeFilter, - HashSet checked, - Vector matching) { - - // Check self. - - boolean result = super.addTypes(typeCodeFilter,checked,matching); - - // Have we been checked before? - - if (result) { - - // No, so add element type... - - getElementType().addTypes(typeCodeFilter,checked,matching); - } - - return result; - } - - /** - * Create an ArrayType instance for the given type. The resulting - * object is not yet completely initialized. - */ - private ArrayType(ContextStack stack, Type type, int arrayDimension) { - super(stack,TYPE_ARRAY); - this.type = type; - this.arrayDimension = arrayDimension; - - // Create our brackets string... - - brackets = ""; - bracketsSig = ""; - for (int i = 0; i < arrayDimension; i ++) { - brackets += "[]"; - bracketsSig += "["; - } - - // Now set our names... - - String idlName = IDLNames.getArrayName(type,arrayDimension); - String[] module = IDLNames.getArrayModuleNames(type); - setNames(type.getIdentifier(),module,idlName); - - // Set our repositoryID... - - setRepositoryID(); - } - - - /* - * Load a Class instance. Return null if fail. - */ - protected Class loadClass() { - Class result = null; - Class elementClass = type.getClassInstance(); - if (elementClass != null) { - result = Array.newInstance(elementClass, new int[arrayDimension]).getClass(); - } - return result; - } - - /** - * Release all resources - */ - protected void destroy () { - super.destroy(); - if (type != null) { - type.destroy(); - type = null; - } - brackets = null; - bracketsSig = null; - } -}