--- old/src/java.corba/share/classes/com/sun/tools/corba/se/idl/som/cff/Messages.java 2018-01-30 20:25:34.000000000 -0500 +++ /dev/null 2018-01-30 20:25:34.000000000 -0500 @@ -1,356 +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. - */ -/* - * Licensed Materials - Property of IBM - * 5639-D57 (C) COPYRIGHT International Business Machines Corp. 1997,1998 - * RMI-IIOP v1.0 - * - * Defect History - * - * #26964 LKR 11/25/96 \u0020 at end-of-message not handled properly by Java. - * #31840 LKR 06/05/97 Replace \n in templates with Java's line separator. - * - */ - -package com.sun.tools.corba.se.idl.som.cff; - -import java.io.IOException; -import java.util.Enumeration; -import java.util.Properties; -import java.lang.String; -import java.lang.System; - -/** - * This class provides messaging services for accessing, and merging - * parameters into, translatable message text. The text is presumed - * to reside in a .properties file. A "cff.properties" file that - * contains all of the message text needed for the CFF framework itself - * is loaded during class initialization. All of the messages in the - * cff.properties file that are needed by the CFF framework contain keys - * that begin with the string "cff.". - *

- * The static method Messages.msgLoad may be used to merge additional - * message text .properties files needed by other frameworks or user - * programs. - * - * @see com.sun.tools.corba.se.idl.som.cff.Messages#msgLoad - * - * @author Larry K. Raper - */ - -public abstract class Messages { - - /* Class variables */ - - - /* Metasymbol for leading or trailing blank */ - private static final String LTB = "%B"; - /* Metasymbol for line separator */ - private static final char NL = '\n'; - - private static final String lineSeparator = - System.getProperty ("line.separator"); - - private static final Properties m = new Properties (); - private static boolean loadNeeded = true; - - /* Class methods for message loading and formatting */ - - private static final synchronized void loadDefaultProperties () { - - if (!loadNeeded) - return; - try { - m.load (FileLocator.locateLocaleSpecificFileInClassPath ( - "com/sun/tools/corba/se/idl/som/cff/cff.properties")); - } catch (IOException ioe) { } - fixMessages (m); /* #26964 Replace any metasymbols */ - loadNeeded = false; - - } - - /** - * This method was introduced to fix defect #26964. For Java 1.0.2 - * on Win NT, the escape sequence \u0020 was not being handled - * correctly by the Java Properties class when it was the final - * character of a line. Instead the trailing blank was dropped - * and the next line was swallowed as a continuation. To work - * around the problem, we introduced our own metasymbol to represent - * a trailing blank. Hence: - * - * Performs substitution for any metasymbols in the message - * templates. So far only %B is needed. This was introduced - * to make it more convenient for .properties files to - * contain message templates with leading or trailing blanks - * (although %B may actually occur anywhere in a template). - * Subsequently, checking for '\n' has also been added. Now, - * wherever '\n' occurs in a message template, it is replaced - * with the value of System.getProperty ("line.separator"). - */ - private static final void fixMessages (Properties p) { - - Enumeration keys = p.keys (); - Enumeration elems = p.elements (); - while (keys.hasMoreElements ()) { - String key = (String) keys.nextElement (); - String elem = (String) elems.nextElement (); - int i = elem.indexOf (LTB); - boolean changed = false; - while (i != -1) { - if (i == 0) - elem = " " + elem.substring (2); - else - elem = elem.substring (0, i) + " " + elem.substring (i+2); - changed = true; - i = elem.indexOf (LTB); - } - int lsIncr = lineSeparator.length () - 1; - for (i=0; i - * If the msgkey cannot be found, its value is used as the - * message text. - */ - public static final String msg (String msgkey, String parm) { - - if (loadNeeded) - loadDefaultProperties (); - String msgtext = m.getProperty (msgkey, msgkey); - int i = msgtext.indexOf ("%1"); - if (i >= 0) { - String ending = ""; - if ((i+2) < msgtext.length ()) - ending = msgtext.substring (i+2); - return msgtext.substring (0, i) + parm + ending; - } else - msgtext += " " + parm; - return msgtext; - - } - - /** - * Returns the message text corresponding to the passed msgkey - * string. The message text is assumed to require the insertion - * of a single argument, supplied by the "parm" parameter. - * If the message text does not contain the meta characters "%1" - * that indicate where to place the argument, the passed argument - * is appended at the end of the message text. - *

- * If the msgkey cannot be found, its value is used as the - * message text. - */ - public static final String msg (String msgkey, int parm) { - - return msg (msgkey, String.valueOf (parm)); - - } - - /** - * Returns the message text corresponding to the passed msgkey - * string. The message text is assumed to require the insertion - * of two arguments, supplied by the "parm1" and "parm2" parameters. - * If the message text does not contain the meta characters "%1" and - * "%2" that indicate where to place the arguments, the passed arguments - * are appended at the end of the message text. - *

- * If the msgkey cannot be found, its value is used as the - * message text. - */ - public static final String msg (String msgkey, String parm1, String parm2) { - - if (loadNeeded) - loadDefaultProperties (); - String result = m.getProperty (msgkey, msgkey); - String ending = ""; - int i = result.indexOf ("%1"); - if (i >= 0) { - if ((i+2) < result.length ()) - ending = result.substring (i+2); - result = result.substring (0, i) + parm1 + ending; - } else - result += " " + parm1; - i = result.indexOf ("%2"); - if (i >= 0) { - ending = ""; - if ((i+2) < result.length ()) - ending = result.substring (i+2); - result = result.substring (0, i) + parm2 + ending; - } else - result += " " + parm2; - return result; - - } - - /** - * Returns the message text corresponding to the passed msgkey - * string. The message text is assumed to require the insertion - * of two arguments, supplied by the "parm1" and "parm2" parameters. - * If the message text does not contain the meta characters "%1" and - * "%2" that indicate where to place the arguments, the passed arguments - * are appended at the end of the message text. - *

- * If the msgkey cannot be found, its value is used as the - * message text. - */ - public static final String msg (String msgkey, int parm1, String parm2) { - - return msg (msgkey, String.valueOf (parm1), parm2); - - } - - /** - * Returns the message text corresponding to the passed msgkey - * string. The message text is assumed to require the insertion - * of two arguments, supplied by the "parm1" and "parm2" parameters. - * If the message text does not contain the meta characters "%1" and - * "%2" that indicate where to place the arguments, the passed arguments - * are appended at the end of the message text. - *

- * If the msgkey cannot be found, its value is used as the - * message text. - */ - public static final String msg (String msgkey, String parm1, int parm2) { - - return msg (msgkey, parm1, String.valueOf (parm2)); - - } - - /** - * Returns the message text corresponding to the passed msgkey - * string. The message text is assumed to require the insertion - * of two arguments, supplied by the "parm1" and "parm2" parameters. - * If the message text does not contain the meta characters "%1" and - * "%2" that indicate where to place the arguments, the passed arguments - * are appended at the end of the message text. - *

- * If the msgkey cannot be found, its value is used as the - * message text. - */ - public static final String msg (String msgkey, int parm1, int parm2) { - - return msg (msgkey, String.valueOf (parm1), String.valueOf (parm2)); - - } - - - /** - * Returns the message text corresponding to the passed msgkey - * string. The message text is assumed to require the insertion - * of three arguments, supplied by the "parm1", "parm2" and "parm3" - * parameters. - * If the message text does not contain the meta characters "%1" and - * "%2" that indicate where to place the arguments, the passed arguments - * are appended at the end of the message text. - *

- * If the msgkey cannot be found, its value is used as the - * message text. - */ - public static final String msg (String msgkey, String parm1, - String parm2, String parm3) { - if (loadNeeded) - loadDefaultProperties (); - String result = m.getProperty (msgkey, msgkey); - result = substituteString(result, 1, parm1); - result = substituteString(result, 2, parm2); - result = substituteString(result, 3, parm3); - - return result; - } - - /* helper function for string substition. - @return the substituted string, it substitution is possible. - Otherwise, return a new string with subst at the end. - @orig: original string - @paramNum the parameter number to search. For example, - paramNam == 1 means search for "%1". - @subst: string for the substitution. - */ - private static String substituteString(String orig, int paramNum, - String subst){ - String result = orig; - String paramSubst = "%"+ paramNum; - int len = paramSubst.length(); - int index = result.indexOf (paramSubst); - String ending = ""; - if (index >= 0) { - if ((index+len) < result.length ()) - ending = result.substring (index+len); - result = result.substring (0, index) + subst + ending; - } - else result += " " + subst; - - return result; - } - - -}