diff --git a/ant/src/main/java/com/threerings/getdown/tools/DigesterTask.java b/ant/src/main/java/com/threerings/getdown/tools/DigesterTask.java index 48cc8d4..76212ae 100644 --- a/ant/src/main/java/com/threerings/getdown/tools/DigesterTask.java +++ b/ant/src/main/java/com/threerings/getdown/tools/DigesterTask.java @@ -7,16 +7,13 @@ package com.threerings.getdown.tools; import java.io.File; import java.io.IOException; - import java.security.GeneralSecurityException; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Task; -import com.threerings.getdown.data.Digest; - /** - * An ant task used to create a digest.txt for a Getdown + * An ant task used to create a {@code digest.txt} for a Getdown * application deployment. */ public class DigesterTask extends Task diff --git a/core/src/main/java/com/threerings/getdown/Log.java b/core/src/main/java/com/threerings/getdown/Log.java index d00a131..da98c90 100644 --- a/core/src/main/java/com/threerings/getdown/Log.java +++ b/core/src/main/java/com/threerings/getdown/Log.java @@ -15,7 +15,7 @@ import java.util.logging.*; /** * A placeholder class that contains a reference to the log object used by the Getdown code. */ -public class Log +public final class Log { public static class Shim { /** @@ -143,6 +143,5 @@ public class Log protected FieldPosition _fpos = new FieldPosition(SimpleDateFormat.DATE_FIELD); } - protected static final String DATE_FORMAT = "{0,date} {0,time}"; protected static final Level[] LEVELS = {Level.FINE, Level.INFO, Level.WARNING, Level.SEVERE}; } diff --git a/core/src/main/java/com/threerings/getdown/cache/GarbageCollector.java b/core/src/main/java/com/threerings/getdown/cache/GarbageCollector.java index ae18990..7e01e87 100644 --- a/core/src/main/java/com/threerings/getdown/cache/GarbageCollector.java +++ b/core/src/main/java/com/threerings/getdown/cache/GarbageCollector.java @@ -96,6 +96,6 @@ public class GarbageCollector private static File getCachedFile (File file) { return !isLastAccessedFile(file) ? file : new File( - file.getParentFile(), file.getName().substring(0, file.getName().lastIndexOf("."))); + file.getParentFile(), file.getName().substring(0, file.getName().lastIndexOf('.'))); } } diff --git a/core/src/main/java/com/threerings/getdown/cache/ResourceCache.java b/core/src/main/java/com/threerings/getdown/cache/ResourceCache.java index 0210e9a..41f0c5f 100644 --- a/core/src/main/java/com/threerings/getdown/cache/ResourceCache.java +++ b/core/src/main/java/com/threerings/getdown/cache/ResourceCache.java @@ -69,7 +69,7 @@ public class ResourceCache private String getFileSuffix (File fileToCache) { String fileName = fileToCache.getName(); - int index = fileName.lastIndexOf("."); + int index = fileName.lastIndexOf('.'); return index > -1 ? fileName.substring(index) : ""; } diff --git a/core/src/main/java/com/threerings/getdown/data/Application.java b/core/src/main/java/com/threerings/getdown/data/Application.java index 432c2b9..bcb601b 100644 --- a/core/src/main/java/com/threerings/getdown/data/Application.java +++ b/core/src/main/java/com/threerings/getdown/data/Application.java @@ -33,7 +33,7 @@ import static com.threerings.getdown.Log.log; import static java.nio.charset.StandardCharsets.UTF_8; /** - * Parses and provide access to the information contained in the getdown.txt + * Parses and provide access to the information contained in the {@code getdown.txt} * configuration file. */ public class Application @@ -212,10 +212,10 @@ public class Application * Used by {@link #verifyMetadata} to communicate status in circumstances where it needs to * take network actions. */ - public static interface StatusDisplay + public interface StatusDisplay { /** Requests that the specified status message be displayed. */ - public void updateStatus (String message); + void updateStatus (String message); } /** @@ -277,7 +277,7 @@ public class Application public Proxy proxy = Proxy.NO_PROXY; /** - * Creates an application instance which records the location of the getdown.txt + * Creates an application instance which records the location of the {@code getdown.txt} * configuration file from the supplied application directory. * */ @@ -406,8 +406,7 @@ public class Application */ public List getActiveCodeResources () { - ArrayList codes = new ArrayList<>(); - codes.addAll(getCodeResources()); + List codes = new ArrayList<>(getCodeResources()); for (AuxGroup aux : getAuxGroups()) { if (isAuxGroupActive(aux.name)) { codes.addAll(aux.codes); @@ -435,8 +434,7 @@ public class Application */ public List getActiveResources () { - ArrayList rsrcs = new ArrayList<>(); - rsrcs.addAll(getResources()); + List rsrcs = new ArrayList<>(getResources()); for (AuxGroup aux : getAuxGroups()) { if (isAuxGroupActive(aux.name)) { rsrcs.addAll(aux.rsrcs); @@ -609,7 +607,7 @@ public class Application // make sure there's a trailing slash if (!_appbase.endsWith("/")) { - _appbase = _appbase + "/"; + _appbase += "/"; } // extract our version information @@ -913,7 +911,7 @@ public class Application } /** - * Attempts to redownload the getdown.txt file based on information parsed from a + * Attempts to redownload the {@code getdown.txt} file based on information parsed from a * previous call to {@link #init}. */ public void attemptRecovery (StatusDisplay status) @@ -924,7 +922,7 @@ public class Application } /** - * Downloads and replaces the getdown.txt and digest.txt files with + * Downloads and replaces the {@code getdown.txt} and {@code digest.txt} files with * those for the target version of our application. */ public void updateMetadata () @@ -935,7 +933,7 @@ public class Application _vappbase = createVAppBase(_targetVersion); } catch (MalformedURLException mue) { String err = MessageUtil.tcompose("m.invalid_appbase", _appbase); - throw (IOException) new IOException(err).initCause(mue); + throw new IOException(err, mue); } try { @@ -1111,7 +1109,7 @@ public class Application for (String jvmarg : _jvmargs) { if (jvmarg.startsWith("-D")) { jvmarg = processArg(jvmarg.substring(2)); - int eqidx = jvmarg.indexOf("="); + int eqidx = jvmarg.indexOf('='); if (eqidx == -1) { log.warning("Bogus system property: '" + jvmarg + "'?"); } else { @@ -1173,8 +1171,8 @@ public class Application } /** - * Loads the digest.txt file and verifies the contents of both that file and the - * getdown.text file. Then it loads the version.txt and decides + * Loads the {@code digest.txt} file and verifies the contents of both that file and the + * {@code getdown.text} file. Then it loads the {@code version.txt} and decides * whether or not the application needs to be updated or whether we can proceed to verification * and execution. * @@ -1265,7 +1263,7 @@ public class Application InputStreamReader reader = new InputStreamReader(in, UTF_8); BufferedReader bin = new BufferedReader(reader)) { for (String[] pair : Config.parsePairs(bin, Config.createOpts(false))) { - if (pair[0].equals("version")) { + if ("version".equals(pair[0])) { _targetVersion = Math.max(Long.parseLong(pair[1]), _targetVersion); if (fileVersion != -1 && _targetVersion > fileVersion) { // replace the file with the newest version @@ -1471,7 +1469,7 @@ public class Application protected URL createVAppBase (long version) throws MalformedURLException { - String url = version < 0 ? _appbase : _appbase.replace("%VERSION%", "" + version); + String url = version < 0 ? _appbase : _appbase.replace("%VERSION%", String.valueOf(version)); return HostWhitelist.verify(new URL(url)); } @@ -1642,7 +1640,7 @@ public class Application } catch (Exception e) { log.warning("Requested to download invalid control file", "appbase", _vappbase, "path", path, "error", e); - throw (IOException) new IOException("Invalid path '" + path + "'.").initCause(e); + throw new IOException("Invalid path '" + path + "'.", e); } log.info("Attempting to refetch '" + path + "' from '" + targetURL + "'."); @@ -1679,9 +1677,7 @@ public class Application /** Helper function to add all values in {@code values} (if non-null) to {@code target}. */ protected static void addAll (String[] values, List target) { if (values != null) { - for (String value : values) { - target.add(value); - } + Collections.addAll(target, values); } } diff --git a/core/src/main/java/com/threerings/getdown/data/Digest.java b/core/src/main/java/com/threerings/getdown/data/Digest.java index bc8d140..e310a52 100644 --- a/core/src/main/java/com/threerings/getdown/data/Digest.java +++ b/core/src/main/java/com/threerings/getdown/data/Digest.java @@ -21,7 +21,7 @@ import static com.threerings.getdown.Log.log; import static java.nio.charset.StandardCharsets.UTF_8; /** - * Manages the digest.txt file and the computing and processing of digests for an + * Manages the {@code digest.txt} file and the computing and processing of digests for an * application. */ public class Digest @@ -72,8 +72,7 @@ public class Digest digests.put(rsrc, rsrc.computeDigest(fversion, md, null)); completed.add(rsrc); } catch (Throwable t) { - completed.add(new IOException("Error computing digest for: " + rsrc). - initCause(t)); + completed.add(new IOException("Error computing digest for: " + rsrc, t)); } } }); @@ -88,7 +87,7 @@ public class Digest if (done instanceof IOException) { throw (IOException)done; } else if (done instanceof Resource) { - pending.remove((Resource)done); + pending.remove(done); } else { throw new AssertionError("What is this? " + done); } diff --git a/core/src/main/java/com/threerings/getdown/data/EnvConfig.java b/core/src/main/java/com/threerings/getdown/data/EnvConfig.java index 1d66ebb..a14b02c 100644 --- a/core/src/main/java/com/threerings/getdown/data/EnvConfig.java +++ b/core/src/main/java/com/threerings/getdown/data/EnvConfig.java @@ -19,7 +19,7 @@ public final class EnvConfig { /** Used to report problems or feedback by {@link #create}. */ public static final class Note { - public static enum Level { INFO, WARN, ERROR }; + public enum Level { INFO, WARN, ERROR } public static Note info (String msg) { return new Note(Level.INFO, msg); } public static Note warn (String msg) { return new Note(Level.WARN, msg); } public static Note error (String msg) { return new Note(Level.ERROR, msg); } diff --git a/core/src/main/java/com/threerings/getdown/data/Resource.java b/core/src/main/java/com/threerings/getdown/data/Resource.java index c7c380c..d1ccba3 100644 --- a/core/src/main/java/com/threerings/getdown/data/Resource.java +++ b/core/src/main/java/com/threerings/getdown/data/Resource.java @@ -23,7 +23,7 @@ import static com.threerings.getdown.Log.log; public class Resource implements Comparable { /** Defines special attributes for resources. */ - public static enum Attr { + public enum Attr { /** Indicates that the resource should be unpacked. */ UNPACK, /** If present, when unpacking a resource, any directories created by the newly @@ -35,7 +35,7 @@ public class Resource implements Comparable PRELOAD, /** Indicates that the resource is a jar containing native libs. */ NATIVE - }; + } public static final EnumSet NORMAL = EnumSet.noneOf(Attr.class); public static final EnumSet UNPACK = EnumSet.of(Attr.UNPACK); diff --git a/core/src/main/java/com/threerings/getdown/data/SysProps.java b/core/src/main/java/com/threerings/getdown/data/SysProps.java index 0d96ecb..d89bf70 100644 --- a/core/src/main/java/com/threerings/getdown/data/SysProps.java +++ b/core/src/main/java/com/threerings/getdown/data/SysProps.java @@ -16,7 +16,7 @@ import com.threerings.getdown.util.VersionUtil; * accessor so that it's easy to see all of the secret system property arguments that Getdown makes * use of. */ -public class SysProps +public final class SysProps { /** Configures the appdir (in lieu of passing it in argv). Usage: {@code -Dappdir=foo}. */ public static String appDir () { diff --git a/core/src/main/java/com/threerings/getdown/spi/ProxyAuth.java b/core/src/main/java/com/threerings/getdown/spi/ProxyAuth.java index 22446ec..8c6d841 100644 --- a/core/src/main/java/com/threerings/getdown/spi/ProxyAuth.java +++ b/core/src/main/java/com/threerings/getdown/spi/ProxyAuth.java @@ -11,7 +11,7 @@ package com.threerings.getdown.spi; public interface ProxyAuth { /** Credentials for a proxy server. */ - public static class Credentials { + class Credentials { public final String username; public final String password; public Credentials (String username, String password) { @@ -23,10 +23,10 @@ public interface ProxyAuth /** * Loads the credentials for the app installed in {@code appDir}. */ - public Credentials loadCredentials (String appDir); + Credentials loadCredentials (String appDir); /** * Encrypts and saves the credentials for the app installed in {@code appDir}. */ - public void saveCredentials (String appDir, String username, String password); + void saveCredentials (String appDir, String username, String password); } diff --git a/core/src/main/java/com/threerings/getdown/tools/Differ.java b/core/src/main/java/com/threerings/getdown/tools/Differ.java index 496f81c..4f8e50e 100644 --- a/core/src/main/java/com/threerings/getdown/tools/Differ.java +++ b/core/src/main/java/com/threerings/getdown/tools/Differ.java @@ -5,10 +5,17 @@ package com.threerings.getdown.tools; -import java.io.*; +import java.io.BufferedOutputStream; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; import java.security.MessageDigest; import java.util.ArrayList; import java.util.Enumeration; +import java.util.List; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import java.util.zip.ZipOutputStream; @@ -31,8 +38,8 @@ public class Differ /** * Creates a single patch file that contains the differences between * the two specified application directories. The patch file will be - * created in the nvdir directory with name - * patchV.dat where V is the old application version. + * created in the {@code nvdir} directory with name + * {@code patchV.dat} where V is the old application version. */ public void createDiff (File nvdir, File ovdir, boolean verbose) throws IOException @@ -53,13 +60,13 @@ public class Differ Application oapp = new Application(new EnvConfig(ovdir)); oapp.init(false); - ArrayList orsrcs = new ArrayList<>(); + List orsrcs = new ArrayList<>(); orsrcs.addAll(oapp.getCodeResources()); orsrcs.addAll(oapp.getResources()); Application napp = new Application(new EnvConfig(nvdir)); napp.init(false); - ArrayList nrsrcs = new ArrayList<>(); + List nrsrcs = new ArrayList<>(); nrsrcs.addAll(napp.getCodeResources()); nrsrcs.addAll(napp.getResources()); @@ -83,8 +90,8 @@ public class Differ } } - protected void createPatch (File patch, ArrayList orsrcs, - ArrayList nrsrcs, boolean verbose) + protected void createPatch (File patch, List orsrcs, + List nrsrcs, boolean verbose) throws IOException { int version = Digest.VERSION; @@ -200,7 +207,7 @@ public class Differ Differ differ = new Differ(); boolean verbose = false; int aidx = 0; - if (args[0].equals("-verbose")) { + if ("-verbose".equals(args[0])) { verbose = true; aidx++; } diff --git a/core/src/main/java/com/threerings/getdown/tools/JarDiff.java b/core/src/main/java/com/threerings/getdown/tools/JarDiff.java index 107b74e..f0db8ac 100644 --- a/core/src/main/java/com/threerings/getdown/tools/JarDiff.java +++ b/core/src/main/java/com/threerings/getdown/tools/JarDiff.java @@ -67,15 +67,15 @@ import static java.nio.charset.StandardCharsets.UTF_8; public class JarDiff implements JarDiffCodes { private static final int DEFAULT_READ_SIZE = 2048; - private static byte[] newBytes = new byte[DEFAULT_READ_SIZE]; - private static byte[] oldBytes = new byte[DEFAULT_READ_SIZE]; + private static final byte[] newBytes = new byte[DEFAULT_READ_SIZE]; + private static final byte[] oldBytes = new byte[DEFAULT_READ_SIZE]; // The JARDiff.java is the stand-alone jardiff.jar tool. Thus, we do not depend on Globals.java // and other stuff here. Instead, we use an explicit _debug flag. private static boolean _debug; /** - * Creates a patch from the two passed in files, writing the result to os. + * Creates a patch from the two passed in files, writing the result to {@code os}. */ public static void createPatch (String oldPath, String newPath, OutputStream os, boolean minimal) throws IOException @@ -83,10 +83,10 @@ public class JarDiff implements JarDiffCodes try (ZipFile2 oldArchive = new ZipFile2(oldPath); ZipFile2 newArchive = new ZipFile2(newPath)) { - HashMap moved = new HashMap<>(); - HashSet implicit = new HashSet<>(); - HashSet moveSrc = new HashSet<>(); - HashSet newEntries = new HashSet<>(); + Map moved = new HashMap<>(); + Set implicit = new HashSet<>(); + Set moveSrc = new HashSet<>(); + Set newEntries = new HashSet<>(); // FIRST PASS // Go through the entries in new archive and determine which files are candidates for @@ -157,7 +157,7 @@ public class JarDiff implements JarDiffCodes // SECOND PASS: = - - // - - ArrayList deleted = new ArrayList<>(); + List deleted = new ArrayList<>(); for (ZipEntry oldEntry : oldArchive) { String oldName = oldEntry.getName(); if (!implicit.contains(oldName) && !moveSrc.contains(oldName) @@ -203,9 +203,9 @@ public class JarDiff implements JarDiffCodes } /** - * Writes the index file out to jos. - * oldEntries gives the names of the files that were removed, - * movedMap maps from the new name to the old name. + * Writes the index file out to {@code jos}. + * {@code oldEntries} gives the names of the files that were removed, + * {@code movedMap} maps from the new name to the old name. */ private static void createIndex (ZipOutputStream jos, List oldEntries, Map movedMap) @@ -286,7 +286,7 @@ public class JarDiff implements JarDiffCodes */ private static class ZipFile2 implements Iterable, Closeable { - private ZipFile _archive; + private final ZipFile _archive; private List _entries; private HashMap _nameToEntryMap; private HashMap> _crcToEntryMap; @@ -384,7 +384,7 @@ public class JarDiff implements JarDiffCodes public String hasSameContent (ZipFile2 file, ZipEntry entry) throws IOException { String thisName = null; - Long crcL = Long.valueOf(entry.getCrc()); + Long crcL = entry.getCrc(); // check if this archive contains files with the passed in entry's crc if (_crcToEntryMap.containsKey(crcL)) { // get the Linked List with files with the crc @@ -419,7 +419,7 @@ public class JarDiff implements JarDiffCodes while (entries.hasMoreElements()) { ZipEntry entry = entries.nextElement(); long crc = entry.getCrc(); - Long crcL = Long.valueOf(crc); + Long crcL = crc; if (_debug) { System.out.println("\t" + entry.getName() + " CRC " + crc); } diff --git a/core/src/main/java/com/threerings/getdown/tools/JarDiffPatcher.java b/core/src/main/java/com/threerings/getdown/tools/JarDiffPatcher.java index ac837a9..e55034b 100644 --- a/core/src/main/java/com/threerings/getdown/tools/JarDiffPatcher.java +++ b/core/src/main/java/com/threerings/getdown/tools/JarDiffPatcher.java @@ -215,7 +215,7 @@ public class JarDiffPatcher implements JarDiffCodes { int index = 0; int length = path.length(); - ArrayList sub = new ArrayList<>(); + List sub = new ArrayList<>(); while (index < length) { while (index < length && Character.isWhitespace @@ -223,9 +223,8 @@ public class JarDiffPatcher implements JarDiffCodes index++; } if (index < length) { - int start = index; - int last = start; - String subString = null; + int last = index; + StringBuilder subString = null; while (index < length) { char aChar = path.charAt(index); @@ -233,9 +232,9 @@ public class JarDiffPatcher implements JarDiffCodes path.charAt(index + 1) == ' ') { if (subString == null) { - subString = path.substring(last, index); + subString = new StringBuilder(path.substring(last, index)); } else { - subString += path.substring(last, index); + subString.append(path, last, index); } last = ++index; } else if (Character.isWhitespace(aChar)) { @@ -245,12 +244,14 @@ public class JarDiffPatcher implements JarDiffCodes } if (last != index) { if (subString == null) { - subString = path.substring(last, index); + subString = new StringBuilder(path.substring(last, index)); } else { - subString += path.substring(last, index); + subString.append(path, last, index); } } - sub.add(subString); + if (subString != null) { + sub.add(subString.toString()); + } } } return sub; diff --git a/core/src/main/java/com/threerings/getdown/util/Base64.java b/core/src/main/java/com/threerings/getdown/util/Base64.java index 2a5db79..233f1e7 100644 --- a/core/src/main/java/com/threerings/getdown/util/Base64.java +++ b/core/src/main/java/com/threerings/getdown/util/Base64.java @@ -24,7 +24,7 @@ import static java.nio.charset.StandardCharsets.US_ASCII; * href="http://www.ietf.org/rfc/rfc2045.txt">2045 and 3548. */ -public class Base64 { +public final class Base64 { /** * Default values for encoder/decoder flags. */ @@ -68,7 +68,7 @@ public class Base64 { // shared code // -------------------------------------------------------- - /* package */ static abstract class Coder { + /* package */ abstract static class Coder { public byte[] output; public int op; @@ -178,7 +178,7 @@ public class Base64 { * Lookup table for turning bytes into their position in the * Base64 alphabet. */ - private static final int DECODE[] = { + private static final int[] DECODE = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, @@ -201,7 +201,7 @@ public class Base64 { * Decode lookup table for the "web safe" variant (RFC 3548 * sec. 4) where - and _ replace + and /. */ - private static final int DECODE_WEBSAFE[] = { + private static final int[] DECODE_WEBSAFE = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, @@ -236,7 +236,7 @@ public class Base64 { private int state; // state number (0 to 6) private int value; - final private int[] alphabet; + private final int[] alphabet; public Decoder(int flags, byte[] output) { this.output = output; @@ -541,7 +541,7 @@ public class Base64 { * Lookup table for turning Base64 alphabet positions (6 bits) * into output bytes. */ - private static final byte ENCODE[] = { + private static final byte[] ENCODE = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', @@ -552,21 +552,21 @@ public class Base64 { * Lookup table for turning Base64 alphabet positions (6 bits) * into output bytes. */ - private static final byte ENCODE_WEBSAFE[] = { + private static final byte[] ENCODE_WEBSAFE = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '-', '_', }; - final private byte[] tail; + private final byte[] tail; /* package */ int tailLen; private int count; - final public boolean do_padding; - final public boolean do_newline; - final public boolean do_cr; - final private byte[] alphabet; + public final boolean do_padding; + public final boolean do_newline; + public final boolean do_cr; + private final byte[] alphabet; public Encoder(int flags, byte[] output) { this.output = output; @@ -618,7 +618,7 @@ public class Base64 { ((input[p++] & 0xff) << 8) | (input[p++] & 0xff); tailLen = 0; - }; + } break; case 2: diff --git a/core/src/main/java/com/threerings/getdown/util/Color.java b/core/src/main/java/com/threerings/getdown/util/Color.java index 047cead..416f77e 100644 --- a/core/src/main/java/com/threerings/getdown/util/Color.java +++ b/core/src/main/java/com/threerings/getdown/util/Color.java @@ -8,11 +8,11 @@ package com.threerings.getdown.util; /** * Utilities for handling ARGB colors. */ -public class Color +public final class Color { - public final static int CLEAR = 0x00000000; - public final static int WHITE = 0xFFFFFFFF; - public final static int BLACK = 0xFF000000; + public static final int CLEAR = 0x00000000; + public static final int WHITE = 0xFFFFFFFF; + public static final int BLACK = 0xFF000000; public static float brightness (int argb) { // TODO: we're ignoring alpha here... diff --git a/core/src/main/java/com/threerings/getdown/util/Config.java b/core/src/main/java/com/threerings/getdown/util/Config.java index 4fc5e16..5c0b65e 100644 --- a/core/src/main/java/com/threerings/getdown/util/Config.java +++ b/core/src/main/java/com/threerings/getdown/util/Config.java @@ -62,7 +62,7 @@ public class Config * * @param opts options that influence the parsing. See {@link #createOpts}. * - * @return a list of String[] instances containing the key/value pairs in the + * @return a list of {@code String[]} instances containing the key/value pairs in the * order they were parsed from the file. */ public static List parsePairs (File source, ParseOpts opts) @@ -83,7 +83,7 @@ public class Config List pairs = new ArrayList<>(); for (String line : FileUtil.readLines(source)) { // nix comments - int cidx = line.indexOf("#"); + int cidx = line.indexOf('#'); if (opts.strictComments ? cidx == 0 : cidx != -1) { line = line.substring(0, cidx); } @@ -97,7 +97,7 @@ public class Config // parse our key/value pair String[] pair = new String[2]; // if we're biasing toward key, put all the extra = in the key rather than the value - int eidx = opts.biasToKey ? line.lastIndexOf("=") : line.indexOf("="); + int eidx = opts.biasToKey ? line.lastIndexOf('=') : line.indexOf('='); if (eidx != -1) { pair[0] = line.substring(0, eidx).trim(); pair[1] = line.substring(eidx+1).trim(); @@ -108,7 +108,7 @@ public class Config // if the pair has an os qualifier, we need to process it if (pair[1].startsWith("[")) { - int qidx = pair[1].indexOf("]"); + int qidx = pair[1].indexOf(']'); if (qidx == -1) { log.warning("Bogus platform specifier", "key", pair[0], "value", pair[1]); continue; // omit the pair entirely @@ -351,7 +351,7 @@ public class Config protected static boolean checkQualifiers (String quals, String osname, String osarch) { if (quals.startsWith("!")) { - if (quals.indexOf(",") != -1) { // sanity check + if (quals.contains(",")) { // sanity check log.warning("Multiple qualifiers cannot be used when one of the qualifiers " + "is negative", "quals", quals); return false; @@ -371,7 +371,7 @@ public class Config { String[] bits = qual.trim().toLowerCase(Locale.ROOT).split("-"); String os = bits[0], arch = (bits.length > 1) ? bits[1] : ""; - return (osname.indexOf(os) != -1) && (osarch.indexOf(arch) != -1); + return (osname.contains(os)) && (osarch.contains(arch)); } private final Map _data; diff --git a/core/src/main/java/com/threerings/getdown/util/ConnectionUtil.java b/core/src/main/java/com/threerings/getdown/util/ConnectionUtil.java index 21b0569..a8e5361 100644 --- a/core/src/main/java/com/threerings/getdown/util/ConnectionUtil.java +++ b/core/src/main/java/com/threerings/getdown/util/ConnectionUtil.java @@ -16,7 +16,7 @@ import com.threerings.getdown.data.SysProps; import static java.nio.charset.StandardCharsets.UTF_8; -public class ConnectionUtil +public final class ConnectionUtil { /** * Opens a connection to a URL, setting the authentication header if user info is present. diff --git a/core/src/main/java/com/threerings/getdown/util/LaunchUtil.java b/core/src/main/java/com/threerings/getdown/util/LaunchUtil.java index 08a8b26..cc51794 100644 --- a/core/src/main/java/com/threerings/getdown/util/LaunchUtil.java +++ b/core/src/main/java/com/threerings/getdown/util/LaunchUtil.java @@ -17,19 +17,19 @@ import static com.threerings.getdown.Log.log; * Useful routines for launching Java applications from within other Java * applications. */ -public class LaunchUtil +public final class LaunchUtil { /** The default directory into which a local VM installation should be unpacked. */ public static final String LOCAL_JAVA_DIR = "java_vm"; /** - * Writes a version.txt file into the specified application directory and + * Writes a {@code version.txt} file into the specified application directory and * attempts to relaunch Getdown in that directory which will cause it to upgrade to the newly * specified version and relaunch the application. * * @param appdir the directory in which the application is installed. * @param getdownJarName the name of the getdown jar file in the application directory. This is - * probably getdown-pro.jar or getdown-retro-pro.jar if you are using + * probably {@code getdown-pro.jar} or {@code getdown-retro-pro.jar} if you are using * the results of the standard build. * @param newVersion the new version to which Getdown will update when it is executed. * @param javaLocalDir the name of the directory (inside {@code appdir}) that contains a @@ -41,7 +41,7 @@ public class LaunchUtil * after making this call as it will be upgraded and restarted. If false is returned, the * application should tell the user that they must restart the application manually. * - * @exception IOException thrown if we were unable to create the version.txt file + * @exception IOException thrown if we were unable to create the {@code version.txt} file * in the supplied application directory. If the version.txt file cannot be created, restarting * Getdown will not cause the application to be upgraded, so the application will have to * resort to telling the user that it is in a bad way. @@ -177,23 +177,23 @@ public class LaunchUtil public static boolean mustMonitorChildren () { String osname = System.getProperty("os.name", "").toLowerCase(Locale.ROOT); - return (osname.indexOf("windows 98") != -1 || osname.indexOf("windows me") != -1); + return (osname.contains("windows 98") || osname.contains("windows me")); } /** * Returns true if we're running in a JVM that identifies its operating system as Windows. */ - public static final boolean isWindows () { return _isWindows; } + public static boolean isWindows () { return _isWindows; } /** * Returns true if we're running in a JVM that identifies its operating system as MacOS. */ - public static final boolean isMacOS () { return _isMacOS; } + public static boolean isMacOS () { return _isMacOS; } /** * Returns true if we're running in a JVM that identifies its operating system as Linux. */ - public static final boolean isLinux () { return _isLinux; } + public static boolean isLinux () { return _isLinux; } /** * Checks whether a Java Virtual Machine can be located in the supplied path. @@ -232,10 +232,9 @@ public class LaunchUtil try { String osname = System.getProperty("os.name"); osname = (osname == null) ? "" : osname; - _isWindows = (osname.indexOf("Windows") != -1); - _isMacOS = (osname.indexOf("Mac OS") != -1 || - osname.indexOf("MacOS") != -1); - _isLinux = (osname.indexOf("Linux") != -1); + _isWindows = (osname.contains("Windows")); + _isMacOS = (osname.contains("Mac OS") || osname.contains("MacOS")); + _isLinux = (osname.contains("Linux")); } catch (Exception e) { // can't grab system properties; we'll just pretend we're not on any of these OSes } diff --git a/core/src/main/java/com/threerings/getdown/util/MessageUtil.java b/core/src/main/java/com/threerings/getdown/util/MessageUtil.java index 28dbdcf..f2ee9a2 100644 --- a/core/src/main/java/com/threerings/getdown/util/MessageUtil.java +++ b/core/src/main/java/com/threerings/getdown/util/MessageUtil.java @@ -5,7 +5,7 @@ package com.threerings.getdown.util; -public class MessageUtil { +public final class MessageUtil { /** * Returns whether or not the provided string is tainted. See {@link #taint}. Null strings @@ -101,11 +101,11 @@ public class MessageUtil { } /** - * Used to escape single quotes so that they are not interpreted by MessageFormat. + * Used to escape single quotes so that they are not interpreted by {@code MessageFormat}. * As we assume all single quotes are to be escaped, we cannot use the characters * { and } in our translation strings, but this is a small price to * pay to have to differentiate between messages that will and won't eventually be parsed by a - * MessageFormat instance. + * {@code MessageFormat} instance. */ public static String escape (String message) { diff --git a/core/src/main/java/com/threerings/getdown/util/ProgressObserver.java b/core/src/main/java/com/threerings/getdown/util/ProgressObserver.java index ad4c560..ac3e0a3 100644 --- a/core/src/main/java/com/threerings/getdown/util/ProgressObserver.java +++ b/core/src/main/java/com/threerings/getdown/util/ProgressObserver.java @@ -14,5 +14,5 @@ public interface ProgressObserver * Informs the observer that we have completed the specified * percentage of the process. */ - public void progress (int percent); + void progress (int percent); } diff --git a/core/src/main/java/com/threerings/getdown/util/StreamUtil.java b/core/src/main/java/com/threerings/getdown/util/StreamUtil.java index 373cfff..5cb1a40 100644 --- a/core/src/main/java/com/threerings/getdown/util/StreamUtil.java +++ b/core/src/main/java/com/threerings/getdown/util/StreamUtil.java @@ -11,11 +11,10 @@ import java.io.InputStream; import java.io.OutputStream; import java.io.Reader; import java.io.Writer; -import java.nio.charset.Charset; import static com.threerings.getdown.Log.log; -public class StreamUtil { +public final class StreamUtil { /** * Convenient close for a stream. Use in a finally clause and love life. */ diff --git a/core/src/main/java/com/threerings/getdown/util/StringUtil.java b/core/src/main/java/com/threerings/getdown/util/StringUtil.java index 03d3c9c..86277c8 100644 --- a/core/src/main/java/com/threerings/getdown/util/StringUtil.java +++ b/core/src/main/java/com/threerings/getdown/util/StringUtil.java @@ -7,14 +7,14 @@ package com.threerings.getdown.util; import java.util.StringTokenizer; -public class StringUtil { +public final class StringUtil { /** * @return true if the specified string could be a valid URL (contains no illegal characters) */ public static boolean couldBeValidUrl (String url) { - return url.matches("[A-Za-z0-9\\-\\._~:/\\?#\\[\\]@!$&'\\(\\)\\*\\+,;=%]+"); + return url.matches("[A-Za-z0-9\\-._~:/?#\\[\\]@!$&'()*+,;=%]+"); } /** @@ -84,7 +84,7 @@ public class StringUtil { source = source.replace(",,", "%COMMA%"); // count up the number of tokens - while ((tpos = source.indexOf(",", tpos+1)) != -1) { + while ((tpos = source.indexOf(',', tpos+1)) != -1) { tcount++; } @@ -92,7 +92,7 @@ public class StringUtil { tpos = -1; tcount = 0; // do the split - while ((tpos = source.indexOf(",", tpos+1)) != -1) { + while ((tpos = source.indexOf(',', tpos+1)) != -1) { tokens[tcount] = source.substring(tstart, tpos); tokens[tcount] = tokens[tcount].trim().replace("%COMMA%", ","); if (intern) { @@ -119,7 +119,7 @@ public class StringUtil { /** * Generates a string from the supplied bytes that is the HEX encoded representation of those - * bytes. Returns the empty string for a null or empty byte array. + * bytes. Returns the empty string for a {@code null} or empty byte array. * * @param bytes the bytes for which we want a string representation. * @param count the number of bytes to stop at (which will be coerced into being {@code <=} the @@ -185,7 +185,7 @@ public class StringUtil { } /** - * Helper function for the various join methods. + * Helper function for the various {@code join} methods. */ protected static String join (Object[] values, String separator, boolean escape) { @@ -201,6 +201,6 @@ public class StringUtil { return buf.toString(); } - /** Used by {@link #hexlate} and {@link #unhexlate}. */ + /** Used by {@link #hexlate}. */ protected static final String XLATE = "0123456789abcdef"; } diff --git a/core/src/main/java/com/threerings/getdown/util/VersionUtil.java b/core/src/main/java/com/threerings/getdown/util/VersionUtil.java index 49e4e6e..b2f2894 100644 --- a/core/src/main/java/com/threerings/getdown/util/VersionUtil.java +++ b/core/src/main/java/com/threerings/getdown/util/VersionUtil.java @@ -22,7 +22,7 @@ import static java.nio.charset.StandardCharsets.UTF_8; /** * Version related utilities. */ -public class VersionUtil +public final class VersionUtil { /** * Reads a version number from a file. diff --git a/launcher/src/main/java/com/threerings/getdown/launcher/AbortPanel.java b/launcher/src/main/java/com/threerings/getdown/launcher/AbortPanel.java index dc1e54e..4bd9f90 100644 --- a/launcher/src/main/java/com/threerings/getdown/launcher/AbortPanel.java +++ b/launcher/src/main/java/com/threerings/getdown/launcher/AbortPanel.java @@ -72,7 +72,7 @@ public final class AbortPanel extends JFrame public void actionPerformed (ActionEvent e) { String cmd = e.getActionCommand(); - if (cmd.equals("ok")) { + if ("ok".equals(cmd)) { System.exit(0); } else { setVisible(false); diff --git a/launcher/src/main/java/com/threerings/getdown/launcher/Getdown.java b/launcher/src/main/java/com/threerings/getdown/launcher/Getdown.java index 57021f4..0aa1522 100644 --- a/launcher/src/main/java/com/threerings/getdown/launcher/Getdown.java +++ b/launcher/src/main/java/com/threerings/getdown/launcher/Getdown.java @@ -22,7 +22,15 @@ import java.io.InputStreamReader; import java.io.PrintStream; import java.net.HttpURLConnection; import java.net.URL; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.HashSet; +import java.util.List; +import java.util.Locale; +import java.util.ResourceBundle; +import java.util.Set; +import java.util.concurrent.TimeUnit; import javax.imageio.ImageIO; import javax.swing.AbstractAction; @@ -31,13 +39,24 @@ import javax.swing.JFrame; import javax.swing.JLayeredPane; import com.samskivert.swing.util.SwingUtil; -import com.threerings.getdown.data.*; +import com.threerings.getdown.data.Application; import com.threerings.getdown.data.Application.UpdateInterface.Step; +import com.threerings.getdown.data.Build; +import com.threerings.getdown.data.EnvConfig; +import com.threerings.getdown.data.Resource; +import com.threerings.getdown.data.SysProps; import com.threerings.getdown.net.Downloader; import com.threerings.getdown.net.HTTPDownloader; import com.threerings.getdown.tools.Patcher; -import com.threerings.getdown.util.*; - +import com.threerings.getdown.util.Config; +import com.threerings.getdown.util.ConnectionUtil; +import com.threerings.getdown.util.FileUtil; +import com.threerings.getdown.util.LaunchUtil; +import com.threerings.getdown.util.MessageUtil; +import com.threerings.getdown.util.ProgressAggregator; +import com.threerings.getdown.util.ProgressObserver; +import com.threerings.getdown.util.StringUtil; +import com.threerings.getdown.util.VersionUtil; import static com.threerings.getdown.Log.log; /** @@ -75,7 +94,7 @@ public abstract class Getdown extends Thread // welcome to hell, where java can't cope with a classpath that contains jars that live // in a directory that contains a !, at least the same bug happens on all platforms String dir = envc.appDir.toString(); - if (dir.equals(".")) { + if (".".equals(dir)) { dir = System.getProperty("user.dir"); } String errmsg = "The directory in which this application is installed:\n" + dir + @@ -130,7 +149,7 @@ public abstract class Getdown extends Thread File instdir = _app.getLocalPath(""); if (!instdir.canWrite()) { String path = instdir.getPath(); - if (path.equals(".")) { + if (".".equals(path)) { path = System.getProperty("user.dir"); } fail(MessageUtil.tcompose("m.readonly_error", path)); @@ -161,20 +180,7 @@ public abstract class Getdown extends Thread } catch (Exception e) { log.warning("run() failed.", e); - String msg = e.getMessage(); - if (msg == null) { - msg = MessageUtil.compose("m.unknown_error", _ifc.installError); - } else if (!msg.startsWith("m.")) { - // try to do something sensible based on the type of error - if (e instanceof FileNotFoundException) { - msg = MessageUtil.compose( - "m.missing_resource", MessageUtil.taint(msg), _ifc.installError); - } else { - msg = MessageUtil.compose( - "m.init_error", MessageUtil.taint(msg), _ifc.installError); - } - } - fail(msg); + fail(e); } } @@ -285,7 +291,7 @@ public abstract class Getdown extends Thread // Store the config modtime before waiting the delay amount of time long lastConfigModtime = config.lastModified(); log.info("Waiting " + _delay + " minutes before beginning actual work."); - Thread.sleep(_delay * 60 * 1000); + TimeUnit.MINUTES.sleep(_delay); if (lastConfigModtime < config.lastModified()) { log.warning("getdown.txt was modified while getdown was waiting."); throw new MultipleGetdownRunning(); @@ -334,11 +340,7 @@ public abstract class Getdown extends Thread if (toDownload.size() > 0) { // we have resources to download, also note them as to-be-installed - for (Resource r : toDownload) { - if (!_toInstallResources.contains(r)) { - _toInstallResources.add(r); - } - } + _toInstallResources.addAll(toDownload); try { // if any of our resources have already been marked valid this is not a @@ -423,22 +425,7 @@ public abstract class Getdown extends Thread } catch (Exception e) { log.warning("getdown() failed.", e); - String msg = e.getMessage(); - if (msg == null) { - msg = MessageUtil.compose("m.unknown_error", _ifc.installError); - } else if (!msg.startsWith("m.")) { - // try to do something sensible based on the type of error - if (e instanceof FileNotFoundException) { - msg = MessageUtil.compose( - "m.missing_resource", MessageUtil.taint(msg), _ifc.installError); - } else { - msg = MessageUtil.compose( - "m.init_error", MessageUtil.taint(msg), _ifc.installError); - } - } - // Since we're dead, clear off the 'time remaining' label along with displaying the - // error message - fail(msg); + fail(e); _app.releaseLock(); } } @@ -525,7 +512,7 @@ public abstract class Getdown extends Thread // lastly regenerate the .jsa dump file that helps Java to start up faster String vmpath = LaunchUtil.getJVMBinaryPath(javaLocalDir, false); - String[] command = new String[] { vmpath, "-Xshare:dump" }; + String[] command = { vmpath, "-Xshare:dump" }; try { log.info("Regenerating classes.jsa for " + vmpath + "..."); Runtime.getRuntime().exec(command); @@ -732,7 +719,7 @@ public abstract class Getdown extends Thread long minshow = _ifc.minShowSeconds * 1000L; if (_container != null && uptime < minshow) { try { - Thread.sleep(minshow - uptime); + TimeUnit.MILLISECONDS.sleep(minshow - uptime); } catch (Exception e) { } } @@ -848,8 +835,22 @@ public abstract class Getdown extends Thread } } + private void fail (Exception e) { + String msg = e.getMessage(); + if (msg == null) { + msg = MessageUtil.compose("m.unknown_error", _ifc.installError); + } else if (!msg.startsWith("m.")) { + // try to do something sensible based on the type of error + msg = e instanceof FileNotFoundException + ? MessageUtil.compose("m.missing_resource", MessageUtil.taint(msg), _ifc.installError) + : MessageUtil.compose("m.init_error", MessageUtil.taint(msg), _ifc.installError); + } + // Since we're dead, clear off the 'time remaining' label along with displaying the error message + fail(msg); + } + /** - * Update the status to indicate getdown has failed for the reason in message. + * Update the status to indicate getdown has failed for the reason in {@code message}. */ protected void fail (String message) { diff --git a/launcher/src/main/java/com/threerings/getdown/launcher/GetdownApp.java b/launcher/src/main/java/com/threerings/getdown/launcher/GetdownApp.java index fde79f3..7de56e4 100644 --- a/launcher/src/main/java/com/threerings/getdown/launcher/GetdownApp.java +++ b/launcher/src/main/java/com/threerings/getdown/launcher/GetdownApp.java @@ -146,7 +146,7 @@ public class GetdownApp } if (_ifc.iconImages != null) { - ArrayList icons = new ArrayList<>(); + List icons = new ArrayList<>(); for (String path : _ifc.iconImages) { Image img = loadImage(path); if (img == null) { @@ -190,7 +190,7 @@ public class GetdownApp String[] cmdarray; if (LaunchUtil.isWindows()) { String osName = System.getProperty("os.name", ""); - if (osName.indexOf("9") != -1 || osName.indexOf("Me") != -1) { + if (osName.contains("9") || osName.contains("Me")) { cmdarray = new String[] { "command.com", "/c", "start", "\"" + url + "\"" }; } else { diff --git a/launcher/src/main/java/com/threerings/getdown/launcher/ProxyPanel.java b/launcher/src/main/java/com/threerings/getdown/launcher/ProxyPanel.java index 2178273..40934f7 100644 --- a/launcher/src/main/java/com/threerings/getdown/launcher/ProxyPanel.java +++ b/launcher/src/main/java/com/threerings/getdown/launcher/ProxyPanel.java @@ -131,7 +131,7 @@ public final class ProxyPanel extends JPanel implements ActionListener public void actionPerformed (ActionEvent e) { String cmd = e.getActionCommand(); - if (cmd.equals("ok")) { + if ("ok".equals(cmd)) { String user = null, pass = null; if (_useAuth.isSelected()) { user = _username.getText(); diff --git a/launcher/src/main/java/com/threerings/getdown/launcher/ProxyUtil.java b/launcher/src/main/java/com/threerings/getdown/launcher/ProxyUtil.java index a36b5fa..d72b8b9 100644 --- a/launcher/src/main/java/com/threerings/getdown/launcher/ProxyUtil.java +++ b/launcher/src/main/java/com/threerings/getdown/launcher/ProxyUtil.java @@ -19,20 +19,18 @@ import java.net.URLConnection; import java.util.Iterator; import java.util.ServiceLoader; -import ca.beq.util.win32.registry.RegistryKey; -import ca.beq.util.win32.registry.RegistryValue; -import ca.beq.util.win32.registry.RootKey; - import com.threerings.getdown.data.Application; import com.threerings.getdown.spi.ProxyAuth; import com.threerings.getdown.util.Config; import com.threerings.getdown.util.ConnectionUtil; import com.threerings.getdown.util.LaunchUtil; import com.threerings.getdown.util.StringUtil; - +import ca.beq.util.win32.registry.RegistryKey; +import ca.beq.util.win32.registry.RegistryValue; +import ca.beq.util.win32.registry.RootKey; import static com.threerings.getdown.Log.log; -public class ProxyUtil { +public final class ProxyUtil { public static boolean autoDetectProxy (Application app) { @@ -57,12 +55,12 @@ public class ProxyUtil { RegistryKey r = new RegistryKey(RootKey.HKEY_CURRENT_USER, PROXY_REGISTRY); for (Iterator iter = r.values(); iter.hasNext(); ) { RegistryValue value = (RegistryValue)iter.next(); - if (value.getName().equals("ProxyEnable")) { - enabled = value.getStringValue().equals("1"); + if ("ProxyEnable".equals(value.getName())) { + enabled = "1".equals(value.getStringValue()); } - if (value.getName().equals("ProxyServer")) { + if ("ProxyServer".equals(value.getName())) { String strval = value.getStringValue(); - int cidx = strval.indexOf(":"); + int cidx = strval.indexOf(':'); if (cidx != -1) { rport = strval.substring(cidx+1); strval = strval.substring(0, cidx); diff --git a/launcher/src/main/java/com/threerings/getdown/launcher/RotatingBackgrounds.java b/launcher/src/main/java/com/threerings/getdown/launcher/RotatingBackgrounds.java index d3aa2bd..d64e5f0 100644 --- a/launcher/src/main/java/com/threerings/getdown/launcher/RotatingBackgrounds.java +++ b/launcher/src/main/java/com/threerings/getdown/launcher/RotatingBackgrounds.java @@ -14,7 +14,7 @@ public final class RotatingBackgrounds { public interface ImageLoader { /** Loads and returns the image with the supplied path. */ - public Image loadImage (String path); + Image loadImage (String path); } /** @@ -35,7 +35,7 @@ public final class RotatingBackgrounds } /** - * Create a sequence of images to be rotated through from backgrounds. + * Create a sequence of images to be rotated through from {@code backgrounds}. * * Each String in backgrounds should be the path to the image, a semicolon, and the minimum * amount of time to display the image in seconds. Each image will be active for an equal diff --git a/launcher/src/main/java/com/threerings/getdown/launcher/StatusPanel.java b/launcher/src/main/java/com/threerings/getdown/launcher/StatusPanel.java index 99f44ca..197dc91 100644 --- a/launcher/src/main/java/com/threerings/getdown/launcher/StatusPanel.java +++ b/launcher/src/main/java/com/threerings/getdown/launcher/StatusPanel.java @@ -26,12 +26,9 @@ import com.samskivert.swing.Label; import com.samskivert.swing.LabelStyleConstants; import com.samskivert.swing.util.SwingUtil; import com.samskivert.util.Throttle; - import com.threerings.getdown.data.Application.UpdateInterface; import com.threerings.getdown.util.MessageUtil; import com.threerings.getdown.util.Rectangle; -import com.threerings.getdown.util.StringUtil; - import static com.threerings.getdown.Log.log; /** @@ -344,7 +341,7 @@ public final class StatusPanel extends JComponent { String msg = get(key); if (msg != null) return MessageFormat.format(MessageUtil.escape(msg), (Object[])args); - return key + String.valueOf(Arrays.asList(args)); + return key + Arrays.asList(args); } /** Used by {@link #setStatus}, and {@link #setProgress}. */