--- old/src/java.corba/share/classes/com/sun/tools/corba/se/idl/Util.java 2018-01-30 20:25:00.000000000 -0500 +++ /dev/null 2018-01-30 20:25:00.000000000 -0500 @@ -1,379 +0,0 @@ -/* - * Copyright (c) 1999, 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. - */ -/* - * COMPONENT_NAME: idl.parser - * - * ORIGINS: 27 - * - * Licensed Materials - Property of IBM - * 5639-D57 (C) COPYRIGHT International Business Machines Corp. 1997, 1999 - * RMI-IIOP v1.0 - * - */ - -package com.sun.tools.corba.se.idl; - -// NOTES: -// -capitalize and parseTypeModifier should probably be in the -// generators package. -// -D58319 Add version() method. -// -D62023 Add absDelta() method to support float computations. - -import java.io.DataInputStream; -import java.io.File; -import java.io.FileNotFoundException; -import java.io.IOException; - -import java.util.Enumeration; -import java.util.Hashtable; -import java.util.Properties; -import java.util.Vector; - -import com.sun.tools.corba.se.idl.som.cff.FileLocator; - -public class Util -{ - // - /** - * Fetch the version number of this build of the IDL Parser Framework - * from the appropriate properties file. - * @return the version number contained within the appropriate properties - * file, which indicates the build of this IDL Parser Framework. - **/ - public static String getVersion () - { - return getVersion ("com/sun/tools/corba/se/idl/idl.prp"); - } // getVersion - - /** - * Fetch the version number of this build of the IDL Parser Framework. - * This method may be called before or after the framework has been - * initialized. If the framework is inititialized, the version information - * is extracted from the message properties object; otherwise, it is extracted - * from the indicated messages file. - * @return the version number. - **/ - public static String getVersion (String filename) - { - String version = ""; - if (messages == null) // Use supplied file - { - Vector oldMsgFiles = msgFiles; - if (filename == null || filename.equals ("")) - filename = "com/sun/tools/corba/se/idl/idl.prp"; - filename = filename.replace ('/', File.separatorChar); - registerMessageFile (filename); - version = getMessage ("Version.product", getMessage ("Version.number")); - msgFiles = oldMsgFiles; - messages = null; - } - else - { - version = getMessage ("Version.product", getMessage ("Version.number")); - } - return version; - } // getVersion - - public static boolean isAttribute (String name, Hashtable symbolTable) - { - SymtabEntry entry = (SymtabEntry)symbolTable.get (name); - return entry == null ? false : entry instanceof AttributeEntry; - } // isAttribute - - public static boolean isConst (String name, Hashtable symbolTable) - { - SymtabEntry entry = (SymtabEntry)symbolTable.get (name); - return entry == null ? false : entry instanceof ConstEntry; - } // isConst - - public static boolean isEnum (String name, Hashtable symbolTable) - { - SymtabEntry entry = (SymtabEntry)symbolTable.get (name); - return entry == null ? false : entry instanceof EnumEntry; - } // isEnum - - public static boolean isException (String name, Hashtable symbolTable) - { - SymtabEntry entry = (SymtabEntry)symbolTable.get (name); - return entry == null ? false : entry instanceof ExceptionEntry; - } // isException - - public static boolean isInterface (String name, Hashtable symbolTable) - { - SymtabEntry entry = (SymtabEntry)symbolTable.get (name); - return entry == null ? false : entry instanceof InterfaceEntry; - } // isInterface - - public static boolean isMethod (String name, Hashtable symbolTable) - { - SymtabEntry entry = (SymtabEntry)symbolTable.get (name); - return entry == null ? false : entry instanceof MethodEntry; - } // isMethod - - public static boolean isModule (String name, Hashtable symbolTable) - { - SymtabEntry entry = (SymtabEntry)symbolTable.get (name); - return entry == null ? false : entry instanceof ModuleEntry; - } // isModule - - public static boolean isParameter (String name, Hashtable symbolTable) - { - SymtabEntry entry = (SymtabEntry)symbolTable.get (name); - return entry == null ? false : entry instanceof ParameterEntry; - } // isParameter - - public static boolean isPrimitive (String name, Hashtable symbolTable) - { - // Distinguish "string" because the name could be something like: - // string(25 + 1) - SymtabEntry entry = (SymtabEntry)symbolTable.get (name); - if (entry == null) - { - // If it is null then it may be of the form string(). - // Don't just check for string because the name "string" may - // have been overridden. - int parenIndex = name.indexOf ('('); - if (parenIndex >= 0) - entry = (SymtabEntry)symbolTable.get (name.substring (0, parenIndex)); - } - return entry == null ? false : entry instanceof PrimitiveEntry; - } // isPrimitive - - public static boolean isSequence (String name, Hashtable symbolTable) - { - SymtabEntry entry = (SymtabEntry)symbolTable.get (name); - return entry == null ? false : entry instanceof SequenceEntry; - } // isSequence - - public static boolean isStruct (String name, Hashtable symbolTable) - { - SymtabEntry entry = (SymtabEntry)symbolTable.get (name); - return entry == null ? false : entry instanceof StructEntry; - } // isStruct - - public static boolean isString (String name, Hashtable symbolTable) - { - SymtabEntry entry = (SymtabEntry)symbolTable.get (name); - return entry == null ? false : entry instanceof StringEntry; - } // isString - - public static boolean isTypedef (String name, Hashtable symbolTable) - { - SymtabEntry entry = (SymtabEntry)symbolTable.get (name); - return entry == null ? false : entry instanceof TypedefEntry; - } // isTypedef - - public static boolean isUnion (String name, Hashtable symbolTable) - { - SymtabEntry entry = (SymtabEntry)symbolTable.get (name); - return entry == null ? false : entry instanceof UnionEntry; - } // isUnion - - ////////////// - // Message-related methods - - public static String getMessage (String key) - { - if (messages == null) - readMessages (); - String message = messages.getProperty (key); - if (message == null) - message = getDefaultMessage (key); - return message; - } // getMessage - - public static String getMessage (String key, String fill) - { - if (messages == null) - readMessages (); - String message = messages.getProperty (key); - if (message == null) - message = getDefaultMessage (key); - else - { - int index = message.indexOf ("%0"); - if (index >= 0) - message = message.substring (0, index) + fill + message.substring (index + 2); - } - return message; - } // getMessage - - public static String getMessage (String key, String[] fill) - { - if (messages == null) - readMessages (); - String message = messages.getProperty (key); - if (message == null) - message = getDefaultMessage (key); - else - for (int i = 0; i < fill.length; ++i) - { - int index = message.indexOf ("%" + i); - if (index >= 0) - message = message.substring (0, index) + fill[i] + message.substring (index + 2); - } - return message; - } // getMessage - - private static String getDefaultMessage (String keyNotFound) - { - String message = messages.getProperty (defaultKey); - int index = message.indexOf ("%0"); - if (index > 0) - message = message.substring (0, index) + keyNotFound; - return message; - } // getDefaultMessage - - /* - findFile is no longer used now that FileLocator has been provided - by Larry Raper of the Shasta team. - - static File findFile (String name) throws FileNotFoundException - { - String classpath = System.getProperty ("java.class.path"); - String separator = System.getProperty ("path.separator"); - int end = -separator.length (); // so the first pass classpath == original classpath - File file; - do - { - classpath = classpath.substring (end + separator.length ()); - end = classpath.indexOf (separator); - if (end < 0) end = classpath.length (); - file = new File (classpath.substring (0, end) + File.separator + "com" + File.separator + "ibm" + File.separator + "idl" + File.separator + name); - } while (!file.exists () && end != classpath.length ()); - if (!file.exists ()) throw new FileNotFoundException (); - return file; - } // findFile - */ - - private static void readMessages () - { - messages = new Properties (); - Enumeration fileList = msgFiles.elements (); - DataInputStream stream; - while (fileList.hasMoreElements ()) - try - { - stream = FileLocator.locateLocaleSpecificFileInClassPath ((String)fileList.nextElement ()); - messages.load (stream); - } - catch (IOException e) - { - } - if (messages.size () == 0) - messages.put (defaultKey, "Error reading Messages File."); - } // readMessages - - /** Register a message file. This file will be searched for - in the CLASSPATH. */ - public static void registerMessageFile (String filename) - { - if (filename != null) - if (messages == null) - msgFiles.addElement (filename); - else - try - { - DataInputStream stream = FileLocator.locateLocaleSpecificFileInClassPath (filename); - messages.load (stream); - } - catch (IOException e) - { - } - } // registerMessageFile - - private static Properties messages = null; - private static String defaultKey = "default"; - private static Vector msgFiles = new Vector (); - static - { - msgFiles.addElement ("com/sun/tools/corba/se/idl/idl.prp"); - } - - // Message-related methods - /////////////// - - public static String capitalize (String lc) - { - String first = new String (lc.substring (0, 1)); - first = first.toUpperCase (); - return first + lc.substring (1); - } // capitalize - - /////////////// - // General file methods - - /** Searches the current user directory and a list of directories for - a given short file name and returns its absolute file specification. - @return Absolute file name of a given short filename - @throws FileNotFoundException The file does not exist in the - current user or specified directories. - @see java.io.File.getAbsolutePath */ - public static String getAbsolutePath (String filename, Vector includePaths) throws FileNotFoundException - { - String filepath = null; - File file = new File (filename); - if (file.canRead ()) - filepath = file.getAbsolutePath (); - else - { - String fullname = null; - Enumeration pathList = includePaths.elements (); - while (!file.canRead () && pathList.hasMoreElements ()) - { - fullname = (String)pathList.nextElement () + File.separatorChar + filename; - file = new File (fullname); - } - if (file.canRead ()) - filepath = file.getPath (); - else - throw new FileNotFoundException (filename); - } - return filepath; - } // getAbsolutePath - - // General file methods - /////////////// - - /////////////// - // Numeric computations - - // - /** - * Compute the absolute value of the difference between two floating-point - * numbers having single precision. - * @return the absolute value of the difference between two floats. - **/ - public static float absDelta (float f1, float f2) - { - double delta = f1 - f2; - return (float)((delta < 0) ? delta * -1.0 : delta); - } // absDelta - - // Numeric computations - /////////////// - - static RepositoryID emptyID = new RepositoryID (); -} // class Util