1 /* 2 * Copyright (C) 2014 The Android Open Source Project 3 * Copyright (c) 1995, 2000, Oracle and/or its affiliates. All rights reserved. 4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 5 * 6 * This code is free software; you can redistribute it and/or modify it 7 * under the terms of the GNU General Public License version 2 only, as 8 * published by the Free Software Foundation. Oracle designates this 9 * particular file as subject to the "Classpath" exception as provided 10 * by Oracle in the LICENSE file that accompanied this code. 11 * 12 * This code is distributed in the hope that it will be useful, but WITHOUT 13 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 14 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 15 * version 2 for more details (a copy is included in the LICENSE file that 16 * accompanied this code). 17 * 18 * You should have received a copy of the GNU General Public License version 19 * 2 along with this work; if not, write to the Free Software Foundation, 20 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 21 * 22 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 23 * or visit www.oracle.com if you need additional information or have any 24 * questions. 25 */ 26 27 package sun.misc; 28 29 /** 30 * MessageUtils: miscellaneous utilities for handling error and status 31 * properties and messages. 32 * 33 * @author Herb Jellinek 34 */ 35 36 public class MessageUtils { 37 // can instantiate it for to allow less verbose use - via instance 38 // instead of classname 39 40 public MessageUtils() { } 41 42 public static String subst(String patt, String arg) { 43 String args[] = { arg }; 44 return subst(patt, args); 45 } 46 47 public static String subst(String patt, String arg1, String arg2) { 48 String args[] = { arg1, arg2 }; 49 return subst(patt, args); 50 } 51 52 public static String subst(String patt, String arg1, String arg2, 53 String arg3) { 54 String args[] = { arg1, arg2, arg3 }; 55 return subst(patt, args); 56 } 57 58 public static String subst(String patt, String args[]) { 59 StringBuffer result = new StringBuffer(); 60 int len = patt.length(); 61 for (int i = 0; i >= 0 && i < len; i++) { 62 char ch = patt.charAt(i); 63 if (ch == '%') { 64 if (i != len) { 65 int index = Character.digit(patt.charAt(i + 1), 10); 66 if (index == -1) { 67 result.append(patt.charAt(i + 1)); 68 i++; 69 } else if (index < args.length) { 70 result.append(args[index]); 71 i++; 72 } 73 } 74 } else { 75 result.append(ch); 76 } 77 } 78 return result.toString(); 79 } 80 81 public static String substProp(String propName, String arg) { 82 return subst(System.getProperty(propName), arg); 83 } 84 85 public static String substProp(String propName, String arg1, String arg2) { 86 return subst(System.getProperty(propName), arg1, arg2); 87 } 88 89 public static String substProp(String propName, String arg1, String arg2, 90 String arg3) { 91 return subst(System.getProperty(propName), arg1, arg2, arg3); 92 } 93 94 /** 95 * Print a message directly to stderr, bypassing all the 96 * character conversion methods. 97 * @param msg message to print 98 */ 99 // Android-removed : Remove support for bypassing character conversion 100 // in printing debug message. 101 // 102 // public static native void toStderr(String msg); 103 104 /** 105 * Print a message directly to stdout, bypassing all the 106 * character conversion methods. 107 * @param msg message to print 108 */ 109 // Android-removed : Remove support for bypassing character conversion 110 // in printing debug message. 111 // 112 113 // public static native void toStdout(String msg); 114 115 116 // Short forms of the above 117 118 public static void err(String s) { 119 // Android changed. 120 // toStderr(s + "\n"); 121 System.err.println(s); 122 } 123 124 public static void out(String s) { 125 // Android changed. 126 // toStdout(s + "\n"); 127 System.out.println(s); 128 } 129 130 // Print a stack trace to stderr 131 // 132 public static void where() { 133 Throwable t = new Throwable(); 134 StackTraceElement[] es = t.getStackTrace(); 135 for (int i = 1; i < es.length; i++) { 136 // Android changed. 137 // toStderr("\t" + es[i].toString() + "\n"); 138 System.err.println("\t" + es[i].toString()); 139 } 140 } 141 142 } 143