diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Launcher.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Launcher.java index 36f8848c4..e2fc7b704 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Launcher.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Launcher.java @@ -53,19 +53,24 @@ public final class Launcher { ArrayList cmdList = new ArrayList<>(); for (String s : args) - if (s.startsWith("-cp=")) classPath = classPath.concat(s.substring("-cp=".length())); - else if (s.startsWith("-mainClass=")) mainClass = s.substring("-mainClass=".length()); - else if (s.equals("-debug")) showInfo = true; - else cmdList.add(s); + if (s.startsWith("-cp=")) + classPath = classPath.concat(s.substring("-cp=".length())); + else if (s.startsWith("-mainClass=")) + mainClass = s.substring("-mainClass=".length()); + else if (s.equals("-debug")) + showInfo = true; + else + cmdList.add(s); String[] tokenized = StrUtils.tokenize(classPath, File.pathSeparator); int len = tokenized.length; - + if (showInfo) { LogWindow.instance.setTerminateGame(() -> Utils.shutdownForcely(1)); try { File logFile = new File("hmclmc.log"); - if (!logFile.exists()) logFile.createNewFile(); + if (!logFile.exists()) + logFile.createNewFile(); FileOutputStream tc = new FileOutputStream(logFile); DoubleOutputStream out = new DoubleOutputStream(tc, System.out); System.setOut(new LauncherPrintStream(out)); @@ -112,7 +117,7 @@ public final class Launcher { int flag = 0; try { - minecraftMain.invoke(null, new Object[]{(String[]) cmdList.toArray(new String[cmdList.size()])}); + minecraftMain.invoke(null, new Object[] {(String[]) cmdList.toArray(new String[cmdList.size()])}); } catch (Throwable throwable) { String trace = StrUtils.getStackTrace(throwable); final String advice = MinecraftCrashAdvicer.getAdvice(trace); @@ -123,7 +128,7 @@ public final class Launcher { System.err.println(advice); System.err.println(trace); LogWindow.instance.setVisible(true); - + flag = 1; } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Main.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Main.java index 9ab032da3..352a765ad 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Main.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/Main.java @@ -91,7 +91,7 @@ public final class Main implements Runnable { try { sslContext = SSLContext.getInstance("TLS"); - X509TrustManager[] xtmArray = new X509TrustManager[]{XTM}; + X509TrustManager[] xtmArray = new X509TrustManager[] {XTM}; sslContext.init(null, xtmArray, new java.security.SecureRandom()); } catch (GeneralSecurityException gse) { } @@ -143,9 +143,9 @@ public final class Main implements Runnable { if (mainClass != null) { ArrayList al = new ArrayList<>(Arrays.asList(args)); al.add("notfound"); - new URLClassLoader(new URL[]{jar.toURI().toURL()}, - URLClassLoader.getSystemClassLoader().getParent()).loadClass(mainClass) - .getMethod("main", String[].class).invoke(null, new Object[]{al.toArray(new String[0])}); + new URLClassLoader(new URL[] {jar.toURI().toURL()}, + URLClassLoader.getSystemClassLoader().getParent()).loadClass(mainClass) + .getMethod("main", String[].class).invoke(null, new Object[] {al.toArray(new String[0])}); return; } } @@ -155,7 +155,7 @@ public final class Main implements Runnable { } catch (Throwable t) { t.printStackTrace(); } - + System.setProperty("sun.java2d.noddraw", "true"); Thread.setDefaultUncaughtExceptionHandler(new CrashReporter(true)); @@ -174,7 +174,7 @@ public final class Main implements Runnable { LogWindow.instance.clean(); LogWindow.instance.setTerminateGame(GameLauncher.PROCESS_MANAGER::stopAllProcesses); - + try { UIManager.setLookAndFeel(new HelloMinecraftLookAndFeel()); } catch (ParseException | UnsupportedLookAndFeelException ex) { @@ -216,22 +216,23 @@ public final class Main implements Runnable { if (map != null && map.containsKey("pack")) try { if (TaskWindow.getInstance().addTask(new Upgrader(map.get("pack"), Settings.UPDATE_CHECKER.versionString)).start()) { - new ProcessBuilder(new String[]{IOUtils.getJavaDir(), "-jar", Upgrader.getSelf(Settings.UPDATE_CHECKER.versionString).getAbsolutePath()}).directory(new File(".")).start(); + new ProcessBuilder(new String[] {IOUtils.getJavaDir(), "-jar", Upgrader.getSelf(Settings.UPDATE_CHECKER.versionString).getAbsolutePath()}).directory(new File(".")).start(); System.exit(0); } } catch (IOException ex) { HMCLog.warn("Failed to create upgrader", ex); } if (MessageBox.Show(C.i18n("update.newest_version") + Settings.UPDATE_CHECKER.getNewVersion().firstVer + "." + Settings.UPDATE_CHECKER.getNewVersion().secondVer + "." + Settings.UPDATE_CHECKER.getNewVersion().thirdVer + "\n" - + C.i18n("update.should_open_link"), - MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION) { + + C.i18n("update.should_open_link"), + MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION) { String url = C.URL_PUBLISH; if (map != null) if (map.containsKey(OS.os().checked_name)) url = map.get(OS.os().checked_name); else if (map.containsKey(OS.UNKOWN.checked_name)) url = map.get(OS.UNKOWN.checked_name); - if (url == null) url = C.URL_PUBLISH; + if (url == null) + url = C.URL_PUBLISH; try { java.awt.Desktop.getDesktop().browse(new URI(url)); } catch (URISyntaxException | IOException e) { diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/AbstractMinecraftLoader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/AbstractMinecraftLoader.java index 44f115932..5266a0f03 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/AbstractMinecraftLoader.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/AbstractMinecraftLoader.java @@ -58,7 +58,7 @@ public abstract class AbstractMinecraftLoader implements IMinecraftLoader { HMCLog.log("On making head command."); String str = v.getJavaDir(); - if(!v.getJavaDirFile().exists()) { + if (!v.getJavaDirFile().exists()) { MessageBox.Show(C.i18n("launch.wrong_javadir")); v.setJava(null); str = v.getJavaDir(); @@ -66,14 +66,15 @@ public abstract class AbstractMinecraftLoader implements IMinecraftLoader { JdkVersion jv = new JdkVersion(str); if (Settings.getInstance().getJava().contains(jv)) jv = Settings.getInstance().getJava().get(Settings.getInstance().getJava().indexOf(jv)); - else try { - jv = JdkVersion.getJavaVersionFromExecutable(str); - Settings.getInstance().getJava().add(jv); - Settings.save(); - } catch (IOException ex) { - HMCLog.warn("Failed to get java version", ex); - jv = null; - } + else + try { + jv = JdkVersion.getJavaVersionFromExecutable(str); + Settings.getInstance().getJava().add(jv); + Settings.save(); + } catch (IOException ex) { + HMCLog.warn("Failed to get java version", ex); + jv = null; + } res.add(str); if (v.hasJavaArgs()) @@ -119,7 +120,8 @@ public abstract class AbstractMinecraftLoader implements IMinecraftLoader { MessageBox.Show(C.i18n("launch.too_big_memory_alloc_free_space_too_low", a)); } String a = "-Xmx" + v.getMaxMemory(); - if (MathUtils.canParseInt(v.getMaxMemory())) a += "m"; + if (MathUtils.canParseInt(v.getMaxMemory())) + a += "m"; res.add(a); } @@ -130,7 +132,7 @@ public abstract class AbstractMinecraftLoader implements IMinecraftLoader { if (OS.os() != OS.WINDOWS) res.add("-Duser.home=" + gameDir.getParent()); res.add("-Dhellominecraftlauncher.gamedir=" + gameDir.getAbsolutePath()); - + if (!v.isCanceledWrapper()) { res.add("-cp"); res.add(StrUtils.parseParams("", Utils.getURL(), File.pathSeparator)); @@ -164,9 +166,11 @@ public abstract class AbstractMinecraftLoader implements IMinecraftLoader { res.add(args.length > 1 ? args[1] : "25565"); } - if (v.isFullscreen()) res.add("--fullscreen"); + if (v.isFullscreen()) + res.add("--fullscreen"); - if (v.isDebug() && !v.isCanceledWrapper()) res.add("-debug"); + if (v.isDebug() && !v.isCanceledWrapper()) + res.add("-debug"); if (StrUtils.isNotBlank(v.getMinecraftArgs())) res.addAll(Arrays.asList(v.getMinecraftArgs().split(" "))); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/DefaultGameLauncher.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/DefaultGameLauncher.java index a5caaa175..f99186055 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/DefaultGameLauncher.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/DefaultGameLauncher.java @@ -49,13 +49,15 @@ public class DefaultGameLauncher extends GameLauncher { parallelTask.addDependsTask(new LibraryDownloadTask(s)); dw.addTask(parallelTask); boolean flag = true; - if (t.size() > 0) flag = dw.start(); + if (t.size() > 0) + flag = dw.start(); if (!flag && MessageBox.Show(C.i18n("launch.not_finished_downloading_libraries"), MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION) flag = true; return flag; }); decompressNativesEvent.register((sender, value) -> { - if (value == null) return false; + if (value == null) + return false; for (int i = 0; i < value.decompressFiles.length; i++) try { Compressor.unzip(value.decompressFiles[i], value.decompressTo, value.extractRules[i]); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/GameLauncher.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/GameLauncher.java index ba6b39d18..d3e97becb 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/GameLauncher.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/GameLauncher.java @@ -154,8 +154,10 @@ public class GameLauncher { * According to the name... * * @param launcherName the name of launch bat/sh - * @param str launch command + * @param str launch command + * * @return launcher location + * * @throws java.io.IOException write contents failed. */ public File makeLauncher(String launcherName, List str) throws IOException { diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftProvider.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftProvider.java index 465b661fb..5d424613e 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftProvider.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/IMinecraftProvider.java @@ -27,6 +27,7 @@ import org.jackhuang.hellominecraft.launcher.version.MinecraftVersion; /** * Provide everything of the Minecraft of a Profile. + * * @see org.jackhuang.hellominecraft.launcher.version.MinecraftVersionManager * @author huangyuhui */ @@ -40,14 +41,18 @@ public abstract class IMinecraftProvider { /** * Get the run directory of given version. + * * @param id the given version name + * * @return the run directory */ public abstract File getRunDirectory(String id); /** * Get the libraries that need to download. + * * @param type where to download + * * @return the library collection */ public abstract List getDownloadLibraries(DownloadType type); @@ -57,11 +62,12 @@ public abstract class IMinecraftProvider { public abstract void open(String version, String folder); public abstract File getAssets(); - + public abstract List listMods(); /** * Returns the thing like ".minecraft/resourcepacks". + * * @return the thing */ public abstract File getResourcePacks(); @@ -84,63 +90,78 @@ public abstract class IMinecraftProvider { * Provide the Minecraft Loader to generate the launching command. * * @see org.jackhuang.hellominecraft.launcher.launch.IMinecraftLoader - * @param p player informations, including username & auth_token + * @param p player informations, including username & auth_token * @param type where to download + * * @return what you want + * * @throws IllegalStateException circular denpendency versions */ public abstract IMinecraftLoader provideMinecraftLoader(UserProfileProvider p, DownloadType type) throws IllegalStateException; /** * Rename version + * * @param from The old name - * @param to The new name + * @param to The new name + * * @return Is the action successful? */ public abstract boolean renameVersion(String from, String to); /** * Remove the given version from disk. + * * @param a the version name + * * @return Is the action successful? */ public abstract boolean removeVersionFromDisk(String a); /** * Redownload the Minecraft json of the given version. + * * @param a the given version name + * * @return Is the action successful? */ public abstract boolean refreshJson(String a); /** * Redownload the Asset index json of the given version. + * * @param a the given version name + * * @return Is the action successful? */ public abstract boolean refreshAssetsIndex(String a); /** * Choose a version randomly. + * * @return the version */ public abstract MinecraftVersion getOneVersion(); /** * All Minecraft version in this profile. + * * @return the collection of all Minecraft version */ public abstract Collection getVersions(); /** * Get the Minecraft json instance of given version. + * * @param id the given version name + * * @return the Minecraft json instance */ public abstract MinecraftVersion getVersionById(String id); /** * getVersions().size() + * * @return getVersions().size() */ public abstract int getVersionCount(); @@ -152,8 +173,10 @@ public abstract class IMinecraftProvider { /** * Install a new version to this profile. + * * @param version the new version name - * @param type where to download + * @param type where to download + * * @return Is the action successful? */ public abstract boolean install(String version, DownloadType type); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LaunchScriptFinisher.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LaunchScriptFinisher.java index 9c547c490..0cde45448 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LaunchScriptFinisher.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LaunchScriptFinisher.java @@ -36,7 +36,8 @@ public class LaunchScriptFinisher implements Event> { boolean flag = false; try { String s = JOptionPane.showInputDialog(C.i18n("mainwindow.enter_script_name")); - if (s != null) MessageBox.Show(C.i18n("mainwindow.make_launch_succeed") + " " + ((GameLauncher) sender).makeLauncher(s, str).getAbsolutePath()); + if (s != null) + MessageBox.Show(C.i18n("mainwindow.make_launch_succeed") + " " + ((GameLauncher) sender).makeLauncher(s, str).getAbsolutePath()); flag = true; } catch (IOException ex) { MessageBox.Show(C.i18n("mainwindow.make_launch_script_failed")); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LibraryDownloadTask.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LibraryDownloadTask.java index e17e9e416..e9a3513a7 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LibraryDownloadTask.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/LibraryDownloadTask.java @@ -71,7 +71,7 @@ public class LibraryDownloadTask extends FileDownloadTask { return false; } } - + boolean download(URL url, File filePath) { this.url = url; this.filePath = filePath; @@ -79,7 +79,7 @@ public class LibraryDownloadTask extends FileDownloadTask { } public static void unpackLibrary(File output, File input) - throws IOException { + throws IOException { HMCLog.log("Unpacking " + input); if (output.exists()) output.delete(); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/MinecraftLoader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/MinecraftLoader.java index 466b665dd..96932cbb8 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/MinecraftLoader.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/launch/MinecraftLoader.java @@ -67,7 +67,8 @@ public class MinecraftLoader extends AbstractMinecraftLoader { } library += IOUtils.tryGetCanonicalFilePath(provider.getMinecraftJar()) + File.pathSeparator; library = library.substring(0, library.length() - File.pathSeparator.length()); - if (v.isCanceledWrapper()) res.add("-cp"); + if (v.isCanceledWrapper()) + res.add("-cp"); res.add(library); String mainClass = version.mainClass; res.add((v.isCanceledWrapper() ? "" : "-mainClass=") + mainClass); @@ -76,12 +77,11 @@ public class MinecraftLoader extends AbstractMinecraftLoader { String[] splitted = org.jackhuang.hellominecraft.utils.StrUtils.tokenize(arg); if (!checkAssetsExist()) - if (MessageBox.Show(C.i18n("assets.no_assets"), MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION) { + if (MessageBox.Show(C.i18n("assets.no_assets"), MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION) IAssetsHandler.ASSETS_HANDLER.getList(version, provider, (value) -> { - if (value != null) - TaskWindow.getInstance().addTask(IAssetsHandler.ASSETS_HANDLER.getDownloadTask(dt.getProvider())).start(); - }); - } + if (value != null) + TaskWindow.getInstance().addTask(IAssetsHandler.ASSETS_HANDLER.getDownloadTask(dt.getProvider())).start(); + }); String game_assets = reconstructAssets().getAbsolutePath(); @@ -133,7 +133,8 @@ public class MinecraftLoader extends AbstractMinecraftLoader { try { AssetsIndex index = (AssetsIndex) C.gson.fromJson(FileUtils.readFileToString(indexFile, "UTF-8"), AssetsIndex.class); - if (index == null) return false; + if (index == null) + return false; for (Map.Entry entry : index.getFileMap().entrySet()) if (!new File(new File(objectDir, ((AssetsObject) entry.getValue()).getHash().substring(0, 2)), ((AssetsObject) entry.getValue()).getHash()).exists()) return false; @@ -159,7 +160,8 @@ public class MinecraftLoader extends AbstractMinecraftLoader { try { AssetsIndex index = (AssetsIndex) C.gson.fromJson(FileUtils.readFileToString(indexFile, "UTF-8"), AssetsIndex.class); - if (index == null) return assetsDir; + if (index == null) + return assetsDir; if (index.isVirtual()) { int cnt = 0; HMCLog.log("Reconstructing virtual assets folder at " + virtualRoot); @@ -174,7 +176,8 @@ public class MinecraftLoader extends AbstractMinecraftLoader { } } // If the scale new format existent file is lower then 0.1, use the old format. - if (cnt * 10 < tot) return assetsDir; + if (cnt * 10 < tot) + return assetsDir; } } catch (IOException | JsonSyntaxException e) { HMCLog.warn("Failed to create virutal assets.", e); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Profile.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Profile.java index 08b9750c4..0b791369e 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Profile.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Profile.java @@ -67,7 +67,8 @@ public final class Profile { public Profile(Profile v) { this(); - if (v == null) return; + if (v == null) + return; name = v.name; gameDir = v.gameDir; maxMemory = v.maxMemory; @@ -89,25 +90,30 @@ public final class Profile { } public IMinecraftProvider getMinecraftProvider() { - if (minecraftProvider == null) minecraftProvider = new MinecraftVersionManager(this); + if (minecraftProvider == null) + minecraftProvider = new MinecraftVersionManager(this); return minecraftProvider; } public MinecraftVersion getSelectedMinecraftVersion() { if (StrUtils.isBlank(selectedMinecraftVersion)) { MinecraftVersion v = getMinecraftProvider().getOneVersion(); - if (v == null) return null; + if (v == null) + return null; selectedMinecraftVersion = v.id; return v; } MinecraftVersion v = getMinecraftProvider().getVersionById(selectedMinecraftVersion); - if (v == null) v = getMinecraftProvider().getOneVersion(); - if (v != null) setSelectedMinecraftVersion(v.id); + if (v == null) + v = getMinecraftProvider().getOneVersion(); + if (v != null) + setSelectedMinecraftVersion(v.id); return v; } public String getGameDir() { - if (StrUtils.isBlank(gameDir)) gameDir = MCUtils.getInitGameDir().getPath(); + if (StrUtils.isBlank(gameDir)) + gameDir = MCUtils.getInitGameDir().getPath(); return IOUtils.addSeparator(gameDir); } @@ -132,8 +138,10 @@ public final class Profile { public String getJavaDir() { Java j = getJava(); - if (j.getHome() == null) return javaDir; - else return j.getJava(); + if (j.getHome() == null) + return javaDir; + else + return j.getJava(); } public String getSettingsJavaDir() { @@ -169,14 +177,16 @@ public final class Profile { this.java = Settings.JAVA.get(0).getName(); else { int idx = Settings.JAVA.indexOf(java); - if (idx == -1) return; + if (idx == -1) + return; this.java = java.getName(); } Settings.save(); } public File getFolder(String folder) { - if (getSelectedMinecraftVersion() == null) return new File(getCanonicalGameDirFile(), folder); + if (getSelectedMinecraftVersion() == null) + return new File(getCanonicalGameDirFile(), folder); return new File(getMinecraftProvider().getRunDirectory(getSelectedMinecraftVersion().id), folder); } @@ -193,7 +203,8 @@ public final class Profile { } public String getJavaArgs() { - if (StrUtils.isBlank(javaArgs)) return ""; + if (StrUtils.isBlank(javaArgs)) + return ""; return javaArgs; } @@ -207,7 +218,8 @@ public final class Profile { } public String getMaxMemory() { - if (StrUtils.isBlank(maxMemory)) return String.valueOf(Utils.getSuggestedMemorySize()); + if (StrUtils.isBlank(maxMemory)) + return String.valueOf(Utils.getSuggestedMemorySize()); return maxMemory; } @@ -217,7 +229,8 @@ public final class Profile { } public String getWidth() { - if (StrUtils.isBlank(width)) return "854"; + if (StrUtils.isBlank(width)) + return "854"; return width; } @@ -226,7 +239,8 @@ public final class Profile { } public String getHeight() { - if (StrUtils.isBlank(height)) return "480"; + if (StrUtils.isBlank(height)) + return "480"; return height; } @@ -236,7 +250,8 @@ public final class Profile { } public String getUserProperties() { - if (userProperties == null) return ""; + if (userProperties == null) + return ""; return userProperties; } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Settings.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Settings.java index d2e26f649..c54e35839 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Settings.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/settings/Settings.java @@ -69,7 +69,7 @@ public final class Settings { e.checkFormat(); UPDATE_CHECKER = new UpdateChecker(new VersionNumber(Main.firstVer, Main.secondVer, Main.thirdVer), - "hmcl", Main::invokeUpdate); + "hmcl", Main::invokeUpdate); List temp = new ArrayList<>(); temp.add(new Java("Default", System.getProperty("java.home"))); @@ -90,7 +90,8 @@ public final class Settings { HMCLog.log("Settings file is empty, use the default settings."); else { Config d = C.gsonPrettyPrinting.fromJson(str, Config.class); - if (d != null) c = d; + if (d != null) + c = d; } HMCLog.log("Initialized settings."); } catch (IOException | JsonSyntaxException e) { diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/CrashReporter.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/CrashReporter.java index 7dcaff74d..9893bf1d4 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/CrashReporter.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/CrashReporter.java @@ -60,7 +60,7 @@ public class CrashReporter implements Thread.UncaughtExceptionHandler { t.printStackTrace(); } return false; - } else if(s.contains("java.lang.NoClassDefFoundError") || s.contains("java.lang.IncompatibleClassChangeError") || s.contains("java.lang.ClassFormatError")) { + } else if (s.contains("java.lang.NoClassDefFoundError") || s.contains("java.lang.IncompatibleClassChangeError") || s.contains("java.lang.ClassFormatError")) { System.out.println(C.i18n("crash.NoClassDefFound")); try { MessageBox.Show(C.i18n("crash.NoClassDefFound")); @@ -68,7 +68,7 @@ public class CrashReporter implements Thread.UncaughtExceptionHandler { t.printStackTrace(); } return false; - } else if(s.contains("java.lang.OutOfMemoryError")) { + } else if (s.contains("java.lang.OutOfMemoryError")) { System.out.println("FUCKING MEMORY LIMIT!"); return false; } @@ -78,7 +78,8 @@ public class CrashReporter implements Thread.UncaughtExceptionHandler { @Override public void uncaughtException(Thread t, Throwable e) { String s = StrUtils.getStackTrace(e); - if (!s.contains("org.jackhuang.hellominecraft")) return; + if (!s.contains("org.jackhuang.hellominecraft")) + return; try { String text = "\n---- Hello Minecraft! Crash Report ----\n"; text += " Version: " + Main.makeVersion() + "\n"; @@ -90,8 +91,10 @@ public class CrashReporter implements Thread.UncaughtExceptionHandler { text += " Operating System: " + System.getProperty("os.name") + " (" + System.getProperty("os.arch") + ") version " + System.getProperty("os.version") + "\n"; text += " Java Version: " + System.getProperty("java.version") + ", " + System.getProperty("java.vendor") + "\n"; text += " Java VM Version: " + System.getProperty("java.vm.name") + " (" + System.getProperty("java.vm.info") + "), " + System.getProperty("java.vm.vendor") + "\n"; - if (enableLogger) HMCLog.err(text); - else System.out.println(text); + if (enableLogger) + HMCLog.err(text); + else + System.out.println(text); if (checkThrowable(e)) { SwingUtilities.invokeLater(() -> LogWindow.instance.showAsCrashWindow(UpdateChecker.OUT_DATED)); @@ -111,7 +114,8 @@ public class CrashReporter implements Thread.UncaughtExceptionHandler { private static final HashSet throwableSet = new HashSet<>(); void reportToServer(String text, String stacktrace) { - if (throwableSet.contains(stacktrace)) return; + if (throwableSet.contains(stacktrace)) + return; throwableSet.add(stacktrace); new Thread(() -> { HashMap map = new HashMap<>(); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/MCUtils.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/MCUtils.java index b642c5dbe..b382813bd 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/MCUtils.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/MCUtils.java @@ -86,7 +86,7 @@ public final class MCUtils { r.version = ver; r.type = file.getEntry("META-INF/MANIFEST.MF") == null - ? MinecraftVersionRequest.Modified : MinecraftVersionRequest.OK; + ? MinecraftVersionRequest.Modified : MinecraftVersionRequest.OK; return r; } @@ -131,12 +131,13 @@ public final class MCUtils { return r; } int k = i; - while (tmp[k] >= 48 && tmp[k] <= 57 || tmp[k] == 46) k--; + while (tmp[k] >= 48 && tmp[k] <= 57 || tmp[k] == 46) + k--; k++; r.version = new String(tmp, k, i - k + 1); } r.type = file.getEntry("META-INF/MANIFEST.MF") == null - ? MinecraftVersionRequest.Modified : MinecraftVersionRequest.OK; + ? MinecraftVersionRequest.Modified : MinecraftVersionRequest.OK; return r; } @@ -158,7 +159,7 @@ public final class MCUtils { try { localZipFile = new ZipFile(file); ZipEntry minecraft = localZipFile - .getEntry("net/minecraft/client/Minecraft.class"); + .getEntry("net/minecraft/client/Minecraft.class"); if (minecraft != null) return getVersionOfOldMinecraft(localZipFile, minecraft); ZipEntry main = localZipFile.getEntry("net/minecraft/client/main/Main.class"); @@ -214,7 +215,8 @@ public final class MCUtils { } public static String minecraft() { - if (OS.os() == OS.OSX) return "minecraft"; + if (OS.os() == OS.OSX) + return "minecraft"; return ".minecraft"; } @@ -224,7 +226,8 @@ public final class MCUtils { gameDir = new File(gameDir, MCUtils.minecraft()); if (!gameDir.exists()) { File newFile = MCUtils.getLocation(); - if (newFile.exists()) gameDir = newFile; + if (newFile.exists()) + gameDir = newFile; } } return gameDir; @@ -240,13 +243,13 @@ public final class MCUtils { mvj.delete(); if (TaskWindow.getInstance() - .addTask(new FileDownloadTask(vurl + id + ".json", IOUtils.tryGetCanonicalFile(mvt)).setTag(id + ".json")) - .addTask(new FileDownloadTask(vurl + id + ".jar", IOUtils.tryGetCanonicalFile(mvj)).setTag(id + ".jar")) - .start()) { + .addTask(new FileDownloadTask(vurl + id + ".json", IOUtils.tryGetCanonicalFile(mvt)).setTag(id + ".json")) + .addTask(new FileDownloadTask(vurl + id + ".jar", IOUtils.tryGetCanonicalFile(mvj)).setTag(id + ".jar")) + .start()) { MinecraftVersion mv; try { mv = C.gson.fromJson(FileUtils.readFileToStringQuietly(mvt), MinecraftVersion.class); - } catch(JsonSyntaxException ex) { + } catch (JsonSyntaxException ex) { HMCLog.err("Failed to parse minecraft version json.", ex); mv = null; } @@ -266,8 +269,8 @@ public final class MCUtils { File mvt = new File(vpath, id + ".jar"); vpath.mkdirs(); if (TaskWindow.getInstance() - .addTask(new FileDownloadTask(vurl + id + ".jar", IOUtils.tryGetCanonicalFile(mvt)).setTag(id + ".jar")) - .start()) { + .addTask(new FileDownloadTask(vurl + id + ".jar", IOUtils.tryGetCanonicalFile(mvt)).setTag(id + ".jar")) + .start()) { if (moved != null) moved.delete(); return true; @@ -290,8 +293,8 @@ public final class MCUtils { File mvt = new File(vpath, id + ".json"); vpath.mkdirs(); if (TaskWindow.getInstance() - .addTask(new FileDownloadTask(vurl + id + ".json", IOUtils.tryGetCanonicalFile(mvt)).setTag(id + ".json")) - .start()) { + .addTask(new FileDownloadTask(vurl + id + ".json", IOUtils.tryGetCanonicalFile(mvt)).setTag(id + ".json")) + .start()) { if (moved != null) moved.delete(); return true; @@ -314,8 +317,8 @@ public final class MCUtils { assetsIndex.renameTo(renamed); } if (TaskWindow.getInstance() - .addTask(new FileDownloadTask(aurl + assetsId + ".json", IOUtils.tryGetCanonicalFile(assetsIndex)).setTag(assetsId + ".json")) - .start()) { + .addTask(new FileDownloadTask(aurl + assetsId + ".json", IOUtils.tryGetCanonicalFile(assetsIndex)).setTag(assetsId + ".json")) + .start()) { if (renamed != null) renamed.delete(); return true; diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/ModInfo.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/ModInfo.java index ae9ff6223..7acb5c637 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/ModInfo.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/ModInfo.java @@ -67,10 +67,12 @@ public class ModInfo implements Comparable { } public static boolean isFileMod(File file) { - if (file == null) return false; + if (file == null) + return false; String name = file.getName(); boolean disabled = name.endsWith(".disabled"); - if (disabled) name = name.substring(0, name.length() - ".disabled".length()); + if (disabled) + name = name.substring(0, name.length() - ".disabled".length()); return name.endsWith(".zip") || name.endsWith(".jar"); } @@ -80,11 +82,15 @@ public class ModInfo implements Comparable { try { ZipFile jar = new ZipFile(f); ZipEntry entry = jar.getEntry("mcmod.info"); - if (entry == null) return i; + if (entry == null) + return i; else { List m = C.gson.fromJson(new InputStreamReader(jar.getInputStream(entry)), new TypeToken>() { - }.getType()); - if (m != null && m.size() > 0) { i = m.get(0); i.location = f; } + }.getType()); + if (m != null && m.size() > 0) { + i = m.get(0); + i.location = f; + } } jar.close(); return i; diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsMojangLoader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsMojangLoader.java index 2f17cfb21..e4e0df779 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsMojangLoader.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsMojangLoader.java @@ -107,7 +107,8 @@ public class AssetsMojangLoader extends IAssetsHandler { @Override public boolean isVersionAllowed(String formattedVersion) { VersionNumber ur = VersionNumber.check(formattedVersion); - if (ur == null) return false; + if (ur == null) + return false; return VersionNumber.check("1.6.0").compareTo(ur) <= 0; } } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsMojangOldLoader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsMojangOldLoader.java index 74a2c2dc6..5caa3e481 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsMojangOldLoader.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsMojangOldLoader.java @@ -63,9 +63,10 @@ public class AssetsMojangOldLoader extends IAssetsHandler { @Override public boolean isVersionAllowed(String formattedVersion) { VersionNumber r = VersionNumber.check(formattedVersion); - if (r == null) return false; + if (r == null) + return false; return VersionNumber.check("1.7.2").compareTo(r) >= 0 - && VersionNumber.check("1.6.0").compareTo(r) <= 0; + && VersionNumber.check("1.6.0").compareTo(r) <= 0; } @Override diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsObject.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsObject.java index 0ad31b66f..f8c790b4a 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsObject.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/AssetsObject.java @@ -38,10 +38,13 @@ public class AssetsObject { @Override public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; AssetsObject that = (AssetsObject) o; - if (this.size != that.size) return false; + if (this.size != that.size) + return false; return this.hash.equals(that.hash); } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/IAssetsHandler.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/IAssetsHandler.java index eb5138d95..9a4c62c9f 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/IAssetsHandler.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/assets/IAssetsHandler.java @@ -70,7 +70,7 @@ public abstract class IAssetsHandler { * * @param mv The version that needs assets * @param mp The Minecraft Provider - * @param x finished event + * @param x finished event */ public abstract void getList(MinecraftVersion mv, IMinecraftProvider mp, Consumer x); @@ -78,6 +78,7 @@ public abstract class IAssetsHandler { * Will be invoked when the user invoked "Download all assets". * * @param sourceType Download Source + * * @return Download File Task */ public abstract Task getDownloadTask(IDownloadProvider sourceType); @@ -106,8 +107,10 @@ public abstract class IAssetsHandler { String mark = assetsDownloadURLs.get(i); String url = u + mark; File location = assetsLocalNames.get(i); - if (!location.getParentFile().exists()) location.getParentFile().mkdirs(); - if (location.isDirectory()) continue; + if (!location.getParentFile().exists()) + location.getParentFile().mkdirs(); + if (location.isDirectory()) + continue; boolean need = true; try { if (location.exists()) { @@ -126,7 +129,8 @@ public abstract class IAssetsHandler { HMCLog.warn("Failed to get hash: " + location, e); need = !location.exists(); } - if (need) al.add(new FileDownloadTask(url, location).setTag(mark)); + if (need) + al.add(new FileDownloadTask(url, location).setTag(mark)); } return true; } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/IAuthenticator.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/IAuthenticator.java index 167ee292a..95941e84c 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/IAuthenticator.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/IAuthenticator.java @@ -42,7 +42,7 @@ public abstract class IAuthenticator { YGGDRASIL_LOGIN.onLoadSettings(Settings.getInstance().getYggdrasilConfig()); Runtime.getRuntime().addShutdownHook(new Thread(() - -> Settings.getInstance().setYggdrasilConfig(YGGDRASIL_LOGIN.onSaveSettings()) + -> Settings.getInstance().setYggdrasilConfig(YGGDRASIL_LOGIN.onSaveSettings()) )); } @@ -56,6 +56,7 @@ public abstract class IAuthenticator { * Login Method * * @param info username & password + * * @return login result */ public abstract UserProfileProvider login(LoginInfo info); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/SkinmeAuthenticator.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/SkinmeAuthenticator.java index 2f54867d0..116da30bc 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/SkinmeAuthenticator.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/SkinmeAuthenticator.java @@ -39,10 +39,10 @@ public final class SkinmeAuthenticator extends IAuthenticator { public String getCharacter(String user, String hash, String $char) throws Exception { if ($char == null) return NetUtils.doGet( - "http://www.skinme.cc/api/login.php?user=" + user + "&hash=" + hash); + "http://www.skinme.cc/api/login.php?user=" + user + "&hash=" + hash); else return NetUtils.doGet( - "http://www.skinme.cc/api/login.php?user=" + user + "&hash=" + hash + "&char=" + $char); + "http://www.skinme.cc/api/login.php?user=" + user + "&hash=" + hash + "&char=" + $char); } @Override @@ -61,53 +61,53 @@ public final class SkinmeAuthenticator extends IAuthenticator { String hashCode = DigestUtils.sha1Hex(DigestUtils.md5Hex(DigestUtils.sha1Hex(pwd) + pwd) + str); String data = getCharacter(usr, hashCode, null); String[] sl = data.split(":"); - if (null != sl[0]) switch (sl[0]) { - case "0": - req.setSuccess(false); - if(sl[1].contains("No Valid Character")) { - sl[1] = C.i18n("login.no_valid_character"); - } - req.setErrorReason(sl[1]); - break; - case "1": { - req.setSuccess(true); - String[] s = parseType1(sl[1]); - req.setUserName(s[0]); - req.setSession(s[1]); - req.setUserId(s[1]); - req.setAccessToken(s[1]); - break; - } - case "2": { - req.setSuccess(true); - String[] charators = sl[1].split(";"); - int len = charators.length; - String[] $char = new String[len]; - String[] user = new String[len]; - System.out.println(sl[1]); - for (int i = 0; i < len; i++) { - String[] charator = charators[i].split(","); - $char[i] = charator[0]; - user[i] = charator[1]; - } - Selector s = new Selector(null, user, C.i18n("login.choose_charactor")); - s.setVisible(true); - if (s.sel == Selector.failedToSel) { + if (null != sl[0]) + switch (sl[0]) { + case "0": req.setSuccess(false); - req.setErrorReason(C.i18n("message.cancelled")); - } else { - int index = s.sel; - String character = $char[index]; - sl = getCharacter(usr, hashCode, character).split(":"); - String[] s2 = parseType1(sl[1]); - req.setUserName(s2[0]); - req.setSession(s2[1]); - req.setUserId(s2[1]); - req.setAccessToken(s2[1]); + if (sl[1].contains("No Valid Character")) + sl[1] = C.i18n("login.no_valid_character"); + req.setErrorReason(sl[1]); + break; + case "1": { + req.setSuccess(true); + String[] s = parseType1(sl[1]); + req.setUserName(s[0]); + req.setSession(s[1]); + req.setUserId(s[1]); + req.setAccessToken(s[1]); + break; + } + case "2": { + req.setSuccess(true); + String[] charators = sl[1].split(";"); + int len = charators.length; + String[] $char = new String[len]; + String[] user = new String[len]; + System.out.println(sl[1]); + for (int i = 0; i < len; i++) { + String[] charator = charators[i].split(","); + $char[i] = charator[0]; + user[i] = charator[1]; + } + Selector s = new Selector(null, user, C.i18n("login.choose_charactor")); + s.setVisible(true); + if (s.sel == Selector.failedToSel) { + req.setSuccess(false); + req.setErrorReason(C.i18n("message.cancelled")); + } else { + int index = s.sel; + String character = $char[index]; + sl = getCharacter(usr, hashCode, character).split(":"); + String[] s2 = parseType1(sl[1]); + req.setUserName(s2[0]); + req.setSession(s2[1]); + req.setUserId(s2[1]); + req.setAccessToken(s2[1]); + } + break; } - break; } - } req.setUserType("Legacy"); return req; diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/YggdrasilAuthenticator.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/YggdrasilAuthenticator.java index 978bd9d13..2c9f7e0ce 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/YggdrasilAuthenticator.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/YggdrasilAuthenticator.java @@ -70,7 +70,8 @@ public final class YggdrasilAuthenticator extends IAuthenticator { ua.setUsername(usr); try { ua.logIn(); - if (!ua.isLoggedIn()) throw new Exception(C.i18n("login.wrong_password")); + if (!ua.isLoggedIn()) + throw new Exception(C.i18n("login.wrong_password")); GameProfile selectedProfile = ua.getSelectedProfile(); GameProfile[] profiles = ua.getAvailableProfiles(); String[] names; @@ -94,7 +95,8 @@ public final class YggdrasilAuthenticator extends IAuthenticator { result.setUserProperties(new GsonBuilder().registerTypeAdapter(PropertyMap.class, new PropertyMap.LegacySerializer()).create().toJson(ua.getUserProperties())); result.setUserPropertyMap(new GsonBuilder().registerTypeAdapter(PropertyMap.class, new PropertyMap.Serializer()).create().toJson(ua.getUserProperties())); String authToken = ua.getAuthenticatedToken(); - if (authToken == null) authToken = "0"; + if (authToken == null) + authToken = "0"; result.setAccessToken(authToken); result.setSession(authToken); } catch (Exception ex) { @@ -123,7 +125,8 @@ public final class YggdrasilAuthenticator extends IAuthenticator { } public void onLoadSettings(Map settings) { - if (settings == null) return; + if (settings == null) + return; ua.loadFromStorage(settings); } @@ -132,7 +135,8 @@ public final class YggdrasilAuthenticator extends IAuthenticator { UserProfileProvider info = new UserProfileProvider(); try { ua.logIn(); - if (!ua.isLoggedIn()) throw new Exception(C.i18n("login.wrong_password")); + if (!ua.isLoggedIn()) + throw new Exception(C.i18n("login.wrong_password")); GameProfile profile = ua.getSelectedProfile(); info.setUserName(profile.name); info.setSuccess(true); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/AuthenticationRequest.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/AuthenticationRequest.java index f5f662dff..4589c2bdd 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/AuthenticationRequest.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/AuthenticationRequest.java @@ -12,7 +12,7 @@ public class AuthenticationRequest { agent = new HashMap<>(); agent.put("name", "Minecraft"); agent.put("version", 1); - + this.username = username; this.password = password; this.clientToken = clientToken; diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/Property.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/Property.java index 41b3f628c..f98b19270 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/Property.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/Property.java @@ -5,7 +5,7 @@ public class Property { public final String name, value; public Property(String name, String value) { - this.name = name; - this.value = value; + this.name = name; + this.value = value; } } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/PropertyMap.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/PropertyMap.java index 9fb073747..722a79976 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/PropertyMap.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/PropertyMap.java @@ -52,7 +52,7 @@ public class PropertyMap extends HashMap { if (entry.getValue() instanceof JsonArray) for (JsonElement element : (JsonArray) entry.getValue()) result.put(entry.getKey(), - new Property((String) entry.getKey(), element.getAsString())); + new Property((String) entry.getKey(), element.getAsString())); } else if ((json instanceof JsonArray)) for (JsonElement element : (JsonArray) json) if ((element instanceof JsonObject)) { diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/Response.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/Response.java index a8afe899f..73c6488ba 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/Response.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/Response.java @@ -8,7 +8,7 @@ public class Response { public GameProfile selectedProfile; public GameProfile[] availableProfiles; public User user; - + public String error; public String errorMessage; public String cause; diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/YggdrasilAuthentication.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/YggdrasilAuthentication.java index 3d3805e2c..ed511a472 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/YggdrasilAuthentication.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/auth/yggdrasil/YggdrasilAuthentication.java @@ -15,16 +15,16 @@ import org.jackhuang.hellominecraft.utils.NetUtils; import org.jackhuang.hellominecraft.utils.StrUtils; public class YggdrasilAuthentication { - + public static final Gson GSON = new GsonBuilder() - .registerTypeAdapter(GameProfile.class, new GameProfile.GameProfileSerializer()) - .registerTypeAdapter(PropertyMap.class, new PropertyMap.Serializer()) - .registerTypeAdapter(UUID.class, new UUIDTypeAdapter()).create(); - + .registerTypeAdapter(GameProfile.class, new GameProfile.GameProfileSerializer()) + .registerTypeAdapter(PropertyMap.class, new PropertyMap.Serializer()) + .registerTypeAdapter(UUID.class, new UUIDTypeAdapter()).create(); + protected static final String BASE_URL = "https://authserver.mojang.com/"; protected static final URL ROUTE_AUTHENTICATE = NetUtils.constantURL(BASE_URL + "authenticate"); protected static final URL ROUTE_REFRESH = NetUtils.constantURL(BASE_URL + "refresh"); - + protected static final String STORAGE_KEY_ACCESS_TOKEN = "accessToken"; protected static final String STORAGE_KEY_PROFILE_NAME = "displayName"; protected static final String STORAGE_KEY_PROFILE_ID = "uuid"; @@ -32,11 +32,11 @@ public class YggdrasilAuthentication { protected static final String STORAGE_KEY_USER_NAME = "username"; protected static final String STORAGE_KEY_USER_ID = "userid"; protected static final String STORAGE_KEY_USER_PROPERTIES = "userProperties"; - + private final Proxy proxy; private final String clientToken; private final PropertyMap userProperties = new PropertyMap(); - + private String userid, username, password, accessToken; private GameProfile selectedProfile; private GameProfile[] profiles; @@ -48,7 +48,6 @@ public class YggdrasilAuthentication { } // - public void setUsername(String username) { if ((isLoggedIn()) && (canPlayOnline())) throw new IllegalStateException("Cannot change username while logged in & online"); @@ -104,7 +103,7 @@ public class YggdrasilAuthentication { protected void setUserId(String userid) { this.userid = userid; } - + public Proxy getProxy() { return this.proxy; } @@ -120,22 +119,20 @@ public class YggdrasilAuthentication { @Deprecated public String getSessionToken() { if (isLoggedIn() && getSelectedProfile() != null && canPlayOnline()) - return String.format("token:%s:%s", new Object[]{getAuthenticatedToken(), getSelectedProfile().id}); + return String.format("token:%s:%s", new Object[] {getAuthenticatedToken(), getSelectedProfile().id}); return null; } public String getAuthenticatedToken() { return this.accessToken; } - - // - - // + // + // public boolean canPlayOnline() { return isLoggedIn() && getSelectedProfile() != null && this.isOnline; } - + public boolean canLogIn() { return !canPlayOnline() && StrUtils.isNotBlank(getUsername()) && (StrUtils.isNotBlank(getPassword()) || StrUtils.isNotBlank(getAuthenticatedToken())); } @@ -209,7 +206,6 @@ public class YggdrasilAuthentication { // // - public void loadFromStorage(Map credentials) { logOut(); @@ -257,9 +253,8 @@ public class YggdrasilAuthentication { return result; } - + // - protected Response request(URL url, Object input) throws AuthenticationException { try { String jsonResult = input == null ? NetUtils.doGet(url) : NetUtils.post(url, GSON.toJson(input), "application/json", proxy); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/BMCLAPIDownloadProvider.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/BMCLAPIDownloadProvider.java index 89c8302f2..c2e0b5798 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/BMCLAPIDownloadProvider.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/BMCLAPIDownloadProvider.java @@ -42,9 +42,12 @@ public class BMCLAPIDownloadProvider implements IDownloadProvider { @Override public InstallerVersionList getInstallerByType(String type) { - if (type.equalsIgnoreCase("forge")) return getForgeInstaller(); - if (type.equalsIgnoreCase("liteloader")) return getLiteLoaderInstaller(); - if (type.equalsIgnoreCase("optifine")) return getOptiFineInstaller(); + if (type.equalsIgnoreCase("forge")) + return getForgeInstaller(); + if (type.equalsIgnoreCase("liteloader")) + return getLiteLoaderInstaller(); + if (type.equalsIgnoreCase("optifine")) + return getOptiFineInstaller(); return null; } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/IDownloadProvider.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/IDownloadProvider.java index 71dfac419..fc694b358 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/IDownloadProvider.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/IDownloadProvider.java @@ -41,7 +41,7 @@ public interface IDownloadProvider { String getVersionsListDownloadURL(); String getAssetsDownloadURL(); - + String getParsedLibraryDownloadURL(String str); boolean isAllowedToUseSelfURL(); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/MojangDownloadProvider.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/MojangDownloadProvider.java index c26a9fd66..ea2b1e740 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/MojangDownloadProvider.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/MojangDownloadProvider.java @@ -41,9 +41,12 @@ public class MojangDownloadProvider implements IDownloadProvider { @Override public InstallerVersionList getInstallerByType(String type) { - if (type.equalsIgnoreCase("forge")) return getForgeInstaller(); - if (type.equalsIgnoreCase("liteloader")) return getLiteLoaderInstaller(); - if (type.equalsIgnoreCase("optifine")) return getOptiFineInstaller(); + if (type.equalsIgnoreCase("forge")) + return getForgeInstaller(); + if (type.equalsIgnoreCase("liteloader")) + return getLiteLoaderInstaller(); + if (type.equalsIgnoreCase("optifine")) + return getOptiFineInstaller(); return null; } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/RapidDataDownloadProvider.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/RapidDataDownloadProvider.java index 5ef03652d..d2d12343d 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/RapidDataDownloadProvider.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/download/RapidDataDownloadProvider.java @@ -46,11 +46,10 @@ public class RapidDataDownloadProvider extends MojangDownloadProvider { public String getVersionsListDownloadURL() { return "http://mirrors.rapiddata.org/Minecraft.Download/versions/versions.json"; } - + @Override public String getParsedLibraryDownloadURL(String str) { return str == null ? null : str.replace("http://files.minecraftforge.net/maven", "http://mirrors.rapiddata.org/forge/maven"); } - - + } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/InstallerVersionList.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/InstallerVersionList.java index 72dcc7829..337dbdff1 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/InstallerVersionList.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/InstallerVersionList.java @@ -30,6 +30,7 @@ public abstract class InstallerVersionList implements Consumer { * Refresh installer versions list from the downloaded content. * * @param versions Minecraft versions you need to refresh + * * @throws java.lang.Exception */ public abstract void refreshList(String[] versions) throws Exception; diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/PackMinecraftInstaller.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/PackMinecraftInstaller.java index 039c8150a..ac1e4f4eb 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/PackMinecraftInstaller.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/PackMinecraftInstaller.java @@ -40,7 +40,8 @@ public class PackMinecraftInstaller { public void install() throws IOException { File file = new File(IOUtils.currentDir(), "HMCL-MERGE-TEMP"); file.mkdirs(); - for (String src1 : src) Compressor.unzip(new File(src1), file); + for (String src1 : src) + Compressor.unzip(new File(src1), file); Compressor.zip(file, dest); FileUtils.deleteDirectory(file); } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/ForgeInstaller.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/ForgeInstaller.java index 27f6cf2e1..c11497b00 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/ForgeInstaller.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/ForgeInstaller.java @@ -79,7 +79,7 @@ public class ForgeInstaller extends Task { HMCLog.log("Copying jar..." + profile.install.minecraft + ".jar to " + profile.install.target + ".jar"); FileUtils.copyFile(new File(from, profile.install.minecraft + ".jar"), - new File(to, profile.install.target + ".jar")); + new File(to, profile.install.target + ".jar")); HMCLog.log("Creating new version profile..." + profile.install.target + ".json"); /*for (MinecraftLibrary library : profile.versionInfo.libraries) if (library.name.startsWith("net.minecraftforge:forge:")) @@ -98,7 +98,8 @@ public class ForgeInstaller extends Task { try (FileOutputStream fos = new FileOutputStream(file)) { BufferedOutputStream bos = new BufferedOutputStream(fos); int c; - while ((c = is.read()) != -1) bos.write((byte) c); + while ((c = is.read()) != -1) + bos.write((byte) c); bos.close(); } return true; diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/bmcl/ForgeBMCLVersionList.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/bmcl/ForgeBMCLVersionList.java index 8c116cb18..958c77dc8 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/bmcl/ForgeBMCLVersionList.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/bmcl/ForgeBMCLVersionList.java @@ -39,7 +39,8 @@ public class ForgeBMCLVersionList extends InstallerVersionList { private static ForgeBMCLVersionList instance; public static ForgeBMCLVersionList getInstance() { - if (instance == null) instance = new ForgeBMCLVersionList(); + if (instance == null) + instance = new ForgeBMCLVersionList(); return instance; } @@ -55,7 +56,8 @@ public class ForgeBMCLVersionList extends InstallerVersionList { } for (String x : neededVersions) { - if (versionMap.containsKey(x)) continue; + if (versionMap.containsKey(x)) + continue; String s = NetUtils.doGet("http://bmclapi2.bangbang93.com/forge/minecraft/" + x); if (s == null) @@ -63,7 +65,7 @@ public class ForgeBMCLVersionList extends InstallerVersionList { try { root = C.gson.fromJson(s, new TypeToken>() { - }.getType()); + }.getType()); for (ForgeVersion v : root) { InstallerVersion iv = new InstallerVersion(v.version, StrUtils.formatVersion(v.minecraft)); @@ -83,10 +85,13 @@ public class ForgeBMCLVersionList extends InstallerVersionList { @Override public List getVersions(String mcVersion) { - if (versions == null || versionMap == null) return null; - if (StrUtils.isBlank(mcVersion)) return versions; + if (versions == null || versionMap == null) + return null; + if (StrUtils.isBlank(mcVersion)) + return versions; List c = versionMap.get(mcVersion); - if (c == null) return versions; + if (c == null) + return versions; Collections.sort(c, InstallerVersionComparator.INSTANCE); return c; } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersionList.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersionList.java index 211211253..20499e71f 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersionList.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/forge/vanilla/MinecraftForgeVersionList.java @@ -49,7 +49,8 @@ public class MinecraftForgeVersionList extends InstallerVersionList { @Override public void refreshList(String[] needed) throws Exception { String s = NetUtils.doGet(Settings.getInstance().getDownloadSource().getProvider().getParsedLibraryDownloadURL(C.URL_FORGE_LIST)); - if (root != null) return; + if (root != null) + return; root = C.gson.fromJson(s, MinecraftForgeVersionRoot.class); @@ -96,10 +97,13 @@ public class MinecraftForgeVersionList extends InstallerVersionList { @Override public List getVersions(String mcVersion) { - if (versions == null || versionMap == null) return null; - if (StrUtils.isBlank(mcVersion)) return versions; + if (versions == null || versionMap == null) + return null; + if (StrUtils.isBlank(mcVersion)) + return versions; List c = versionMap.get(mcVersion); - if (c == null) return versions; + if (c == null) + return versions; Collections.sort(c, InstallerVersionComparator.INSTANCE); return c; } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderInstaller.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderInstaller.java index 2ee192413..88a012530 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderInstaller.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderInstaller.java @@ -55,7 +55,8 @@ public class LiteLoaderInstaller extends Task implements PreviousResultRegistrar setFailReason(new RuntimeException(C.i18n("install.no_version"))); return false; } - if (pre.size() != 1 && installer == null) throw new IllegalStateException("No registered previous task."); + if (pre.size() != 1 && installer == null) + throw new IllegalStateException("No registered previous task."); if (installer == null) installer = pre.get(pre.size() - 1).getResult(); try { diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersionList.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersionList.java index ee87bd41e..78f7078c1 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersionList.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/liteloader/LiteLoaderVersionList.java @@ -51,7 +51,8 @@ public class LiteLoaderVersionList extends InstallerVersionList { @Override public void refreshList(String[] needed) throws Exception { String s = NetUtils.doGet(C.URL_LITELOADER_LIST); - if (root != null) return; + if (root != null) + return; root = C.gson.fromJson(s, LiteLoaderVersionsRoot.class); @@ -62,7 +63,8 @@ public class LiteLoaderVersionList extends InstallerVersionList { ArrayList al = new ArrayList<>(); LiteLoaderMCVersions mcv = arr.getValue(); for (Map.Entry entry : mcv.artefacts.get("com.mumfrey:liteloader").entrySet()) { - if ("latest".equals(entry.getKey())) continue; + if ("latest".equals(entry.getKey())) + continue; LiteLoaderVersion v = entry.getValue(); LiteLoaderInstallerVersion iv = new LiteLoaderInstallerVersion(v.version, StrUtils.formatVersion(arr.getKey())); iv.universal = "http://dl.liteloader.com/versions/com/mumfrey/liteloader/" + arr.getKey() + "/" + v.file; @@ -81,10 +83,13 @@ public class LiteLoaderVersionList extends InstallerVersionList { @Override public List getVersions(String mcVersion) { - if (versions == null || versionMap == null) return null; - if (StrUtils.isBlank(mcVersion)) return versions; + if (versions == null || versionMap == null) + return null; + if (StrUtils.isBlank(mcVersion)) + return versions; List c = versionMap.get(mcVersion); - if (c == null) return versions; + if (c == null) + return versions; Collections.sort(c, InstallerVersionComparator.INSTANCE); return c; } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/OptiFineVersion.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/OptiFineVersion.java index a6f2c148b..8ff0fbdc8 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/OptiFineVersion.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/OptiFineVersion.java @@ -21,5 +21,6 @@ package org.jackhuang.hellominecraft.launcher.utils.installers.optifine; * @author huangyuhui */ public class OptiFineVersion { + public String dl, ver, date, mirror, mcver; } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/bmcl/OptiFineBMCLVersionList.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/bmcl/OptiFineBMCLVersionList.java index 4d9f6a3fe..85b9bfa8f 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/bmcl/OptiFineBMCLVersionList.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/bmcl/OptiFineBMCLVersionList.java @@ -56,16 +56,18 @@ public class OptiFineBMCLVersionList extends InstallerVersionList { versionMap = new HashMap<>(); versions = new ArrayList<>(); - if (s == null) return; + if (s == null) + return; root = C.gson.fromJson(s, new TypeToken>() { - }.getType()); + }.getType()); for (OptiFineVersion v : root) { v.mirror = v.mirror.replace("http://optifine.net/http://optifine.net/", "http://optifine.net/"); if (StrUtils.isBlank(v.mcver)) { Pattern p = Pattern.compile("OptiFine (.*) HD"); Matcher m = p.matcher(v.ver); - while (m.find()) v.mcver = m.group(1); + while (m.find()) + v.mcver = m.group(1); } InstallerVersion iv = new InstallerVersion(v.ver, StrUtils.formatVersion(v.mcver)); @@ -81,10 +83,13 @@ public class OptiFineBMCLVersionList extends InstallerVersionList { @Override public List getVersions(String mcVersion) { - if (versions == null || versionMap == null) return null; - if (StrUtils.isBlank(mcVersion)) return versions; + if (versions == null || versionMap == null) + return null; + if (StrUtils.isBlank(mcVersion)) + return versions; List c = versionMap.get(mcVersion); - if (c == null) return versions; + if (c == null) + return versions; Collections.sort(c, InstallerVersionComparator.INSTANCE); return c; } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/vanilla/OptiFineDownloadFormatter.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/vanilla/OptiFineDownloadFormatter.java index 16a40c7e1..c5ddc228a 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/vanilla/OptiFineDownloadFormatter.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/installers/optifine/vanilla/OptiFineDownloadFormatter.java @@ -41,7 +41,8 @@ public class OptiFineDownloadFormatter extends Task implements PreviousResult(); versions = new ArrayList<>(); @@ -93,7 +94,8 @@ public class OptiFineVersionList extends InstallerVersionList { if (StrUtils.isBlank(v.mcver)) { Pattern p = Pattern.compile("OptiFine (.*?) "); Matcher m = p.matcher(v.ver); - while (m.find()) v.mcver = StrUtils.formatVersion(m.group(1)); + while (m.find()) + v.mcver = StrUtils.formatVersion(m.group(1)); } InstallerVersion iv = new InstallerVersion(v.ver, StrUtils.formatVersion(v.mcver)); iv.installer = iv.universal = v.mirror; @@ -119,10 +121,13 @@ public class OptiFineVersionList extends InstallerVersionList { @Override public List getVersions(String mcVersion) { - if (versions == null || versionMap == null) return null; - if (StrUtils.isBlank(mcVersion)) return versions; + if (versions == null || versionMap == null) + return null; + if (StrUtils.isBlank(mcVersion)) + return versions; List c = versionMap.get(mcVersion); - if (c == null) return versions; + if (c == null) + return versions; Collections.sort(c, InstallerVersionComparator.INSTANCE); return c; } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/upgrade/Upgrader.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/upgrade/Upgrader.java index 83fe8ba34..cd2884f34 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/upgrade/Upgrader.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/utils/upgrade/Upgrader.java @@ -64,11 +64,13 @@ public class Upgrader extends Task { HashMap json = new HashMap<>(); File f = getSelf(newestVersion); try { - if (!f.getParentFile().exists()) f.getParentFile().mkdirs(); - - for (int i = 0; f.exists(); i++) f = new File(BASE_FOLDER, "HMCL-" + newestVersion + (i > 0 ? "-" + i : "") + ".jar"); + if (!f.getParentFile().exists()) + f.getParentFile().mkdirs(); + + for (int i = 0; f.exists(); i++) + f = new File(BASE_FOLDER, "HMCL-" + newestVersion + (i > 0 ? "-" + i : "") + ".jar"); f.createNewFile(); - + try (JarOutputStream jos = new JarOutputStream(new FileOutputStream(f))) { Pack200.newUnpacker().unpack(new XZInputStream(new FileInputStream(tempFile)), jos); } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftLibrary.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftLibrary.java index 98c7422b4..aa377432c 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftLibrary.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftLibrary.java @@ -104,10 +104,10 @@ public class MinecraftLibrary extends IMinecraftLibrary { str = str.replace('.', File.separatorChar); if (natives == null) str += File.separator + s[1] + File.separator + s[2] - + File.separator + s[1] + '-' + s[2] + ".jar"; + + File.separator + s[1] + '-' + s[2] + ".jar"; else { str += File.separator + s[1] + File.separator + s[2] - + File.separator + s[1] + '-' + s[2] + '-'; + + File.separator + s[1] + '-' + s[2] + '-'; str += getNative(); str += ".jar"; } @@ -121,8 +121,10 @@ public class MinecraftLibrary extends IMinecraftLibrary { @Override public String getDownloadURL(String urlBase, DownloadType downloadType) { - if (StrUtils.isNotBlank(url) && downloadType.getProvider().isAllowedToUseSelfURL()) urlBase = this.url; - if (urlBase.endsWith(".jar")) return urlBase; + if (StrUtils.isNotBlank(url) && downloadType.getProvider().isAllowedToUseSelfURL()) + urlBase = this.url; + if (urlBase.endsWith(".jar")) + return urlBase; return urlBase + formatted.replace('\\', '/'); } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftVersion.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftVersion.java index 463aed73b..e1b4d75e5 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftVersion.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftVersion.java @@ -33,7 +33,7 @@ import org.jackhuang.hellominecraft.utils.ArrayUtils; public class MinecraftVersion implements Cloneable, Comparable { public String minecraftArguments, mainClass, time, id, type, processArguments, - releaseTime, assets, jar, inheritsFrom; + releaseTime, assets, jar, inheritsFrom; public int minimumLauncherVersion; public boolean hidden; @@ -56,7 +56,8 @@ public class MinecraftVersion implements Cloneable, Comparable this.inheritsFrom = inheritsFrom; this.minimumLauncherVersion = minimumLauncherVersion; this.hidden = hidden; - if (libraries == null) this.libraries = new ArrayList<>(); + if (libraries == null) + this.libraries = new ArrayList<>(); else { this.libraries = new ArrayList<>(libraries.size()); for (IMinecraftLibrary library : libraries) @@ -81,18 +82,19 @@ public class MinecraftVersion implements Cloneable, Comparable MinecraftVersion parent = manager.getVersionById(inheritsFrom); if (parent == null) { - if (!manager.install(inheritsFrom, sourceType)) return this; + if (!manager.install(inheritsFrom, sourceType)) + return this; parent = manager.getVersionById(inheritsFrom); } parent = parent.resolve(manager, resolvedSoFar, sourceType); MinecraftVersion result = new MinecraftVersion( - this.minecraftArguments != null ? this.minecraftArguments : parent.minecraftArguments, - this.mainClass != null ? this.mainClass : parent.mainClass, - this.time, this.id, this.type, parent.processArguments, this.releaseTime, - this.assets != null ? this.assets : parent.assets, - this.jar != null ? this.jar : parent.jar, - null, parent.minimumLauncherVersion, - this.libraries != null ? ArrayUtils.merge(this.libraries, parent.libraries) : parent.libraries, this.hidden); + this.minecraftArguments != null ? this.minecraftArguments : parent.minecraftArguments, + this.mainClass != null ? this.mainClass : parent.mainClass, + this.time, this.id, this.type, parent.processArguments, this.releaseTime, + this.assets != null ? this.assets : parent.assets, + this.jar != null ? this.jar : parent.jar, + null, parent.minimumLauncherVersion, + this.libraries != null ? ArrayUtils.merge(this.libraries, parent.libraries) : parent.libraries, this.hidden); return result; } @@ -109,7 +111,7 @@ public class MinecraftVersion implements Cloneable, Comparable public File getNatives(File gameDir) { return new File(gameDir, "versions/" + id + "/" + id - + "-natives"); + + "-natives"); } public boolean isAllowedToUnpackNatives() { diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftVersionManager.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftVersionManager.java index 2284069af..ba1c982c0 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftVersionManager.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/version/MinecraftVersionManager.java @@ -95,18 +95,21 @@ public final class MinecraftVersionManager extends IMinecraftProvider { File version = new File(baseFolder, "versions"); File[] files = version.listFiles(); - if (files == null || files.length == 0) return; + if (files == null || files.length == 0) + return; for (File dir : files) { String id = dir.getName(); File jsonFile = new File(dir, id + ".json"); - if (!dir.isDirectory()) continue; + if (!dir.isDirectory()) + continue; boolean ask = false; File[] jsons = null; if (!jsonFile.exists()) { jsons = FileUtils.searchSuffix(dir, "json"); - if (jsons.length == 1) ask = true; + if (jsons.length == 1) + ask = true; } if (ask) { HMCLog.warn("Found not matched filenames version: " + id + ", json: " + jsons[0].getName()); @@ -121,20 +124,23 @@ public final class MinecraftVersionManager extends IMinecraftProvider { MinecraftVersion mcVersion; try { mcVersion = C.gson.fromJson(FileUtils.readFileToString(jsonFile), MinecraftVersion.class); - if (mcVersion == null) throw new RuntimeException("Wrong json format, got null."); + if (mcVersion == null) + throw new RuntimeException("Wrong json format, got null."); } catch (IOException | RuntimeException e) { HMCLog.warn("Found wrong format json, try to fix it.", e); if (MessageBox.Show(C.i18n("launcher.versions_json_not_formatted", id), MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION) { refreshJson(id); try { mcVersion = C.gson.fromJson(FileUtils.readFileToString(jsonFile), MinecraftVersion.class); - if (mcVersion == null) throw new RuntimeException("Wrong json format, got null."); + if (mcVersion == null) + throw new RuntimeException("Wrong json format, got null."); } catch (IOException | RuntimeException ex) { HMCLog.err("Retried but still failed."); HMCLog.warn("Ignoring: " + dir + ", the json of this Minecraft is malformed.", ex); continue; } - } else continue; + } else + continue; } try { if (!id.equals(mcVersion.id)) { @@ -156,7 +162,8 @@ public final class MinecraftVersionManager extends IMinecraftProvider { @Override public boolean removeVersionFromDisk(String name) { File version = new File(baseFolder, "versions/" + name); - if (!version.exists()) return true; + if (!version.exists()) + return true; versions.remove(name); return FileUtils.deleteDirectoryQuietly(version); @@ -192,7 +199,8 @@ public final class MinecraftVersionManager extends IMinecraftProvider { @Override public boolean refreshAssetsIndex(String id) { MinecraftVersion mv = getVersionById(id); - if (mv == null) return false; + if (mv == null) + return false; return MCUtils.downloadMinecraftAssetsIndex(new File(baseFolder, "assets"), mv.assets, Settings.getInstance().getDownloadSource()); } @@ -218,7 +226,8 @@ public final class MinecraftVersionManager extends IMinecraftProvider { @Override public List listMods() { - if (profile.getSelectedMinecraftVersion() == null) return new ArrayList<>(); + if (profile.getSelectedMinecraftVersion() == null) + return new ArrayList<>(); File modsFolder = new File(getRunDirectory(profile.getSelectedMinecraftVersion().id), "mods"); ArrayList mods = new ArrayList<>(); File[] fs = modsFolder.listFiles(); @@ -245,7 +254,8 @@ public final class MinecraftVersionManager extends IMinecraftProvider { @Override public List getDownloadLibraries(DownloadType downloadType) { ArrayList downloadLibraries = new ArrayList<>(); - if(profile.getSelectedMinecraftVersion() == null) return downloadLibraries; + if (profile.getSelectedMinecraftVersion() == null) + return downloadLibraries; MinecraftVersion v = profile.getSelectedMinecraftVersion().resolve(this, Settings.getInstance().getDownloadSource()); if (v.libraries != null) for (IMinecraftLibrary l : v.libraries) { @@ -281,7 +291,8 @@ public final class MinecraftVersionManager extends IMinecraftProvider { @Override public GameLauncher.DecompressLibraryJob getDecompressLibraries() { MinecraftVersion v = profile.getSelectedMinecraftVersion().resolve(this, Settings.getInstance().getDownloadSource()); - if (v.libraries == null) return null; + if (v.libraries == null) + return null; ArrayList unzippings = new ArrayList<>(); ArrayList extractRules = new ArrayList<>(); for (IMinecraftLibrary l : v.libraries) { @@ -307,7 +318,7 @@ public final class MinecraftVersionManager extends IMinecraftProvider { @Override public IMinecraftLoader provideMinecraftLoader(UserProfileProvider p, DownloadType type) - throws IllegalStateException { + throws IllegalStateException { return new MinecraftLoader(profile, this, p, type); } @@ -334,6 +345,7 @@ public final class MinecraftVersionManager extends IMinecraftProvider { @Override public void onLaunch() { File resourcePacks = getResourcePacks(); - if (!resourcePacks.exists()) resourcePacks.mkdirs(); + if (!resourcePacks.exists()) + resourcePacks.mkdirs(); } } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/DraggableFrame.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/DraggableFrame.java index 7552c9c96..63bf09787 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/DraggableFrame.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/DraggableFrame.java @@ -26,11 +26,12 @@ import javax.swing.JFrame; * @author huangyuhui */ public class DraggableFrame extends JFrame - implements MouseListener, MouseMotionListener { +implements MouseListener, MouseMotionListener { private int dragGripX; private int dragGripY; + @SuppressWarnings("LeakingThisInConstructor") public DraggableFrame() { setUndecorated(true); addMouseListener(this); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.java index 111ac8188..9c53061ba 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/GameSettingsPanel.java @@ -119,7 +119,8 @@ public class GameSettingsPanel extends javax.swing.JPanel implements DropTargetL itm = new JMenuItem(C.i18n("folder.game")); itm.addActionListener((e) -> { Profile v = getProfile(); - if (v != null) v.getMinecraftProvider().openSelf(mcVersion); + if (v != null) + v.getMinecraftProvider().openSelf(mcVersion); }); ppmExplore.add(itm); itm = new JMenuItem(C.i18n("folder.mod")); @@ -227,13 +228,19 @@ public class GameSettingsPanel extends javax.swing.JPanel implements DropTargetL @Override public void stateChanged(ChangeEvent e) { switch (tabInstallers.getSelectedIndex()) { - case 0: if (!a) forge.refreshVersions(); + case 0: + if (!a) + forge.refreshVersions(); a = true; break; - case 1: if (!b) optifine.refreshVersions(); + case 1: + if (!b) + optifine.refreshVersions(); b = true; break; - case 2: if (!c) liteloader.refreshVersions(); + case 2: + if (!c) + liteloader.refreshVersions(); c = true; break; } @@ -242,8 +249,10 @@ public class GameSettingsPanel extends javax.swing.JPanel implements DropTargetL for (Java j : Settings.JAVA) { String name = j.getName(); - if (name.equals("Default")) name = C.i18n("settings.default"); - if (name.equals("Custom")) name = C.i18n("settings.custom"); + if (name.equals("Default")) + name = C.i18n("settings.default"); + if (name.equals("Custom")) + name = C.i18n("settings.custom"); cboJava.addItem(name); } @@ -1122,7 +1131,8 @@ btnRefreshLiteLoader.addActionListener(new java.awt.event.ActionListener() { }// //GEN-END:initComponents // private void cboProfilesItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboProfilesItemStateChanged - if (isLoading) return; + if (isLoading) + return; profile = getProfile(); if (profile.getMinecraftProvider().getVersionCount() <= 0) versionChanged(profile, null); @@ -1136,8 +1146,10 @@ btnRefreshLiteLoader.addActionListener(new java.awt.event.ActionListener() { }//GEN-LAST:event_btnNewProfileActionPerformed private void btnRemoveProfileActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRemoveProfileActionPerformed - if (profile == null) return; - if (MessageBox.Show(C.i18n("ui.message.sure_remove", profile.getName()), MessageBox.YES_NO_OPTION) == MessageBox.NO_OPTION) return; + if (profile == null) + return; + if (MessageBox.Show(C.i18n("ui.message.sure_remove", profile.getName()), MessageBox.YES_NO_OPTION) == MessageBox.NO_OPTION) + return; if (Settings.delProfile(profile)) { cboProfiles.removeItem(profile.getName()); profile = Settings.getOneProfile(); @@ -1180,9 +1192,9 @@ btnRefreshLiteLoader.addActionListener(new java.awt.event.ActionListener() { if (v.installer != null) { url = Settings.getInstance().getDownloadSource().getProvider().getParsedLibraryDownloadURL(v.installer); TaskWindow.getInstance() - .addTask(new FileDownloadTask(url, filepath).setTag("forge")) - .addTask(new ForgeInstaller(profile.getMinecraftProvider(), filepath, v)) - .start(); + .addTask(new FileDownloadTask(url, filepath).setTag("forge")) + .addTask(new ForgeInstaller(profile.getMinecraftProvider(), filepath, v)) + .start(); refreshVersions(); } }//GEN-LAST:event_btnDownloadForgeActionPerformed @@ -1203,9 +1215,9 @@ btnRefreshLiteLoader.addActionListener(new java.awt.event.ActionListener() { SwingUtilities.invokeLater(() -> { OptiFineDownloadFormatter task = new OptiFineDownloadFormatter(v.installer); TaskWindow.getInstance().addTask(task) - .addTask(new FileDownloadTask(filepath).registerPreviousResult(task).setTag("optifine")) - .addTask(new OptiFineInstaller(profile, v.selfVersion, filepath)) - .start(); + .addTask(new FileDownloadTask(filepath).registerPreviousResult(task).setTag("optifine")) + .addTask(new OptiFineInstaller(profile, v.selfVersion, filepath)) + .start(); refreshVersions(); }); }//GEN-LAST:event_btnDownloadOptifineActionPerformed @@ -1222,8 +1234,8 @@ btnRefreshLiteLoader.addActionListener(new java.awt.event.ActionListener() { url = v.universal; FileDownloadTask task = (FileDownloadTask) new FileDownloadTask(url, filepath).setTag("LiteLoader"); TaskWindow.getInstance() - .addTask(task).addTask(new LiteLoaderInstaller(profile, (LiteLoaderInstallerVersion) v).registerPreviousResult(task)) - .start(); + .addTask(task).addTask(new LiteLoaderInstaller(profile, (LiteLoaderInstallerVersion) v).registerPreviousResult(task)) + .start(); refreshVersions(); }//GEN-LAST:event_btnInstallLiteLoaderActionPerformed @@ -1332,13 +1344,15 @@ btnRefreshLiteLoader.addActionListener(new java.awt.event.ActionListener() { }//GEN-LAST:event_txtWidthFocusLost private void txtGameDirFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtGameDirFocusLost - if (profile == null) return; + if (profile == null) + return; profile.setGameDir(txtGameDir.getText()); loadVersions(); }//GEN-LAST:event_txtGameDirFocusLost private void btnChoosingJavaDirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnChoosingJavaDirActionPerformed - if (cboJava.getSelectedIndex() != 1) return; + if (cboJava.getSelectedIndex() != 1) + return; JFileChooser fc = new JFileChooser(); fc.setFileSelectionMode(JFileChooser.FILES_ONLY); fc.setDialogTitle(C.i18n("settings.choose_javapath")); @@ -1376,25 +1390,29 @@ btnRefreshLiteLoader.addActionListener(new java.awt.event.ActionListener() { fc.setFileSelectionMode(JFileChooser.FILES_ONLY); fc.setDialogTitle(C.I18N.getString("mods.choose_mod")); fc.setMultiSelectionEnabled(true); - if (fc.showOpenDialog(this) != JFileChooser.APPROVE_OPTION) return; + if (fc.showOpenDialog(this) != JFileChooser.APPROVE_OPTION) + return; boolean flag = false; for (File f : fc.getSelectedFiles()) - if (!addMod(f)) flag |= true; + if (!addMod(f)) + flag |= true; if (flag) MessageBox.Show(C.I18N.getString("mods.failed")); }//GEN-LAST:event_btnAddModActionPerformed boolean addMod(File f) { try { - if (!ModInfo.isFileMod(f) || mods == null) return false; + if (!ModInfo.isFileMod(f) || mods == null) + return false; File newf = profile.getFolder("mods"); - if (newf == null) return false; + if (newf == null) + return false; newf.mkdirs(); newf = new File(newf, f.getName()); FileUtils.copyFile(f, newf); ModInfo i = ModInfo.readModInfo(f); mods.add(i); - ((DefaultTableModel) lstExternalMods.getModel()).addRow(new Object[]{i.isActive(), i.location.getName(), i.version}); + ((DefaultTableModel) lstExternalMods.getModel()).addRow(new Object[] {i.isActive(), i.location.getName(), i.version}); return true; } catch (IOException ex) { HMCLog.warn("Failed to copy mod", ex); @@ -1460,9 +1478,11 @@ btnRefreshLiteLoader.addActionListener(new java.awt.event.ActionListener() { private void btnCleanGameActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCleanGameActionPerformed File f = getProfile().getMinecraftProvider().getRunDirectory(mcVersion); String[] dir = {"logs", "asm", "NVIDIA", "crash-reports", "server-resource-packs", "natives", "native"}; - for (String s : dir) FileUtils.deleteDirectoryQuietly(new File(f, s)); + for (String s : dir) + FileUtils.deleteDirectoryQuietly(new File(f, s)); String[] files = {"output-client.log", "usercache.json", "usernamecache.json", "hmclmc.log"}; - for (String s : files) new File(f, s).delete(); + for (String s : files) + new File(f, s).delete(); for (MinecraftVersion s : getProfile().getMinecraftProvider().getVersions()) FileUtils.deleteDirectoryQuietly(new File(getProfile().getGameDirFile(), "versions" + File.separator + s.id + File.separator + s.id + "-natives")); }//GEN-LAST:event_btnCleanGameActionPerformed @@ -1475,7 +1495,8 @@ btnRefreshLiteLoader.addActionListener(new java.awt.event.ActionListener() { Profile firstProfile = null, selectedProfile = null; int index = 0, i = 0; for (Profile s : Settings.getProfilesFiltered()) { - if (firstProfile == null) firstProfile = s; + if (firstProfile == null) + firstProfile = s; cboProfiles.addItem(s.getName()); if (Settings.getInstance().getLast() != null && Settings.getInstance().getLast().equals(s.getName())) { index = i; @@ -1483,13 +1504,15 @@ btnRefreshLiteLoader.addActionListener(new java.awt.event.ActionListener() { } i++; } - if (selectedProfile == null) selectedProfile = Settings.getOneProfile(); + if (selectedProfile == null) + selectedProfile = Settings.getOneProfile(); isLoading = false; if (index < cboProfiles.getItemCount()) { cboProfiles.setSelectedIndex(index); profile = selectedProfile; - if (profile == null) profile = firstProfile; + if (profile == null) + profile = firstProfile; prepare(profile); loadVersions(); } @@ -1498,11 +1521,13 @@ btnRefreshLiteLoader.addActionListener(new java.awt.event.ActionListener() { final Profile getProfile() { if (cboProfiles.getSelectedIndex() >= 0) return Settings.getProfile(cboProfiles.getSelectedItem().toString()); - else return null; + else + return null; } void prepare(Profile profile) { - if (profile == null) return; + if (profile == null) + return; txtWidth.setText(profile.getWidth()); txtHeight.setText(profile.getHeight()); txtMaxMemory.setText(profile.getMaxMemory()); @@ -1530,7 +1555,8 @@ btnRefreshLiteLoader.addActionListener(new java.awt.event.ActionListener() { } void loadVersions() { - if (profile == null) return; + if (profile == null) + return; isLoading = true; cboVersions.removeAllItems(); int index = 0, i = 0; @@ -1538,11 +1564,13 @@ btnRefreshLiteLoader.addActionListener(new java.awt.event.ActionListener() { String selectedMC = selVersion == null ? null : selVersion.id; for (MinecraftVersion each : profile.getMinecraftProvider().getVersions()) { cboVersions.addItem(each.id); - if (each.id.equals(selectedMC)) index = i; + if (each.id.equals(selectedMC)) + index = i; i++; } isLoading = false; - if (index < cboVersions.getItemCount()) cboVersions.setSelectedIndex(index); + if (index < cboVersions.getItemCount()) + cboVersions.setSelectedIndex(index); reloadMods(); } @@ -1563,7 +1591,8 @@ btnRefreshLiteLoader.addActionListener(new java.awt.event.ActionListener() { */ void loadMinecraftVersion(MinecraftVersion v) { txtMinecraftVersion.setText(""); - if (v == null) return; + if (v == null) + return; File minecraftJar = v.getJar(profile.getGameDirFile()); minecraftVersion = MCUtils.minecraftVersion(minecraftJar); txtMinecraftVersion.setText(MinecraftVersionRequest.getResponse(minecraftVersion)); @@ -1573,11 +1602,12 @@ btnRefreshLiteLoader.addActionListener(new java.awt.event.ActionListener() { public int assetsType; private void downloadAssets(final IAssetsHandler type) { - if (mcVersion == null || profile == null) return; + if (mcVersion == null || profile == null) + return; type.getList(profile.getMinecraftProvider().getVersionById(mcVersion), profile.getMinecraftProvider(), (value) -> { - if (value != null) - SwingUtilities.invokeLater(() -> TaskWindow.getInstance().addTask(type.getDownloadTask(Settings.getInstance().getDownloadSource().getProvider())).start()); - }); + if (value != null) + SwingUtilities.invokeLater(() -> TaskWindow.getInstance().addTask(type.getDownloadTask(Settings.getInstance().getDownloadSource().getProvider())).start()); + }); } // @@ -1593,14 +1623,16 @@ btnRefreshLiteLoader.addActionListener(new java.awt.event.ActionListener() { return true; SwingUtilities.invokeLater(() -> { DefaultTableModel model = (DefaultTableModel) lstDownloads.getModel(); - while (model.getRowCount() > 0) model.removeRow(0); + while (model.getRowCount() > 0) + model.removeRow(0); for (MinecraftRemoteVersion ver : v.versions) { Object[] line = new Object[3]; line[0] = ver.id; line[1] = ver.time; if (StrUtils.equalsOne(ver.type, "old_beta", "old_alpha", "release", "snapshot")) line[2] = C.i18n("versions." + ver.type); - else line[2] = ver.type; + else + line[2] = ver.type; model.addRow(line); } lstDownloads.updateUI(); @@ -1621,7 +1653,8 @@ btnRefreshLiteLoader.addActionListener(new java.awt.event.ActionListener() { } void downloadMinecraft(DownloadType index) { - if (profile == null) return; + if (profile == null) + return; if (lstDownloads.getSelectedRow() < 0) refreshDownloads(Settings.getInstance().getDownloadSource()); if (lstDownloads.getSelectedRow() < 0) { @@ -1687,8 +1720,8 @@ btnRefreshLiteLoader.addActionListener(new java.awt.event.ActionListener() { void refreshVersions() { list = Settings.getInstance().getDownloadSource().getProvider().getInstallerByType(id); if (TaskWindow.getInstance().addTask(new TaskRunnableArg1<>(C.i18n("install." + id + ".get_list"), list) - .registerPreviousResult(new DefaultPreviousResult<>(new String[]{getMinecraftVersionFormatted()}))) - .start()) + .registerPreviousResult(new DefaultPreviousResult<>(new String[] {getMinecraftVersionFormatted()}))) + .start()) loadVersions(); } @@ -1708,7 +1741,7 @@ btnRefreshLiteLoader.addActionListener(new java.awt.event.ActionListener() { for (InstallerVersionList.InstallerVersion v : ver) { Object a = v.selfVersion == null ? "null" : v.selfVersion; Object b = v.mcVersion == null ? "null" : v.mcVersion; - Object[] row = new Object[]{a, b}; + Object[] row = new Object[] {a, b}; model.addRow(row); } table.updateUI(); @@ -1744,7 +1777,7 @@ btnRefreshLiteLoader.addActionListener(new java.awt.event.ActionListener() { SwingUtils.clearDefaultTable(lstExternalMods); DefaultTableModel model = (DefaultTableModel) lstExternalMods.getModel(); for (ModInfo info : mods) - model.addRow(new Object[]{info.isActive(), info.getFileName(), info.version}); + model.addRow(new Object[] {info.isActive(), info.getFileName(), info.version}); } }); } @@ -1763,12 +1796,14 @@ btnRefreshLiteLoader.addActionListener(new java.awt.event.ActionListener() { public void onSelected() { loadProfiles(); - if (profile == null) return; + if (profile == null) + return; if (profile.getMinecraftProvider().getVersionCount() <= 0) versionChanged(profile, null); - else versionChanged(getProfile(), (String) cboVersions.getSelectedItem()); + else + versionChanged(getProfile(), (String) cboVersions.getSelectedItem()); } - + public void showGameDownloads() { tabVersionEdit.setSelectedComponent(pnlGameDownloads); } diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/HeaderTab.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/HeaderTab.java index 610aae381..402b0b91b 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/HeaderTab.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/HeaderTab.java @@ -29,7 +29,7 @@ import javax.swing.JLabel; * @author huangyuhui */ public class HeaderTab extends JLabel - implements MouseListener { +implements MouseListener { private boolean isActive; private final DefaultButtonModel model; diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.java index a2634dcd8..423bf5c89 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/LauncherSettingsPanel.java @@ -39,7 +39,7 @@ public class LauncherSettingsPanel extends javax.swing.JPanel { */ public LauncherSettingsPanel() { initComponents(); - + String[] strings = new String[DownloadType.values().length]; for (int i = 0; i < strings.length; i++) strings[i] = DownloadType.values()[i].getName(); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainFrame.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainFrame.java index e111fbad9..2a725a691 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainFrame.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainFrame.java @@ -186,7 +186,8 @@ public final class MainFrame extends DraggableFrame { @Override public void mouseClicked(MouseEvent e) { - if (UpdateChecker.OUT_DATED) Main.update(); + if (UpdateChecker.OUT_DATED) + Main.update(); } @Override @@ -361,7 +362,7 @@ public final class MainFrame extends DraggableFrame { int contentWidth = width - off - off; int contentHeight = height - off - off; BufferedImage contentImage = new BufferedImage(contentWidth, - contentHeight, Transparency.OPAQUE); + contentHeight, Transparency.OPAQUE); Graphics2D contentG2d = contentImage.createGraphics(); contentG2d.translate(-off, -off); paintImpl(g); diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.java index 76719e3f3..0681caf6b 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/MainPagePanel.java @@ -275,9 +275,11 @@ public class MainPagePanel extends javax.swing.JPanel { }//GEN-LAST:event_txtPlayerNameFocusLost private void cboLoginModeItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_cboLoginModeItemStateChanged - if (preaparingAuth) return; + if (preaparingAuth) + return; int index = cboLoginMode.getSelectedIndex(); - if (index < 0) return; + if (index < 0) + return; IAuthenticator l = IAuthenticator.LOGINS.get(index); if (l.isHidePasswordBox()) { @@ -289,10 +291,13 @@ public class MainPagePanel extends javax.swing.JPanel { } CardLayout cl = (CardLayout) pnlPassword.getLayout(); - if (l.isLoggedIn()) cl.last(pnlPassword); - else cl.first(pnlPassword); + if (l.isLoggedIn()) + cl.last(pnlPassword); + else + cl.first(pnlPassword); String username = Settings.getInstance().getUsername(); - if (StrUtils.isNotBlank(username)) txtPlayerName.setText(username); + if (StrUtils.isNotBlank(username)) + txtPlayerName.setText(username); Settings.getInstance().setLoginType(index); }//GEN-LAST:event_cboLoginModeItemStateChanged @@ -321,12 +326,14 @@ public class MainPagePanel extends javax.swing.JPanel { }//GEN-LAST:event_txtPasswordActionPerformed private void btnLogoutActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnLogoutActionPerformed - if (preaparingAuth) return; + if (preaparingAuth) + return; int index = cboLoginMode.getSelectedIndex(); IAuthenticator l = IAuthenticator.LOGINS.get(index); CardLayout cl = (CardLayout) pnlPassword.getLayout(); - if (l.isLoggedIn()) l.logout(); + if (l.isLoggedIn()) + l.logout(); cl.first(pnlPassword); }//GEN-LAST:event_btnLogoutActionPerformed @@ -334,22 +341,27 @@ public class MainPagePanel extends javax.swing.JPanel { if (evt.getKeyCode() == KeyEvent.VK_ENTER) { Settings.getInstance().setUsername(txtPlayerName.getText()); int index = cboLoginMode.getSelectedIndex(); - if (index < 0) return; + if (index < 0) + return; IAuthenticator l = IAuthenticator.LOGINS.get(index); - if (l.isHidePasswordBox()) btnRunActionPerformed(); - else if (!l.isLoggedIn()) txtPassword.requestFocus(); + if (l.isHidePasswordBox()) + btnRunActionPerformed(); + else if (!l.isLoggedIn()) + txtPassword.requestFocus(); } }//GEN-LAST:event_txtPlayerNameKeyPressed private void txtPasswordKeyPressed(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtPasswordKeyPressed - if (evt.getKeyCode() == KeyEvent.VK_ENTER) btnRunActionPerformed(); + if (evt.getKeyCode() == KeyEvent.VK_ENTER) + btnRunActionPerformed(); }//GEN-LAST:event_txtPasswordKeyPressed boolean isLaunching = false; // void genLaunchCode(final Consumer listener) { - if (isLaunching || getCurrentProfile() == null) return; + if (isLaunching || getCurrentProfile() == null) + return; isLaunching = true; HMCLog.log("Start generating launching command..."); File file = getCurrentProfile().getCanonicalGameDirFile(); @@ -379,7 +391,8 @@ public class MainPagePanel extends javax.swing.JPanel { Thread.currentThread().setName("Game Launcher"); DefaultGameLauncher gl = new DefaultGameLauncher(getCurrentProfile(), li, l, Settings.getInstance().getDownloadSource()); gl.failEvent.register((sender, s) -> { - if (s != null) MessageBox.Show(s); + if (s != null) + MessageBox.Show(s); MainFrame.instance.closeMessage(); isLaunching = false; return true; @@ -417,7 +430,8 @@ public class MainPagePanel extends javax.swing.JPanel { } void loadFromSettings() { - for (Profile s : Settings.getProfilesFiltered()) cboProfiles.addItem(s.getName()); + for (Profile s : Settings.getProfilesFiltered()) + cboProfiles.addItem(s.getName()); } boolean showedNoVersion = false; @@ -433,7 +447,7 @@ public class MainPagePanel extends javax.swing.JPanel { if (getCurrentProfile().getMinecraftProvider().getVersions().isEmpty()) { if (!showedNoVersion) SwingUtilities.invokeLater(() -> { - if(MessageBox.Show(C.i18n("mainwindow.no_version"), MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION) { + if (MessageBox.Show(C.i18n("mainwindow.no_version"), MessageBox.YES_NO_OPTION) == MessageBox.YES_OPTION) { MainFrame.instance.selectTab("game"); MainFrame.instance.gamePanel.showGameDownloads(); } @@ -441,12 +455,15 @@ public class MainPagePanel extends javax.swing.JPanel { }); } else { for (MinecraftVersion mcVersion : getCurrentProfile().getMinecraftProvider().getVersions()) { - if (mcVersion.hidden) continue; + if (mcVersion.hidden) + continue; cboVersions.addItem(mcVersion.id); - if (mcVersion.id.equals(selectedMC)) index = i; + if (mcVersion.id.equals(selectedMC)) + index = i; i++; } - if (index < cboVersions.getItemCount()) cboVersions.setSelectedIndex(index); + if (index < cboVersions.getItemCount()) + cboVersions.setSelectedIndex(index); } } isLoading = false; @@ -492,7 +509,7 @@ public class MainPagePanel extends javax.swing.JPanel { value.successEvent.register(new PrepareAuthDoneListener()); }); } - + public void btnMakeLaunchCodeActionPerformed() { MainFrame.instance.showMessage(C.i18n("ui.message.launching")); genLaunchCode(value -> { diff --git a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/NewProfileWindow.java b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/NewProfileWindow.java index 17984589d..12dda0599 100644 --- a/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/NewProfileWindow.java +++ b/HMCL/src/main/java/org/jackhuang/hellominecraft/launcher/views/NewProfileWindow.java @@ -147,7 +147,6 @@ public final class NewProfileWindow extends javax.swing.JDialog { this.dispose(); }//GEN-LAST:event_btnCancelActionPerformed - // Variables declaration - do not modify//GEN-BEGIN:variables private javax.swing.JButton btnCancel; private javax.swing.JButton btnOK; diff --git a/HMCLAPI/build.gradle b/HMCLAPI/build.gradle index fa89c67ee..f960a8de3 100644 --- a/HMCLAPI/build.gradle +++ b/HMCLAPI/build.gradle @@ -21,7 +21,7 @@ if (!hasProperty('mainClass')) { } if (System.getenv("BUILD_NUMBER") != null) - version = System.getenv("BUILD_NUMBER") +version = System.getenv("BUILD_NUMBER") buildscript { repositories { diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/C.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/C.java index 77a26f9e3..3775e2ed1 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/C.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/C.java @@ -30,12 +30,12 @@ public final class C { public static final Gson gson = new Gson(); public static final ResourceBundle I18N; - + static { ResourceBundle rb = null; try { rb = ResourceBundle.getBundle("org/jackhuang/hellominecraft/launcher/I18N"); - } catch(Throwable t) { + } catch (Throwable t) { rb = null; System.out.println("Did you delete I18N.properties?"); t.printStackTrace(); diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/AppenderControl.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/AppenderControl.java index b52330f79..ac9e1290d 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/AppenderControl.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/AppenderControl.java @@ -26,45 +26,42 @@ public class AppenderControl { private final int intLevel; public AppenderControl(IAppender appender, Level level) { - this.appender = appender; - this.level = level; - this.intLevel = (level == null ? Level.ALL.level : level.level); + this.appender = appender; + this.level = level; + this.intLevel = (level == null ? Level.ALL.level : level.level); } public IAppender getAppender() { - return this.appender; + return this.appender; } public void callAppender(LogEvent event) { - if ((this.level != null) - && (this.intLevel < event.level.level)) { - return; - } + if ((this.level != null) + && (this.intLevel < event.level.level)) + return; - if (this.recursive.get() != null) { - System.err.println("Recursive call to appender " + this.appender.getName()); - return; - } - try { - this.recursive.set(this); + if (this.recursive.get() != null) { + System.err.println("Recursive call to appender " + this.appender.getName()); + return; + } + try { + this.recursive.set(this); - try { - this.appender.append(event); - } catch (RuntimeException ex) { - System.err.println("An exception occurred processing Appender " + this.appender.getName()); - ex.printStackTrace(); - if (!this.appender.ignoreExceptions()) { - throw ex; - } - } catch (Exception ex) { - System.err.println("An exception occurred processing Appender " + this.appender.getName()); - ex.printStackTrace(); - if (!this.appender.ignoreExceptions()) { - throw new LoggingException(ex); - } - } - } finally { - this.recursive.set(null); - } + try { + this.appender.append(event); + } catch (RuntimeException ex) { + System.err.println("An exception occurred processing Appender " + this.appender.getName()); + ex.printStackTrace(); + if (!this.appender.ignoreExceptions()) + throw ex; + } catch (Exception ex) { + System.err.println("An exception occurred processing Appender " + this.appender.getName()); + ex.printStackTrace(); + if (!this.appender.ignoreExceptions()) + throw new LoggingException(ex); + } + } finally { + this.recursive.set(null); + } } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/Configuration.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/Configuration.java index be07ac4c7..39e8e36d9 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/Configuration.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/Configuration.java @@ -25,16 +25,15 @@ import org.jackhuang.hellominecraft.logging.layout.DefaultLayout; * * @author huangyuhui */ - public class Configuration { - + public ArrayList appenders = new ArrayList(); - + public static Configuration DEFAULT; - + static { - DEFAULT = new Configuration(); - DEFAULT.appenders.add(new ConsoleAppender("Console", new DefaultLayout(), true, new ConsoleAppender.SystemOutStream(), true)); + DEFAULT = new Configuration(); + DEFAULT.appenders.add(new ConsoleAppender("Console", new DefaultLayout(), true, new ConsoleAppender.SystemOutStream(), true)); } - + } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/Level.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/Level.java index 848171192..2d715e1f9 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/Level.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/Level.java @@ -73,7 +73,7 @@ public enum Level { level = DEBUG; } else { if (line.contains("[INFO]") || line.contains("[CONFIG]") || line.contains("[FINE]") - || line.contains("[FINER]") || line.contains("[FINEST]")) + || line.contains("[FINER]") || line.contains("[FINEST]")) level = INFO; if (line.contains("[SEVERE]") || line.contains("[STDERR]")) level = ERROR; @@ -84,12 +84,12 @@ public enum Level { } if (line.contains("overwriting existing")) return FATAL; - + if (line.contains("Exception in thread") - || line.matches("\\s+at " + JAVA_SYMBOL) - || line.matches("Caused by: " + JAVA_SYMBOL) - || line.matches("([a-zA-Z_$][a-zA-Z\\d_$]*\\.)+[a-zA-Z_$]?[a-zA-Z\\d_$]*(Exception|Error|Throwable)") - || line.matches("... \\d+ more$")) + || line.matches("\\s+at " + JAVA_SYMBOL) + || line.matches("Caused by: " + JAVA_SYMBOL) + || line.matches("([a-zA-Z_$][a-zA-Z\\d_$]*\\.)+[a-zA-Z_$]?[a-zA-Z\\d_$]*(Exception|Error|Throwable)") + || line.matches("... \\d+ more$")) return ERROR; return level; } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/LogEvent.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/LogEvent.java index eaec04e7c..3f620ecbb 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/LogEvent.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/LogEvent.java @@ -23,10 +23,10 @@ import org.jackhuang.hellominecraft.logging.message.IMessage; * @author huangyuhui */ public class LogEvent { - + public Level level; public String threadName; public Throwable thrown; public IMessage message; - + } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/LoggingException.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/LoggingException.java index 911f6edba..0fb34dfd1 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/LoggingException.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/LoggingException.java @@ -23,7 +23,7 @@ package org.jackhuang.hellominecraft.logging; public class LoggingException extends RuntimeException { public LoggingException(Exception e) { - super(e); + super(e); } - + } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/AbstractAppender.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/AbstractAppender.java index 196e7d3fb..12eca7f67 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/AbstractAppender.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/AbstractAppender.java @@ -30,27 +30,27 @@ public abstract class AbstractAppender implements IAppender { private final boolean ignoreExceptions; public AbstractAppender(String name, ILayout layout) { - this(name, layout, true); + this(name, layout, true); } public AbstractAppender(String name, ILayout layout, boolean ignoreExceptions) { - this.name = name; - this.layout = layout; - this.ignoreExceptions = ignoreExceptions; + this.name = name; + this.layout = layout; + this.ignoreExceptions = ignoreExceptions; } @Override public String getName() { - return name; + return name; } @Override public boolean ignoreExceptions() { - return ignoreExceptions; + return ignoreExceptions; } @Override public ILayout getLayout() { - return this.layout; + return this.layout; } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/ConsoleAppender.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/ConsoleAppender.java index 478f85453..87a0b5b44 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/ConsoleAppender.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/ConsoleAppender.java @@ -28,62 +28,62 @@ import org.jackhuang.hellominecraft.logging.layout.ILayout; public class ConsoleAppender extends OutputStreamAppender { public ConsoleAppender(String name, ILayout layout, boolean ignoreExceptions, OutputStream stream, boolean immediateFlush) { - super(name, layout, ignoreExceptions, stream, true); + super(name, layout, ignoreExceptions, stream, true); } public static class SystemOutStream extends OutputStream { - @Override - public void close() { - } + @Override + public void close() { + } - @Override - public void flush() { - System.out.flush(); - } + @Override + public void flush() { + System.out.flush(); + } - @Override - public void write(byte[] b) throws IOException { - System.out.write(b); - } + @Override + public void write(byte[] b) throws IOException { + System.out.write(b); + } - @Override - public void write(byte[] b, int off, int len) - throws IOException { - System.out.write(b, off, len); - } + @Override + public void write(byte[] b, int off, int len) + throws IOException { + System.out.write(b, off, len); + } - @Override - public void write(int b) throws IOException { - System.out.write(b); - } + @Override + public void write(int b) throws IOException { + System.out.write(b); + } } public static class SystemErrStream extends OutputStream { - @Override - public void close() { - } + @Override + public void close() { + } - @Override - public void flush() { - System.err.flush(); - } + @Override + public void flush() { + System.err.flush(); + } - @Override - public void write(byte[] b) throws IOException { - System.err.write(b); - } + @Override + public void write(byte[] b) throws IOException { + System.err.write(b); + } - @Override - public void write(byte[] b, int off, int len) - throws IOException { - System.err.write(b, off, len); - } + @Override + public void write(byte[] b, int off, int len) + throws IOException { + System.err.write(b, off, len); + } - @Override - public void write(int b) { - System.err.write(b); - } + @Override + public void write(int b) { + System.err.write(b); + } } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/IAppender.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/IAppender.java index 6a8801264..54ae06e3b 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/IAppender.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/IAppender.java @@ -25,10 +25,13 @@ import org.jackhuang.hellominecraft.logging.layout.ILayout; * @author huangyuhui */ public interface IAppender { - + void append(LogEvent event); + String getName(); + boolean ignoreExceptions(); + ILayout getLayout(); - + } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/OutputStreamAppender.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/OutputStreamAppender.java index f4c11a259..77afaa6a9 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/OutputStreamAppender.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/appender/OutputStreamAppender.java @@ -37,27 +37,26 @@ public abstract class OutputStreamAppender extends AbstractAppender { private final Lock readLock = new ReentrantReadWriteLock().readLock(); public OutputStreamAppender(String name, ILayout layout, boolean ignoreExceptions, OutputStream stream, boolean immediateFlush) { - super(name, layout, ignoreExceptions); + super(name, layout, ignoreExceptions); - this.immediateFlush = immediateFlush; - this.stream = stream; + this.immediateFlush = immediateFlush; + this.stream = stream; } @Override public void append(LogEvent event) { - this.readLock.lock(); - try { - byte[] bytes = getLayout().toByteArray(event); - if (bytes.length > 0) { - stream.write(bytes); - } - if(event.thrown != null) - event.thrown.printStackTrace(new PrintStream(stream)); - } catch (IOException ex) { - System.err.println("Unable to write to stream for appender: " + getName()); - throw new LoggingException(ex); - } finally { - this.readLock.unlock(); - } + this.readLock.lock(); + try { + byte[] bytes = getLayout().toByteArray(event); + if (bytes.length > 0) + stream.write(bytes); + if (event.thrown != null) + event.thrown.printStackTrace(new PrintStream(stream)); + } catch (IOException ex) { + System.err.println("Unable to write to stream for appender: " + getName()); + throw new LoggingException(ex); + } finally { + this.readLock.unlock(); + } } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/AbstractStringLayout.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/AbstractStringLayout.java index 0b362e896..873cb5181 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/AbstractStringLayout.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/AbstractStringLayout.java @@ -26,7 +26,7 @@ public abstract class AbstractStringLayout implements ILayout { @Override public byte[] toByteArray(LogEvent event) { - return toSerializable(event).getBytes(); + return toSerializable(event).getBytes(); } - + } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/DefaultLayout.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/DefaultLayout.java index b350a108f..847bfe87d 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/DefaultLayout.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/DefaultLayout.java @@ -25,11 +25,12 @@ import org.jackhuang.hellominecraft.logging.LogEvent; * @author huangyuhui */ public class DefaultLayout extends AbstractStringLayout { + private static final SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss"); @Override public String toSerializable(LogEvent event) { - return "[" + sdf.format(new Date()) + "] [" + event.threadName + "/" + event.level.name() + "] " + event.message.getFormattedMessage() + "\n"; + return "[" + sdf.format(new Date()) + "] [" + event.threadName + "/" + event.level.name() + "] " + event.message.getFormattedMessage() + "\n"; } - + } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/ILayout.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/ILayout.java index 560cbd431..27888f79e 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/ILayout.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/layout/ILayout.java @@ -25,8 +25,9 @@ import org.jackhuang.hellominecraft.logging.LogEvent; * @param */ public interface ILayout { - + byte[] toByteArray(LogEvent event); + T toSerializable(LogEvent event); - + } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/AbstractLogger.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/AbstractLogger.java index 0912c5c46..412f748fb 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/AbstractLogger.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/AbstractLogger.java @@ -23,7 +23,7 @@ import org.jackhuang.hellominecraft.logging.message.ParameterizedMessageFactory; import org.jackhuang.hellominecraft.logging.message.StringFormattedMessage; public abstract class AbstractLogger - implements ILogger { +implements ILogger { public static final Class DEFAULT_MESSAGE_FACTORY_CLASS = ParameterizedMessageFactory.class; @@ -34,278 +34,249 @@ public abstract class AbstractLogger private final IMessageFactory messageFactory; public AbstractLogger() { - this.name = getClass().getName(); - this.messageFactory = createDefaultMessageFactory(); + this.name = getClass().getName(); + this.messageFactory = createDefaultMessageFactory(); } public AbstractLogger(String name) { - this.name = name; - this.messageFactory = createDefaultMessageFactory(); + this.name = name; + this.messageFactory = createDefaultMessageFactory(); } public AbstractLogger(String name, IMessageFactory messageFactory) { - this.name = name; - this.messageFactory = (messageFactory == null ? createDefaultMessageFactory() : messageFactory); + this.name = name; + this.messageFactory = (messageFactory == null ? createDefaultMessageFactory() : messageFactory); } private IMessageFactory createDefaultMessageFactory() { - try { - return (IMessageFactory) DEFAULT_MESSAGE_FACTORY_CLASS.newInstance(); - } catch (InstantiationException e) { - throw new IllegalStateException(e); - } catch (IllegalAccessException e) { - throw new IllegalStateException(e); - } + try { + return (IMessageFactory) DEFAULT_MESSAGE_FACTORY_CLASS.newInstance(); + } catch (InstantiationException e) { + throw new IllegalStateException(e); + } catch (IllegalAccessException e) { + throw new IllegalStateException(e); + } } @Override public void catching(Level level, Throwable t) { - if (isEnabled(level, (Object) null, null)) { - log(level, this.messageFactory.newMessage(CATCHING), t); - } + if (isEnabled(level, (Object) null, null)) + log(level, this.messageFactory.newMessage(CATCHING), t); } @Override public void catching(Throwable t) { - catching(Level.ERROR, t); + catching(Level.ERROR, t); } @Override public void debug(IMessage msg) { - if (isEnabled(Level.DEBUG, msg, null)) { - log(Level.DEBUG, msg, null); - } + if (isEnabled(Level.DEBUG, msg, null)) + log(Level.DEBUG, msg, null); } @Override public void debug(IMessage msg, Throwable t) { - if (isEnabled(Level.DEBUG, msg, t)) { - log(Level.DEBUG, msg, t); - } + if (isEnabled(Level.DEBUG, msg, t)) + log(Level.DEBUG, msg, t); } @Override public void debug(Object message) { - if (isEnabled(Level.DEBUG, message, null)) { - log(Level.DEBUG, this.messageFactory.newMessage(message), null); - } + if (isEnabled(Level.DEBUG, message, null)) + log(Level.DEBUG, this.messageFactory.newMessage(message), null); } @Override public void debug(Object message, Throwable t) { - if (isEnabled(Level.DEBUG, message, t)) { - log(Level.DEBUG, this.messageFactory.newMessage(message), t); - } + if (isEnabled(Level.DEBUG, message, t)) + log(Level.DEBUG, this.messageFactory.newMessage(message), t); } @Override public void debug(String message) { - if (isEnabled(Level.DEBUG, message)) { - log(Level.DEBUG, this.messageFactory.newMessage(message), null); - } + if (isEnabled(Level.DEBUG, message)) + log(Level.DEBUG, this.messageFactory.newMessage(message), null); } @Override public void debug(String message, Object[] params) { - if (isEnabled(Level.DEBUG, message, params)) { - IMessage msg = this.messageFactory.newMessage(message, params); - log(Level.DEBUG, msg, msg.getThrowable()); - } + if (isEnabled(Level.DEBUG, message, params)) { + IMessage msg = this.messageFactory.newMessage(message, params); + log(Level.DEBUG, msg, msg.getThrowable()); + } } @Override public void debug(String message, Throwable t) { - if (isEnabled(Level.DEBUG, message, t)) { - log(Level.DEBUG, this.messageFactory.newMessage(message), t); - } + if (isEnabled(Level.DEBUG, message, t)) + log(Level.DEBUG, this.messageFactory.newMessage(message), t); } @Override public void entry() { - entry(new Object[0]); + entry(new Object[0]); } @Override public void entry(Object[] params) { - if (isEnabled(Level.TRACE, (Object) null, null)) { - log(Level.TRACE, entryMsg(params.length, params), null); - } + if (isEnabled(Level.TRACE, (Object) null, null)) + log(Level.TRACE, entryMsg(params.length, params), null); } private IMessage entryMsg(int count, Object[] params) { - if (count == 0) { - return this.messageFactory.newMessage("entry"); - } - StringBuilder sb = new StringBuilder("entry params("); - int i = 0; - for (Object parm : params) { - if (parm != null) { - sb.append(parm.toString()); - } else { - sb.append("null"); - } - i++; - if (i < params.length) { - sb.append(", "); - } - } - sb.append(")"); - return this.messageFactory.newMessage(sb.toString()); + if (count == 0) + return this.messageFactory.newMessage("entry"); + StringBuilder sb = new StringBuilder("entry params("); + int i = 0; + for (Object parm : params) { + if (parm != null) + sb.append(parm.toString()); + else + sb.append("null"); + i++; + if (i < params.length) + sb.append(", "); + } + sb.append(")"); + return this.messageFactory.newMessage(sb.toString()); } @Override public void error(IMessage msg) { - if (isEnabled(Level.ERROR, msg, null)) { - log(Level.ERROR, msg, null); - } + if (isEnabled(Level.ERROR, msg, null)) + log(Level.ERROR, msg, null); } @Override public void error(IMessage msg, Throwable t) { - if (isEnabled(Level.ERROR, msg, t)) { - log(Level.ERROR, msg, t); - } + if (isEnabled(Level.ERROR, msg, t)) + log(Level.ERROR, msg, t); } @Override public void error(Object message) { - if (isEnabled(Level.ERROR, message, null)) { - log(Level.ERROR, this.messageFactory.newMessage(message), null); - } + if (isEnabled(Level.ERROR, message, null)) + log(Level.ERROR, this.messageFactory.newMessage(message), null); } @Override public void error(Object message, Throwable t) { - if (isEnabled(Level.ERROR, message, t)) { - log(Level.ERROR, this.messageFactory.newMessage(message), t); - } + if (isEnabled(Level.ERROR, message, t)) + log(Level.ERROR, this.messageFactory.newMessage(message), t); } @Override public void error(String message) { - if (isEnabled(Level.ERROR, message)) { - log(Level.ERROR, this.messageFactory.newMessage(message), null); - } + if (isEnabled(Level.ERROR, message)) + log(Level.ERROR, this.messageFactory.newMessage(message), null); } @Override public void error(String message, Object[] params) { - if (isEnabled(Level.ERROR, message, params)) { - IMessage msg = this.messageFactory.newMessage(message, params); - log(Level.ERROR, msg, msg.getThrowable()); - } + if (isEnabled(Level.ERROR, message, params)) { + IMessage msg = this.messageFactory.newMessage(message, params); + log(Level.ERROR, msg, msg.getThrowable()); + } } @Override public void error(String message, Throwable t) { - if (isEnabled(Level.ERROR, message, t)) { - log(Level.ERROR, this.messageFactory.newMessage(message), t); - } + if (isEnabled(Level.ERROR, message, t)) + log(Level.ERROR, this.messageFactory.newMessage(message), t); } @Override public void fatal(IMessage msg) { - if (isEnabled(Level.FATAL, msg, null)) { - log(Level.FATAL, msg, null); - } + if (isEnabled(Level.FATAL, msg, null)) + log(Level.FATAL, msg, null); } @Override public void fatal(IMessage msg, Throwable t) { - if (isEnabled(Level.FATAL, msg, t)) { - log(Level.FATAL, msg, t); - } + if (isEnabled(Level.FATAL, msg, t)) + log(Level.FATAL, msg, t); } @Override public void fatal(Object message) { - if (isEnabled(Level.FATAL, message, null)) { - log(Level.FATAL, this.messageFactory.newMessage(message), null); - } + if (isEnabled(Level.FATAL, message, null)) + log(Level.FATAL, this.messageFactory.newMessage(message), null); } @Override public void fatal(Object message, Throwable t) { - if (isEnabled(Level.FATAL, message, t)) { - log(Level.FATAL, this.messageFactory.newMessage(message), t); - } + if (isEnabled(Level.FATAL, message, t)) + log(Level.FATAL, this.messageFactory.newMessage(message), t); } @Override public void fatal(String message) { - if (isEnabled(Level.FATAL, message)) { - log(Level.FATAL, this.messageFactory.newMessage(message), null); - } + if (isEnabled(Level.FATAL, message)) + log(Level.FATAL, this.messageFactory.newMessage(message), null); } @Override public void fatal(String message, Object[] params) { - if (isEnabled(Level.FATAL, message, params)) { - IMessage msg = this.messageFactory.newMessage(message, params); - log(Level.FATAL, msg, msg.getThrowable()); - } + if (isEnabled(Level.FATAL, message, params)) { + IMessage msg = this.messageFactory.newMessage(message, params); + log(Level.FATAL, msg, msg.getThrowable()); + } } @Override public void fatal(String message, Throwable t) { - if (isEnabled(Level.FATAL, message, t)) { - log(Level.FATAL, this.messageFactory.newMessage(message), t); - } + if (isEnabled(Level.FATAL, message, t)) + log(Level.FATAL, this.messageFactory.newMessage(message), t); } @Override public String getName() { - return this.name; + return this.name; } @Override public void info(IMessage msg) { - if (isEnabled(Level.INFO, msg, null)) { - log(Level.INFO, msg, null); - } + if (isEnabled(Level.INFO, msg, null)) + log(Level.INFO, msg, null); } @Override public void info(IMessage msg, Throwable t) { - if (isEnabled(Level.INFO, msg, t)) { - log(Level.INFO, msg, t); - } + if (isEnabled(Level.INFO, msg, t)) + log(Level.INFO, msg, t); } @Override public void info(Object message) { - if (isEnabled(Level.INFO, message, null)) { - log(Level.INFO, this.messageFactory.newMessage(message), null); - } + if (isEnabled(Level.INFO, message, null)) + log(Level.INFO, this.messageFactory.newMessage(message), null); } @Override public void info(Object message, Throwable t) { - if (isEnabled(Level.INFO, message, t)) { - log(Level.INFO, this.messageFactory.newMessage(message), t); - } + if (isEnabled(Level.INFO, message, t)) + log(Level.INFO, this.messageFactory.newMessage(message), t); } @Override public void info(String message) { - if (isEnabled(Level.INFO, message)) { - log(Level.INFO, this.messageFactory.newMessage(message), null); - } + if (isEnabled(Level.INFO, message)) + log(Level.INFO, this.messageFactory.newMessage(message), null); } @Override public void info(String message, Object[] params) { - if (isEnabled(Level.INFO, message, params)) { - IMessage msg = this.messageFactory.newMessage(message, params); - log(Level.INFO, msg, msg.getThrowable()); - } + if (isEnabled(Level.INFO, message, params)) { + IMessage msg = this.messageFactory.newMessage(message, params); + log(Level.INFO, msg, msg.getThrowable()); + } } @Override public void info(String message, Throwable t) { - if (isEnabled(Level.INFO, message, t)) { - log(Level.INFO, this.messageFactory.newMessage(message), t); - } + if (isEnabled(Level.INFO, message, t)) + log(Level.INFO, this.messageFactory.newMessage(message), t); } protected abstract boolean isEnabled(Level paramLevel, IMessage paramIMessage, Throwable paramThrowable); @@ -322,213 +293,194 @@ public abstract class AbstractLogger @Override public boolean isErrorEnabled() { - return isEnabled(Level.ERROR); + return isEnabled(Level.ERROR); } @Override public boolean isFatalEnabled() { - return isEnabled(Level.FATAL); + return isEnabled(Level.FATAL); } @Override public boolean isInfoEnabled() { - return isEnabled(Level.INFO); + return isEnabled(Level.INFO); } @Override public boolean isTraceEnabled() { - return isEnabled(Level.TRACE); + return isEnabled(Level.TRACE); } @Override public boolean isWarnEnabled() { - return isEnabled(Level.WARN); + return isEnabled(Level.WARN); } @Override public boolean isDebugEnabled() { - return isEnabled(Level.DEBUG); + return isEnabled(Level.DEBUG); } @Override public boolean isEnabled(Level level) { - return isEnabled(level, (Object) null, null); + return isEnabled(level, (Object) null, null); } @Override public void log(Level level, IMessage msg) { - if (isEnabled(level, msg, null)) { - log(level, msg, null); - } + if (isEnabled(level, msg, null)) + log(level, msg, null); } @Override public void log(Level level, IMessage msg, Throwable t) { - if (isEnabled(level, msg, t)) { - abstractLog(level, msg, t); - } + if (isEnabled(level, msg, t)) + abstractLog(level, msg, t); } @Override public void log(Level level, Object message) { - if (isEnabled(level, message, null)) { - log(level, this.messageFactory.newMessage(message), null); - } + if (isEnabled(level, message, null)) + log(level, this.messageFactory.newMessage(message), null); } @Override public void log(Level level, Object message, Throwable t) { - if (isEnabled(level, message, t)) { - log(level, this.messageFactory.newMessage(message), t); - } + if (isEnabled(level, message, t)) + log(level, this.messageFactory.newMessage(message), t); } @Override public void log(Level level, String message) { - if (isEnabled(level, message)) { - log(level, this.messageFactory.newMessage(message), null); - } + if (isEnabled(level, message)) + log(level, this.messageFactory.newMessage(message), null); } @Override public void log(Level level, String message, Object[] params) { - if (isEnabled(level, message, params)) { - IMessage msg = this.messageFactory.newMessage(message, params); - log(level, msg, msg.getThrowable()); - } + if (isEnabled(level, message, params)) { + IMessage msg = this.messageFactory.newMessage(message, params); + log(level, msg, msg.getThrowable()); + } } @Override public void log(Level level, String message, Throwable t) { - if (isEnabled(level, message, t)) { - log(level, this.messageFactory.newMessage(message), t); - } + if (isEnabled(level, message, t)) + log(level, this.messageFactory.newMessage(message), t); } @Override public void printf(Level level, String format, Object[] params) { - if (isEnabled(level, format, params)) { - IMessage msg = new StringFormattedMessage(format, params); - log(level, msg, msg.getThrowable()); - } + if (isEnabled(level, format, params)) { + IMessage msg = new StringFormattedMessage(format, params); + log(level, msg, msg.getThrowable()); + } } @Override public T throwing(T t) { - return throwing(Level.ERROR, t); + return throwing(Level.ERROR, t); } @Override public T throwing(Level level, T t) { - if (isEnabled(level, (Object) null, null)) { - log(level, this.messageFactory.newMessage(THROWING), t); - } - return t; + if (isEnabled(level, (Object) null, null)) + log(level, this.messageFactory.newMessage(THROWING), t); + return t; } @Override public String toString() { - return this.name; + return this.name; } @Override public void trace(IMessage msg) { - if (isEnabled(Level.TRACE, msg, null)) { - log(Level.TRACE, msg, null); - } + if (isEnabled(Level.TRACE, msg, null)) + log(Level.TRACE, msg, null); } @Override public void trace(IMessage msg, Throwable t) { - if (isEnabled(Level.TRACE, msg, t)) { - log(Level.TRACE, msg, t); - } + if (isEnabled(Level.TRACE, msg, t)) + log(Level.TRACE, msg, t); } @Override public void trace(Object message) { - if (isEnabled(Level.TRACE, message, null)) { - log(Level.TRACE, this.messageFactory.newMessage(message), null); - } + if (isEnabled(Level.TRACE, message, null)) + log(Level.TRACE, this.messageFactory.newMessage(message), null); } @Override public void trace(Object message, Throwable t) { - if (isEnabled(Level.TRACE, message, t)) { - log(Level.TRACE, this.messageFactory.newMessage(message), t); - } + if (isEnabled(Level.TRACE, message, t)) + log(Level.TRACE, this.messageFactory.newMessage(message), t); } @Override public void trace(String message) { - if (isEnabled(Level.TRACE, message)) { - log(Level.TRACE, this.messageFactory.newMessage(message), null); - } + if (isEnabled(Level.TRACE, message)) + log(Level.TRACE, this.messageFactory.newMessage(message), null); } @Override public void trace(String message, Object[] params) { - if (isEnabled(Level.TRACE, message, params)) { - IMessage msg = this.messageFactory.newMessage(message, params); - log(Level.TRACE, msg, msg.getThrowable()); - } + if (isEnabled(Level.TRACE, message, params)) { + IMessage msg = this.messageFactory.newMessage(message, params); + log(Level.TRACE, msg, msg.getThrowable()); + } } @Override public void trace(String message, Throwable t) { - if (isEnabled(Level.TRACE, message, t)) { - log(Level.TRACE, this.messageFactory.newMessage(message), t); - } + if (isEnabled(Level.TRACE, message, t)) + log(Level.TRACE, this.messageFactory.newMessage(message), t); } @Override public void warn(IMessage msg) { - if (isEnabled(Level.WARN, msg, null)) { - log(Level.WARN, msg, null); - } + if (isEnabled(Level.WARN, msg, null)) + log(Level.WARN, msg, null); } @Override public void warn(IMessage msg, Throwable t) { - if (isEnabled(Level.WARN, msg, t)) { - log(Level.WARN, msg, t); - } + if (isEnabled(Level.WARN, msg, t)) + log(Level.WARN, msg, t); } @Override public void warn(Object message) { - if (isEnabled(Level.WARN, message, null)) { - log(Level.WARN, this.messageFactory.newMessage(message), null); - } + if (isEnabled(Level.WARN, message, null)) + log(Level.WARN, this.messageFactory.newMessage(message), null); } @Override public void warn(Object message, Throwable t) { - if (isEnabled(Level.WARN, message, t)) { - log(Level.WARN, this.messageFactory.newMessage(message), t); - } + if (isEnabled(Level.WARN, message, t)) + log(Level.WARN, this.messageFactory.newMessage(message), t); } @Override public void warn(String message) { - if (isEnabled(Level.WARN, message)) { - log(Level.WARN, this.messageFactory.newMessage(message), null); - } + if (isEnabled(Level.WARN, message)) + log(Level.WARN, this.messageFactory.newMessage(message), null); } @Override public void warn(String message, Object[] params) { - if (isEnabled(Level.WARN, message, params)) { - IMessage msg = this.messageFactory.newMessage(message, params); - log(Level.WARN, msg, msg.getThrowable()); - } + if (isEnabled(Level.WARN, message, params)) { + IMessage msg = this.messageFactory.newMessage(message, params); + log(Level.WARN, msg, msg.getThrowable()); + } } @Override public void warn(String message, Throwable t) { - if (isEnabled(Level.WARN, message, t)) { - log(Level.WARN, this.messageFactory.newMessage(message), t); - } + if (isEnabled(Level.WARN, message, t)) + log(Level.WARN, this.messageFactory.newMessage(message), t); } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/ILogger.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/ILogger.java index 8ea81d94e..9e0e1bcd8 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/ILogger.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/ILogger.java @@ -24,133 +24,133 @@ import org.jackhuang.hellominecraft.logging.message.IMessage; * @author huangyuhui */ public interface ILogger { - - void catching(Level paramLevel, Throwable paramThrowable); - void catching(Throwable paramThrowable); + void catching(Level paramLevel, Throwable paramThrowable); - void debug(IMessage paramIMessage); + void catching(Throwable paramThrowable); - void debug(IMessage paramIMessage, Throwable paramThrowable); + void debug(IMessage paramIMessage); - void debug(Object paramObject); + void debug(IMessage paramIMessage, Throwable paramThrowable); - void debug(Object paramObject, Throwable paramThrowable); + void debug(Object paramObject); - void debug(String paramString); + void debug(Object paramObject, Throwable paramThrowable); - void debug(String paramString, Object[] paramArrayOfObject); + void debug(String paramString); - void debug(String paramString, Throwable paramThrowable); + void debug(String paramString, Object[] paramArrayOfObject); - void entry(); + void debug(String paramString, Throwable paramThrowable); - void entry(Object[] paramArrayOfObject); + void entry(); - void error(IMessage paramIMessage); + void entry(Object[] paramArrayOfObject); - void error(IMessage paramIMessage, Throwable paramThrowable); + void error(IMessage paramIMessage); - void error(Object paramObject); + void error(IMessage paramIMessage, Throwable paramThrowable); - void error(Object paramObject, Throwable paramThrowable); + void error(Object paramObject); - void error(String paramString); + void error(Object paramObject, Throwable paramThrowable); - void error(String paramString, Object[] paramArrayOfObject); + void error(String paramString); - void error(String paramString, Throwable paramThrowable); + void error(String paramString, Object[] paramArrayOfObject); - void fatal(IMessage paramIMessage); + void error(String paramString, Throwable paramThrowable); - void fatal(IMessage paramIMessage, Throwable paramThrowable); + void fatal(IMessage paramIMessage); - void fatal(Object paramObject); + void fatal(IMessage paramIMessage, Throwable paramThrowable); - void fatal(Object paramObject, Throwable paramThrowable); + void fatal(Object paramObject); - void fatal(String paramString); + void fatal(Object paramObject, Throwable paramThrowable); - void fatal(String paramString, Object[] paramArrayOfObject); + void fatal(String paramString); - void fatal(String paramString, Throwable paramThrowable); + void fatal(String paramString, Object[] paramArrayOfObject); - String getName(); + void fatal(String paramString, Throwable paramThrowable); - void info(IMessage paramIMessage); + String getName(); - void info(IMessage paramIMessage, Throwable paramThrowable); + void info(IMessage paramIMessage); - void info(Object paramObject); + void info(IMessage paramIMessage, Throwable paramThrowable); - void info(Object paramObject, Throwable paramThrowable); + void info(Object paramObject); - void info(String paramString); + void info(Object paramObject, Throwable paramThrowable); - void info(String paramString, Object[] paramArrayOfObject); + void info(String paramString); - void info(String paramString, Throwable paramThrowable); + void info(String paramString, Object[] paramArrayOfObject); - boolean isDebugEnabled(); + void info(String paramString, Throwable paramThrowable); - boolean isEnabled(Level paramLevel); + boolean isDebugEnabled(); - boolean isErrorEnabled(); + boolean isEnabled(Level paramLevel); - boolean isFatalEnabled(); + boolean isErrorEnabled(); - boolean isInfoEnabled(); + boolean isFatalEnabled(); - boolean isTraceEnabled(); + boolean isInfoEnabled(); - boolean isWarnEnabled(); + boolean isTraceEnabled(); - void log(Level paramLevel, IMessage paramIMessage); + boolean isWarnEnabled(); - void log(Level paramLevel, IMessage paramIMessage, Throwable paramThrowable); + void log(Level paramLevel, IMessage paramIMessage); - void log(Level paramLevel, Object paramObject); + void log(Level paramLevel, IMessage paramIMessage, Throwable paramThrowable); - void log(Level paramLevel, Object paramObject, Throwable paramThrowable); + void log(Level paramLevel, Object paramObject); - void log(Level paramLevel, String paramString); + void log(Level paramLevel, Object paramObject, Throwable paramThrowable); - void log(Level paramLevel, String paramString, Object[] paramArrayOfObject); + void log(Level paramLevel, String paramString); - void log(Level paramLevel, String paramString, Throwable paramThrowable); + void log(Level paramLevel, String paramString, Object[] paramArrayOfObject); - void printf(Level paramLevel, String paramString, Object[] paramArrayOfObject); + void log(Level paramLevel, String paramString, Throwable paramThrowable); - T throwing(Level paramLevel, T paramT); + void printf(Level paramLevel, String paramString, Object[] paramArrayOfObject); - T throwing(T paramT); + T throwing(Level paramLevel, T paramT); - void trace(IMessage paramIMessage); + T throwing(T paramT); - void trace(IMessage paramIMessage, Throwable paramThrowable); + void trace(IMessage paramIMessage); - void trace(Object paramObject); + void trace(IMessage paramIMessage, Throwable paramThrowable); - void trace(Object paramObject, Throwable paramThrowable); + void trace(Object paramObject); - void trace(String paramString); + void trace(Object paramObject, Throwable paramThrowable); - void trace(String paramString, Object[] paramArrayOfObject); + void trace(String paramString); - void trace(String paramString, Throwable paramThrowable); + void trace(String paramString, Object[] paramArrayOfObject); - void warn(IMessage paramIMessage); + void trace(String paramString, Throwable paramThrowable); - void warn(IMessage paramIMessage, Throwable paramThrowable); + void warn(IMessage paramIMessage); - void warn(Object paramObject); + void warn(IMessage paramIMessage, Throwable paramThrowable); - void warn(Object paramObject, Throwable paramThrowable); + void warn(Object paramObject); - void warn(String paramString); + void warn(Object paramObject, Throwable paramThrowable); - void warn(String paramString, Object[] paramArrayOfObject); + void warn(String paramString); - void warn(String paramString, Throwable paramThrowable); + void warn(String paramString, Object[] paramArrayOfObject); + + void warn(String paramString, Throwable paramThrowable); } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/Logger.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/Logger.java index 948792762..e9477cea4 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/Logger.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/Logger.java @@ -31,138 +31,135 @@ public class Logger extends AbstractLogger { protected volatile PrivateConfig config; private final Map appenders = new ConcurrentHashMap(); - + public Logger(String name) { - this(name, null, Level.INFO); + this(name, null, Level.INFO); } public Logger(String name, IMessageFactory messageFactory, Level defaultLevel) { - super(name, messageFactory); - this.config = new PrivateConfig(Configuration.DEFAULT, this, defaultLevel); + super(name, messageFactory); + this.config = new PrivateConfig(Configuration.DEFAULT, this, defaultLevel); } public synchronized void setLevel(Level level) { - if (level != null) { - this.config = new PrivateConfig(this.config, level); - } + if (level != null) + this.config = new PrivateConfig(this.config, level); } public Level getLevel() { - return this.config.level; + return this.config.level; } @Override public void abstractLog(Level level, IMessage data, Throwable t) { - LogEvent event = new LogEvent(); - event.level = level; - event.message = data; - event.thrown = t; - event.threadName = Thread.currentThread().getName(); + LogEvent event = new LogEvent(); + event.level = level; + event.message = data; + event.thrown = t; + event.threadName = Thread.currentThread().getName(); - log(event); + log(event); } public void log(LogEvent event) { - callAppenders(event); + callAppenders(event); } protected void callAppenders(LogEvent event) { - for (AppenderControl control : this.appenders.values()) { - control.callAppender(event); - } + for (AppenderControl control : this.appenders.values()) + control.callAppender(event); } @Override public boolean isEnabled(Level level, String msg) { - return this.config.filter(level, msg); + return this.config.filter(level, msg); } @Override public boolean isEnabled(Level level, String msg, Throwable t) { - return this.config.filter(level, msg, t); + return this.config.filter(level, msg, t); } @Override public boolean isEnabled(Level level, String msg, Object[] p1) { - return this.config.filter(level, msg, p1); + return this.config.filter(level, msg, p1); } @Override public boolean isEnabled(Level level, Object msg, Throwable t) { - return this.config.filter(level, msg, t); + return this.config.filter(level, msg, t); } @Override public boolean isEnabled(Level level, IMessage msg, Throwable t) { - return this.config.filter(level, msg, t); + return this.config.filter(level, msg, t); } public void addAppender(IAppender appender) { - this.appenders.put(appender.getName(), new AppenderControl(appender, null)); + this.appenders.put(appender.getName(), new AppenderControl(appender, null)); } public void removeAppender(IAppender appender) { - this.appenders.remove(appender.getName()); + this.appenders.remove(appender.getName()); } public Map getAppenders() { - Map map = new HashMap(); - for (Map.Entry entry : this.appenders.entrySet()) { - map.put(entry.getKey(), ((AppenderControl) entry.getValue()).getAppender()); - } - return map; + Map map = new HashMap(); + for (Map.Entry entry : this.appenders.entrySet()) + map.put(entry.getKey(), ((AppenderControl) entry.getValue()).getAppender()); + return map; } @Override public String toString() { - String nameLevel = "" + getName() + ":" + getLevel(); - return nameLevel; + String nameLevel = "" + getName() + ":" + getLevel(); + return nameLevel; } protected class PrivateConfig { - public final Configuration config; - private final Level level; - private final int intLevel; - private final Logger logger; + public final Configuration config; + private final Level level; + private final int intLevel; + private final Logger logger; - public PrivateConfig(Configuration c, Logger logger, Level level) { - this.level = level; - this.intLevel = this.level.level; - this.logger = logger; - - this.config = c; - for(IAppender appender : config.appenders) - addAppender(appender); - } + public PrivateConfig(Configuration c, Logger logger, Level level) { + this.level = level; + this.intLevel = this.level.level; + this.logger = logger; - public PrivateConfig(PrivateConfig pc, Level level) { - this(pc.config, pc.logger, level); - } + this.config = c; + for (IAppender appender : config.appenders) + addAppender(appender); + } - boolean filter(Level level, String msg) { + public PrivateConfig(PrivateConfig pc, Level level) { + this(pc.config, pc.logger, level); + } - return this.intLevel >= level.level; - } + boolean filter(Level level, String msg) { - boolean filter(Level level, String msg, Throwable t) { + return this.intLevel >= level.level; + } - return this.intLevel >= level.level; - } + boolean filter(Level level, String msg, Throwable t) { - boolean filter(Level level, String msg, Object[] p1) { + return this.intLevel >= level.level; + } - return this.intLevel >= level.level; - } + boolean filter(Level level, String msg, Object[] p1) { - boolean filter(Level level, Object msg, Throwable t) { + return this.intLevel >= level.level; + } - return this.intLevel >= level.level; - } + boolean filter(Level level, Object msg, Throwable t) { - boolean filter(Level level, IMessage msg, Throwable t) { + return this.intLevel >= level.level; + } - return this.intLevel >= level.level; - } + boolean filter(Level level, IMessage msg, Throwable t) { + + return this.intLevel >= level.level; + } } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/SimpleLogger.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/SimpleLogger.java index 4c8f26091..5972c143a 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/SimpleLogger.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/logger/SimpleLogger.java @@ -36,106 +36,101 @@ public class SimpleLogger extends AbstractLogger { private final String logName; public SimpleLogger(String name, Level defaultLevel, boolean showLogName, boolean showShortLogName, boolean showDateTime, boolean showContextMap, String dateTimeFormat, IMessageFactory messageFactory, PrintStream stream) { - super(name, messageFactory); - this.level = defaultLevel; - if (showShortLogName) { - int index = name.lastIndexOf("."); - if ((index > 0) && (index < name.length())) { - this.logName = name.substring(index + 1); - } else { - this.logName = name; - } - } else if (showLogName) { - this.logName = name; - } else { - this.logName = null; - } - this.showDateTime = showDateTime; - this.showContextMap = showContextMap; - this.stream = stream; + super(name, messageFactory); + this.level = defaultLevel; + if (showShortLogName) { + int index = name.lastIndexOf("."); + if ((index > 0) && (index < name.length())) + this.logName = name.substring(index + 1); + else + this.logName = name; + } else if (showLogName) + this.logName = name; + else + this.logName = null; + this.showDateTime = showDateTime; + this.showContextMap = showContextMap; + this.stream = stream; - if (showDateTime) { - try { - this.dateFormatter = new SimpleDateFormat(dateTimeFormat); - } catch (IllegalArgumentException e) { - this.dateFormatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss:SSS zzz"); - } - } + if (showDateTime) + try { + this.dateFormatter = new SimpleDateFormat(dateTimeFormat); + } catch (IllegalArgumentException e) { + this.dateFormatter = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss:SSS zzz"); + } } public void setStream(PrintStream stream) { - this.stream = stream; + this.stream = stream; } public Level getLevel() { - return this.level; + return this.level; } public void setLevel(Level level) { - if (level != null) { - this.level = level; - } + if (level != null) + this.level = level; } @Override public void abstractLog(Level level, IMessage msg, Throwable throwable) { - StringBuilder sb = new StringBuilder(); + StringBuilder sb = new StringBuilder(); - if (this.showDateTime) { - Date now = new Date(); - String dateText; - synchronized (this.dateFormatter) { - dateText = this.dateFormatter.format(now); - } - sb.append(dateText); - sb.append(' '); - } + if (this.showDateTime) { + Date now = new Date(); + String dateText; + synchronized (this.dateFormatter) { + dateText = this.dateFormatter.format(now); + } + sb.append(dateText); + sb.append(' '); + } - sb.append(level.toString()); - sb.append(' '); - if ((this.logName != null) && (this.logName.length() > 0)) { - sb.append(this.logName); - sb.append(' '); - } - sb.append(msg.getFormattedMessage()); - Object[] params = msg.getParameters(); - Throwable t; - if ((throwable == null) && (params != null) && ((params[(params.length - 1)] instanceof Throwable))) { - t = (Throwable) params[(params.length - 1)]; - } else { - t = throwable; - } - if (t != null) { - sb.append(' '); - ByteArrayOutputStream baos = new ByteArrayOutputStream(); - t.printStackTrace(new PrintStream(baos)); - sb.append(baos.toString()); - } - this.stream.println(sb.toString()); + sb.append(level.toString()); + sb.append(' '); + if ((this.logName != null) && (this.logName.length() > 0)) { + sb.append(this.logName); + sb.append(' '); + } + sb.append(msg.getFormattedMessage()); + Object[] params = msg.getParameters(); + Throwable t; + if ((throwable == null) && (params != null) && ((params[(params.length - 1)] instanceof Throwable))) + t = (Throwable) params[(params.length - 1)]; + else + t = throwable; + if (t != null) { + sb.append(' '); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + t.printStackTrace(new PrintStream(baos)); + sb.append(baos.toString()); + } + this.stream.println(sb.toString()); } @Override protected boolean isEnabled(Level level, String msg) { - return this.level.level >= level.level; + return this.level.level >= level.level; } @Override protected boolean isEnabled(Level level, String msg, Throwable t) { - return this.level.level >= level.level; + return this.level.level >= level.level; } @Override protected boolean isEnabled(Level level, String msg, Object[] p1) { - return this.level.level >= level.level; + return this.level.level >= level.level; } @Override protected boolean isEnabled(Level level, Object msg, Throwable t) { - return this.level.level >= level.level; + return this.level.level >= level.level; } @Override protected boolean isEnabled(Level level, IMessage msg, Throwable t) { - return this.level.level >= level.level; + return this.level.level >= level.level; } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/AbstractMessageFactory.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/AbstractMessageFactory.java index 0b038a57e..347c8d6a7 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/AbstractMessageFactory.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/AbstractMessageFactory.java @@ -21,15 +21,15 @@ package org.jackhuang.hellominecraft.logging.message; * @author huangyuhui */ public abstract class AbstractMessageFactory - implements IMessageFactory { +implements IMessageFactory { @Override public IMessage newMessage(Object message) { - return new ObjectMessage(message); + return new ObjectMessage(message); } @Override public IMessage newMessage(String message) { - return new SimpleMessage(message); + return new SimpleMessage(message); } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/IMessage.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/IMessage.java index df4b6a8cf..7bbdf016c 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/IMessage.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/IMessage.java @@ -23,8 +23,12 @@ import java.io.Serializable; * @author huangyuhui */ public interface IMessage extends Serializable { + String getFormattedMessage(); + String getFormat(); + Object[] getParameters(); + Throwable getThrowable(); } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ObjectMessage.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ObjectMessage.java index e9e27d052..975ebb700 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ObjectMessage.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ObjectMessage.java @@ -17,15 +17,14 @@ package org.jackhuang.hellominecraft.logging.message; public class ObjectMessage - implements IMessage { +implements IMessage { private static final long serialVersionUID = -5903272448334166185L; private final transient Object obj; public ObjectMessage(Object obj) { - if (obj == null) { + if (obj == null) obj = "null"; - } this.obj = obj; } @@ -41,17 +40,15 @@ public class ObjectMessage @Override public Object[] getParameters() { - return new Object[]{this.obj}; + return new Object[] {this.obj}; } @Override public boolean equals(Object o) { - if (this == o) { + if (this == o) return true; - } - if ((o == null) || (getClass() != o.getClass())) { + if ((o == null) || (getClass() != o.getClass())) return false; - } ObjectMessage that = (ObjectMessage) o; diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ParameterizedMessage.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ParameterizedMessage.java index 197b8031d..620f099b7 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ParameterizedMessage.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ParameterizedMessage.java @@ -30,7 +30,7 @@ import java.util.Set; * @author huangyuhui */ public class ParameterizedMessage - implements IMessage { +implements IMessage { public static final String RECURSION_PREFIX = "[..."; public static final String RECURSION_SUFFIX = "...]"; @@ -67,21 +67,20 @@ public class ParameterizedMessage } public ParameterizedMessage(String messagePattern, Object arg) { - this(messagePattern, new Object[]{arg}); + this(messagePattern, new Object[] {arg}); } public ParameterizedMessage(String messagePattern, Object arg1, Object arg2) { - this(messagePattern, new Object[]{arg1, arg2}); + this(messagePattern, new Object[] {arg1, arg2}); } private String[] parseArguments(Object[] arguments) { - if (arguments == null) { + if (arguments == null) return null; - } int argsCount = countArgumentPlaceholders(this.messagePattern); int resultArgCount = arguments.length; if ((argsCount < arguments.length) - && (this.throwable == null) && ((arguments[(arguments.length - 1)] instanceof Throwable))) { + && (this.throwable == null) && ((arguments[(arguments.length - 1)] instanceof Throwable))) { this.throwable = ((Throwable) arguments[(arguments.length - 1)]); resultArgCount--; } @@ -94,18 +93,16 @@ public class ParameterizedMessage strArgs[0] = deepToString(arguments); } else { strArgs = new String[resultArgCount]; - for (int i = 0; i < strArgs.length; i++) { + for (int i = 0; i < strArgs.length; i++) strArgs[i] = deepToString(arguments[i]); - } } return strArgs; } @Override public String getFormattedMessage() { - if (this.formattedMessage == null) { + if (this.formattedMessage == null) this.formattedMessage = formatMessage(this.messagePattern, this.stringArgs); - } return this.formattedMessage; } @@ -116,9 +113,8 @@ public class ParameterizedMessage @Override public Object[] getParameters() { - if (this.argArray != null) { + if (this.argArray != null) return this.argArray; - } return this.stringArgs; } @@ -133,8 +129,10 @@ public class ParameterizedMessage @Override public boolean equals(Object o) { - if (this == o) return true; - if (o == null || getClass() != o.getClass()) return false; + if (this == o) + return true; + if (o == null || getClass() != o.getClass()) + return false; ParameterizedMessage that = (ParameterizedMessage) o; if (this.messagePattern != null ? !this.messagePattern.equals(that.messagePattern) : that.messagePattern != null) @@ -159,11 +157,11 @@ public class ParameterizedMessage int currentArgument = 0; for (int i = 0; i < messagePattern.length(); i++) { char curChar = messagePattern.charAt(i); - if (curChar == ESCAPE_CHAR) { + if (curChar == ESCAPE_CHAR) escapeCounter++; - } else if ((curChar == DELIM_START) - && (i < messagePattern.length() - 1) - && (messagePattern.charAt(i + 1) == DELIM_STOP)) { + else if ((curChar == DELIM_START) + && (i < messagePattern.length() - 1) + && (messagePattern.charAt(i + 1) == DELIM_STOP)) { int escapedEscapes = escapeCounter / 2; for (int j = 0; j < escapedEscapes; j++) result.append(ESCAPE_CHAR); @@ -193,36 +191,39 @@ public class ParameterizedMessage } public static int countArgumentPlaceholders(String messagePattern) { - if (messagePattern == null) return 0; + if (messagePattern == null) + return 0; int delim = messagePattern.indexOf(123); - if (delim == -1) return 0; + if (delim == -1) + return 0; int result = 0; boolean isEscaped = false; for (int i = 0; i < messagePattern.length(); i++) { char curChar = messagePattern.charAt(i); - if (curChar == ESCAPE_CHAR) { + if (curChar == ESCAPE_CHAR) isEscaped = !isEscaped; - } else if (curChar == DELIM_START) { + else if (curChar == DELIM_START) { if ((!isEscaped) - && (i < messagePattern.length() - 1) - && (messagePattern.charAt(i + 1) == DELIM_STOP)) { + && (i < messagePattern.length() - 1) + && (messagePattern.charAt(i + 1) == DELIM_STOP)) { result++; i++; } isEscaped = false; - } else { + } else isEscaped = false; - } } return result; } public static String deepToString(Object o) { - if (o == null) return null; - if (o instanceof String) return (String) o; + if (o == null) + return null; + if (o instanceof String) + return (String) o; StringBuilder str = new StringBuilder(); Set dejaVu = new HashSet(); recursiveDeepToString(o, str, dejaVu); @@ -239,53 +240,57 @@ public class ParameterizedMessage return; } Class oClass = o.getClass(); - if (oClass.isArray()) { - if (oClass == byte[].class) { + if (oClass.isArray()) + if (oClass == byte[].class) str.append(Arrays.toString((byte[]) (byte[]) o)); - } else if (oClass == short[].class) { + else if (oClass == short[].class) str.append(Arrays.toString((short[]) (short[]) o)); - } else if (oClass == int[].class) { + else if (oClass == int[].class) str.append(Arrays.toString((int[]) (int[]) o)); - } else if (oClass == long[].class) { + else if (oClass == long[].class) str.append(Arrays.toString((long[]) (long[]) o)); - } else if (oClass == float[].class) { + else if (oClass == float[].class) str.append(Arrays.toString((float[]) (float[]) o)); - } else if (oClass == double[].class) { + else if (oClass == double[].class) str.append(Arrays.toString((double[]) (double[]) o)); - } else if (oClass == boolean[].class) { + else if (oClass == boolean[].class) str.append(Arrays.toString((boolean[]) (boolean[]) o)); - } else if (oClass == char[].class) { + else if (oClass == char[].class) str.append(Arrays.toString((char[]) (char[]) o)); - } else { + else { String id = identityToString(o); - if (dejaVu.contains(id)) { + if (dejaVu.contains(id)) str.append("[...").append(id).append("...]"); - } else { + else { dejaVu.add(id); Object[] oArray = (Object[]) (Object[]) o; str.append("["); boolean first = true; for (Object current : oArray) { - if (first) first = false; - else str.append(", "); + if (first) + first = false; + else + str.append(", "); recursiveDeepToString(current, str, new HashSet(dejaVu)); } str.append("]"); } } - } else if ((o instanceof Map)) { + else if ((o instanceof Map)) { String id = identityToString(o); - if (dejaVu.contains(id)) { + if (dejaVu.contains(id)) str.append("[...").append(id).append("...]"); - } else { + else { dejaVu.add(id); Map oMap = (Map) o; str.append("{"); boolean isFirst = true; for (Object o1 : oMap.entrySet()) { Map.Entry current = (Map.Entry) o1; - if (isFirst) isFirst = false; - else str.append(", "); + if (isFirst) + isFirst = false; + else + str.append(", "); Object key = current.getKey(); Object value = current.getValue(); recursiveDeepToString(key, str, new HashSet(dejaVu)); @@ -296,17 +301,19 @@ public class ParameterizedMessage } } else if ((o instanceof Collection)) { String id = identityToString(o); - if (dejaVu.contains(id)) { + if (dejaVu.contains(id)) str.append("[...").append(id).append("...]"); - } else { + else { dejaVu.add(id); Collection oCol = (Collection) o; str.append("["); boolean isFirst = true; for (Iterator i$ = oCol.iterator(); i$.hasNext();) { Object anOCol = i$.next(); - if (isFirst) isFirst = false; - else str.append(", "); + if (isFirst) + isFirst = false; + else + str.append(", "); recursiveDeepToString(anOCol, str, new HashSet(dejaVu)); } str.append("]"); @@ -316,7 +323,7 @@ public class ParameterizedMessage SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"); str.append(format.format(date)); - } else { + } else try { str.append(o.toString()); } catch (Throwable t) { @@ -332,16 +339,16 @@ public class ParameterizedMessage } str.append("!!!]"); } - } } public static String identityToString(Object obj) { - if (obj == null) return null; - return obj.getClass().getName()+"@"+Integer.toHexString(System.identityHashCode(obj)); + if (obj == null) + return null; + return obj.getClass().getName() + "@" + Integer.toHexString(System.identityHashCode(obj)); } @Override public String toString() { - return "ParameterizedMessage[messagePattern="+this.messagePattern+", stringArgs="+Arrays.toString(this.stringArgs)+", throwable="+this.throwable+"]"; + return "ParameterizedMessage[messagePattern=" + this.messagePattern + ", stringArgs=" + Arrays.toString(this.stringArgs) + ", throwable=" + this.throwable + "]"; } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ParameterizedMessageFactory.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ParameterizedMessageFactory.java index 1c7300c52..b0ce2e611 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ParameterizedMessageFactory.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/ParameterizedMessageFactory.java @@ -26,6 +26,6 @@ public final class ParameterizedMessageFactory extends AbstractMessageFactory { @Override public IMessage newMessage(String message, Object[] params) { - return new ParameterizedMessage(message, params); + return new ParameterizedMessage(message, params); } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/SimpleMessage.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/SimpleMessage.java index 913884b32..01bd73b3a 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/SimpleMessage.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/SimpleMessage.java @@ -21,60 +21,58 @@ package org.jackhuang.hellominecraft.logging.message; * @author huangyuhui */ public class SimpleMessage - implements IMessage { +implements IMessage { private static final long serialVersionUID = -8398002534962715992L; private final String message; public SimpleMessage() { - this(null); + this(null); } public SimpleMessage(String message) { - this.message = message; + this.message = message; } @Override public String getFormattedMessage() { - return this.message; + return this.message; } @Override public String getFormat() { - return this.message; + return this.message; } @Override public Object[] getParameters() { - return null; + return null; } @Override public boolean equals(Object o) { - if (this == o) { - return true; - } - if ((o == null) || (getClass() != o.getClass())) { - return false; - } + if (this == o) + return true; + if ((o == null) || (getClass() != o.getClass())) + return false; - SimpleMessage that = (SimpleMessage) o; + SimpleMessage that = (SimpleMessage) o; - return this.message != null ? this.message.equals(that.message) : that.message == null; + return this.message != null ? this.message.equals(that.message) : that.message == null; } @Override public int hashCode() { - return this.message != null ? this.message.hashCode() : 0; + return this.message != null ? this.message.hashCode() : 0; } @Override public String toString() { - return "SimpleMessage[message=" + this.message + "]"; + return "SimpleMessage[message=" + this.message + "]"; } @Override public Throwable getThrowable() { - return null; + return null; } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/StringFormattedMessage.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/StringFormattedMessage.java index 66b369460..5b4ca1896 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/StringFormattedMessage.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/logging/message/StringFormattedMessage.java @@ -20,7 +20,7 @@ import java.util.Arrays; import java.util.IllegalFormatException; public class StringFormattedMessage - implements IMessage { +implements IMessage { private static final long serialVersionUID = -665975803997290697L; private final String messagePattern; @@ -30,76 +30,70 @@ public class StringFormattedMessage private transient Throwable throwable; public StringFormattedMessage(String messagePattern, Object[] arguments) { - this.messagePattern = messagePattern; - this.argArray = arguments; - if ((arguments != null) && (arguments.length > 0) && ((arguments[(arguments.length - 1)] instanceof Throwable))) { - this.throwable = ((Throwable) arguments[(arguments.length - 1)]); - } + this.messagePattern = messagePattern; + this.argArray = arguments; + if ((arguments != null) && (arguments.length > 0) && ((arguments[(arguments.length - 1)] instanceof Throwable))) + this.throwable = ((Throwable) arguments[(arguments.length - 1)]); } @Override public String getFormattedMessage() { - if (this.formattedMessage == null) { - this.formattedMessage = formatMessage(this.messagePattern, this.argArray); - } - return this.formattedMessage; + if (this.formattedMessage == null) + this.formattedMessage = formatMessage(this.messagePattern, this.argArray); + return this.formattedMessage; } @Override public String getFormat() { - return this.messagePattern; + return this.messagePattern; } @Override public Object[] getParameters() { - if (this.argArray != null) { - return this.argArray; - } - return this.stringArgs; + if (this.argArray != null) + return this.argArray; + return this.stringArgs; } protected String formatMessage(String msgPattern, Object[] args) { - try { - return String.format(msgPattern, args); - } catch (IllegalFormatException ife) { - System.err.println("Unable to format msg: " + msgPattern); - ife.printStackTrace(); - } - return msgPattern; + try { + return String.format(msgPattern, args); + } catch (IllegalFormatException ife) { + System.err.println("Unable to format msg: " + msgPattern); + ife.printStackTrace(); + } + return msgPattern; } @Override public boolean equals(Object o) { - if (this == o) { - return true; - } - if ((o == null) || (getClass() != o.getClass())) { - return false; - } + if (this == o) + return true; + if ((o == null) || (getClass() != o.getClass())) + return false; - StringFormattedMessage that = (StringFormattedMessage) o; + StringFormattedMessage that = (StringFormattedMessage) o; - if (this.messagePattern != null ? !this.messagePattern.equals(that.messagePattern) : that.messagePattern != null) { - return false; - } + if (this.messagePattern != null ? !this.messagePattern.equals(that.messagePattern) : that.messagePattern != null) + return false; - return Arrays.equals(this.stringArgs, that.stringArgs); + return Arrays.equals(this.stringArgs, that.stringArgs); } @Override public int hashCode() { - int result = this.messagePattern != null ? this.messagePattern.hashCode() : 0; - result = 31 * result + (this.stringArgs != null ? Arrays.hashCode(this.stringArgs) : 0); - return result; + int result = this.messagePattern != null ? this.messagePattern.hashCode() : 0; + result = 31 * result + (this.stringArgs != null ? Arrays.hashCode(this.stringArgs) : 0); + return result; } @Override public String toString() { - return "StringFormatMessage[messagePattern=" + this.messagePattern + ", args=" + Arrays.toString(this.argArray) + "]"; + return "StringFormatMessage[messagePattern=" + this.messagePattern + ", args=" + Arrays.toString(this.argArray) + "]"; } @Override public Throwable getThrowable() { - return this.throwable; + return this.throwable; } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/Task.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/Task.java index 69e7e18f9..c5eb19c8a 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/Task.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/Task.java @@ -42,9 +42,9 @@ public abstract class Task { aborted = true; return false; } - + protected boolean aborted = false; - + public boolean isAborted() { return aborted; } @@ -73,7 +73,7 @@ public abstract class Task { public void setParallelExecuting(boolean parallelExecuting) { this.parallelExecuting = parallelExecuting; } - + ArrayList> taskListener = new ArrayList(); public Task addTaskListener(DoingDoneListener l) { @@ -94,7 +94,7 @@ public abstract class Task { public Collection getAfterTasks() { return null; } - + protected ProgressProviderListener ppl; public Task setProgressProviderListener(ProgressProviderListener p) { diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskList.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskList.java index b6e5f3e44..be2e735c4 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskList.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskList.java @@ -98,7 +98,8 @@ public class TaskList extends Thread { } while (!runningThread.isEmpty()) try { - if (this.isInterrupted()) return; + if (this.isInterrupted()) + return; Thread.sleep(1); } catch (InterruptedException ignore) { } @@ -119,7 +120,7 @@ public class TaskList extends Thread { boolean returns = false; try { returns = t.executeTask(); - } catch(Throwable e) { + } catch (Throwable e) { t.setFailReason(e); } if (returns) { @@ -144,7 +145,7 @@ public class TaskList extends Thread { threadPool.clear(); totTask = taskQueue.size(); - while(!taskQueue.isEmpty()) + while (!taskQueue.isEmpty()) executeTask(taskQueue.remove(0)); if (shouldContinue) for (Runnable d : allDone) @@ -160,7 +161,8 @@ public class TaskList extends Thread { while (!threadPool.isEmpty()) synchronized (threadPool) { InvokeThread it = threadPool.iterator().next(); - if (!it.task.abort()) it.interrupt(); + if (!it.task.abort()) + it.interrupt(); threadPool.remove(it); } this.interrupt(); diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskRunnableArg1.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskRunnableArg1.java index b491e82bf..fee19b915 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskRunnableArg1.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskRunnableArg1.java @@ -27,7 +27,9 @@ import org.jackhuang.hellominecraft.utils.functions.Consumer; * @param Runnable<T> */ public class TaskRunnableArg1 extends TaskInfo implements PreviousResultRegistrar { + private final Consumer r; + public TaskRunnableArg1(String info, Consumer r) { super(info); this.r = r; @@ -35,16 +37,17 @@ public class TaskRunnableArg1 extends TaskInfo implements PreviousResultRegis @Override public boolean executeTask() { - if(al.size() != 1) throw new IllegalStateException("the count of args is not one."); + if (al.size() != 1) + throw new IllegalStateException("the count of args is not one."); try { r.accept(al.get(0).getResult()); return true; - } catch(Throwable t) { + } catch (Throwable t) { setFailReason(t); return false; } } - + ArrayList> al = new ArrayList(); @Override @@ -52,7 +55,5 @@ public class TaskRunnableArg1 extends TaskInfo implements PreviousResultRegis al.add(pr); return this; } - - - -} \ No newline at end of file + +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java index 9ba8e7af5..8d4e2badb 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/TaskWindow.java @@ -30,15 +30,15 @@ import org.jackhuang.hellominecraft.utils.SwingUtils; * @author huangyuhui */ public class TaskWindow extends javax.swing.JDialog - implements ProgressProviderListener, Runnable, DoingDoneListener { +implements ProgressProviderListener, Runnable, DoingDoneListener { private static final TaskWindow instance = new TaskWindow(); - + private static TaskWindow inst() { instance.clean(); return instance; } - + public static TaskWindowFactory getInstance() { return new TaskWindowFactory(); } @@ -72,14 +72,16 @@ public class TaskWindow extends javax.swing.JDialog } public synchronized void clean() { - if (isVisible()) return; + if (isVisible()) + return; taskList = new TaskList(); taskList.addTaskListener(this); taskList.addAllDoneListener(this); } public boolean start() { - if (isVisible() || taskList == null || taskList.isAlive()) return false; + if (isVisible() || taskList == null || taskList.isAlive()) + return false; pgsTotal.setValue(0); suc = false; SwingUtils.clearDefaultTable(lstDownload); @@ -169,7 +171,8 @@ public class TaskWindow extends javax.swing.JDialog }//GEN-LAST:event_btnCancelActionPerformed private void formWindowClosed(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_formWindowClosed - if(taskList == null) return; + if (taskList == null) + return; tasks.clear(); if (!this.failReasons.isEmpty()) { @@ -203,7 +206,8 @@ public class TaskWindow extends javax.swing.JDialog public void setProgress(Task task, int progress, int max) { SwingUtilities.invokeLater(() -> { int idx = tasks.indexOf(task); - if (idx == -1) return; + if (idx == -1) + return; int pgs = progress * 100 / max; if (progresses.contains(idx) && progresses.get(idx) != pgs && lstDownload.getRowCount() > idx) { SwingUtils.setValueAt(lstDownload, pgs + "%", idx, 1); @@ -224,7 +228,8 @@ public class TaskWindow extends javax.swing.JDialog task.setProgressProviderListener(this); SwingUtilities.invokeLater(() -> { - if(taskList == null) return; + if (taskList == null) + return; tasks.add(task); progresses.add(0); SwingUtils.appendLast(lstDownload, task.getInfo(), "0%"); @@ -239,11 +244,13 @@ public class TaskWindow extends javax.swing.JDialog @Override public void onDone(Task task) { SwingUtilities.invokeLater(() -> { - if(taskList == null) return; + if (taskList == null) + return; pgsTotal.setMaximum(taskList.taskCount()); pgsTotal.setValue(pgsTotal.getValue() + 1); int idx = tasks.indexOf(task); - if (idx == -1) return; + if (idx == -1) + return; tasks.remove(idx); progresses.remove(idx); SwingUtils.removeRow(lstDownload, idx); @@ -253,12 +260,14 @@ public class TaskWindow extends javax.swing.JDialog @Override public void onFailed(Task task) { SwingUtilities.invokeLater(() -> { - if(taskList == null) return; + if (taskList == null) + return; failReasons.add(task.getInfo() + ": " + (null == task.getFailReason() ? "No exception" : (StrUtils.isBlank(task.getFailReason().getLocalizedMessage()) ? task.getFailReason().getClass().getSimpleName() : task.getFailReason().getLocalizedMessage()))); pgsTotal.setMaximum(taskList.taskCount()); pgsTotal.setValue(pgsTotal.getValue() + 1); int idx = tasks.indexOf(task); - if (idx == -1) return; + if (idx == -1) + return; SwingUtils.setValueAt(lstDownload, task.getFailReason(), idx, 0); SwingUtils.setValueAt(lstDownload, "0%", idx, 1); SwingUtils.moveEnd(srlDownload); @@ -273,26 +282,31 @@ public class TaskWindow extends javax.swing.JDialog @Override public void setStatus(Task task, String sta) { SwingUtilities.invokeLater(() -> { - if(taskList == null) return; + if (taskList == null) + return; int idx = tasks.indexOf(task); - if (idx == -1) return; + if (idx == -1) + return; SwingUtils.setValueAt(lstDownload, task.getInfo() + ": " + sta, idx, 0); }); } - + public static class TaskWindowFactory { + LinkedList ll = new LinkedList<>(); - + public TaskWindowFactory addTask(Task t) { ll.add(t); return this; } - + public boolean start() { - synchronized(instance) { - if (instance.isVisible()) return false; + synchronized (instance) { + if (instance.isVisible()) + return false; TaskWindow tw = inst(); - for(Task t : ll) tw.addTask(t); + for (Task t : ll) + tw.addTask(t); return tw.start(); } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/PreviousResult.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/PreviousResult.java index 61f7c69e1..c63a38e6b 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/PreviousResult.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/PreviousResult.java @@ -22,7 +22,7 @@ package org.jackhuang.hellominecraft.tasks.communication; * @param Task result type */ public interface PreviousResult { - + T getResult(); - + } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/PreviousResultRegistrar.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/PreviousResultRegistrar.java index 548846d87..acea1064e 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/PreviousResultRegistrar.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/communication/PreviousResultRegistrar.java @@ -24,10 +24,11 @@ import org.jackhuang.hellominecraft.tasks.Task; * @param Previous task result type */ public interface PreviousResultRegistrar { - + /** - * + * * @param pr previous task handler + * * @return task self instance */ Task registerPreviousResult(PreviousResult pr); diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/ContentGetAndShowTask.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/ContentGetAndShowTask.java index 910c5f377..7a7b4dc9d 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/ContentGetAndShowTask.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/ContentGetAndShowTask.java @@ -37,7 +37,7 @@ public class ContentGetAndShowTask extends HTTPGetTask implements Event } String info; - + @Override public String getInfo() { return info; diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/DownloadListener.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/DownloadListener.java index ec6e6f9c4..20779d880 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/DownloadListener.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/DownloadListener.java @@ -25,5 +25,6 @@ import org.jackhuang.hellominecraft.tasks.ProgressProviderListener; public interface DownloadListener extends ProgressProviderListener { boolean OnFailed(); + void OnFailedMoreThan5Times(String url); -} \ No newline at end of file +} diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/FileDownloadTask.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/FileDownloadTask.java index c59075ca7..935653c57 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/FileDownloadTask.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/FileDownloadTask.java @@ -103,7 +103,7 @@ public class FileDownloadTask extends Task implements PreviousResult, Prev // Open connection to URL. HttpURLConnection connection - = (HttpURLConnection) url.openConnection(); + = (HttpURLConnection) url.openConnection(); connection.setConnectTimeout(5000); connection.setRequestProperty("User-Agent", "Hello Minecraft! Launcher"); @@ -167,7 +167,8 @@ public class FileDownloadTask extends Task implements PreviousResult, Prev if (aborted) tempFile.delete(); else { - if (filePath.exists()) filePath.delete(); + if (filePath.exists()) + filePath.delete(); tempFile.renameTo(filePath); } if (ppl != null) diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/HTTPGetTask.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/HTTPGetTask.java index 9828bc6ef..a465a5cf5 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/HTTPGetTask.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/HTTPGetTask.java @@ -52,7 +52,8 @@ public class HTTPGetTask extends TaskInfo implements PreviousResult { @Override public boolean executeTask() { for (int repeat = 0; repeat < 6; repeat++) { - if (repeat > 0) HMCLog.warn("Failed to download, repeat: " + repeat); + if (repeat > 0) + HMCLog.warn("Failed to download, repeat: " + repeat); try { URLConnection conn = new URL(url).openConnection(); InputStream is = conn.getInputStream(); @@ -61,12 +62,10 @@ public class HTTPGetTask extends TaskInfo implements PreviousResult { int size = conn.getContentLength(), read = 0; while ((i = is.read()) != -1) { baos.write(i); - if (ppl != null) { + if (ppl != null) ppl.setProgress(this, ++read, size); - } - if (!shouldContinue) { + if (!shouldContinue) return true; - } } result = baos.toString(); tdtsl.execute(result); diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/NetException.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/NetException.java index 1e1a99df3..b3e5cb0a5 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/NetException.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/tasks/download/NetException.java @@ -21,17 +21,17 @@ package org.jackhuang.hellominecraft.tasks.download; * @author huangyuhui */ public class NetException extends RuntimeException { - + public NetException(Exception message) { super(message); } - + public NetException(String message) { super(message); } - + public NetException(String message, Exception e) { super(message, e); } - + } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ArrayUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ArrayUtils.java index 94584a6d4..75f99fd4e 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ArrayUtils.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/ArrayUtils.java @@ -78,8 +78,10 @@ public class ArrayUtils { } public static K getEnd(K[] k) { - if (k == null) return null; - else return k[k.length - 1]; + if (k == null) + return null; + else + return k[k.length - 1]; } public static List tryGetMapWithList(Map map, String key) { diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/CollectionUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/CollectionUtils.java index 07b386237..2104c6497 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/CollectionUtils.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/CollectionUtils.java @@ -29,14 +29,16 @@ import java.util.Iterator; public final class CollectionUtils { public static void forEach(Collection coll, Consumer p) { - for (T t : coll) p.accept(t); + for (T t : coll) + p.accept(t); } public static Collection sortOut(Collection coll, Predicate p) { ArrayList newColl = new ArrayList<>(); forEach(coll, t -> { - if (p.apply(t)) newColl.add(t); - }); + if (p.apply(t)) + newColl.add(t); + }); return newColl; } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/EventHandler.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/EventHandler.java index dd8f0133b..9d3055854 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/EventHandler.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/EventHandler.java @@ -44,7 +44,8 @@ public class EventHandler { public boolean execute(T x) { boolean flag = true; for (Event t : handlers) - if (!t.call(sender, x)) flag = false; + if (!t.call(sender, x)) + flag = false; return flag; } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/LogWindowOutputStream.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/LogWindowOutputStream.java index 7a55c9a73..bfa5c8320 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/LogWindowOutputStream.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/LogWindowOutputStream.java @@ -27,7 +27,7 @@ import org.jackhuang.hellominecraft.views.LogWindow; * @author huangyuhui */ public class LogWindowOutputStream extends OutputStream { - + private static final Timer TIMER = new Timer(); private final LogWindow txt; @@ -84,9 +84,9 @@ public class LogWindowOutputStream extends OutputStream { @Override public final void write(int paramInt) { - append(new String(new byte[]{(byte) paramInt})); + append(new String(new byte[] {(byte) paramInt})); } - + public static void dispose() { TIMER.cancel(); } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MathUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MathUtils.java index 192597eb4..57d203986 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MathUtils.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/MathUtils.java @@ -44,9 +44,12 @@ public class MathUtils { return Integer.parseInt(s); } catch (Exception e) { int a = parseInt(s.substring(0, s.length() - 1), def); - if (s.endsWith("g")) return a * 1024; - else if (s.endsWith("k")) return a / 1024; - else return a; + if (s.endsWith("g")) + return a * 1024; + else if (s.endsWith("k")) + return a / 1024; + else + return a; } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/NetUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/NetUtils.java index dbf6d5d0b..302d638c9 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/NetUtils.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/NetUtils.java @@ -52,7 +52,7 @@ public final class NetUtils { } public static String getStreamContent(InputStream is, String encoding) - throws IOException { + throws IOException { StringBuilder sb = new StringBuilder(); try (InputStreamReader br = new InputStreamReader(is, encoding)) { int len; @@ -82,15 +82,16 @@ public final class NetUtils { /** * Sends an HTTP GET request to a url * - * @param endpoint - The URL of the server. (Example: " - * http://www.yahoo.com/search") + * @param endpoint - The URL of the server. (Example: " + * http://www.yahoo.com/search") * @param requestParameters - all the request parameters (Example: - * "param1=val1¶m2=val2"). Note: This method will add the question mark - * (?) to the request - DO NOT add it yourself + * "param1=val1¶m2=val2"). Note: This method will add the question mark + * (?) to the request - DO NOT add it yourself + * * @return - The response from the end point */ public static String sendGetRequest(String endpoint, - String requestParameters) { + String requestParameters) { String result = null; if (endpoint.startsWith("http://")) // Send a GET request to the servlet @@ -118,7 +119,7 @@ public final class NetUtils { } return result; } - + public static String post(URL u, Map params) { StringBuilder sb = new StringBuilder(); if (params != null) { @@ -136,11 +137,11 @@ public final class NetUtils { public static String post(URL u, String post) { return post(u, post, "application/x-www-form-urlencoded"); } - + public static String post(URL u, String post, String contentType) { return post(u, post, contentType, Proxy.NO_PROXY); } - + public static String post(URL u, String post, String contentType, Proxy proxy) { try { HttpURLConnection con = (HttpURLConnection) u.openConnection(proxy); @@ -157,16 +158,18 @@ public final class NetUtils { os = con.getOutputStream(); IOUtils.write(post, os, DEFAULT_CHARSET); } finally { - if (os != null) IOUtils.closeQuietly(os); + if (os != null) + IOUtils.closeQuietly(os); } - + String result = null; InputStream is = null; try { is = con.getInputStream(); result = getStreamContent(is); - } catch(IOException ex) { - if (is != null) IOUtils.closeQuietly(is); + } catch (IOException ex) { + if (is != null) + IOUtils.closeQuietly(is); is = con.getErrorStream(); result = getStreamContent(is); } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/StrUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/StrUtils.java index 18ed4bb4d..440c42ec3 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/StrUtils.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/StrUtils.java @@ -34,37 +34,32 @@ public final class StrUtils { public static String substring(String src, int start_idx, int end_idx) { byte[] b = src.getBytes(); String tgt = ""; - for (int i = start_idx; i <= end_idx; i++) { + for (int i = start_idx; i <= end_idx; i++) tgt += (char) b[i]; - } return tgt; } public static String makeCommand(List cmd) { StringBuilder cmdbuf = new StringBuilder(120); for (int i = 0; i < cmd.size(); i++) { - if (i > 0) { + if (i > 0) cmdbuf.append(' '); - } String s = cmd.get(i); - if (s.indexOf(' ') >= 0 || s.indexOf('\t') >= 0) { + if (s.indexOf(' ') >= 0 || s.indexOf('\t') >= 0) if (s.charAt(0) != '"') { cmdbuf.append('"'); cmdbuf.append(s); - if (s.endsWith("\\")) { + if (s.endsWith("\\")) cmdbuf.append("\\"); - } cmdbuf.append('"'); - } else if (s.endsWith("\"")) { + } else if (s.endsWith("\"")) /* The argument has already been quoted. */ cmdbuf.append(s); - } else { + else /* Unmatched quote for the argument. */ throw new IllegalArgumentException(); - } - } else { + else cmdbuf.append(s); - } } String str = cmdbuf.toString(); @@ -76,61 +71,49 @@ public final class StrUtils { } public static boolean startsWithOne(String[] a, String match) { - if (a == null) { + if (a == null) return false; - } - for (String b : a) { - if (startsWith(match, b)) { + for (String b : a) + if (startsWith(match, b)) return true; - } - } return false; } public static boolean equalsOne(String base, String... a) { - for (String s : a) { - if (base.equals(s)) { + for (String s : a) + if (base.equals(s)) return true; - } - } return false; } public static boolean containsOne(List base, List match) { - for (String a : base) { - for (String b : match) { - if (a.toLowerCase().contains(b.toLowerCase())) { + for (String a : base) + for (String b : match) + if (a.toLowerCase().contains(b.toLowerCase())) return true; - } - } - } return false; } public static int getCharShowTime(String s, char c) { int res = 0; - for (int i = 0; i < s.length(); i++) { - if (s.charAt(i) == c) { + for (int i = 0; i < s.length(); i++) + if (s.charAt(i) == c) res++; - } - } return res; } public static String formatVersion(String ver) { - if (isBlank(ver)) { + if (isBlank(ver)) return null; - } else { - for(char ch : ver.toCharArray()) { - if((ch < '0' || ch > '9') && ch != '.') return null; - } - } + else + for (char ch : ver.toCharArray()) + if ((ch < '0' || ch > '9') && ch != '.') + return null; int i = getCharShowTime(ver, '.'); - if (i == 1) { + if (i == 1) return ver + ".0"; - } else { + else return ver; - } } public static String parseParams(String addBefore, Collection paramArrayOfObject, String paramString) { @@ -138,57 +121,49 @@ public final class StrUtils { } public static String parseParams(String addBefore, Object[] paramArrayOfObject, String paramString) { - if (paramArrayOfObject == null) { + if (paramArrayOfObject == null) return ""; - } StringBuilder localStringBuffer = new StringBuilder(); for (int i = 0; i < paramArrayOfObject.length; i++) { Object localObject = paramArrayOfObject[i]; - if (i > 0) { + if (i > 0) localStringBuffer.append(addBefore).append(paramString); - } - if (localObject == null) { + if (localObject == null) localStringBuffer.append("null"); - } else if (localObject.getClass().isArray()) { + else if (localObject.getClass().isArray()) { localStringBuffer.append("["); if ((localObject instanceof Object[])) { Object[] arrayOfObject = (Object[]) localObject; localStringBuffer.append(parseParams(addBefore, arrayOfObject, paramString)); - } else { + } else for (int j = 0; j < Array.getLength(localObject); j++) { - if (j > 0) { + if (j > 0) localStringBuffer.append(paramString); - } localStringBuffer.append(addBefore).append(Array.get(localObject, j)); } - } localStringBuffer.append("]"); - } else { + } else localStringBuffer.append(addBefore).append(paramArrayOfObject[i]); - } } return localStringBuffer.toString(); } public static boolean isEquals(String base, String to) { - if (base == null) { + if (base == null) return (to == null); - } else { + else return base.equals(to); - } } public static Dimension parseDimension(String str) { String[] tokenized = tokenize(str, "x,"); - if (tokenized.length != 2) { + if (tokenized.length != 2) return null; - } int i = MathUtils.parseInt(tokenized[0], -1); int j = MathUtils.parseInt(tokenized[1], -1); - if ((i < 0) || (j < 0)) { + if ((i < 0) || (j < 0)) return null; - } return new Dimension(i, j); } @@ -210,9 +185,8 @@ public final class StrUtils { public static String trimExtension(String filename) { if ((filename != null) && (filename.length() > 0)) { int i = filename.lastIndexOf('.'); - if ((i > -1) && (i < (filename.length()))) { + if ((i > -1) && (i < (filename.length()))) return filename.substring(0, i); - } } return filename; } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/SwingUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/SwingUtils.java index 56f9ec618..415ca3436 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/SwingUtils.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/SwingUtils.java @@ -38,28 +38,29 @@ public class SwingUtils { * Make DefaultTableModel by overriding getColumnClass and isCellEditable of * DefaultTableModel. * - * @param titleA The title of each column. - * @param typesA The type of each column value. + * @param titleA The title of each column. + * @param typesA The type of each column value. * @param canEditA Is column editable? + * * @return */ public static DefaultTableModel makeDefaultTableModel(String[] titleA, final Class[] typesA, final boolean[] canEditA) { return new javax.swing.table.DefaultTableModel( - new Object[][]{}, - titleA) { - Class[] types = typesA; - boolean[] canEdit = canEditA; + new Object[][] {}, + titleA) { + Class[] types = typesA; + boolean[] canEdit = canEditA; - @Override - public Class getColumnClass(int columnIndex) { - return types[columnIndex]; - } + @Override + public Class getColumnClass(int columnIndex) { + return types[columnIndex]; + } - @Override - public boolean isCellEditable(int rowIndex, int columnIndex) { - return canEdit[columnIndex]; - } - }; + @Override + public boolean isCellEditable(int rowIndex, int columnIndex) { + return canEdit[columnIndex]; + } + }; } /** @@ -99,6 +100,7 @@ public class SwingUtils { * Get the DefaultListModel from JList. * * @param list + * * @return Forcely Type casted to DefaultListModel */ public static DefaultListModel getDefaultListModel(JList list) { @@ -108,7 +110,7 @@ public class SwingUtils { /** * Append new element to JList * - * @param list the JList + * @param list the JList * @param element the Element */ public static void appendLast(JList list, Object element) { @@ -152,12 +154,14 @@ public class SwingUtils { } public static String getParsedJPanelText(JLabel jLabel1, String longString) { - if (StrUtils.isBlank(longString)) return longString; + if (StrUtils.isBlank(longString)) + return longString; StringBuilder builder = new StringBuilder(); char[] chars = longString.toCharArray(); FontMetrics fontMetrics = jLabel1.getFontMetrics(jLabel1.getFont()); for (int beginIndex = 0, limit = 1;; limit++) { - if (beginIndex + limit >= chars.length) break; + if (beginIndex + limit >= chars.length) + break; if (fontMetrics.charsWidth(chars, beginIndex, limit) < jLabel1.getWidth()) { if (beginIndex + limit < chars.length) continue; diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Utils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Utils.java index 7ee95e46f..bfdb06a84 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Utils.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/Utils.java @@ -60,7 +60,9 @@ public final class Utils { Field field = ClassLoader.class.getDeclaredField("usr_paths"); field.setAccessible(true); String[] paths = (String[]) field.get(null); - for (String path : paths) if (s.equals(path)) return; + for (String path : paths) + if (s.equals(path)) + return; String[] tmp = new String[paths.length + 1]; System.arraycopy(paths, 0, tmp, 0, paths.length); tmp[paths.length] = s; @@ -166,6 +168,7 @@ public final class Utils { /** * In order to fight against the permission manager by Minecraft Forge. + * * @param status exit code */ public static void shutdownForcely(int status) { @@ -181,6 +184,7 @@ public final class Utils { } public static void requireNonNull(Object o) { - if (o == null) throw new NullPointerException("Oh dear, there is a problem..."); + if (o == null) + throw new NullPointerException("Oh dear, there is a problem..."); } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/VersionNumber.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/VersionNumber.java index 43b1b21e8..08c0ea415 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/VersionNumber.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/VersionNumber.java @@ -68,9 +68,12 @@ public final class VersionNumber implements Comparable { @Override public int compareTo(VersionNumber o) { - if (isOlder(this, o)) return -1; - else if (isOlder(o, this)) return 1; - else return 0; + if (isOlder(this, o)) + return -1; + else if (isOlder(o, this)) + return 1; + else + return 0; } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/code/Base64.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/code/Base64.java index 0ebd11abc..6390260d4 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/code/Base64.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/code/Base64.java @@ -25,87 +25,80 @@ import java.io.UnsupportedEncodingException; public class Base64 { public static char[] encode(byte[] data) { - char[] out = new char[((data.length + 2) / 3) * 4]; - for (int i = 0, index = 0; i < data.length; i += 3, index += 4) { - boolean quad = false; - boolean trip = false; - int val = (0xFF & (int) data[i]); - val <<= 8; - if ((i + 1) < data.length) { - val |= (0xFF & (int) data[i + 1]); - trip = true; - } - val <<= 8; - if ((i + 2) < data.length) { - val |= (0xFF & (int) data[i + 2]); - quad = true; - } - out[index + 3] = alphabet[(quad ? (val & 0x3F) : 64)]; - val >>= 6; - out[index + 2] = alphabet[(trip ? (val & 0x3F) : 64)]; - val >>= 6; - out[index + 1] = alphabet[val & 0x3F]; - val >>= 6; - out[index + 0] = alphabet[val & 0x3F]; - } - return out; + char[] out = new char[((data.length + 2) / 3) * 4]; + for (int i = 0, index = 0; i < data.length; i += 3, index += 4) { + boolean quad = false; + boolean trip = false; + int val = (0xFF & (int) data[i]); + val <<= 8; + if ((i + 1) < data.length) { + val |= (0xFF & (int) data[i + 1]); + trip = true; + } + val <<= 8; + if ((i + 2) < data.length) { + val |= (0xFF & (int) data[i + 2]); + quad = true; + } + out[index + 3] = alphabet[(quad ? (val & 0x3F) : 64)]; + val >>= 6; + out[index + 2] = alphabet[(trip ? (val & 0x3F) : 64)]; + val >>= 6; + out[index + 1] = alphabet[val & 0x3F]; + val >>= 6; + out[index + 0] = alphabet[val & 0x3F]; + } + return out; } - + public static char[] encode(String s, String charset) throws UnsupportedEncodingException { - return encode(s.getBytes(charset)); + return encode(s.getBytes(charset)); } - + public static char[] encode(String s) { - return encode(s.getBytes()); + return encode(s.getBytes()); } public static byte[] decode(char[] data) { - int len = ((data.length + 3) / 4) * 3; - if (data.length > 0 && data[data.length - 1] == '=') { - --len; - } - if (data.length > 1 && data[data.length - 2] == '=') { - --len; - } - byte[] out = new byte[len]; - int shift = 0; - int accum = 0; - int index = 0; - for (int ix = 0; ix < data.length; ix++) { - int value = codes[data[ix] & 0xFF]; - if (value >= 0) { - accum <<= 6; - shift += 6; - accum |= value; - if (shift >= 8) { - shift -= 8; - out[index++] = (byte) ((accum >> shift) & 0xff); - } - } - } - if (index != out.length) { - throw new Error("miscalculated data length!"); - } - return out; + int len = ((data.length + 3) / 4) * 3; + if (data.length > 0 && data[data.length - 1] == '=') + --len; + if (data.length > 1 && data[data.length - 2] == '=') + --len; + byte[] out = new byte[len]; + int shift = 0; + int accum = 0; + int index = 0; + for (int ix = 0; ix < data.length; ix++) { + int value = codes[data[ix] & 0xFF]; + if (value >= 0) { + accum <<= 6; + shift += 6; + accum |= value; + if (shift >= 8) { + shift -= 8; + out[index++] = (byte) ((accum >> shift) & 0xff); + } + } + } + if (index != out.length) + throw new Error("miscalculated data length!"); + return out; } private static final char[] alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=" - .toCharArray(); + .toCharArray(); private static final byte[] codes = new byte[256]; static { - for (int i = 0; i < 256; i++) { - codes[i] = -1; - } - for (int i = 'A'; i <= 'Z'; i++) { - codes[i] = (byte) (i - 'A'); - } - for (int i = 'a'; i <= 'z'; i++) { - codes[i] = (byte) (26 + i - 'a'); - } - for (int i = '0'; i <= '9'; i++) { - codes[i] = (byte) (52 + i - '0'); - } - codes['+'] = 62; - codes['/'] = 63; + for (int i = 0; i < 256; i++) + codes[i] = -1; + for (int i = 'A'; i <= 'Z'; i++) + codes[i] = (byte) (i - 'A'); + for (int i = 'a'; i <= 'z'; i++) + codes[i] = (byte) (26 + i - 'a'); + for (int i = '0'; i <= '9'; i++) + codes[i] = (byte) (52 + i - '0'); + codes['+'] = 62; + codes['/'] = 63; } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/code/Charsets.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/code/Charsets.java index d38ddf315..59279ca4d 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/code/Charsets.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/code/Charsets.java @@ -33,10 +33,10 @@ public class Charsets { public static final Charset UTF_8 = Charset.forName("UTF-8"); public static Charset toCharset(Charset charset) { - return charset == null ? Charset.defaultCharset() : charset; + return charset == null ? Charset.defaultCharset() : charset; } public static Charset toCharset(String charset) { - return charset == null ? Charset.defaultCharset() : Charset.forName(charset); + return charset == null ? Charset.defaultCharset() : Charset.forName(charset); } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/code/DigestUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/code/DigestUtils.java index f80d2946b..6f2224180 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/code/DigestUtils.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/code/DigestUtils.java @@ -30,255 +30,255 @@ public class DigestUtils { private static final int STREAM_BUFFER_LENGTH = 1024; private static byte[] digest(MessageDigest digest, InputStream data) - throws IOException { - return updateDigest(digest, data).digest(); + throws IOException { + return updateDigest(digest, data).digest(); } public static MessageDigest getDigest(String algorithm) { - try { - return MessageDigest.getInstance(algorithm); - } catch (NoSuchAlgorithmException e) { - throw new IllegalArgumentException(e); - } + try { + return MessageDigest.getInstance(algorithm); + } catch (NoSuchAlgorithmException e) { + throw new IllegalArgumentException(e); + } } public static MessageDigest getMd2Digest() { - return getDigest("MD2"); + return getDigest("MD2"); } public static MessageDigest getMd5Digest() { - return getDigest("MD5"); + return getDigest("MD5"); } public static MessageDigest getSha1Digest() { - return getDigest("SHA-1"); + return getDigest("SHA-1"); } public static MessageDigest getSha256Digest() { - return getDigest("SHA-256"); + return getDigest("SHA-256"); } public static MessageDigest getSha384Digest() { - return getDigest("SHA-384"); + return getDigest("SHA-384"); } public static MessageDigest getSha512Digest() { - return getDigest("SHA-512"); + return getDigest("SHA-512"); } @Deprecated public static MessageDigest getShaDigest() { - return getSha1Digest(); + return getSha1Digest(); } public static byte[] md2(byte[] data) { - return getMd2Digest().digest(data); + return getMd2Digest().digest(data); } public static byte[] md2(InputStream data) - throws IOException { - return digest(getMd2Digest(), data); + throws IOException { + return digest(getMd2Digest(), data); } public static byte[] md2(String data) { - return md2(data.getBytes(Charsets.UTF_8)); + return md2(data.getBytes(Charsets.UTF_8)); } public static String md2Hex(byte[] data) { - return Hex.encodeHexString(md2(data)); + return Hex.encodeHexString(md2(data)); } public static String md2Hex(InputStream data) - throws IOException { - return Hex.encodeHexString(md2(data)); + throws IOException { + return Hex.encodeHexString(md2(data)); } public static String md2Hex(String data) { - return Hex.encodeHexString(md2(data)); + return Hex.encodeHexString(md2(data)); } public static byte[] md5(byte[] data) { - return getMd5Digest().digest(data); + return getMd5Digest().digest(data); } public static byte[] md5(InputStream data) - throws IOException { - return digest(getMd5Digest(), data); + throws IOException { + return digest(getMd5Digest(), data); } public static byte[] md5(String data) { - return md5(data.getBytes(Charsets.UTF_8)); + return md5(data.getBytes(Charsets.UTF_8)); } public static String md5Hex(byte[] data) { - return Hex.encodeHexString(md5(data)); + return Hex.encodeHexString(md5(data)); } public static String md5Hex(InputStream data) - throws IOException { - return Hex.encodeHexString(md5(data)); + throws IOException { + return Hex.encodeHexString(md5(data)); } public static String md5Hex(String data) { - return Hex.encodeHexString(md5(data)); + return Hex.encodeHexString(md5(data)); } @Deprecated public static byte[] sha(byte[] data) { - return sha1(data); + return sha1(data); } @Deprecated public static byte[] sha(InputStream data) - throws IOException { - return sha1(data); + throws IOException { + return sha1(data); } @Deprecated public static byte[] sha(String data) { - return sha1(data); + return sha1(data); } public static byte[] sha1(byte[] data) { - return getSha1Digest().digest(data); + return getSha1Digest().digest(data); } public static byte[] sha1(InputStream data) - throws IOException { - return digest(getSha1Digest(), data); + throws IOException { + return digest(getSha1Digest(), data); } public static byte[] sha1(String data) { - return sha1(data.getBytes(Charsets.UTF_8)); + return sha1(data.getBytes(Charsets.UTF_8)); } public static String sha1Hex(byte[] data) { - return Hex.encodeHexString(sha1(data)); + return Hex.encodeHexString(sha1(data)); } public static String sha1Hex(InputStream data) - throws IOException { - return Hex.encodeHexString(sha1(data)); + throws IOException { + return Hex.encodeHexString(sha1(data)); } public static String sha1Hex(String data) { - return Hex.encodeHexString(sha1(data)); + return Hex.encodeHexString(sha1(data)); } public static byte[] sha256(byte[] data) { - return getSha256Digest().digest(data); + return getSha256Digest().digest(data); } public static byte[] sha256(InputStream data) - throws IOException { - return digest(getSha256Digest(), data); + throws IOException { + return digest(getSha256Digest(), data); } public static byte[] sha256(String data) { - return sha256(data.getBytes(Charsets.UTF_8)); + return sha256(data.getBytes(Charsets.UTF_8)); } public static String sha256Hex(byte[] data) { - return Hex.encodeHexString(sha256(data)); + return Hex.encodeHexString(sha256(data)); } public static String sha256Hex(InputStream data) - throws IOException { - return Hex.encodeHexString(sha256(data)); + throws IOException { + return Hex.encodeHexString(sha256(data)); } public static String sha256Hex(String data) { - return Hex.encodeHexString(sha256(data)); + return Hex.encodeHexString(sha256(data)); } public static byte[] sha384(byte[] data) { - return getSha384Digest().digest(data); + return getSha384Digest().digest(data); } public static byte[] sha384(InputStream data) - throws IOException { - return digest(getSha384Digest(), data); + throws IOException { + return digest(getSha384Digest(), data); } public static byte[] sha384(String data) { - return sha384(data.getBytes(Charsets.UTF_8)); + return sha384(data.getBytes(Charsets.UTF_8)); } public static String sha384Hex(byte[] data) { - return Hex.encodeHexString(sha384(data)); + return Hex.encodeHexString(sha384(data)); } public static String sha384Hex(InputStream data) - throws IOException { - return Hex.encodeHexString(sha384(data)); + throws IOException { + return Hex.encodeHexString(sha384(data)); } public static String sha384Hex(String data) { - return Hex.encodeHexString(sha384(data)); + return Hex.encodeHexString(sha384(data)); } public static byte[] sha512(byte[] data) { - return getSha512Digest().digest(data); + return getSha512Digest().digest(data); } public static byte[] sha512(InputStream data) - throws IOException { - return digest(getSha512Digest(), data); + throws IOException { + return digest(getSha512Digest(), data); } public static byte[] sha512(String data) { - return sha512(data.getBytes(Charsets.UTF_8)); + return sha512(data.getBytes(Charsets.UTF_8)); } public static String sha512Hex(byte[] data) { - return Hex.encodeHexString(sha512(data)); + return Hex.encodeHexString(sha512(data)); } public static String sha512Hex(InputStream data) - throws IOException { - return Hex.encodeHexString(sha512(data)); + throws IOException { + return Hex.encodeHexString(sha512(data)); } public static String sha512Hex(String data) { - return Hex.encodeHexString(sha512(data)); + return Hex.encodeHexString(sha512(data)); } @Deprecated public static String shaHex(byte[] data) { - return sha1Hex(data); + return sha1Hex(data); } @Deprecated public static String shaHex(InputStream data) - throws IOException { - return sha1Hex(data); + throws IOException { + return sha1Hex(data); } @Deprecated public static String shaHex(String data) { - return sha1Hex(data); + return sha1Hex(data); } public static MessageDigest updateDigest(MessageDigest messageDigest, byte[] valueToDigest) { - messageDigest.update(valueToDigest); - return messageDigest; + messageDigest.update(valueToDigest); + return messageDigest; } public static MessageDigest updateDigest(MessageDigest digest, InputStream data) - throws IOException { - byte[] buffer = new byte[STREAM_BUFFER_LENGTH]; - int read = data.read(buffer, 0, STREAM_BUFFER_LENGTH); + throws IOException { + byte[] buffer = new byte[STREAM_BUFFER_LENGTH]; + int read = data.read(buffer, 0, STREAM_BUFFER_LENGTH); - while (read > -1) { - digest.update(buffer, 0, read); - read = data.read(buffer, 0, STREAM_BUFFER_LENGTH); - } + while (read > -1) { + digest.update(buffer, 0, read); + read = data.read(buffer, 0, STREAM_BUFFER_LENGTH); + } - return digest; + return digest; } public static MessageDigest updateDigest(MessageDigest messageDigest, String valueToDigest) { - messageDigest.update(valueToDigest.getBytes(Charsets.UTF_8)); - return messageDigest; + messageDigest.update(valueToDigest.getBytes(Charsets.UTF_8)); + return messageDigest; } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/code/Hex.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/code/Hex.java index 26a34f7f4..17ae667e7 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/code/Hex.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/code/Hex.java @@ -28,108 +28,106 @@ public class Hex { private final Charset charset; public static byte[] decodeHex(char[] data) throws Exception { - int len = data.length; + int len = data.length; - if ((len & 0x1) != 0) { - throw new Exception("Odd number of characters."); - } + if ((len & 0x1) != 0) + throw new Exception("Odd number of characters."); - byte[] out = new byte[len >> 1]; + byte[] out = new byte[len >> 1]; - int i = 0; - for (int j = 0; j < len; i++) { - int f = toDigit(data[j], j) << 4; - j++; - f |= toDigit(data[j], j); - j++; - out[i] = (byte) (f & 0xFF); - } + int i = 0; + for (int j = 0; j < len; i++) { + int f = toDigit(data[j], j) << 4; + j++; + f |= toDigit(data[j], j); + j++; + out[i] = (byte) (f & 0xFF); + } - return out; + return out; } public static char[] encodeHex(byte[] data) { - return encodeHex(data, true); + return encodeHex(data, true); } public static char[] encodeHex(byte[] data, boolean toLowerCase) { - return encodeHex(data, toLowerCase ? DIGITS_LOWER : DIGITS_UPPER); + return encodeHex(data, toLowerCase ? DIGITS_LOWER : DIGITS_UPPER); } protected static char[] encodeHex(byte[] data, char[] toDigits) { - int l = data.length; - char[] out = new char[l << 1]; + int l = data.length; + char[] out = new char[l << 1]; - int i = 0; - for (int j = 0; i < l; i++) { - out[(j++)] = toDigits[((0xF0 & data[i]) >>> 4)]; - out[(j++)] = toDigits[(0xF & data[i])]; - } - return out; + int i = 0; + for (int j = 0; i < l; i++) { + out[(j++)] = toDigits[((0xF0 & data[i]) >>> 4)]; + out[(j++)] = toDigits[(0xF & data[i])]; + } + return out; } public static String encodeHexString(byte[] data) { - return new String(encodeHex(data)); + return new String(encodeHex(data)); } protected static int toDigit(char ch, int index) throws Exception { - int digit = Character.digit(ch, 16); - if (digit == -1) { - throw new Exception("Illegal hexadecimal character " + ch + " at index " + index); - } - return digit; + int digit = Character.digit(ch, 16); + if (digit == -1) + throw new Exception("Illegal hexadecimal character " + ch + " at index " + index); + return digit; } public Hex() { - this.charset = DEFAULT_CHARSET; + this.charset = DEFAULT_CHARSET; } public Hex(Charset charset) { - this.charset = charset; + this.charset = charset; } public Hex(String charsetName) { - this(Charset.forName(charsetName)); + this(Charset.forName(charsetName)); } public byte[] decode(byte[] array) throws Exception { - return decodeHex(new String(array, getCharset()).toCharArray()); + return decodeHex(new String(array, getCharset()).toCharArray()); } public Object decode(Object object) throws Exception { - try { - char[] charArray = (object instanceof String) ? ((String) object).toCharArray() : (char[]) (char[]) object; - return decodeHex(charArray); - } catch (ClassCastException e) { - throw new Exception(e.getMessage(), e); - } + try { + char[] charArray = (object instanceof String) ? ((String) object).toCharArray() : (char[]) (char[]) object; + return decodeHex(charArray); + } catch (ClassCastException e) { + throw new Exception(e.getMessage(), e); + } } public byte[] encode(byte[] array) { - return encodeHexString(array).getBytes(getCharset()); + return encodeHexString(array).getBytes(getCharset()); } public Object encode(Object object) - throws Exception { - try { - byte[] byteArray = (object instanceof String) ? ((String) object).getBytes(getCharset()) : (byte[]) (byte[]) object; + throws Exception { + try { + byte[] byteArray = (object instanceof String) ? ((String) object).getBytes(getCharset()) : (byte[]) (byte[]) object; - return encodeHex(byteArray); - } catch (ClassCastException e) { - throw new Exception(e.getMessage(), e); - } + return encodeHex(byteArray); + } catch (ClassCastException e) { + throw new Exception(e.getMessage(), e); + } } public Charset getCharset() { - return this.charset; + return this.charset; } public String getCharsetName() { - return this.charset.name(); + return this.charset.name(); } @Override public String toString() { - return super.toString() + "[charsetName=" + this.charset + "]"; + return super.toString() + "[charsetName=" + this.charset + "]"; } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/FalseFunction.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/FalseFunction.java index 1b73751a8..12008a769 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/FalseFunction.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/FalseFunction.java @@ -26,5 +26,5 @@ public class FalseFunction implements NonFunction { public Boolean apply() { return Boolean.FALSE; } - + } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/TrueFunction.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/TrueFunction.java index d81a6f333..44eb688e7 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/TrueFunction.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/functions/TrueFunction.java @@ -23,12 +23,13 @@ package org.jackhuang.hellominecraft.utils.functions; public class TrueFunction implements NonFunction { public static final TrueFunction instance = new TrueFunction(); - - private TrueFunction(){} - + + private TrueFunction() { + } + @Override public Boolean apply() { return Boolean.TRUE; } - + } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/Compressor.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/Compressor.java index f82f32b24..7e1545ba7 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/Compressor.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/Compressor.java @@ -43,7 +43,8 @@ public class Compressor { * 功能:把 sourceDir 目录下的所有文件进行 zip 格式的压缩,保存为指定 zip 文件 * * @param sourceDir 源文件夹 - * @param zipFile 压缩生成的zip文件路径。 + * @param zipFile 压缩生成的zip文件路径。 + * * @throws java.io.IOException 压缩失败或无法读取 */ public static void zip(File sourceDir, File zipFile) throws IOException { @@ -64,12 +65,12 @@ public class Compressor { /** * 将文件压缩成zip文件 * - * @param source zip文件路径 + * @param source zip文件路径 * @param basePath 待压缩文件根目录 - * @param zos zip文件的os + * @param zos zip文件的os */ private static void zipFile(File source, String basePath, - ZipOutputStream zos) throws IOException { + ZipOutputStream zos) throws IOException { File[] files; if (source.isDirectory()) files = source.listFiles(); @@ -83,7 +84,7 @@ public class Compressor { for (File file : files) if (file.isDirectory()) { pathName = file.getPath().substring(basePath.length() + 1) - + "/"; + + "/"; if (file.getName().toLowerCase().contains("meta-inf")) continue; zos.putNextEntry(new ZipEntry(pathName)); @@ -111,8 +112,9 @@ public class Compressor { * 将文件压缩成zip文件 * * @param zipFileName zip文件路径 - * @param extPlace 待压缩文件根目录 - * @param without 带前缀的不解压 + * @param extPlace 待压缩文件根目录 + * @param without 带前缀的不解压 + * * @throws java.io.IOException 解压失败或无法写入 */ public static void unzip(File zipFileName, File extPlace, String[] without) throws IOException { @@ -125,7 +127,8 @@ public class Compressor { while (e.hasMoreElements()) { ZipEntry zipEnt = (ZipEntry) e.nextElement(); gbkPath = zipEnt.getName(); - if (StrUtils.startsWithOne(without, gbkPath)) continue; + if (StrUtils.startsWithOne(without, gbkPath)) + continue; if (zipEnt.isDirectory()) { strtemp = strPath + File.separator + gbkPath; File dir = new File(strtemp); @@ -160,7 +163,8 @@ public class Compressor { * 将zip1合并到zip2里面,即保留zip2 * * @param destFile zip1 - * @param srcFile zip2 + * @param srcFile zip2 + * * @throws java.io.IOException 无法写入或读取 */ public static void merge(File destFile, File srcFile) throws IOException { diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/FileUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/FileUtils.java index 1ea793fb6..e7a63fd63 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/FileUtils.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/FileUtils.java @@ -36,7 +36,7 @@ import org.jackhuang.hellominecraft.utils.NetUtils; public class FileUtils { public static void deleteDirectory(File directory) - throws IOException { + throws IOException { if (!directory.exists()) return; @@ -71,7 +71,7 @@ public class FileUtils { } public static void cleanDirectory(File directory) - throws IOException { + throws IOException { if (!directory.exists()) { //String message = directory + " does not exist"; //throw new IllegalArgumentException(message); @@ -101,7 +101,7 @@ public class FileUtils { } public static void forceDelete(File file) - throws IOException { + throws IOException { if (file.isDirectory()) deleteDirectory(file); else { @@ -117,7 +117,7 @@ public class FileUtils { } public static boolean isSymlink(File file) - throws IOException { + throws IOException { if (file == null) throw new NullPointerException("File must not be null"); if (File.separatorChar == '\\') @@ -134,22 +134,22 @@ public class FileUtils { } public static void copyDirectory(File srcDir, File destDir) - throws IOException { + throws IOException { copyDirectory(srcDir, destDir, true); } public static void copyDirectory(File srcDir, File destDir, boolean preserveFileDate) - throws IOException { + throws IOException { copyDirectory(srcDir, destDir, null, preserveFileDate); } public static void copyDirectory(File srcDir, File destDir, FileFilter filter) - throws IOException { + throws IOException { copyDirectory(srcDir, destDir, filter, true); } public static void copyDirectory(File srcDir, File destDir, FileFilter filter, boolean preserveFileDate) - throws IOException { + throws IOException { if (srcDir == null) throw new NullPointerException("Source must not be null"); if (destDir == null) @@ -176,7 +176,7 @@ public class FileUtils { } private static void doCopyDirectory(File srcDir, File destDir, FileFilter filter, boolean preserveFileDate, List exclusionList) - throws IOException { + throws IOException { File[] srcFiles = filter == null ? srcDir.listFiles() : srcDir.listFiles(filter); if (srcFiles == null) throw new IOException("Failed to list contents of " + srcDir); @@ -203,7 +203,7 @@ public class FileUtils { } public static String readFileToString(File file) - throws IOException { + throws IOException { return NetUtils.getStreamContent(IOUtils.openInputStream(file)); } @@ -217,7 +217,7 @@ public class FileUtils { } public static String readFileToString(File file, String charset) - throws IOException { + throws IOException { return NetUtils.getStreamContent(IOUtils.openInputStream(file), charset); } @@ -228,7 +228,7 @@ public class FileUtils { return ""; } } - + public static void copyFileQuietly(File srcFile, File destFile) { try { copyFile(srcFile, destFile); @@ -238,12 +238,12 @@ public class FileUtils { } public static void copyFile(File srcFile, File destFile) - throws IOException { + throws IOException { copyFile(srcFile, destFile, true); } public static void copyFile(File srcFile, File destFile, boolean preserveFileDate) - throws IOException { + throws IOException { if (srcFile == null) throw new NullPointerException("Source must not be null"); if (destFile == null) @@ -256,7 +256,7 @@ public class FileUtils { throw new IOException("Source '" + srcFile + "' and destination '" + destFile + "' are the same"); File parentFile = destFile.getParentFile(); if ((parentFile != null) - && (!parentFile.mkdirs()) && (!parentFile.isDirectory())) + && (!parentFile.mkdirs()) && (!parentFile.isDirectory())) throw new IOException("Destination '" + parentFile + "' directory cannot be created"); if ((destFile.exists()) && (!destFile.canWrite())) @@ -265,7 +265,7 @@ public class FileUtils { } private static void doCopyFile(File srcFile, File destFile, boolean preserveFileDate) - throws IOException { + throws IOException { if ((destFile.exists()) && (destFile.isDirectory())) throw new IOException("Destination '" + destFile + "' exists but is a directory"); @@ -355,38 +355,38 @@ public class FileUtils { } public static void write(File file, CharSequence data) - throws IOException { + throws IOException { write(file, data, "UTF-8", false); } public static void write(File file, CharSequence data, boolean append) - throws IOException { + throws IOException { write(file, data, "UTF-8", append); } public static void write(File file, CharSequence data, String encoding) - throws IOException { + throws IOException { write(file, data, encoding, false); } public static void write(File file, CharSequence data, String encoding, boolean append) - throws IOException { + throws IOException { String str = data == null ? null : data.toString(); writeStringToFile(file, str, encoding, append); } public static void writeStringToFile(File file, String data) - throws IOException { + throws IOException { writeStringToFile(file, data, "UTF-8", false); } public static void writeStringToFile(File file, String data, String encoding) - throws IOException { + throws IOException { writeStringToFile(file, data, encoding, false); } public static void writeStringToFile(File file, String data, String encoding, boolean append) - throws IOException { + throws IOException { OutputStream out = null; try { out = openOutputStream(file, append); @@ -398,7 +398,7 @@ public class FileUtils { } public static FileInputStream openInputStream(File file) - throws IOException { + throws IOException { if (file.exists()) { if (file.isDirectory()) throw new IOException("File '" + file + "' exists but is a directory"); @@ -410,12 +410,12 @@ public class FileUtils { } public static FileOutputStream openOutputStream(File file) - throws IOException { + throws IOException { return openOutputStream(file, false); } public static FileOutputStream openOutputStream(File file, boolean append) - throws IOException { + throws IOException { if (file.exists()) { if (file.isDirectory()) throw new IOException("File '" + file + "' exists but is a directory"); @@ -424,7 +424,7 @@ public class FileUtils { } else { File parent = file.getParentFile(); if ((parent != null) - && (!parent.mkdirs()) && (!parent.isDirectory())) + && (!parent.mkdirs()) && (!parent.isDirectory())) throw new IOException("Directory '" + parent + "' could not be created"); file.createNewFile(); } @@ -435,9 +435,11 @@ public class FileUtils { public static File[] searchSuffix(File dir, String suffix) { ArrayList al = new ArrayList(); File[] files = dir.listFiles(); - if (files == null) return new File[0]; + if (files == null) + return new File[0]; for (File f : files) - if (f.getName().endsWith(suffix)) al.add(f); + if (f.getName().endsWith(suffix)) + al.add(f); return al.toArray(new File[0]); } } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/IOUtils.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/IOUtils.java index d72cb6323..f4cd8fb7c 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/IOUtils.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/IOUtils.java @@ -169,7 +169,7 @@ public class IOUtils { public static String getJavaDir() { return getJavaDir(System.getProperty("java.home")); } - + public static String getJavaDir(String home) { String path = home + File.separatorChar + "bin" + File.separatorChar; path = addSeparator(path); @@ -218,19 +218,19 @@ public class IOUtils { } public static void write(byte[] data, OutputStream output) - throws IOException { + throws IOException { if (data != null) output.write(data); } public static void write(String data, OutputStream output, String encoding) - throws IOException { + throws IOException { if (data != null) output.write(data.getBytes(encoding)); } public static FileInputStream openInputStream(File file) - throws IOException { + throws IOException { if (file.exists()) { if (file.isDirectory()) throw new IOException("File '" + file + "' exists but is a directory"); @@ -277,29 +277,27 @@ public class IOUtils { return null; } } - + public static List readProcessByInputStream(String[] cmd) throws IOException, InterruptedException { JavaProcess jp = new JavaProcess(cmd, new ProcessBuilder(cmd).start(), null); ArrayList lines = new ArrayList<>(); try (BufferedReader br = new BufferedReader(new InputStreamReader(jp.getRawProcess().getInputStream()))) { jp.getRawProcess().waitFor(); String line; - while((line = br.readLine()) != null) { + while ((line = br.readLine()) != null) lines.add(line); - } } return lines; } - + public static List readProcessByErrorStream(String[] cmd) throws IOException, InterruptedException { JavaProcess jp = new JavaProcess(cmd, new ProcessBuilder(cmd).start(), null); ArrayList lines = new ArrayList<>(); try (BufferedReader br = new BufferedReader(new InputStreamReader(jp.getRawProcess().getErrorStream()))) { jp.getRawProcess().waitFor(); String line; - while((line = br.readLine()) != null) { + while ((line = br.readLine()) != null) lines.add(line); - } } return lines; } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/Java.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/Java.java index b566c4888..f3cdda42d 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/Java.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/Java.java @@ -52,7 +52,8 @@ public class Java { if (obj instanceof Java) { Java j = (Java) obj; return (j.getName() == null && this.getName() == null) || ((Java) obj).getName().equals(this.getName()); - } else return false; + } else + return false; } @Override @@ -88,8 +89,10 @@ public class Java { for (String java : javas) { int s = 0; for (char c : java.toCharArray()) - if (c == '.') s++; - if (s <= 1) continue; + if (c == '.') + s++; + if (s <= 1) + continue; String javahome = queryRegValue(java, "JavaHome"); if (javahome != null) ans.add(new Java(java.substring("HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Runtime Environment\\".length()), javahome)); @@ -98,8 +101,10 @@ public class Java { for (String java : javas) { int s = 0; for (char c : java.toCharArray()) - if (c == '.') s++; - if (s <= 1) continue; + if (c == '.') + s++; + if (s <= 1) + continue; String javahome = queryRegValue(java, "JavaHome"); if (javahome != null) ans.add(new Java(java.substring("HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\".length()), javahome)); @@ -111,7 +116,7 @@ public class Java { } private static List queryRegSubFolders(String location) throws IOException, InterruptedException { - String[] cmd = new String[]{"cmd", "/c", "reg", "query", location}; + String[] cmd = new String[] {"cmd", "/c", "reg", "query", location}; List l = IOUtils.readProcessByInputStream(cmd); List ans = new ArrayList<>(); for (String line : l) @@ -121,11 +126,12 @@ public class Java { } private static String queryRegValue(String location, String name) throws IOException, InterruptedException { - String[] cmd = new String[]{"cmd", "/c", "reg", "query", location, "/v", name}; + String[] cmd = new String[] {"cmd", "/c", "reg", "query", location, "/v", name}; List l = IOUtils.readProcessByInputStream(cmd); boolean last = false; for (String s : l) { - if (s.trim().isEmpty()) continue; + if (s.trim().isEmpty()) + continue; if (last == true && s.trim().startsWith(name)) { int begins = s.indexOf(name); if (begins > 0) { @@ -137,7 +143,8 @@ public class Java { } } } - if (s.trim().equals(location)) last = true; + if (s.trim().equals(location)) + last = true; } return null; } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/JavaProcess.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/JavaProcess.java index 9a5b43123..ab3babd0c 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/JavaProcess.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/JavaProcess.java @@ -34,7 +34,8 @@ public class JavaProcess { public JavaProcess(List commands, Process process, ProcessManager pm) { this.commands = commands; this.process = process; - if (pm != null) pm.registerProcess(this); + if (pm != null) + pm.registerProcess(this); } public JavaProcess(String[] commands, Process process, ProcessManager pm) { diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/JavaProcessMonitor.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/JavaProcessMonitor.java index 4d7fe02b9..959f117a5 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/JavaProcessMonitor.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/JavaProcessMonitor.java @@ -40,16 +40,16 @@ public class JavaProcessMonitor { public void start() { Event event = (sender2, t) -> { - if(t.getExitCode() != 0) { + if (t.getExitCode() != 0) MessageBox.Show(C.i18n("launch.exited_abnormally")); - } processThreadStopped((ProcessThread) sender2, false); return true; }; Event event2 = (sender3, p1) -> { if (p1.getExitCode() != 0 && p1.getStdErrLines().size() > 0 && StrUtils.containsOne(p1.getStdErrLines(), Arrays.asList("Could not create the Java Virtual Machine.", - "Error occurred during initialization of VM", - "A fatal exception has occurred. Program will exit."))) MessageBox.Show(C.i18n("launch.cannot_create_jvm")); + "Error occurred during initialization of VM", + "A fatal exception has occurred. Program will exit."))) + MessageBox.Show(C.i18n("launch.cannot_create_jvm")); processThreadStopped((ProcessThread) sender3, false); return true; }; @@ -71,7 +71,8 @@ public class JavaProcessMonitor { al.remove(t); al.removeAll(CollectionUtils.sortOut(al, t1 -> !t1.isAlive())); if (al.isEmpty() || forceTermintate) { - for (Thread a : al) a.interrupt(); + for (Thread a : al) + a.interrupt(); al.clear(); stoppedEvent.execute(p); } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/JdkVersion.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/JdkVersion.java index 2a3d9dc50..23170daeb 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/JdkVersion.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/JdkVersion.java @@ -55,9 +55,10 @@ public final class JdkVersion { @Override public boolean equals(Object obj) { - if (!(obj instanceof JdkVersion)) return false; + if (!(obj instanceof JdkVersion)) + return false; JdkVersion b = (JdkVersion) obj; - if(b.location == null || location == null) + if (b.location == null || location == null) return b.location == location; return new File(b.location).equals(new File(location)); } @@ -69,7 +70,8 @@ public final class JdkVersion { public JdkVersion(String location) { File f = new File(location); - if (f.exists() && f.isFile()) f = f.getParentFile(); + if (f.exists() && f.isFile()) + f = f.getParentFile(); this.location = f.getAbsolutePath(); } @@ -110,12 +112,17 @@ public final class JdkVersion { } private static int parseVersion(String javaVersion) { - if (StrUtils.isBlank(javaVersion)) return UNKOWN; + if (StrUtils.isBlank(javaVersion)) + return UNKOWN; int a = UNKOWN; - if (javaVersion.contains("1.9.")) a = JAVA_19; - else if (javaVersion.contains("1.8.")) a = JAVA_18; - else if (javaVersion.contains("1.7.")) a = JAVA_17; - else if (javaVersion.contains("1.6.")) a = JAVA_16; + if (javaVersion.contains("1.9.")) + a = JAVA_19; + else if (javaVersion.contains("1.8.")) + a = JAVA_18; + else if (javaVersion.contains("1.7.")) + a = JAVA_17; + else if (javaVersion.contains("1.6.")) + a = JAVA_16; return a; } @@ -124,6 +131,7 @@ public final class JdkVersion { * System.getProperty("java.version"). * * @return the full Java version string + * * @see System#getProperty(String) */ public static String getJavaVersion() { @@ -138,6 +146,7 @@ public final class JdkVersion { * rn a code comparable to the JAVA_XX codes in this class * * @return + * * @see #JAVA_13 * @see #JAVA_14 * @see #JAVA_15 @@ -156,11 +165,11 @@ public final class JdkVersion { private static final Pattern p = Pattern.compile("java version \"[1-9]*\\.[1-9]*\\.[0-9]*(.*?)\""); public static JdkVersion getJavaVersionFromExecutable(String file) throws IOException { - String[] str = new String[]{file, "-version"}; + String[] str = new String[] {file, "-version"}; Platform platform = Platform.BIT_32; String ver = null; try { - for(String line : IOUtils.readProcessByErrorStream(str)) { + for (String line : IOUtils.readProcessByErrorStream(str)) { Matcher m = p.matcher(line); if (m.find()) { ver = m.group(); diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/MessageBox.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/MessageBox.java index cfff7e410..68bae67b8 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/MessageBox.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/MessageBox.java @@ -85,9 +85,10 @@ public class MessageBox { /** * Show MsgBox with title and options * - * @param Msg The Message - * @param Title The title of MsgBox. + * @param Msg The Message + * @param Title The title of MsgBox. * @param Option The type of MsgBox. + * * @return user operation. */ public static int Show(String Msg, String Title, int Option) { @@ -105,8 +106,9 @@ public class MessageBox { /** * Show MsgBox with options * - * @param Msg The Message + * @param Msg The Message * @param Option The type of MsgBox. + * * @return User Operation */ public static int Show(String Msg, int Option) { @@ -117,6 +119,7 @@ public class MessageBox { * Show Default MsgBox * * @param Msg The Message + * * @return User Operation */ public static int Show(String Msg) { diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/OS.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/OS.java index e0e4ee4b7..997f47664 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/OS.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/OS.java @@ -41,7 +41,7 @@ public enum OS { public static OS os() { String str; if ((str = System.getProperty("os.name").toLowerCase()) - .contains("win")) + .contains("win")) return OS.WINDOWS; if (str.contains("mac")) return OS.OSX; diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/Platform.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/Platform.java index 1ef2f5f30..ed16e62fd 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/Platform.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/Platform.java @@ -24,28 +24,28 @@ public enum Platform { UNKNOWN { - @Override - public String getBit() { - return "unknown"; - } + @Override + public String getBit() { + return "unknown"; + } - }, + }, BIT_32 { - @Override - public String getBit() { - return "32"; - } + @Override + public String getBit() { + return "32"; + } - }, + }, BIT_64 { - @Override - public String getBit() { - return "64"; - } + @Override + public String getBit() { + return "64"; + } - }; + }; public abstract String getBit(); diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/ProcessThread.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/ProcessThread.java index e5787445e..e3fec450b 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/ProcessThread.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/utils/system/ProcessThread.java @@ -56,8 +56,8 @@ public class ProcessThread extends Thread { HMCLog.warn("Unsupported encoding: " + System.getProperty("sun.jnu.encoding", "UTF-8"), ex); br = new InputStreamReader(in); } - } - else br = null; + } else + br = null; int ch; String line = ""; diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftRemoteLatestVersion.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftRemoteLatestVersion.java index 7a88a56fe..d62b1da1c 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftRemoteLatestVersion.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftRemoteLatestVersion.java @@ -21,7 +21,7 @@ package org.jackhuang.hellominecraft.version; * @author huangyuhui */ public class MinecraftRemoteLatestVersion { - + public String snapshot, release; - + } diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftVersionRequest.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftVersionRequest.java index cd84c7e05..a82fdbb2b 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftVersionRequest.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/version/MinecraftVersionRequest.java @@ -24,7 +24,7 @@ import org.jackhuang.hellominecraft.C; public class MinecraftVersionRequest { public static final int Unkown = 0, Invaild = 1, InvaildJar = 2, - Modified = 3, OK = 4, NotFound = 5, NotReadable = 6, NotAFile = 7; + Modified = 3, OK = 4, NotFound = 5, NotReadable = 6, NotAFile = 7; public int type; public String version; diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/AbstractFilter.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/AbstractFilter.java index acfb63d2e..d9715f8f1 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/AbstractFilter.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/AbstractFilter.java @@ -27,7 +27,7 @@ import java.awt.image.Raster; import java.awt.image.WritableRaster; public abstract class AbstractFilter - implements BufferedImageOp { +implements BufferedImageOp { @Override public abstract BufferedImage filter(BufferedImage paramBufferedImage1, BufferedImage paramBufferedImage2); diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/BasicColors.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/BasicColors.java index 152e4a26c..38797e434 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/BasicColors.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/BasicColors.java @@ -23,12 +23,12 @@ import java.awt.Color; * @author huangyuhui */ public class BasicColors { - - private static Color getWebColor(String c){ + + private static Color getWebColor(String c) { return new Color( - Integer.parseInt(c.substring(0,2),16), - Integer.parseInt(c.substring(2,4),16), - Integer.parseInt(c.substring(4,6),16) + Integer.parseInt(c.substring(0, 2), 16), + Integer.parseInt(c.substring(2, 4), 16), + Integer.parseInt(c.substring(4, 6), 16) ); } @@ -39,7 +39,7 @@ public class BasicColors { public static final Color COLOR_BLUE_DARKER = new Color(12, 94, 145); public static final Color COLOR_WHITE_TEXT = new Color(254, 254, 254); public static final Color COLOR_CENTRAL_BACK = new Color(25, 30, 34, 160); - + public static final Color bgcolors[] = new Color[] { COLOR_BLUE, getWebColor("1ABC9C"), diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/FastBlurFilter.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/FastBlurFilter.java index 8a29343d1..1029e7c66 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/FastBlurFilter.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/FastBlurFilter.java @@ -27,9 +27,8 @@ public class FastBlurFilter extends AbstractFilter { } public FastBlurFilter(int radius) { - if (radius < 1) { + if (radius < 1) radius = 1; - } this.radius = radius; } @@ -43,9 +42,8 @@ public class FastBlurFilter extends AbstractFilter { int width = src.getWidth(); int height = src.getHeight(); - if (dst == null) { + if (dst == null) dst = createCompatibleDestImage(src, null); - } int[] srcPixels = new int[width * height]; int[] dstPixels = new int[width * height]; @@ -68,22 +66,18 @@ public class FastBlurFilter extends AbstractFilter { int srcIndex = 0; int[] sumLookupTable = new int[256 * windowSize]; - for (int i = 0; i < sumLookupTable.length; i++) { + for (int i = 0; i < sumLookupTable.length; i++) sumLookupTable[i] = (i / windowSize); - } int[] indexLookupTable = new int[radiusPlusOne]; - if (radius < width) { - for (int i = 0; i < indexLookupTable.length; i++) { + if (radius < width) + for (int i = 0; i < indexLookupTable.length; i++) indexLookupTable[i] = i; - } - } else { - for (int i = 0; i < width; i++) { + else { + for (int i = 0; i < width; i++) indexLookupTable[i] = i; - } - for (int i = width; i < indexLookupTable.length; i++) { + for (int i = width; i < indexLookupTable.length; i++) indexLookupTable[i] = (width - 1); - } } for (int y = 0; y < height; y++) { @@ -113,14 +107,12 @@ public class FastBlurFilter extends AbstractFilter { dstIndex += height; int nextPixelIndex = x + radiusPlusOne; - if (nextPixelIndex >= width) { + if (nextPixelIndex >= width) nextPixelIndex = width - 1; - } int previousPixelIndex = x - radius; - if (previousPixelIndex < 0) { + if (previousPixelIndex < 0) previousPixelIndex = 0; - } int nextPixel = srcPixels[(srcIndex + nextPixelIndex)]; int previousPixel = srcPixels[(srcIndex + previousPixelIndex)]; diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.java index c70b2982e..0e4d4b437 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/LogWindow.java @@ -238,11 +238,11 @@ public class LogWindow extends javax.swing.JFrame { public void log(String status) { log(status, Level.INFO); } - + public void warning(String status) { log(status, Level.WARN); } - + public void log(String status, Level c) { status = status.replace("\t", " "); Document d = txtLog.getStyledDocument(); diff --git a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/Selector.java b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/Selector.java index a782ceb8c..9a87d7a34 100644 --- a/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/Selector.java +++ b/HMCLAPI/src/main/java/org/jackhuang/hellominecraft/views/Selector.java @@ -32,9 +32,9 @@ public class Selector extends javax.swing.JDialog { public static int failedToSel = -1; /** - * @param parent null + * @param parent null * @param selList Selection List - * @param msg Message + * @param msg Message */ public Selector(java.awt.Frame parent, String[] selList, String msg) { super(parent, true); diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/ARMOptions.java b/HMCLAPI/src/main/java/org/tukaani/xz/ARMOptions.java index 9577101b4..863542fef 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/ARMOptions.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/ARMOptions.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.InputStream; @@ -16,6 +15,7 @@ import org.tukaani.xz.simple.ARM; * BCJ filter for little endian ARM instructions. */ public class ARMOptions extends BCJOptions { + private static final int ALIGNMENT = 4; public ARMOptions() { diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/ARMThumbOptions.java b/HMCLAPI/src/main/java/org/tukaani/xz/ARMThumbOptions.java index 60eb6ec02..fdc9a6241 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/ARMThumbOptions.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/ARMThumbOptions.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.InputStream; @@ -16,6 +15,7 @@ import org.tukaani.xz.simple.ARMThumb; * BCJ filter for little endian ARM-Thumb instructions. */ public class ARMThumbOptions extends BCJOptions { + private static final int ALIGNMENT = 2; public ARMThumbOptions() { diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/BCJCoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/BCJCoder.java index 81862f7d7..add250f4a 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/BCJCoder.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/BCJCoder.java @@ -6,10 +6,10 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; abstract class BCJCoder implements FilterCoder { + public static final long X86_FILTER_ID = 0x04; public static final long POWERPC_FILTER_ID = 0x05; public static final long IA64_FILTER_ID = 0x06; diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/BCJDecoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/BCJDecoder.java index f8a6ae22f..4ed315720 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/BCJDecoder.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/BCJDecoder.java @@ -6,33 +6,32 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.InputStream; import org.tukaani.xz.simple.*; class BCJDecoder extends BCJCoder implements FilterDecoder { + private final long filterID; private final int startOffset; BCJDecoder(long filterID, byte[] props) - throws UnsupportedOptionsException { + throws UnsupportedOptionsException { assert isBCJFilterID(filterID); this.filterID = filterID; - if (props.length == 0) { + if (props.length == 0) startOffset = 0; - } else if (props.length == 4) { + else if (props.length == 4) { int n = 0; for (int i = 0; i < 4; ++i) n |= (props[i] & 0xFF) << (i * 8); startOffset = n; - } else { + } else throw new UnsupportedOptionsException( - "Unsupported BCJ filter properties"); - } + "Unsupported BCJ filter properties"); } public int getMemoryUsage() { diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/BCJEncoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/BCJEncoder.java index 136bbb708..45ca76c9d 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/BCJEncoder.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/BCJEncoder.java @@ -6,10 +6,10 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; class BCJEncoder extends BCJCoder implements FilterEncoder { + private final BCJOptions options; private final long filterID; private final byte[] props; @@ -18,16 +18,16 @@ class BCJEncoder extends BCJCoder implements FilterEncoder { assert isBCJFilterID(filterID); int startOffset = options.getStartOffset(); - if (startOffset == 0) { + if (startOffset == 0) props = new byte[0]; - } else { + else { props = new byte[4]; for (int i = 0; i < 4; ++i) - props[i] = (byte)(startOffset >>> (i * 8)); + props[i] = (byte) (startOffset >>> (i * 8)); } this.filterID = filterID; - this.options = (BCJOptions)options.clone(); + this.options = (BCJOptions) options.clone(); } public long getFilterID() { diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/BCJOptions.java b/HMCLAPI/src/main/java/org/tukaani/xz/BCJOptions.java index 705a2c088..b69539306 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/BCJOptions.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/BCJOptions.java @@ -6,10 +6,10 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; abstract class BCJOptions extends FilterOptions { + private final int alignment; int startOffset = 0; @@ -23,10 +23,10 @@ abstract class BCJOptions extends FilterOptions { * The default value is 0. */ public void setStartOffset(int startOffset) - throws UnsupportedOptionsException { + throws UnsupportedOptionsException { if ((startOffset & (alignment - 1)) != 0) throw new UnsupportedOptionsException( - "Start offset must be a multiple of " + alignment); + "Start offset must be a multiple of " + alignment); this.startOffset = startOffset; } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/BlockInputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/BlockInputStream.java index bc28e1014..838b8a7e5 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/BlockInputStream.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/BlockInputStream.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.InputStream; @@ -18,6 +17,7 @@ import org.tukaani.xz.common.DecoderUtil; import org.tukaani.xz.check.Check; class BlockInputStream extends InputStream { + private final DataInputStream inData; private final CountingInputStream inCounted; private InputStream filterChain; @@ -35,7 +35,7 @@ class BlockInputStream extends InputStream { public BlockInputStream(InputStream in, Check check, int memoryLimit, long unpaddedSizeInIndex, long uncompressedSizeInIndex) - throws IOException, IndexIndicatorException { + throws IOException, IndexIndicatorException { this.check = check; inData = new DataInputStream(in); @@ -59,7 +59,7 @@ class BlockInputStream extends InputStream { // Check for reserved bits in Block Flags. if ((buf[1] & 0x3C) != 0) throw new UnsupportedOptionsException( - "Unsupported options in XZ Block Header"); + "Unsupported options in XZ Block Header"); // Memory for the Filter Flags field int filterCount = (buf[1] & 0x03) + 1; @@ -69,7 +69,7 @@ class BlockInputStream extends InputStream { // Use a stream to parse the fields after the Block Flags field. // Exclude the CRC32 field at the end. ByteArrayInputStream bufStream = new ByteArrayInputStream( - buf, 2, headerSize - 6); + buf, 2, headerSize - 6); try { // Set the maximum valid compressed size. This is overriden @@ -83,7 +83,7 @@ class BlockInputStream extends InputStream { compressedSizeInHeader = DecoderUtil.decodeVLI(bufStream); if (compressedSizeInHeader == 0 - || compressedSizeInHeader > compressedSizeLimit) + || compressedSizeInHeader > compressedSizeLimit) throw new CorruptedInputException(); compressedSizeLimit = compressedSizeInHeader; @@ -102,7 +102,7 @@ class BlockInputStream extends InputStream { if (filterPropsSize > bufStream.available()) throw new CorruptedInputException(); - filterProps[i] = new byte[(int)filterPropsSize]; + filterProps[i] = new byte[(int) filterPropsSize]; bufStream.read(filterProps[i]); } @@ -114,7 +114,7 @@ class BlockInputStream extends InputStream { for (int i = bufStream.available(); i > 0; --i) if (bufStream.read() != 0x00) throw new UnsupportedOptionsException( - "Unsupported options in XZ Block Header"); + "Unsupported options in XZ Block Header"); // Validate the Blcok Header against the Index when doing // random access reading. @@ -125,26 +125,26 @@ class BlockInputStream extends InputStream { int headerAndCheckSize = headerSize + check.getSize(); if (headerAndCheckSize >= unpaddedSizeInIndex) throw new CorruptedInputException( - "XZ Index does not match a Block Header"); + "XZ Index does not match a Block Header"); // The compressed size calculated from Unpadded Size must // match the value stored in the Compressed Size field in // the Block Header. long compressedSizeFromIndex - = unpaddedSizeInIndex - headerAndCheckSize; + = unpaddedSizeInIndex - headerAndCheckSize; if (compressedSizeFromIndex > compressedSizeLimit - || (compressedSizeInHeader != -1 - && compressedSizeInHeader != compressedSizeFromIndex)) + || (compressedSizeInHeader != -1 + && compressedSizeInHeader != compressedSizeFromIndex)) throw new CorruptedInputException( - "XZ Index does not match a Block Header"); + "XZ Index does not match a Block Header"); // The uncompressed size stored in the Index must match // the value stored in the Uncompressed Size field in // the Block Header. if (uncompressedSizeInHeader != -1 - && uncompressedSizeInHeader != uncompressedSizeInIndex) + && uncompressedSizeInHeader != uncompressedSizeInIndex) throw new CorruptedInputException( - "XZ Index does not match a Block Header"); + "XZ Index does not match a Block Header"); // For further validation, pretend that the values from the Index // were stored in the Block Header. @@ -158,7 +158,7 @@ class BlockInputStream extends InputStream { // supported by this decoder implementation. FilterDecoder[] filters = new FilterDecoder[filterIDs.length]; - for (int i = 0; i < filters.length; ++i) { + for (int i = 0; i < filters.length; ++i) if (filterIDs[i] == LZMA2Coder.FILTER_ID) filters[i] = new LZMA2Decoder(filterProps[i]); @@ -170,8 +170,7 @@ class BlockInputStream extends InputStream { else throw new UnsupportedOptionsException( - "Unknown Filter ID " + filterIDs[i]); - } + "Unknown Filter ID " + filterIDs[i]); RawCoder.validate(filters); @@ -214,10 +213,10 @@ class BlockInputStream extends InputStream { // Catch invalid values. long compressedSize = inCounted.getSize(); if (compressedSize < 0 - || compressedSize > compressedSizeLimit - || uncompressedSize < 0 - || (uncompressedSizeInHeader != -1 - && uncompressedSize > uncompressedSizeInHeader)) + || compressedSize > compressedSizeLimit + || uncompressedSize < 0 + || (uncompressedSizeInHeader != -1 + && uncompressedSize > uncompressedSizeInHeader)) throw new CorruptedInputException(); // Check the Block integrity as soon as possible: @@ -248,9 +247,9 @@ class BlockInputStream extends InputStream { // Validate Compressed Size and Uncompressed Size if they were // present in Block Header. if ((compressedSizeInHeader != -1 - && compressedSizeInHeader != compressedSize) - || (uncompressedSizeInHeader != -1 - && uncompressedSizeInHeader != uncompressedSize)) + && compressedSizeInHeader != compressedSize) + || (uncompressedSizeInHeader != -1 + && uncompressedSizeInHeader != uncompressedSize)) throw new CorruptedInputException(); // Block Padding bytes must be zeros. @@ -263,7 +262,7 @@ class BlockInputStream extends InputStream { inData.readFully(storedCheck); if (!Arrays.equals(check.finish(), storedCheck)) throw new CorruptedInputException("Integrity check (" - + check.getName() + ") does not match"); + + check.getName() + ") does not match"); } public int available() throws IOException { diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/BlockOutputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/BlockOutputStream.java index 03fd0a927..0f7ca15c3 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/BlockOutputStream.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/BlockOutputStream.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.OutputStream; @@ -16,6 +15,7 @@ import org.tukaani.xz.common.EncoderUtil; import org.tukaani.xz.check.Check; class BlockOutputStream extends FinishableOutputStream { + private final OutputStream out; private final CountingOutputStream outCounted; private FinishableOutputStream filterChain; @@ -72,7 +72,7 @@ class BlockOutputStream extends FinishableOutputStream { throw new UnsupportedOptionsException(); // Block Header Size - buf[0] = (byte)(buf.length / 4); + buf[0] = (byte) (buf.length / 4); // Write the Block Header field to the output stream. out.write(buf); @@ -85,7 +85,7 @@ class BlockOutputStream extends FinishableOutputStream { } public void write(int b) throws IOException { - tempBuf[0] = (byte)b; + tempBuf[0] = (byte) b; write(tempBuf, 0, 1); } @@ -120,7 +120,7 @@ class BlockOutputStream extends FinishableOutputStream { // It is very hard to trigger this exception. // This is just to be pedantic. if (compressedSize < 0 || compressedSize > compressedSizeLimit - || uncompressedSize < 0) + || uncompressedSize < 0) throw new XZIOException("XZ Stream has grown too big"); } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/CorruptedInputException.java b/HMCLAPI/src/main/java/org/tukaani/xz/CorruptedInputException.java index d7d952071..677d821da 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/CorruptedInputException.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/CorruptedInputException.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; /** @@ -15,6 +14,7 @@ package org.tukaani.xz; * already read from the input stream was corrupt too. */ public class CorruptedInputException extends XZIOException { + private static final long serialVersionUID = 3L; /** @@ -29,7 +29,7 @@ public class CorruptedInputException extends XZIOException { * Creates a new CorruptedInputException with * the specified error detail message. * - * @param s error detail message + * @param s error detail message */ public CorruptedInputException(String s) { super(s); diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/CountingInputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/CountingInputStream.java index ce0935a57..5b3b1495f 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/CountingInputStream.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/CountingInputStream.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.FilterInputStream; @@ -17,6 +16,7 @@ import java.io.IOException; * Counts the number of bytes read from an input stream. */ class CountingInputStream extends FilterInputStream { + private long size = 0; public CountingInputStream(InputStream in) { diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/CountingOutputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/CountingOutputStream.java index 9b3eef374..18ca9a8b6 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/CountingOutputStream.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/CountingOutputStream.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.OutputStream; @@ -21,6 +20,7 @@ import java.io.IOException; * using this as the output stream for a chain of raw filters. */ class CountingOutputStream extends FinishableOutputStream { + private final OutputStream out; private long size = 0; diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/DeltaCoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/DeltaCoder.java index 808834c8c..5b3f56c80 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/DeltaCoder.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/DeltaCoder.java @@ -6,10 +6,10 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; abstract class DeltaCoder implements FilterCoder { + public static final long FILTER_ID = 0x03; public boolean changesSize() { diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/DeltaDecoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/DeltaDecoder.java index 445d17829..c58670c39 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/DeltaDecoder.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/DeltaDecoder.java @@ -6,18 +6,18 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.InputStream; class DeltaDecoder extends DeltaCoder implements FilterDecoder { + private final int distance; DeltaDecoder(byte[] props) throws UnsupportedOptionsException { if (props.length != 1) throw new UnsupportedOptionsException( - "Unsupported Delta filter properties"); + "Unsupported Delta filter properties"); distance = (props[0] & 0xFF) + 1; } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/DeltaEncoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/DeltaEncoder.java index 384afe44c..0eb96f026 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/DeltaEncoder.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/DeltaEncoder.java @@ -6,16 +6,16 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; class DeltaEncoder extends DeltaCoder implements FilterEncoder { + private final DeltaOptions options; private final byte[] props = new byte[1]; DeltaEncoder(DeltaOptions options) { - props[0] = (byte)(options.getDistance() - 1); - this.options = (DeltaOptions)options.clone(); + props[0] = (byte) (options.getDistance() - 1); + this.options = (DeltaOptions) options.clone(); } public long getFilterID() { diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/DeltaInputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/DeltaInputStream.java index 56478f519..7db621053 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/DeltaInputStream.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/DeltaInputStream.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.InputStream; @@ -21,6 +20,7 @@ import org.tukaani.xz.delta.DeltaDecoder; * its input stream indicates end of input. */ public class DeltaInputStream extends InputStream { + /** * Smallest supported delta calculation distance. */ @@ -41,12 +41,12 @@ public class DeltaInputStream extends InputStream { /** * Creates a new Delta decoder with the given delta calculation distance. * - * @param in input stream from which Delta filtered data - * is read + * @param in input stream from which Delta filtered data + * is read * - * @param distance delta calculation distance, must be in the - * range [DISTANCE_MIN, - * DISTANCE_MAX] + * @param distance delta calculation distance, must be in the + * range [DISTANCE_MIN, + * DISTANCE_MAX] */ public DeltaInputStream(InputStream in, int distance) { // Check for null because otherwise null isn't detect @@ -61,10 +61,10 @@ public class DeltaInputStream extends InputStream { /** * Decode the next byte from this input stream. * - * @return the next decoded byte, or -1 to indicate - * the end of input on the input stream in + * @return the next decoded byte, or -1 to indicate + * the end of input on the input stream in * - * @throws IOException may be thrown by in + * @throws IOException may be thrown by in */ public int read() throws IOException { return read(tempBuf, 0, 1) == -1 ? -1 : (tempBuf[0] & 0xFF); @@ -76,17 +76,17 @@ public class DeltaInputStream extends InputStream { * This calls in.read(buf, off, len) and defilters the * returned data. * - * @param buf target buffer for decoded data - * @param off start offset in buf - * @param len maximum number of bytes to read + * @param buf target buffer for decoded data + * @param off start offset in buf + * @param len maximum number of bytes to read * - * @return number of bytes read, or -1 to indicate - * the end of the input stream in + * @return number of bytes read, or -1 to indicate + * the end of the input stream in * - * @throws XZIOException if the stream has been closed + * @throws XZIOException if the stream has been closed * - * @throws IOException may be thrown by underlaying input - * stream in + * @throws IOException may be thrown by underlaying input + * stream in */ public int read(byte[] buf, int off, int len) throws IOException { if (len == 0) @@ -116,7 +116,7 @@ public class DeltaInputStream extends InputStream { /** * Calls in.available(). * - * @return the value returned by in.available() + * @return the value returned by in.available() */ public int available() throws IOException { if (in == null) @@ -132,15 +132,14 @@ public class DeltaInputStream extends InputStream { * Closes the stream and calls in.close(). * If the stream was already closed, this does nothing. * - * @throws IOException if thrown by in.close() + * @throws IOException if thrown by in.close() */ public void close() throws IOException { - if (in != null) { + if (in != null) try { in.close(); } finally { in = null; } - } } } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/DeltaOptions.java b/HMCLAPI/src/main/java/org/tukaani/xz/DeltaOptions.java index 145130bfe..28693499c 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/DeltaOptions.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/DeltaOptions.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.InputStream; @@ -27,6 +26,7 @@ import java.io.InputStream; * FLAC will give much smaller result at much better compression speed. */ public class DeltaOptions extends FilterOptions { + /** * Smallest supported delta calculation distance. */ @@ -42,7 +42,8 @@ public class DeltaOptions extends FilterOptions { /** * Creates new Delta options and sets the delta distance to 1 byte. */ - public DeltaOptions() {} + public DeltaOptions() { + } /** * Creates new Delta options and sets the distance to the given value. @@ -58,8 +59,8 @@ public class DeltaOptions extends FilterOptions { public void setDistance(int distance) throws UnsupportedOptionsException { if (distance < DISTANCE_MIN || distance > DISTANCE_MAX) throw new UnsupportedOptionsException( - "Delta distance must be in the range [" + DISTANCE_MIN - + ", " + DISTANCE_MAX + "]: " + distance); + "Delta distance must be in the range [" + DISTANCE_MIN + + ", " + DISTANCE_MAX + "]: " + distance); this.distance = distance; } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/DeltaOutputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/DeltaOutputStream.java index bd880db4b..597505e0c 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/DeltaOutputStream.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/DeltaOutputStream.java @@ -6,13 +6,13 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.IOException; import org.tukaani.xz.delta.DeltaEncoder; class DeltaOutputStream extends FinishableOutputStream { + private static final int FILTER_BUF_SIZE = 4096; private FinishableOutputStream out; @@ -34,7 +34,7 @@ class DeltaOutputStream extends FinishableOutputStream { } public void write(int b) throws IOException { - tempBuf[0] = (byte)b; + tempBuf[0] = (byte) b; write(tempBuf, 0, 1); } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/FilterCoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/FilterCoder.java index 1e95e37f2..2f12ba9fd 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/FilterCoder.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/FilterCoder.java @@ -6,11 +6,13 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; interface FilterCoder { + boolean changesSize(); + boolean nonLastOK(); + boolean lastOK(); } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/FilterDecoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/FilterDecoder.java index 8e2d0061b..c63766a1d 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/FilterDecoder.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/FilterDecoder.java @@ -6,12 +6,13 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.InputStream; interface FilterDecoder extends FilterCoder { + int getMemoryUsage(); + InputStream getInputStream(InputStream in); } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/FilterEncoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/FilterEncoder.java index 4558aad9d..04e5a3af9 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/FilterEncoder.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/FilterEncoder.java @@ -6,12 +6,15 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; interface FilterEncoder extends FilterCoder { + long getFilterID(); + byte[] getFilterProps(); + boolean supportsFlushing(); + FinishableOutputStream getOutputStream(FinishableOutputStream out); } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/FilterOptions.java b/HMCLAPI/src/main/java/org/tukaani/xz/FilterOptions.java index a2398b40f..3c80044b7 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/FilterOptions.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/FilterOptions.java @@ -7,7 +7,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.InputStream; @@ -17,6 +16,7 @@ import java.io.IOException; * Base class for filter-specific options classes. */ public abstract class FilterOptions implements Cloneable { + /** * Gets how much memory the encoder will need with * the given filter chain. This function simply calls @@ -60,7 +60,7 @@ public abstract class FilterOptions implements Cloneable { * to XZOutputStream. */ public abstract FinishableOutputStream getOutputStream( - FinishableOutputStream out); + FinishableOutputStream out); /** * Gets how much memory the decoder will need to decompress the data @@ -72,9 +72,10 @@ public abstract class FilterOptions implements Cloneable { * Gets a raw (no XZ headers) decoder input stream using these options. */ public abstract InputStream getInputStream(InputStream in) - throws IOException; + throws IOException; abstract FilterEncoder getFilterEncoder(); - FilterOptions() {} + FilterOptions() { + } } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/FinishableOutputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/FinishableOutputStream.java index b360628ba..dcdbed1ba 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/FinishableOutputStream.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/FinishableOutputStream.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.OutputStream; @@ -17,6 +16,7 @@ import java.io.IOException; * the underlying stream. */ public abstract class FinishableOutputStream extends OutputStream { + /** * Finish the stream without closing the underlying stream. * No more data may be written to the stream after finishing. @@ -25,7 +25,9 @@ public abstract class FinishableOutputStream extends OutputStream { * does nothing. Subclasses should override it if they need finishing * support, which is the case, for example, with compressors. * - * @throws IOException + * @throws IOException */ - public void finish() throws IOException {}; + public void finish() throws IOException { + } +; } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/FinishableWrapperOutputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/FinishableWrapperOutputStream.java index 2e0ac99f5..4d702a6a7 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/FinishableWrapperOutputStream.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/FinishableWrapperOutputStream.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.OutputStream; @@ -18,6 +17,7 @@ import java.io.IOException; * people will never need this. */ public class FinishableWrapperOutputStream extends FinishableOutputStream { + /** * The {@link java.io.OutputStream OutputStream} that has been * wrapped into a FinishableWrapperOutputStream. @@ -48,7 +48,7 @@ public class FinishableWrapperOutputStream extends FinishableOutputStream { /** * Calls {@link java.io.OutputStream#write(byte[],int,int) - out.write(buf, off, len)}. + * out.write(buf, off, len)}. */ public void write(byte[] buf, int off, int len) throws IOException { out.write(buf, off, len); diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/IA64Options.java b/HMCLAPI/src/main/java/org/tukaani/xz/IA64Options.java index ba5787081..87fe2bfc8 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/IA64Options.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/IA64Options.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.InputStream; @@ -16,6 +15,7 @@ import org.tukaani.xz.simple.IA64; * BCJ filter for Itanium (IA-64) instructions. */ public class IA64Options extends BCJOptions { + private static final int ALIGNMENT = 16; public IA64Options() { diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/IndexIndicatorException.java b/HMCLAPI/src/main/java/org/tukaani/xz/IndexIndicatorException.java index fc6bc0384..3660c73a7 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/IndexIndicatorException.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/IndexIndicatorException.java @@ -6,9 +6,9 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; class IndexIndicatorException extends Exception { + private static final long serialVersionUID = 1L; } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2Coder.java b/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2Coder.java index b0963b758..d100af360 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2Coder.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2Coder.java @@ -6,10 +6,10 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; abstract class LZMA2Coder implements FilterCoder { + public static final long FILTER_ID = 0x21; public boolean changesSize() { diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2Decoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2Decoder.java index 82075c216..419eb7108 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2Decoder.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2Decoder.java @@ -6,12 +6,12 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.InputStream; class LZMA2Decoder extends LZMA2Coder implements FilterDecoder { + private int dictSize; LZMA2Decoder(byte[] props) throws UnsupportedOptionsException { @@ -19,7 +19,7 @@ class LZMA2Decoder extends LZMA2Coder implements FilterDecoder { // are too big for int. if (props.length != 1 || (props[0] & 0xFF) > 37) throw new UnsupportedOptionsException( - "Unsupported LZMA2 properties"); + "Unsupported LZMA2 properties"); dictSize = 2 | (props[0] & 1); dictSize <<= (props[0] >>> 1) + 11; diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2Encoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2Encoder.java index 7c7facc45..4d8acafeb 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2Encoder.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2Encoder.java @@ -6,30 +6,30 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import org.tukaani.xz.lzma.LZMAEncoder; class LZMA2Encoder extends LZMA2Coder implements FilterEncoder { + private final LZMA2Options options; private final byte[] props = new byte[1]; LZMA2Encoder(LZMA2Options options) { if (options.getPresetDict() != null) throw new IllegalArgumentException( - "XZ doesn't support a preset dictionary for now"); + "XZ doesn't support a preset dictionary for now"); - if (options.getMode() == LZMA2Options.MODE_UNCOMPRESSED) { - props[0] = (byte)0; - } else { + if (options.getMode() == LZMA2Options.MODE_UNCOMPRESSED) + props[0] = (byte) 0; + else { int d = Math.max(options.getDictSize(), LZMA2Options.DICT_SIZE_MIN); - props[0] = (byte)(LZMAEncoder.getDistSlot(d - 1) - 23); + props[0] = (byte) (LZMAEncoder.getDistSlot(d - 1) - 23); } // Make a private copy so that the caller is free to change its copy. - this.options = (LZMA2Options)options.clone(); + this.options = (LZMA2Options) options.clone(); } public long getFilterID() { diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2InputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2InputStream.java index 4e865c600..5323a31b5 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2InputStream.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2InputStream.java @@ -7,7 +7,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.InputStream; @@ -21,6 +20,7 @@ import org.tukaani.xz.lzma.LZMADecoder; * Decompresses a raw LZMA2 stream (no XZ headers). */ public class LZMA2InputStream extends InputStream { + /** * Smallest valid LZMA2 dictionary size. *

@@ -47,7 +47,7 @@ public class LZMA2InputStream extends InputStream { private final LZDecoder lz; private final RangeDecoderFromBuffer rc - = new RangeDecoderFromBuffer(COMPRESSED_SIZE_MAX); + = new RangeDecoderFromBuffer(COMPRESSED_SIZE_MAX); private LZMADecoder lzma; private int uncompressedSize = 0; @@ -65,11 +65,11 @@ public class LZMA2InputStream extends InputStream { * Gets approximate decompressor memory requirements as kibibytes for * the given dictionary size. * - * @param dictSize LZMA2 dictionary size as bytes, must be - * in the range [DICT_SIZE_MIN, - * DICT_SIZE_MAX] + * @param dictSize LZMA2 dictionary size as bytes, must be + * in the range [DICT_SIZE_MIN, + * DICT_SIZE_MAX] * - * @return approximate memory requirements as kibibytes (KiB) + * @return approximate memory requirements as kibibytes (KiB) */ public static int getMemoryUsage(int dictSize) { // The base state is around 30-40 KiB (probabilities etc.), @@ -81,7 +81,7 @@ public class LZMA2InputStream extends InputStream { private static int getDictSize(int dictSize) { if (dictSize < DICT_SIZE_MIN || dictSize > DICT_SIZE_MAX) throw new IllegalArgumentException( - "Unsupported dictionary size " + dictSize); + "Unsupported dictionary size " + dictSize); // Round dictionary size upward to a multiple of 16. This way LZMA // can use LZDecoder.getPos() for calculating LZMA's posMask. @@ -106,12 +106,12 @@ public class LZMA2InputStream extends InputStream { * was used when compressing. If you know the uncompressed size * of the data, this might allow saving some memory. * - * @param in input stream from which LZMA2-compressed - * data is read + * @param in input stream from which LZMA2-compressed + * data is read * - * @param dictSize LZMA2 dictionary size as bytes, must be - * in the range [DICT_SIZE_MIN, - * DICT_SIZE_MAX] + * @param dictSize LZMA2 dictionary size as bytes, must be + * in the range [DICT_SIZE_MIN, + * DICT_SIZE_MAX] */ public LZMA2InputStream(InputStream in, int dictSize) { this(in, dictSize, null); @@ -125,15 +125,15 @@ public class LZMA2InputStream extends InputStream { * If a preset dictionary was used when compressing the data, the * same preset dictionary must be provided when decompressing. * - * @param in input stream from which LZMA2-compressed - * data is read + * @param in input stream from which LZMA2-compressed + * data is read * - * @param dictSize LZMA2 dictionary size as bytes, must be - * in the range [DICT_SIZE_MIN, - * DICT_SIZE_MAX] + * @param dictSize LZMA2 dictionary size as bytes, must be + * in the range [DICT_SIZE_MIN, + * DICT_SIZE_MAX] * - * @param presetDict preset dictionary or null - * to use no preset dictionary + * @param presetDict preset dictionary or null + * to use no preset dictionary */ public LZMA2InputStream(InputStream in, int dictSize, byte[] presetDict) { // Check for null because otherwise null isn't detect @@ -155,17 +155,17 @@ public class LZMA2InputStream extends InputStream { * may be inefficient. Wrap it in java.io.BufferedInputStream * if you need to read lots of data one byte at a time. * - * @return the next decompressed byte, or -1 - * to indicate the end of the compressed stream + * @return the next decompressed byte, or -1 + * to indicate the end of the compressed stream * - * @throws CorruptedInputException + * @throws CorruptedInputException * - * @throws XZIOException if the stream has been closed + * @throws XZIOException if the stream has been closed * - * @throws EOFException - * compressed input is truncated or corrupt + * @throws EOFException + * compressed input is truncated or corrupt * - * @throws IOException may be thrown by in + * @throws IOException may be thrown by in */ public int read() throws IOException { return read(tempBuf, 0, 1) == -1 ? -1 : (tempBuf[0] & 0xFF); @@ -179,21 +179,21 @@ public class LZMA2InputStream extends InputStream { * bytes have been decompressed, the end of the LZMA2 stream is reached, * or an exception is thrown. * - * @param buf target buffer for uncompressed data - * @param off start offset in buf - * @param len maximum number of uncompressed bytes to read + * @param buf target buffer for uncompressed data + * @param off start offset in buf + * @param len maximum number of uncompressed bytes to read * - * @return number of bytes read, or -1 to indicate - * the end of the compressed stream + * @return number of bytes read, or -1 to indicate + * the end of the compressed stream * - * @throws CorruptedInputException + * @throws CorruptedInputException * - * @throws XZIOException if the stream has been closed + * @throws XZIOException if the stream has been closed * - * @throws EOFException - * compressed input is truncated or corrupt + * @throws EOFException + * compressed input is truncated or corrupt * - * @throws IOException may be thrown by in + * @throws IOException may be thrown by in */ public int read(byte[] buf, int off, int len) throws IOException { if (off < 0 || len < 0 || off + len < 0 || off + len > buf.length) @@ -223,9 +223,9 @@ public class LZMA2InputStream extends InputStream { int copySizeMax = Math.min(uncompressedSize, len); - if (!isLZMAChunk) { + if (!isLZMAChunk) lz.copyUncompressed(in, copySizeMax); - } else { + else { lz.setLimit(copySizeMax); lzma.decode(); if (!rc.isInBufferOK()) @@ -263,9 +263,8 @@ public class LZMA2InputStream extends InputStream { needProps = true; needDictReset = false; lz.reset(); - } else if (needDictReset) { + } else if (needDictReset) throw new CorruptedInputException(); - } if (control >= 0x80) { isLZMAChunk = true; @@ -279,19 +278,16 @@ public class LZMA2InputStream extends InputStream { needProps = false; decodeProps(); - } else if (needProps) { + } else if (needProps) throw new CorruptedInputException(); - - } else if (control >= 0xA0) { + else if (control >= 0xA0) lzma.reset(); - } rc.prepareInputBuffer(in, compressedSize); - } else if (control > 0x02) { + } else if (control > 0x02) throw new CorruptedInputException(); - - } else { + else { isLZMAChunk = false; uncompressedSize = in.readUnsignedShort() + 1; } @@ -327,8 +323,8 @@ public class LZMA2InputStream extends InputStream { * will then be the number of uncompressed bytes remaining from that * chunk. * - * @return the number of uncompressed bytes that can be read - * without blocking + * @return the number of uncompressed bytes that can be read + * without blocking */ public int available() throws IOException { if (in == null) @@ -344,15 +340,14 @@ public class LZMA2InputStream extends InputStream { * Closes the stream and calls in.close(). * If the stream was already closed, this does nothing. * - * @throws IOException if thrown by in.close() + * @throws IOException if thrown by in.close() */ public void close() throws IOException { - if (in != null) { + if (in != null) try { in.close(); } finally { in = null; } - } } } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2Options.java b/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2Options.java index 42777f019..3cc8355c0 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2Options.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2Options.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.InputStream; @@ -22,6 +21,7 @@ import org.tukaani.xz.lzma.LZMAEncoder; * LZMA2Options(int). */ public class LZMA2Options extends FilterOptions { + /** * Minimum valid compression preset level is 0. */ @@ -124,10 +124,10 @@ public class LZMA2Options extends FilterOptions { public static final int MF_BT4 = LZEncoder.MF_BT4; private static final int[] presetToDictSize = { - 1 << 18, 1 << 20, 1 << 21, 1 << 22, 1 << 22, - 1 << 23, 1 << 23, 1 << 24, 1 << 25, 1 << 26 }; + 1 << 18, 1 << 20, 1 << 21, 1 << 22, 1 << 22, + 1 << 23, 1 << 23, 1 << 24, 1 << 25, 1 << 26}; - private static final int[] presetToDepthLimit = { 4, 8, 24, 48 }; + private static final int[] presetToDepthLimit = {4, 8, 24, 48}; private int dictSize; private byte[] presetDict = null; @@ -155,8 +155,8 @@ public class LZMA2Options extends FilterOptions { /** * Creates new LZMA2 options and sets them to the given preset. * - * @throws UnsupportedOptionsException - * preset is not supported + * @throws UnsupportedOptionsException + * preset is not supported */ public LZMA2Options(int preset) throws UnsupportedOptionsException { setPreset(preset); @@ -165,12 +165,12 @@ public class LZMA2Options extends FilterOptions { /** * Creates new LZMA2 options and sets them to the given custom values. * - * @throws UnsupportedOptionsException - * unsupported options were specified + * @throws UnsupportedOptionsException + * unsupported options were specified */ public LZMA2Options(int dictSize, int lc, int lp, int pb, int mode, int niceLen, int mf, int depthLimit) - throws UnsupportedOptionsException { + throws UnsupportedOptionsException { setDictSize(dictSize); setLcLp(lc, lp); setPb(pb); @@ -193,13 +193,13 @@ public class LZMA2Options extends FilterOptions { * 16 MiB, or 32 MiB, it is waste of memory to use the * presets 7, 8, or 9, respectively. * - * @throws UnsupportedOptionsException - * preset is not supported + * @throws UnsupportedOptionsException + * preset is not supported */ public void setPreset(int preset) throws UnsupportedOptionsException { if (preset < 0 || preset > 9) throw new UnsupportedOptionsException( - "Unsupported preset: " + preset); + "Unsupported preset: " + preset); lc = LC_DEFAULT; lp = LP_DEFAULT; @@ -231,19 +231,19 @@ public class LZMA2Options extends FilterOptions { * but sizes of 2^n and 2^n + 2^(n-1) bytes are somewhat * recommended. * - * @throws UnsupportedOptionsException - * dictSize is not supported + * @throws UnsupportedOptionsException + * dictSize is not supported */ public void setDictSize(int dictSize) throws UnsupportedOptionsException { if (dictSize < DICT_SIZE_MIN) throw new UnsupportedOptionsException( - "LZMA2 dictionary size must be at least 4 KiB: " - + dictSize + " B"); + "LZMA2 dictionary size must be at least 4 KiB: " + + dictSize + " B"); if (dictSize > DICT_SIZE_MAX) throw new UnsupportedOptionsException( - "LZMA2 dictionary size must not exceed " - + (DICT_SIZE_MAX >> 20) + " MiB: " + dictSize + " B"); + "LZMA2 dictionary size must not exceed " + + (DICT_SIZE_MAX >> 20) + " MiB: " + dictSize + " B"); this.dictSize = dictSize; } @@ -287,16 +287,16 @@ public class LZMA2Options extends FilterOptions { * Trying to exceed it will throw an exception. This function lets * you change both at the same time. * - * @throws UnsupportedOptionsException - * lc and lp - * are invalid + * @throws UnsupportedOptionsException + * lc and lp + * are invalid */ public void setLcLp(int lc, int lp) throws UnsupportedOptionsException { if (lc < 0 || lp < 0 || lc > LC_LP_MAX || lp > LC_LP_MAX - || lc + lp > LC_LP_MAX) + || lc + lp > LC_LP_MAX) throw new UnsupportedOptionsException( - "lc + lp must not exceed " + LC_LP_MAX + ": " - + lc + " + " + lp); + "lc + lp must not exceed " + LC_LP_MAX + ": " + + lc + " + " + lp); this.lc = lc; this.lp = lp; @@ -316,17 +316,17 @@ public class LZMA2Options extends FilterOptions { * followed by another lower-case letter. In the US-ASCII character set, * the highest three bits are 010 for upper-case letters and 011 for * lower-case letters. When lc is at least 3, the literal - * coding can take advantage of this property in the uncompressed data. + * coding can take advantage of this property in the uncompressed data. *

* The default value (3) is usually good. If you want maximum compression, * try setLc(4). Sometimes it helps a little, and sometimes it * makes compression worse. If it makes it worse, test for example * setLc(2) too. * - * @throws UnsupportedOptionsException - * lc is invalid, or the sum - * of lc and lp - * exceed LC_LP_MAX + * @throws UnsupportedOptionsException + * lc is invalid, or the sum + * of lc and lp + * exceed LC_LP_MAX */ public void setLc(int lc) throws UnsupportedOptionsException { setLcLp(lc, lp); @@ -339,10 +339,10 @@ public class LZMA2Options extends FilterOptions { * assumed when encoding literals. See {@link #setPb(int) setPb} for * more information about alignment. * - * @throws UnsupportedOptionsException - * lp is invalid, or the sum - * of lc and lp - * exceed LC_LP_MAX + * @throws UnsupportedOptionsException + * lp is invalid, or the sum + * of lc and lp + * exceed LC_LP_MAX */ public void setLp(int lp) throws UnsupportedOptionsException { setLcLp(lc, lp); @@ -383,13 +383,13 @@ public class LZMA2Options extends FilterOptions { * 16-byte alignment. It might be worth taking into account when designing * file formats that are likely to be often compressed with LZMA2. * - * @throws UnsupportedOptionsException - * pb is invalid + * @throws UnsupportedOptionsException + * pb is invalid */ public void setPb(int pb) throws UnsupportedOptionsException { if (pb < 0 || pb > PB_MAX) throw new UnsupportedOptionsException( - "pb must not exceed " + PB_MAX + ": " + pb); + "pb must not exceed " + PB_MAX + ": " + pb); this.pb = pb; } @@ -416,13 +416,13 @@ public class LZMA2Options extends FilterOptions { * compress the data at all (and doesn't use a match finder) and will * simply wrap it in uncompressed LZMA2 chunks. * - * @throws UnsupportedOptionsException - * mode is not supported + * @throws UnsupportedOptionsException + * mode is not supported */ public void setMode(int mode) throws UnsupportedOptionsException { if (mode < MODE_UNCOMPRESSED || mode > MODE_NORMAL) throw new UnsupportedOptionsException( - "Unsupported compression mode: " + mode); + "Unsupported compression mode: " + mode); this.mode = mode; } @@ -441,19 +441,19 @@ public class LZMA2Options extends FilterOptions { * to give better compression at the expense of speed. The default * depends on the preset. * - * @throws UnsupportedOptionsException - * niceLen is invalid + * @throws UnsupportedOptionsException + * niceLen is invalid */ public void setNiceLen(int niceLen) throws UnsupportedOptionsException { if (niceLen < NICE_LEN_MIN) throw new UnsupportedOptionsException( - "Minimum nice length of matches is " - + NICE_LEN_MIN + " bytes: " + niceLen); + "Minimum nice length of matches is " + + NICE_LEN_MIN + " bytes: " + niceLen); if (niceLen > NICE_LEN_MAX) throw new UnsupportedOptionsException( - "Maximum nice length of matches is " + NICE_LEN_MAX - + ": " + niceLen); + "Maximum nice length of matches is " + NICE_LEN_MAX + + ": " + niceLen); this.niceLen = niceLen; } @@ -473,13 +473,13 @@ public class LZMA2Options extends FilterOptions { * than Binary Tree match finders. The default depends on the preset: * 0-3 use MF_HC4 and 4-9 use MF_BT4. * - * @throws UnsupportedOptionsException - * mf is not supported + * @throws UnsupportedOptionsException + * mf is not supported */ public void setMatchFinder(int mf) throws UnsupportedOptionsException { if (mf != MF_HC4 && mf != MF_BT4) throw new UnsupportedOptionsException( - "Unsupported match finder: " + mf); + "Unsupported match finder: " + mf); this.mf = mf; } @@ -504,14 +504,14 @@ public class LZMA2Options extends FilterOptions { * higher than 1000 unless you are prepared to interrupt the compression * in case it is taking far too long. * - * @throws UnsupportedOptionsException - * depthLimit is invalid + * @throws UnsupportedOptionsException + * depthLimit is invalid */ public void setDepthLimit(int depthLimit) - throws UnsupportedOptionsException { + throws UnsupportedOptionsException { if (depthLimit < 0) throw new UnsupportedOptionsException( - "Depth limit cannot be negative: " + depthLimit); + "Depth limit cannot be negative: " + depthLimit); this.depthLimit = depthLimit; } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2OutputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2OutputStream.java index 5724d1058..dd7747d77 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2OutputStream.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/LZMA2OutputStream.java @@ -7,7 +7,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.DataOutputStream; @@ -17,6 +16,7 @@ import org.tukaani.xz.rangecoder.RangeEncoder; import org.tukaani.xz.lzma.LZMAEncoder; class LZMA2OutputStream extends FinishableOutputStream { + static final int COMPRESSED_SIZE_MAX = 64 << 10; private FinishableOutputStream out; @@ -62,10 +62,10 @@ class LZMA2OutputStream extends FinishableOutputStream { int dictSize = options.getDictSize(); int extraSizeBefore = getExtraSizeBefore(dictSize); lzma = LZMAEncoder.getInstance(rc, - options.getLc(), options.getLp(), options.getPb(), - options.getMode(), - dictSize, extraSizeBefore, options.getNiceLen(), - options.getMatchFinder(), options.getDepthLimit()); + options.getLc(), options.getLp(), options.getPb(), + options.getMode(), + dictSize, extraSizeBefore, options.getNiceLen(), + options.getMatchFinder(), options.getDepthLimit()); lz = lzma.getLZEncoder(); @@ -79,7 +79,7 @@ class LZMA2OutputStream extends FinishableOutputStream { } public void write(int b) throws IOException { - tempBuf[0] = (byte)b; + tempBuf[0] = (byte) b; write(tempBuf, 0, 1); } @@ -118,9 +118,9 @@ class LZMA2OutputStream extends FinishableOutputStream { // +2 because the header of a compressed chunk is 2 bytes // bigger than the header of an uncompressed chunk. - if (compressedSize + 2 < uncompressedSize) { + if (compressedSize + 2 < uncompressedSize) writeLZMA(uncompressedSize, compressedSize); - } else { + else { lzma.reset(); uncompressedSize = lzma.getUncompressedSize(); assert uncompressedSize > 0 : uncompressedSize; @@ -133,20 +133,18 @@ class LZMA2OutputStream extends FinishableOutputStream { } private void writeLZMA(int uncompressedSize, int compressedSize) - throws IOException { + throws IOException { int control; - if (propsNeeded) { + if (propsNeeded) if (dictResetNeeded) control = 0x80 + (3 << 5); else control = 0x80 + (2 << 5); - } else { - if (stateResetNeeded) - control = 0x80 + (1 << 5); - else - control = 0x80; - } + else if (stateResetNeeded) + control = 0x80 + (1 << 5); + else + control = 0x80; control |= (uncompressedSize - 1) >>> 16; outData.writeByte(control); @@ -239,11 +237,11 @@ class LZMA2OutputStream extends FinishableOutputStream { public void close() throws IOException { if (out != null) { - if (!finished) { + if (!finished) try { writeEndMarker(); - } catch (IOException e) {} - } + } catch (IOException e) { + } try { out.close(); diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/LZMAInputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/LZMAInputStream.java index 9bbd26141..e21618bd4 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/LZMAInputStream.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/LZMAInputStream.java @@ -7,7 +7,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.InputStream; @@ -35,6 +34,7 @@ import org.tukaani.xz.lzma.LZMADecoder; * @since 1.4 */ public class LZMAInputStream extends InputStream { + /** * Largest dictionary size supported by this implementation. *

@@ -67,28 +67,28 @@ public class LZMAInputStream extends InputStream { * Gets approximate decompressor memory requirements as kibibytes for * the given dictionary size and LZMA properties byte (lc, lp, and pb). * - * @param dictSize LZMA dictionary size as bytes, should be - * in the range [0, - * DICT_SIZE_MAX] + * @param dictSize LZMA dictionary size as bytes, should be + * in the range [0, + * DICT_SIZE_MAX] * - * @param propsByte LZMA properties byte that encodes the values - * of lc, lp, and pb + * @param propsByte LZMA properties byte that encodes the values + * of lc, lp, and pb * - * @return approximate memory requirements as kibibytes (KiB) + * @return approximate memory requirements as kibibytes (KiB) * - * @throws UnsupportedOptionsException - * if dictSize is outside - * the range [0, - * DICT_SIZE_MAX] + * @throws UnsupportedOptionsException + * if dictSize is outside + * the range [0, + * DICT_SIZE_MAX] * - * @throws CorruptedInputException - * if propsByte is invalid + * @throws CorruptedInputException + * if propsByte is invalid */ public static int getMemoryUsage(int dictSize, byte propsByte) - throws UnsupportedOptionsException, CorruptedInputException { + throws UnsupportedOptionsException, CorruptedInputException { if (dictSize < 0 || dictSize > DICT_SIZE_MAX) throw new UnsupportedOptionsException( - "LZMA dictionary is too big for this implementation"); + "LZMA dictionary is too big for this implementation"); int props = propsByte & 0xFF; if (props > (4 * 5 + 4) * 9 + 8) @@ -105,17 +105,17 @@ public class LZMAInputStream extends InputStream { * Gets approximate decompressor memory requirements as kibibytes for * the given dictionary size, lc, and lp. Note that pb isn't needed. * - * @param dictSize LZMA dictionary size as bytes, must be - * in the range [0, - * DICT_SIZE_MAX] + * @param dictSize LZMA dictionary size as bytes, must be + * in the range [0, + * DICT_SIZE_MAX] * - * @param lc number of literal context bits, must be - * in the range [0, 8] + * @param lc number of literal context bits, must be + * in the range [0, 8] * - * @param lp number of literal position bits, must be - * in the range [0, 4] + * @param lp number of literal position bits, must be + * in the range [0, 4] * - * @return approximate memory requirements as kibibytes (KiB) + * @return approximate memory requirements as kibibytes (KiB) */ public static int getMemoryUsage(int dictSize, int lc, int lp) { if (lc < 0 || lc > 8 || lp < 0 || lp > 4) @@ -135,7 +135,7 @@ public class LZMAInputStream extends InputStream { private static int getDictSize(int dictSize) { if (dictSize < 0 || dictSize > DICT_SIZE_MAX) throw new IllegalArgumentException( - "LZMA dictionary is too big for this implementation"); + "LZMA dictionary is too big for this implementation"); // For performance reasons, use a 4 KiB dictionary if something // smaller was requested. It's a rare situation and the performance @@ -159,24 +159,24 @@ public class LZMAInputStream extends InputStream { * Creates a new .lzma file format decompressor without * a memory usage limit. * - * @param in input stream from which .lzma data is read; - * it might be a good idea to wrap it in - * BufferedInputStream, see the - * note at the top of this page + * @param in input stream from which .lzma data is read; + * it might be a good idea to wrap it in + * BufferedInputStream, see the + * note at the top of this page * - * @throws CorruptedInputException - * file is corrupt or perhaps not in - * the .lzma format at all + * @throws CorruptedInputException + * file is corrupt or perhaps not in + * the .lzma format at all * - * @throws UnsupportedOptionsException - * dictionary size or uncompressed size is too - * big for this implementation + * @throws UnsupportedOptionsException + * dictionary size or uncompressed size is too + * big for this implementation * - * @throws EOFException - * file is truncated or perhaps not in - * the .lzma format at all + * @throws EOFException + * file is truncated or perhaps not in + * the .lzma format at all * - * @throws IOException may be thrown by in + * @throws IOException may be thrown by in */ public LZMAInputStream(InputStream in) throws IOException { this(in, -1); @@ -186,34 +186,34 @@ public class LZMAInputStream extends InputStream { * Creates a new .lzma file format decompressor with an optional * memory usage limit. * - * @param in input stream from which .lzma data is read; - * it might be a good idea to wrap it in - * BufferedInputStream, see the - * note at the top of this page + * @param in input stream from which .lzma data is read; + * it might be a good idea to wrap it in + * BufferedInputStream, see the + * note at the top of this page * - * @param memoryLimit memory usage limit in kibibytes (KiB) - * or -1 to impose no - * memory usage limit + * @param memoryLimit memory usage limit in kibibytes (KiB) + * or -1 to impose no + * memory usage limit * - * @throws CorruptedInputException - * file is corrupt or perhaps not in - * the .lzma format at all + * @throws CorruptedInputException + * file is corrupt or perhaps not in + * the .lzma format at all * - * @throws UnsupportedOptionsException - * dictionary size or uncompressed size is too - * big for this implementation + * @throws UnsupportedOptionsException + * dictionary size or uncompressed size is too + * big for this implementation * - * @throws MemoryLimitException - * memory usage limit was exceeded + * @throws MemoryLimitException + * memory usage limit was exceeded * - * @throws EOFException - * file is truncated or perhaps not in - * the .lzma format at all + * @throws EOFException + * file is truncated or perhaps not in + * the .lzma format at all * - * @throws IOException may be thrown by in + * @throws IOException may be thrown by in */ public LZMAInputStream(InputStream in, int memoryLimit) - throws IOException { + throws IOException { DataInputStream inData = new DataInputStream(in); // Properties byte (lc, lp, and pb) @@ -230,7 +230,7 @@ public class LZMAInputStream extends InputStream { // the uncompressed size beforehand. long uncompSize = 0; for (int i = 0; i < 8; ++i) - uncompSize |= (long)inData.readUnsignedByte() << (8 * i); + uncompSize |= (long) inData.readUnsignedByte() << (8 * i); // Check the memory usage limit. int memoryNeeded = getMemoryUsage(dictSize, propsByte); @@ -263,26 +263,26 @@ public class LZMAInputStream extends InputStream { * was used when compressing. If you know the uncompressed size * of the data, this might allow saving some memory. * - * @param in input stream from which compressed - * data is read + * @param in input stream from which compressed + * data is read * - * @param uncompSize uncompressed size of the LZMA stream or -1 - * if the end marker is used in the LZMA stream + * @param uncompSize uncompressed size of the LZMA stream or -1 + * if the end marker is used in the LZMA stream * - * @param propsByte LZMA properties byte that has the encoded - * values for literal context bits (lc), literal - * position bits (lp), and position bits (pb) + * @param propsByte LZMA properties byte that has the encoded + * values for literal context bits (lc), literal + * position bits (lp), and position bits (pb) * - * @param dictSize dictionary size as bytes, must be in the range - * [0, DICT_SIZE_MAX] + * @param dictSize dictionary size as bytes, must be in the range + * [0, DICT_SIZE_MAX] * - * @throws CorruptedInputException - * if propsByte is invalid or - * the first input byte is not 0x00 + * @throws CorruptedInputException + * if propsByte is invalid or + * the first input byte is not 0x00 * - * @throws UnsupportedOptionsException - * dictionary size or uncompressed size is too - * big for this implementation + * @throws UnsupportedOptionsException + * dictionary size or uncompressed size is too + * big for this implementation * * */ @@ -295,37 +295,37 @@ public class LZMAInputStream extends InputStream { * Creates a new input stream that decompresses raw LZMA data (no .lzma * header) from in optionally with a preset dictionary. * - * @param in input stream from which LZMA-compressed - * data is read + * @param in input stream from which LZMA-compressed + * data is read * - * @param uncompSize uncompressed size of the LZMA stream or -1 - * if the end marker is used in the LZMA stream + * @param uncompSize uncompressed size of the LZMA stream or -1 + * if the end marker is used in the LZMA stream * - * @param propsByte LZMA properties byte that has the encoded - * values for literal context bits (lc), literal - * position bits (lp), and position bits (pb) + * @param propsByte LZMA properties byte that has the encoded + * values for literal context bits (lc), literal + * position bits (lp), and position bits (pb) * - * @param dictSize dictionary size as bytes, must be in the range - * [0, DICT_SIZE_MAX] + * @param dictSize dictionary size as bytes, must be in the range + * [0, DICT_SIZE_MAX] * - * @param presetDict preset dictionary or null - * to use no preset dictionary + * @param presetDict preset dictionary or null + * to use no preset dictionary * - * @throws CorruptedInputException - * if propsByte is invalid or - * the first input byte is not 0x00 + * @throws CorruptedInputException + * if propsByte is invalid or + * the first input byte is not 0x00 * - * @throws UnsupportedOptionsException - * dictionary size or uncompressed size is too - * big for this implementation + * @throws UnsupportedOptionsException + * dictionary size or uncompressed size is too + * big for this implementation * - * @throws EOFException file is truncated or corrupt + * @throws EOFException file is truncated or corrupt * - * @throws IOException may be thrown by in + * @throws IOException may be thrown by in */ public LZMAInputStream(InputStream in, long uncompSize, byte propsByte, int dictSize, byte[] presetDict) - throws IOException { + throws IOException { initialize(in, uncompSize, propsByte, dictSize, presetDict); } @@ -333,49 +333,49 @@ public class LZMAInputStream extends InputStream { * Creates a new input stream that decompresses raw LZMA data (no .lzma * header) from in optionally with a preset dictionary. * - * @param in input stream from which LZMA-compressed - * data is read + * @param in input stream from which LZMA-compressed + * data is read * - * @param uncompSize uncompressed size of the LZMA stream or -1 - * if the end marker is used in the LZMA stream + * @param uncompSize uncompressed size of the LZMA stream or -1 + * if the end marker is used in the LZMA stream * - * @param lc number of literal context bits, must be - * in the range [0, 8] + * @param lc number of literal context bits, must be + * in the range [0, 8] * - * @param lp number of literal position bits, must be - * in the range [0, 4] + * @param lp number of literal position bits, must be + * in the range [0, 4] * - * @param pb number position bits, must be - * in the range [0, 4] + * @param pb number position bits, must be + * in the range [0, 4] * - * @param dictSize dictionary size as bytes, must be in the range - * [0, DICT_SIZE_MAX] + * @param dictSize dictionary size as bytes, must be in the range + * [0, DICT_SIZE_MAX] * - * @param presetDict preset dictionary or null - * to use no preset dictionary + * @param presetDict preset dictionary or null + * to use no preset dictionary * - * @throws CorruptedInputException - * if the first input byte is not 0x00 + * @throws CorruptedInputException + * if the first input byte is not 0x00 * - * @throws EOFException file is truncated or corrupt + * @throws EOFException file is truncated or corrupt * - * @throws IOException may be thrown by in + * @throws IOException may be thrown by in */ public LZMAInputStream(InputStream in, long uncompSize, int lc, int lp, int pb, int dictSize, byte[] presetDict) - throws IOException { + throws IOException { initialize(in, uncompSize, lc, lp, pb, dictSize, presetDict); } private void initialize(InputStream in, long uncompSize, byte propsByte, int dictSize, byte[] presetDict) - throws IOException { + throws IOException { // Validate the uncompressed size since the other "initialize" throws // IllegalArgumentException if uncompSize < -1. if (uncompSize < -1) throw new UnsupportedOptionsException( - "Uncompressed size is too big"); + "Uncompressed size is too big"); // Decode the properties byte. In contrast to LZMA2, there is no // limit of lc + lp <= 4. @@ -392,7 +392,7 @@ public class LZMAInputStream extends InputStream { // IllegalArgumentException if dictSize is not supported. if (dictSize < 0 || dictSize > DICT_SIZE_MAX) throw new UnsupportedOptionsException( - "LZMA dictionary is too big for this implementation"); + "LZMA dictionary is too big for this implementation"); initialize(in, uncompSize, lc, lp, pb, dictSize, presetDict); } @@ -400,11 +400,11 @@ public class LZMAInputStream extends InputStream { private void initialize(InputStream in, long uncompSize, int lc, int lp, int pb, int dictSize, byte[] presetDict) - throws IOException { + throws IOException { // getDictSize validates dictSize and gives a message in // the exception too, so skip validating dictSize here. if (uncompSize < -1 || lc < 0 || lc > 8 || lp < 0 || lp > 4 - || pb < 0 || pb > 4) + || pb < 0 || pb > 4) throw new IllegalArgumentException(); this.in = in; @@ -413,7 +413,7 @@ public class LZMAInputStream extends InputStream { // a uselessly large dictionary buffer. dictSize = getDictSize(dictSize); if (uncompSize >= 0 && dictSize > uncompSize) - dictSize = getDictSize((int)uncompSize); + dictSize = getDictSize((int) uncompSize); lz = new LZDecoder(getDictSize(dictSize), presetDict); rc = new RangeDecoderFromStream(in); @@ -428,17 +428,17 @@ public class LZMAInputStream extends InputStream { * may be inefficient. Wrap it in java.io.BufferedInputStream * if you need to read lots of data one byte at a time. * - * @return the next decompressed byte, or -1 - * to indicate the end of the compressed stream + * @return the next decompressed byte, or -1 + * to indicate the end of the compressed stream * - * @throws CorruptedInputException + * @throws CorruptedInputException * - * @throws XZIOException if the stream has been closed + * @throws XZIOException if the stream has been closed * - * @throws EOFException - * compressed input is truncated or corrupt + * @throws EOFException + * compressed input is truncated or corrupt * - * @throws IOException may be thrown by in + * @throws IOException may be thrown by in */ public int read() throws IOException { return read(tempBuf, 0, 1) == -1 ? -1 : (tempBuf[0] & 0xFF); @@ -452,20 +452,20 @@ public class LZMAInputStream extends InputStream { * bytes have been decompressed, the end of the LZMA stream is reached, * or an exception is thrown. * - * @param buf target buffer for uncompressed data - * @param off start offset in buf - * @param len maximum number of uncompressed bytes to read + * @param buf target buffer for uncompressed data + * @param off start offset in buf + * @param len maximum number of uncompressed bytes to read * - * @return number of bytes read, or -1 to indicate - * the end of the compressed stream + * @return number of bytes read, or -1 to indicate + * the end of the compressed stream * - * @throws CorruptedInputException + * @throws CorruptedInputException * - * @throws XZIOException if the stream has been closed + * @throws XZIOException if the stream has been closed * - * @throws EOFException compressed input is truncated or corrupt + * @throws EOFException compressed input is truncated or corrupt * - * @throws IOException may be thrown by in + * @throws IOException may be thrown by in */ public int read(byte[] buf, int off, int len) throws IOException { if (off < 0 || len < 0 || off + len < 0 || off + len > buf.length) @@ -492,7 +492,7 @@ public class LZMAInputStream extends InputStream { // won't be exceeded. int copySizeMax = len; if (remainingSize >= 0 && remainingSize < len) - copySizeMax = (int)remainingSize; + copySizeMax = (int) remainingSize; lz.setLimit(copySizeMax); @@ -555,15 +555,14 @@ public class LZMAInputStream extends InputStream { * Closes the stream and calls in.close(). * If the stream was already closed, this does nothing. * - * @throws IOException if thrown by in.close() + * @throws IOException if thrown by in.close() */ public void close() throws IOException { - if (in != null) { + if (in != null) try { in.close(); } finally { in = null; } - } } } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/MemoryLimitException.java b/HMCLAPI/src/main/java/org/tukaani/xz/MemoryLimitException.java index 9d766bd77..61d130847 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/MemoryLimitException.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/MemoryLimitException.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; /** @@ -17,6 +16,7 @@ package org.tukaani.xz; * included in the error detail message in human readable format. */ public class MemoryLimitException extends XZIOException { + private static final long serialVersionUID = 3L; private final int memoryNeeded; @@ -28,8 +28,8 @@ public class MemoryLimitException extends XZIOException { * The amount of memory needed and the memory usage limit are * included in the error detail message. * - * @param memoryNeeded amount of memory needed as kibibytes (KiB) - * @param memoryLimit specified memory usage limit as kibibytes (KiB) + * @param memoryNeeded amount of memory needed as kibibytes (KiB) + * @param memoryLimit specified memory usage limit as kibibytes (KiB) */ public MemoryLimitException(int memoryNeeded, int memoryLimit) { super("" + memoryNeeded + " KiB of memory would be needed; limit was " @@ -42,7 +42,7 @@ public class MemoryLimitException extends XZIOException { /** * Gets how much memory is required to decompress the data. * - * @return amount of memory needed as kibibytes (KiB) + * @return amount of memory needed as kibibytes (KiB) */ public int getMemoryNeeded() { return memoryNeeded; @@ -52,7 +52,7 @@ public class MemoryLimitException extends XZIOException { * Gets what the memory usage limit was at the time the exception * was created. * - * @return memory usage limit as kibibytes (KiB) + * @return memory usage limit as kibibytes (KiB) */ public int getMemoryLimit() { return memoryLimit; diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/PowerPCOptions.java b/HMCLAPI/src/main/java/org/tukaani/xz/PowerPCOptions.java index f36d36183..3f25ac739 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/PowerPCOptions.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/PowerPCOptions.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.InputStream; @@ -16,6 +15,7 @@ import org.tukaani.xz.simple.PowerPC; * BCJ filter for big endian PowerPC instructions. */ public class PowerPCOptions extends BCJOptions { + private static final int ALIGNMENT = 4; public PowerPCOptions() { diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/RawCoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/RawCoder.java index 12c7da8fc..7a1624b21 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/RawCoder.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/RawCoder.java @@ -6,20 +6,20 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; class RawCoder { + static void validate(FilterCoder[] filters) - throws UnsupportedOptionsException { + throws UnsupportedOptionsException { for (int i = 0; i < filters.length - 1; ++i) if (!filters[i].nonLastOK()) throw new UnsupportedOptionsException( - "Unsupported XZ filter chain"); + "Unsupported XZ filter chain"); if (!filters[filters.length - 1].lastOK()) throw new UnsupportedOptionsException( - "Unsupported XZ filter chain"); + "Unsupported XZ filter chain"); int changesSizeCount = 0; for (int i = 0; i < filters.length; ++i) @@ -28,6 +28,6 @@ class RawCoder { if (changesSizeCount > 3) throw new UnsupportedOptionsException( - "Unsupported XZ filter chain"); + "Unsupported XZ filter chain"); } } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/SPARCOptions.java b/HMCLAPI/src/main/java/org/tukaani/xz/SPARCOptions.java index 0f20677ca..f5dbe1fe5 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/SPARCOptions.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/SPARCOptions.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.InputStream; @@ -16,6 +15,7 @@ import org.tukaani.xz.simple.SPARC; * BCJ filter for SPARC. */ public class SPARCOptions extends BCJOptions { + private static final int ALIGNMENT = 4; public SPARCOptions() { diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/SeekableFileInputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/SeekableFileInputStream.java index fe2d685fa..e54134fbb 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/SeekableFileInputStream.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/SeekableFileInputStream.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.File; @@ -19,6 +18,7 @@ import java.io.FileNotFoundException; * in a SeekableInputStream. */ public class SeekableFileInputStream extends SeekableInputStream { + /** * The RandomAccessFile that has been wrapped * into a SeekableFileInputStream. @@ -87,7 +87,7 @@ public class SeekableFileInputStream extends SeekableInputStream { /** * Calls {@link RandomAccessFile#getFilePointer() - randomAccessFile.getFilePointer()}. + * randomAccessFile.getFilePointer()}. */ public long position() throws IOException { return randomAccessFile.getFilePointer(); diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/SeekableInputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/SeekableInputStream.java index a2f908ab8..863cebb62 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/SeekableInputStream.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/SeekableInputStream.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.InputStream; @@ -16,6 +15,7 @@ import java.io.IOException; * Input stream with random access support. */ public abstract class SeekableInputStream extends InputStream { + /** * Seeks n bytes forward in this stream. *

@@ -32,11 +32,11 @@ public abstract class SeekableInputStream extends InputStream { * {@link java.io.InputStream#skip(long) InputStream.skip}. * * @return 0 if n is negative, - * less than n if skipping n - * bytes would seek past the end of the file, - * n otherwise + * less than n if skipping n + * bytes would seek past the end of the file, + * n otherwise * - * @throws IOException might be thrown by {@link #seek(long)} + * @throws IOException might be thrown by {@link #seek(long)} */ public long skip(long n) throws IOException { if (n <= 0) @@ -72,10 +72,10 @@ public abstract class SeekableInputStream extends InputStream { * past the end of the stream, read will return * -1 to indicate end of stream. * - * @param pos new read position in the stream + * @param pos new read position in the stream * - * @throws IOException if pos is negative or if - * a stream-specific I/O error occurs + * @throws IOException if pos is negative or if + * a stream-specific I/O error occurs */ public abstract void seek(long pos) throws IOException; } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/SeekableXZInputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/SeekableXZInputStream.java index eb5573e6d..60ec21ef2 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/SeekableXZInputStream.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/SeekableXZInputStream.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.util.Arrays; @@ -74,6 +73,7 @@ import org.tukaani.xz.index.BlockInfo; * @see XZOutputStream */ public class SeekableXZInputStream extends SeekableInputStream { + /** * The input stream containing XZ compressed data. */ @@ -178,29 +178,29 @@ public class SeekableXZInputStream extends SeekableInputStream { /** * Creates a new seekable XZ decompressor without a memory usage limit. * - * @param in seekable input stream containing one or more - * XZ Streams; the whole input stream is used + * @param in seekable input stream containing one or more + * XZ Streams; the whole input stream is used * - * @throws XZFormatException - * input is not in the XZ format + * @throws XZFormatException + * input is not in the XZ format * - * @throws CorruptedInputException - * XZ data is corrupt or truncated + * @throws CorruptedInputException + * XZ data is corrupt or truncated * - * @throws UnsupportedOptionsException - * XZ headers seem valid but they specify - * options not supported by this implementation + * @throws UnsupportedOptionsException + * XZ headers seem valid but they specify + * options not supported by this implementation * - * @throws EOFException - * less than 6 bytes of input was available - * from in, or (unlikely) the size - * of the underlying stream got smaller while - * this was reading from it + * @throws EOFException + * less than 6 bytes of input was available + * from in, or (unlikely) the size + * of the underlying stream got smaller while + * this was reading from it * - * @throws IOException may be thrown by in + * @throws IOException may be thrown by in */ public SeekableXZInputStream(SeekableInputStream in) - throws IOException { + throws IOException { this(in, -1); } @@ -208,37 +208,37 @@ public class SeekableXZInputStream extends SeekableInputStream { * Creates a new seekable XZ decomporessor with an optional * memory usage limit. * - * @param in seekable input stream containing one or more - * XZ Streams; the whole input stream is used + * @param in seekable input stream containing one or more + * XZ Streams; the whole input stream is used * - * @param memoryLimit memory usage limit in kibibytes (KiB) - * or -1 to impose no - * memory usage limit + * @param memoryLimit memory usage limit in kibibytes (KiB) + * or -1 to impose no + * memory usage limit * - * @throws XZFormatException - * input is not in the XZ format + * @throws XZFormatException + * input is not in the XZ format * - * @throws CorruptedInputException - * XZ data is corrupt or truncated + * @throws CorruptedInputException + * XZ data is corrupt or truncated * - * @throws UnsupportedOptionsException - * XZ headers seem valid but they specify - * options not supported by this implementation + * @throws UnsupportedOptionsException + * XZ headers seem valid but they specify + * options not supported by this implementation * - * @throws MemoryLimitException - * decoded XZ Indexes would need more memory - * than allowed by the memory usage limit + * @throws MemoryLimitException + * decoded XZ Indexes would need more memory + * than allowed by the memory usage limit * - * @throws EOFException - * less than 6 bytes of input was available - * from in, or (unlikely) the size - * of the underlying stream got smaller while - * this was reading from it + * @throws EOFException + * less than 6 bytes of input was available + * from in, or (unlikely) the size + * of the underlying stream got smaller while + * this was reading from it * - * @throws IOException may be thrown by in + * @throws IOException may be thrown by in */ public SeekableXZInputStream(SeekableInputStream in, int memoryLimit) - throws IOException { + throws IOException { this.in = in; DataInputStream inData = new DataInputStream(in); @@ -255,7 +255,7 @@ public class SeekableXZInputStream extends SeekableInputStream { long pos = in.length(); if ((pos & 3) != 0) throw new CorruptedInputException( - "XZ file size is not a multiple of 4 bytes"); + "XZ file size is not a multiple of 4 bytes"); // Parse the headers starting from the end of the file. byte[] buf = new byte[DecoderUtil.STREAM_HEADER_SIZE]; @@ -273,7 +273,7 @@ public class SeekableXZInputStream extends SeekableInputStream { // Skipping more at once would be faster, // but usually there isn't much Stream Padding. if (buf[8] == 0x00 && buf[9] == 0x00 && buf[10] == 0x00 - && buf[11] == 0x00) { + && buf[11] == 0x00) { streamPadding += 4; pos -= 4; continue; @@ -287,7 +287,7 @@ public class SeekableXZInputStream extends SeekableInputStream { StreamFlags streamFooter = DecoderUtil.decodeStreamFooter(buf); if (streamFooter.backwardSize >= pos) throw new CorruptedInputException( - "Backward Size in XZ Stream Footer is too big"); + "Backward Size in XZ Stream Footer is too big"); // Check that the Check ID is supported. Store it in case this // is the first Stream in the file. @@ -309,8 +309,8 @@ public class SeekableXZInputStream extends SeekableInputStream { // already needed so we need to recreate the exception. assert memoryLimit >= 0; throw new MemoryLimitException( - e.getMemoryNeeded() + indexMemoryUsage, - memoryLimit + indexMemoryUsage); + e.getMemoryNeeded() + indexMemoryUsage, + memoryLimit + indexMemoryUsage); } // Update the memory usage and limit counters. @@ -329,7 +329,7 @@ public class SeekableXZInputStream extends SeekableInputStream { long off = index.getStreamSize() - DecoderUtil.STREAM_HEADER_SIZE; if (pos < off) throw new CorruptedInputException("XZ Index indicates " - + "too big compressed size for the XZ Stream"); + + "too big compressed size for the XZ Stream"); // Seek to the beginning of this Stream. pos -= off; @@ -342,7 +342,7 @@ public class SeekableXZInputStream extends SeekableInputStream { // Verify that the Stream Header matches the Stream Footer. if (!DecoderUtil.areStreamFlagsEqual(streamHeader, streamFooter)) throw new CorruptedInputException( - "XZ Stream Footer does not match Stream Header"); + "XZ Stream Footer does not match Stream Header"); // Update the total uncompressed size of the file and check that // it doesn't overflow. @@ -354,7 +354,7 @@ public class SeekableXZInputStream extends SeekableInputStream { blockCount += index.getRecordCount(); if (blockCount < 0) throw new UnsupportedOptionsException( - "XZ file has over " + Integer.MAX_VALUE + " Blocks"); + "XZ file has over " + Integer.MAX_VALUE + " Blocks"); // Add this Stream to the list of Streams. streams.add(index); @@ -371,9 +371,9 @@ public class SeekableXZInputStream extends SeekableInputStream { // Store the relative offsets of the Streams. This way we don't // need to recalculate them in this class when seeking; the // IndexDecoder instances will handle them. - IndexDecoder prev = (IndexDecoder)streams.get(streams.size() - 1); + IndexDecoder prev = (IndexDecoder) streams.get(streams.size() - 1); for (int i = streams.size() - 2; i >= 0; --i) { - IndexDecoder cur = (IndexDecoder)streams.get(i); + IndexDecoder cur = (IndexDecoder) streams.get(i); cur.setOffsets(prev); prev = cur; } @@ -382,7 +382,7 @@ public class SeekableXZInputStream extends SeekableInputStream { // The blockNumber will be left to -1 so that .hasNext() // and .setNext() work to get the first Block when starting // to decompress from the beginning of the file. - IndexDecoder first = (IndexDecoder)streams.get(streams.size() - 1); + IndexDecoder first = (IndexDecoder) streams.get(streams.size() - 1); curBlockInfo = new BlockInfo(first); // queriedBlockInfo needs to be allocated too. The Stream used for @@ -447,9 +447,9 @@ public class SeekableXZInputStream extends SeekableInputStream { /** * Gets the uncompressed start position of the given Block. * - * @throws IndexOutOfBoundsException if - * blockNumber < 0 or - * blockNumber >= getBlockCount(). + * @throws IndexOutOfBoundsException if + * blockNumber < 0 or + * blockNumber >= getBlockCount(). * * @since 1.3 */ @@ -461,9 +461,9 @@ public class SeekableXZInputStream extends SeekableInputStream { /** * Gets the uncompressed size of the given Block. * - * @throws IndexOutOfBoundsException if - * blockNumber < 0 or - * blockNumber >= getBlockCount(). + * @throws IndexOutOfBoundsException if + * blockNumber < 0 or + * blockNumber >= getBlockCount(). * * @since 1.3 */ @@ -477,9 +477,9 @@ public class SeekableXZInputStream extends SeekableInputStream { * the underlying .xz file. * This information is rarely useful to the users of this class. * - * @throws IndexOutOfBoundsException if - * blockNumber < 0 or - * blockNumber >= getBlockCount(). + * @throws IndexOutOfBoundsException if + * blockNumber < 0 or + * blockNumber >= getBlockCount(). * * @since 1.3 */ @@ -493,9 +493,9 @@ public class SeekableXZInputStream extends SeekableInputStream { * This together with the uncompressed size can be used to calculate * the compression ratio of the specific Block. * - * @throws IndexOutOfBoundsException if - * blockNumber < 0 or - * blockNumber >= getBlockCount(). + * @throws IndexOutOfBoundsException if + * blockNumber < 0 or + * blockNumber >= getBlockCount(). * * @since 1.3 */ @@ -507,9 +507,9 @@ public class SeekableXZInputStream extends SeekableInputStream { /** * Gets integrity check type (Check ID) of the given Block. * - * @throws IndexOutOfBoundsException if - * blockNumber < 0 or - * blockNumber >= getBlockCount(). + * @throws IndexOutOfBoundsException if + * blockNumber < 0 or + * blockNumber >= getBlockCount(). * * @see #getCheckTypes() * @@ -524,9 +524,9 @@ public class SeekableXZInputStream extends SeekableInputStream { * Gets the number of the Block that contains the byte at the given * uncompressed position. * - * @throws IndexOutOfBoundsException if - * pos < 0 or - * pos >= length(). + * @throws IndexOutOfBoundsException if + * pos < 0 or + * pos >= length(). * * @since 1.3 */ @@ -538,16 +538,16 @@ public class SeekableXZInputStream extends SeekableInputStream { /** * Decompresses the next byte from this input stream. * - * @return the next decompressed byte, or -1 - * to indicate the end of the compressed stream + * @return the next decompressed byte, or -1 + * to indicate the end of the compressed stream * - * @throws CorruptedInputException - * @throws UnsupportedOptionsException - * @throws MemoryLimitException + * @throws CorruptedInputException + * @throws UnsupportedOptionsException + * @throws MemoryLimitException * - * @throws XZIOException if the stream has been closed + * @throws XZIOException if the stream has been closed * - * @throws IOException may be thrown by in + * @throws IOException may be thrown by in */ public int read() throws IOException { return read(tempBuf, 0, 1) == -1 ? -1 : (tempBuf[0] & 0xFF); @@ -561,28 +561,28 @@ public class SeekableXZInputStream extends SeekableInputStream { * bytes of uncompressed data. Less than len bytes may * be read only in the following situations: *

    - *
  • The end of the compressed data was reached successfully.
  • - *
  • An error is detected after at least one but less than - * len bytes have already been successfully - * decompressed. The next call with non-zero len - * will immediately throw the pending exception.
  • - *
  • An exception is thrown.
  • + *
  • The end of the compressed data was reached successfully.
  • + *
  • An error is detected after at least one but less than + * len bytes have already been successfully + * decompressed. The next call with non-zero len + * will immediately throw the pending exception.
  • + *
  • An exception is thrown.
  • *
* - * @param buf target buffer for uncompressed data - * @param off start offset in buf - * @param len maximum number of uncompressed bytes to read + * @param buf target buffer for uncompressed data + * @param off start offset in buf + * @param len maximum number of uncompressed bytes to read * - * @return number of bytes read, or -1 to indicate - * the end of the compressed stream + * @return number of bytes read, or -1 to indicate + * the end of the compressed stream * - * @throws CorruptedInputException - * @throws UnsupportedOptionsException - * @throws MemoryLimitException + * @throws CorruptedInputException + * @throws UnsupportedOptionsException + * @throws MemoryLimitException * - * @throws XZIOException if the stream has been closed + * @throws XZIOException if the stream has been closed * - * @throws IOException may be thrown by in + * @throws IOException may be thrown by in */ public int read(byte[] buf, int off, int len) throws IOException { if (off < 0 || len < 0 || off + len < 0 || off + len > buf.length) @@ -620,9 +620,8 @@ public class SeekableXZInputStream extends SeekableInputStream { size += ret; off += ret; len -= ret; - } else if (ret == -1) { + } else if (ret == -1) blockDecoder = null; - } } } catch (IOException e) { // We know that the file isn't simply truncated because we could @@ -647,8 +646,8 @@ public class SeekableXZInputStream extends SeekableInputStream { * thrown before the number of bytes claimed to be available have * been read from this input stream. * - * @return the number of uncompressed bytes that can be read - * without blocking + * @return the number of uncompressed bytes that can be read + * without blocking */ public int available() throws IOException { if (in == null) @@ -667,16 +666,15 @@ public class SeekableXZInputStream extends SeekableInputStream { * Closes the stream and calls in.close(). * If the stream was already closed, this does nothing. * - * @throws IOException if thrown by in.close() + * @throws IOException if thrown by in.close() */ public void close() throws IOException { - if (in != null) { + if (in != null) try { in.close(); } finally { in = null; } - } } /** @@ -690,7 +688,7 @@ public class SeekableXZInputStream extends SeekableInputStream { /** * Gets the current uncompressed position in this input stream. * - * @throws XZIOException if the stream has been closed + * @throws XZIOException if the stream has been closed */ public long position() throws IOException { if (in == null) @@ -709,11 +707,11 @@ public class SeekableXZInputStream extends SeekableInputStream { * read will return -1 to indicate * the end of the stream. * - * @param pos new uncompressed read position + * @param pos new uncompressed read position * - * @throws XZIOException - * if pos is negative, or - * if stream has been closed + * @throws XZIOException + * if pos is negative, or + * if stream has been closed */ public void seek(long pos) throws IOException { if (in == null) @@ -729,10 +727,10 @@ public class SeekableXZInputStream extends SeekableInputStream { /** * Seeks to the beginning of the given XZ Block. * - * @throws XZIOException - * if blockNumber < 0 or - * blockNumber >= getBlockCount(), - * or if stream has been closed + * @throws XZIOException + * if blockNumber < 0 or + * blockNumber >= getBlockCount(), + * or if stream has been closed * * @since 1.3 */ @@ -826,12 +824,12 @@ public class SeekableXZInputStream extends SeekableInputStream { private void locateBlockByPos(BlockInfo info, long pos) { if (pos < 0 || pos >= uncompressedSize) throw new IndexOutOfBoundsException( - "Invalid uncompressed position: " + pos); + "Invalid uncompressed position: " + pos); // Locate the Stream that contains the target position. IndexDecoder index; - for (int i = 0; ; ++i) { - index = (IndexDecoder)streams.get(i); + for (int i = 0;; ++i) { + index = (IndexDecoder) streams.get(i); if (index.hasUncompressedOffset(pos)) break; } @@ -853,7 +851,7 @@ public class SeekableXZInputStream extends SeekableInputStream { // Validate. if (blockNumber < 0 || blockNumber >= blockCount) throw new IndexOutOfBoundsException( - "Invalid XZ Block number: " + blockNumber); + "Invalid XZ Block number: " + blockNumber); // Skip the search if info already points to the correct Block. if (info.blockNumber == blockNumber) @@ -861,8 +859,8 @@ public class SeekableXZInputStream extends SeekableInputStream { // Search the Stream that contains the given Block and then // search the Block from that Stream. - for (int i = 0; ; ++i) { - IndexDecoder index = (IndexDecoder)streams.get(i); + for (int i = 0;; ++i) { + IndexDecoder index = (IndexDecoder) streams.get(i); if (index.hasRecord(blockNumber)) { index.setBlockInfo(info, blockNumber); return; @@ -880,14 +878,14 @@ public class SeekableXZInputStream extends SeekableInputStream { // runs tight when initializing a new BlockInputStream. blockDecoder = null; blockDecoder = new BlockInputStream(in, check, memoryLimit, - curBlockInfo.unpaddedSize, curBlockInfo.uncompressedSize); + curBlockInfo.unpaddedSize, curBlockInfo.uncompressedSize); } catch (MemoryLimitException e) { // BlockInputStream doesn't know how much memory we had // already needed so we need to recreate the exception. assert memoryLimit >= 0; throw new MemoryLimitException( - e.getMemoryNeeded() + indexMemoryUsage, - memoryLimit + indexMemoryUsage); + e.getMemoryNeeded() + indexMemoryUsage, + memoryLimit + indexMemoryUsage); } catch (IndexIndicatorException e) { // It cannot be Index so the file must be corrupt. throw new CorruptedInputException(); diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/SimpleInputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/SimpleInputStream.java index afd40c77e..8132133ae 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/SimpleInputStream.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/SimpleInputStream.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.InputStream; @@ -14,6 +13,7 @@ import java.io.IOException; import org.tukaani.xz.simple.SimpleFilter; class SimpleInputStream extends InputStream { + private static final int FILTER_BUF_SIZE = 4096; private InputStream in; @@ -127,12 +127,11 @@ class SimpleInputStream extends InputStream { } public void close() throws IOException { - if (in != null) { + if (in != null) try { in.close(); } finally { in = null; } - } } } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/SimpleOutputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/SimpleOutputStream.java index 771b1fb29..2526fc086 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/SimpleOutputStream.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/SimpleOutputStream.java @@ -6,13 +6,13 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.IOException; import org.tukaani.xz.simple.SimpleFilter; class SimpleOutputStream extends FinishableOutputStream { + private static final int FILTER_BUF_SIZE = 4096; private FinishableOutputStream out; @@ -41,7 +41,7 @@ class SimpleOutputStream extends FinishableOutputStream { } public void write(int b) throws IOException { - tempBuf[0] = (byte)b; + tempBuf[0] = (byte) b; write(tempBuf, 0, 1); } @@ -124,14 +124,14 @@ class SimpleOutputStream extends FinishableOutputStream { public void close() throws IOException { if (out != null) { - if (!finished) { + if (!finished) // out.close() must be called even if writePending() fails. // writePending() saves the possible exception so we can // ignore exceptions here. try { writePending(); - } catch (IOException e) {} - } + } catch (IOException e) { + } try { out.close(); diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/SingleXZInputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/SingleXZInputStream.java index a273fdd79..6f05bcf93 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/SingleXZInputStream.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/SingleXZInputStream.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.InputStream; @@ -40,6 +39,7 @@ import org.tukaani.xz.check.Check; * @see XZInputStream */ public class SingleXZInputStream extends InputStream { + private InputStream in; private int memoryLimit; private StreamFlags streamHeaderFlags; @@ -59,24 +59,24 @@ public class SingleXZInputStream extends InputStream { * from in. The header of the first Block is not read * until read is called. * - * @param in input stream from which XZ-compressed - * data is read + * @param in input stream from which XZ-compressed + * data is read * - * @throws XZFormatException - * input is not in the XZ format + * @throws XZFormatException + * input is not in the XZ format * - * @throws CorruptedInputException - * XZ header CRC32 doesn't match + * @throws CorruptedInputException + * XZ header CRC32 doesn't match * - * @throws UnsupportedOptionsException - * XZ header is valid but specifies options - * not supported by this implementation + * @throws UnsupportedOptionsException + * XZ header is valid but specifies options + * not supported by this implementation * - * @throws EOFException - * less than 12 bytes of input was available - * from in + * @throws EOFException + * less than 12 bytes of input was available + * from in * - * @throws IOException may be thrown by in + * @throws IOException may be thrown by in */ public SingleXZInputStream(InputStream in) throws IOException { initialize(in, -1); @@ -89,31 +89,31 @@ public class SingleXZInputStream extends InputStream { * This is identical to SingleXZInputStream(InputStream) * except that this takes also the memoryLimit argument. * - * @param in input stream from which XZ-compressed - * data is read + * @param in input stream from which XZ-compressed + * data is read * - * @param memoryLimit memory usage limit in kibibytes (KiB) - * or -1 to impose no - * memory usage limit + * @param memoryLimit memory usage limit in kibibytes (KiB) + * or -1 to impose no + * memory usage limit * - * @throws XZFormatException - * input is not in the XZ format + * @throws XZFormatException + * input is not in the XZ format * - * @throws CorruptedInputException - * XZ header CRC32 doesn't match + * @throws CorruptedInputException + * XZ header CRC32 doesn't match * - * @throws UnsupportedOptionsException - * XZ header is valid but specifies options - * not supported by this implementation + * @throws UnsupportedOptionsException + * XZ header is valid but specifies options + * not supported by this implementation * - * @throws EOFException - * less than 12 bytes of input was available - * from in + * @throws EOFException + * less than 12 bytes of input was available + * from in * - * @throws IOException may be thrown by in + * @throws IOException may be thrown by in */ public SingleXZInputStream(InputStream in, int memoryLimit) - throws IOException { + throws IOException { initialize(in, memoryLimit); } @@ -123,7 +123,7 @@ public class SingleXZInputStream extends InputStream { } private void initialize(InputStream in, int memoryLimit) - throws IOException { + throws IOException { byte[] streamHeader = new byte[DecoderUtil.STREAM_HEADER_SIZE]; new DataInputStream(in).readFully(streamHeader); initialize(in, memoryLimit, streamHeader); @@ -140,7 +140,7 @@ public class SingleXZInputStream extends InputStream { /** * Gets the ID of the integrity check used in this XZ Stream. * - * @return the Check ID specified in the XZ Stream Header + * @return the Check ID specified in the XZ Stream Header */ public int getCheckType() { return streamHeaderFlags.checkType; @@ -149,7 +149,7 @@ public class SingleXZInputStream extends InputStream { /** * Gets the name of the integrity check used in this XZ Stream. * - * @return the name of the check specified in the XZ Stream Header + * @return the name of the check specified in the XZ Stream Header */ public String getCheckName() { return check.getName(); @@ -162,19 +162,19 @@ public class SingleXZInputStream extends InputStream { * may be inefficient. Wrap it in {@link java.io.BufferedInputStream} * if you need to read lots of data one byte at a time. * - * @return the next decompressed byte, or -1 - * to indicate the end of the compressed stream + * @return the next decompressed byte, or -1 + * to indicate the end of the compressed stream * - * @throws CorruptedInputException - * @throws UnsupportedOptionsException - * @throws MemoryLimitException + * @throws CorruptedInputException + * @throws UnsupportedOptionsException + * @throws MemoryLimitException * - * @throws XZIOException if the stream has been closed + * @throws XZIOException if the stream has been closed * - * @throws EOFException - * compressed input is truncated or corrupt + * @throws EOFException + * compressed input is truncated or corrupt * - * @throws IOException may be thrown by in + * @throws IOException may be thrown by in */ public int read() throws IOException { return read(tempBuf, 0, 1) == -1 ? -1 : (tempBuf[0] & 0xFF); @@ -188,31 +188,31 @@ public class SingleXZInputStream extends InputStream { * bytes of uncompressed data. Less than len bytes may * be read only in the following situations: *
    - *
  • The end of the compressed data was reached successfully.
  • - *
  • An error is detected after at least one but less len - * bytes have already been successfully decompressed. - * The next call with non-zero len will immediately - * throw the pending exception.
  • - *
  • An exception is thrown.
  • + *
  • The end of the compressed data was reached successfully.
  • + *
  • An error is detected after at least one but less len + * bytes have already been successfully decompressed. + * The next call with non-zero len will immediately + * throw the pending exception.
  • + *
  • An exception is thrown.
  • *
* - * @param buf target buffer for uncompressed data - * @param off start offset in buf - * @param len maximum number of uncompressed bytes to read + * @param buf target buffer for uncompressed data + * @param off start offset in buf + * @param len maximum number of uncompressed bytes to read * - * @return number of bytes read, or -1 to indicate - * the end of the compressed stream + * @return number of bytes read, or -1 to indicate + * the end of the compressed stream * - * @throws CorruptedInputException - * @throws UnsupportedOptionsException - * @throws MemoryLimitException + * @throws CorruptedInputException + * @throws UnsupportedOptionsException + * @throws MemoryLimitException * - * @throws XZIOException if the stream has been closed + * @throws XZIOException if the stream has been closed * - * @throws EOFException - * compressed input is truncated or corrupt + * @throws EOFException + * compressed input is truncated or corrupt * - * @throws IOException may be thrown by in + * @throws IOException may be thrown by in */ public int read(byte[] buf, int off, int len) throws IOException { if (off < 0 || len < 0 || off + len < 0 || off + len > buf.length) @@ -234,17 +234,16 @@ public class SingleXZInputStream extends InputStream { try { while (len > 0) { - if (blockDecoder == null) { + if (blockDecoder == null) try { blockDecoder = new BlockInputStream( - in, check, memoryLimit, -1, -1); + in, check, memoryLimit, -1, -1); } catch (IndexIndicatorException e) { indexHash.validate(in); validateStreamFooter(); endReached = true; return size > 0 ? size : -1; } - } int ret = blockDecoder.read(buf, off, len); @@ -274,9 +273,9 @@ public class SingleXZInputStream extends InputStream { if (!DecoderUtil.areStreamFlagsEqual(streamHeaderFlags, streamFooterFlags) - || indexHash.getIndexSize() != streamFooterFlags.backwardSize) + || indexHash.getIndexSize() != streamFooterFlags.backwardSize) throw new CorruptedInputException( - "XZ Stream Footer does not match Stream Header"); + "XZ Stream Footer does not match Stream Header"); } /** @@ -287,8 +286,8 @@ public class SingleXZInputStream extends InputStream { * thrown before the number of bytes claimed to be available have * been read from this input stream. * - * @return the number of uncompressed bytes that can be read - * without blocking + * @return the number of uncompressed bytes that can be read + * without blocking */ public int available() throws IOException { if (in == null) @@ -304,15 +303,14 @@ public class SingleXZInputStream extends InputStream { * Closes the stream and calls in.close(). * If the stream was already closed, this does nothing. * - * @throws IOException if thrown by in.close() + * @throws IOException if thrown by in.close() */ public void close() throws IOException { - if (in != null) { + if (in != null) try { in.close(); } finally { in = null; } - } } } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/UncompressedLZMA2OutputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/UncompressedLZMA2OutputStream.java index 1ff967513..36930d610 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/UncompressedLZMA2OutputStream.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/UncompressedLZMA2OutputStream.java @@ -6,18 +6,18 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.DataOutputStream; import java.io.IOException; class UncompressedLZMA2OutputStream extends FinishableOutputStream { + private FinishableOutputStream out; private final DataOutputStream outData; private final byte[] uncompBuf - = new byte[LZMA2OutputStream.COMPRESSED_SIZE_MAX]; + = new byte[LZMA2OutputStream.COMPRESSED_SIZE_MAX]; private int uncompPos = 0; private boolean dictResetNeeded = true; @@ -40,7 +40,7 @@ class UncompressedLZMA2OutputStream extends FinishableOutputStream { } public void write(int b) throws IOException { - tempBuf[0] = (byte)b; + tempBuf[0] = (byte) b; write(tempBuf, 0, 1); } @@ -131,11 +131,11 @@ class UncompressedLZMA2OutputStream extends FinishableOutputStream { public void close() throws IOException { if (out != null) { - if (!finished) { + if (!finished) try { writeEndMarker(); - } catch (IOException e) {} - } + } catch (IOException e) { + } try { out.close(); diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/UnsupportedOptionsException.java b/HMCLAPI/src/main/java/org/tukaani/xz/UnsupportedOptionsException.java index 9aa16e8ce..5acf1cf4c 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/UnsupportedOptionsException.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/UnsupportedOptionsException.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; /** @@ -14,19 +13,21 @@ package org.tukaani.xz; * are detected. Some other implementation might support those options. */ public class UnsupportedOptionsException extends XZIOException { + private static final long serialVersionUID = 3L; /** * Creates a new UnsupportedOptionsException with null * as its error detail message. */ - public UnsupportedOptionsException() {} + public UnsupportedOptionsException() { + } /** * Creates a new UnsupportedOptionsException with the given * error detail message. * - * @param s error detail message + * @param s error detail message */ public UnsupportedOptionsException(String s) { super(s); diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/X86Options.java b/HMCLAPI/src/main/java/org/tukaani/xz/X86Options.java index e6d241f15..2397ac7f8 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/X86Options.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/X86Options.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.InputStream; @@ -16,6 +15,7 @@ import org.tukaani.xz.simple.X86; * BCJ filter for x86 (32-bit and 64-bit) instructions. */ public class X86Options extends BCJOptions { + private static final int ALIGNMENT = 1; public X86Options() { diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/XZ.java b/HMCLAPI/src/main/java/org/tukaani/xz/XZ.java index 4e0857ff9..261b12285 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/XZ.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/XZ.java @@ -6,24 +6,24 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; /** * XZ constants. */ public class XZ { + /** * XZ Header Magic Bytes begin a XZ file. * This can be useful to detect XZ compressed data. */ public static final byte[] HEADER_MAGIC = { - (byte)0xFD, '7', 'z', 'X', 'Z', '\0' }; + (byte) 0xFD, '7', 'z', 'X', 'Z', '\0'}; /** * XZ Footer Magic Bytes are the last bytes of a XZ Stream. */ - public static final byte[] FOOTER_MAGIC = { 'Y', 'Z' }; + public static final byte[] FOOTER_MAGIC = {'Y', 'Z'}; /** * Integrity check ID indicating that no integrity check is calculated. @@ -49,5 +49,6 @@ public class XZ { */ public static final int CHECK_SHA256 = 10; - private XZ() {} + private XZ() { + } } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/XZFormatException.java b/HMCLAPI/src/main/java/org/tukaani/xz/XZFormatException.java index 6f63020b3..3c5348f4f 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/XZFormatException.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/XZFormatException.java @@ -6,13 +6,13 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; /** * Thrown when the input data is not in the XZ format. */ public class XZFormatException extends XZIOException { + private static final long serialVersionUID = 3L; /** diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/XZIOException.java b/HMCLAPI/src/main/java/org/tukaani/xz/XZIOException.java index 14675f580..7ad5743ab 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/XZIOException.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/XZIOException.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; /** @@ -15,6 +14,7 @@ package org.tukaani.xz; * from XZIOException. */ public class XZIOException extends java.io.IOException { + private static final long serialVersionUID = 3L; public XZIOException() { diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/XZInputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/XZInputStream.java index bfd71f4c2..b96c7b723 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/XZInputStream.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/XZInputStream.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.InputStream; @@ -25,7 +24,8 @@ import org.tukaani.xz.common.DecoderUtil; *

Typical use cases

*

* Getting an input stream to decompress a .xz file: - *

+ * 

+ *

  * InputStream infile = new FileInputStream("foo.xz");
  * XZInputStream inxz = new XZInputStream(infile);
  * 
@@ -42,7 +42,8 @@ import org.tukaani.xz.common.DecoderUtil; * the specified limit, MemoryLimitException will be thrown when reading * from the stream. For example, the following sets the memory usage limit * to 100 MiB: - *

+ * 

+ *

  * InputStream infile = new FileInputStream("foo.xz");
  * XZInputStream inxz = new XZInputStream(infile, 100 * 1024);
  * 
@@ -61,6 +62,7 @@ import org.tukaani.xz.common.DecoderUtil; * @see SingleXZInputStream */ public class XZInputStream extends InputStream { + private final int memoryLimit; private InputStream in; private SingleXZInputStream xzIn; @@ -76,24 +78,24 @@ public class XZInputStream extends InputStream { * from in. The header of the first Block is not read * until read is called. * - * @param in input stream from which XZ-compressed - * data is read + * @param in input stream from which XZ-compressed + * data is read * - * @throws XZFormatException - * input is not in the XZ format + * @throws XZFormatException + * input is not in the XZ format * - * @throws CorruptedInputException - * XZ header CRC32 doesn't match + * @throws CorruptedInputException + * XZ header CRC32 doesn't match * - * @throws UnsupportedOptionsException - * XZ header is valid but specifies options - * not supported by this implementation + * @throws UnsupportedOptionsException + * XZ header is valid but specifies options + * not supported by this implementation * - * @throws EOFException - * less than 12 bytes of input was available - * from in + * @throws EOFException + * less than 12 bytes of input was available + * from in * - * @throws IOException may be thrown by in + * @throws IOException may be thrown by in */ public XZInputStream(InputStream in) throws IOException { this(in, -1); @@ -105,28 +107,28 @@ public class XZInputStream extends InputStream { * This is identical to XZInputStream(InputStream) except * that this takes also the memoryLimit argument. * - * @param in input stream from which XZ-compressed - * data is read + * @param in input stream from which XZ-compressed + * data is read * - * @param memoryLimit memory usage limit in kibibytes (KiB) - * or -1 to impose no - * memory usage limit + * @param memoryLimit memory usage limit in kibibytes (KiB) + * or -1 to impose no + * memory usage limit * - * @throws XZFormatException - * input is not in the XZ format + * @throws XZFormatException + * input is not in the XZ format * - * @throws CorruptedInputException - * XZ header CRC32 doesn't match + * @throws CorruptedInputException + * XZ header CRC32 doesn't match * - * @throws UnsupportedOptionsException - * XZ header is valid but specifies options - * not supported by this implementation + * @throws UnsupportedOptionsException + * XZ header is valid but specifies options + * not supported by this implementation * - * @throws EOFException - * less than 12 bytes of input was available - * from in + * @throws EOFException + * less than 12 bytes of input was available + * from in * - * @throws IOException may be thrown by in + * @throws IOException may be thrown by in */ public XZInputStream(InputStream in, int memoryLimit) throws IOException { this.in = in; @@ -141,19 +143,19 @@ public class XZInputStream extends InputStream { * may be inefficient. Wrap it in {@link java.io.BufferedInputStream} * if you need to read lots of data one byte at a time. * - * @return the next decompressed byte, or -1 - * to indicate the end of the compressed stream + * @return the next decompressed byte, or -1 + * to indicate the end of the compressed stream * - * @throws CorruptedInputException - * @throws UnsupportedOptionsException - * @throws MemoryLimitException + * @throws CorruptedInputException + * @throws UnsupportedOptionsException + * @throws MemoryLimitException * - * @throws XZIOException if the stream has been closed + * @throws XZIOException if the stream has been closed * - * @throws EOFException - * compressed input is truncated or corrupt + * @throws EOFException + * compressed input is truncated or corrupt * - * @throws IOException may be thrown by in + * @throws IOException may be thrown by in */ public int read() throws IOException { return read(tempBuf, 0, 1) == -1 ? -1 : (tempBuf[0] & 0xFF); @@ -167,31 +169,31 @@ public class XZInputStream extends InputStream { * bytes of uncompressed data. Less than len bytes may * be read only in the following situations: *
    - *
  • The end of the compressed data was reached successfully.
  • - *
  • An error is detected after at least one but less len - * bytes have already been successfully decompressed. - * The next call with non-zero len will immediately - * throw the pending exception.
  • - *
  • An exception is thrown.
  • + *
  • The end of the compressed data was reached successfully.
  • + *
  • An error is detected after at least one but less len + * bytes have already been successfully decompressed. + * The next call with non-zero len will immediately + * throw the pending exception.
  • + *
  • An exception is thrown.
  • *
* - * @param buf target buffer for uncompressed data - * @param off start offset in buf - * @param len maximum number of uncompressed bytes to read + * @param buf target buffer for uncompressed data + * @param off start offset in buf + * @param len maximum number of uncompressed bytes to read * - * @return number of bytes read, or -1 to indicate - * the end of the compressed stream + * @return number of bytes read, or -1 to indicate + * the end of the compressed stream * - * @throws CorruptedInputException - * @throws UnsupportedOptionsException - * @throws MemoryLimitException + * @throws CorruptedInputException + * @throws UnsupportedOptionsException + * @throws MemoryLimitException * - * @throws XZIOException if the stream has been closed + * @throws XZIOException if the stream has been closed * - * @throws EOFException - * compressed input is truncated or corrupt + * @throws EOFException + * compressed input is truncated or corrupt * - * @throws IOException may be thrown by in + * @throws IOException may be thrown by in */ public int read(byte[] buf, int off, int len) throws IOException { if (off < 0 || len < 0 || off + len < 0 || off + len > buf.length) @@ -225,9 +227,8 @@ public class XZInputStream extends InputStream { size += ret; off += ret; len -= ret; - } else if (ret == -1) { + } else if (ret == -1) xzIn = null; - } } } catch (IOException e) { exception = e; @@ -270,7 +271,7 @@ public class XZInputStream extends InputStream { // Since this isn't the first .xz Stream, it is more // logical to tell that the data is corrupt. throw new CorruptedInputException( - "Garbage after a valid XZ Stream"); + "Garbage after a valid XZ Stream"); } } @@ -282,8 +283,8 @@ public class XZInputStream extends InputStream { * thrown before the number of bytes claimed to be available have * been read from this input stream. * - * @return the number of uncompressed bytes that can be read - * without blocking + * @return the number of uncompressed bytes that can be read + * without blocking */ public int available() throws IOException { if (in == null) @@ -299,15 +300,14 @@ public class XZInputStream extends InputStream { * Closes the stream and calls in.close(). * If the stream was already closed, this does nothing. * - * @throws IOException if thrown by in.close() + * @throws IOException if thrown by in.close() */ public void close() throws IOException { - if (in != null) { + if (in != null) try { in.close(); } finally { in = null; } - } } } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/XZOutputStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/XZOutputStream.java index 6a37fedee..fbc18114d 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/XZOutputStream.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/XZOutputStream.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz; import java.io.OutputStream; @@ -23,14 +22,16 @@ import org.tukaani.xz.index.IndexEncoder; *

* Getting an output stream to compress with LZMA2 using the default * settings and the default integrity check type (CRC64): - *

+ * 

+ *

  * FileOutputStream outfile = new FileOutputStream("foo.xz");
  * XZOutputStream outxz = new XZOutputStream(outfile, new LZMA2Options());
  * 
*

* Using the preset level 8 for LZMA2 (the default * is 6) and SHA-256 instead of CRC64 for integrity checking: - *

+ * 

+ *

  * XZOutputStream outxz = new XZOutputStream(outfile, new LZMA2Options(8),
  *                                           XZ.CHECK_SHA256);
  * 
@@ -38,7 +39,8 @@ import org.tukaani.xz.index.IndexEncoder; * Using the x86 BCJ filter together with LZMA2 to compress x86 executables * and printing the memory usage information before creating the * XZOutputStream: - *

+ * 

+ *

  * X86Options x86 = new X86Options();
  * LZMA2Options lzma2 = new LZMA2Options();
  * FilterOptions[] options = { x86, lzma2 };
@@ -52,6 +54,7 @@ import org.tukaani.xz.index.IndexEncoder;
  * 
*/ public class XZOutputStream extends FinishableOutputStream { + private OutputStream out; private final StreamFlags streamFlags = new StreamFlags(); private final Check check; @@ -78,19 +81,19 @@ public class XZOutputStream extends FinishableOutputStream { * a single-member FilterOptions array to * XZOutputStream(OutputStream, FilterOptions[]). * - * @param out output stream to which the compressed data - * will be written + * @param out output stream to which the compressed data + * will be written * - * @param filterOptions - * filter options to use + * @param filterOptions + * filter options to use * - * @throws UnsupportedOptionsException - * invalid filter chain + * @throws UnsupportedOptionsException + * invalid filter chain * - * @throws IOException may be thrown from out + * @throws IOException may be thrown from out */ public XZOutputStream(OutputStream out, FilterOptions filterOptions) - throws IOException { + throws IOException { this(out, filterOptions, XZ.CHECK_CRC64); } @@ -100,23 +103,23 @@ public class XZOutputStream extends FinishableOutputStream { * passing a single-member FilterOptions array to * XZOutputStream(OutputStream, FilterOptions[], int). * - * @param out output stream to which the compressed data - * will be written + * @param out output stream to which the compressed data + * will be written * - * @param filterOptions - * filter options to use + * @param filterOptions + * filter options to use * - * @param checkType type of the integrity check, - * for example XZ.CHECK_CRC32 + * @param checkType type of the integrity check, + * for example XZ.CHECK_CRC32 * - * @throws UnsupportedOptionsException - * invalid filter chain + * @throws UnsupportedOptionsException + * invalid filter chain * - * @throws IOException may be thrown from out + * @throws IOException may be thrown from out */ public XZOutputStream(OutputStream out, FilterOptions filterOptions, int checkType) throws IOException { - this(out, new FilterOptions[] { filterOptions }, checkType); + this(out, new FilterOptions[] {filterOptions}, checkType); } /** @@ -124,19 +127,19 @@ public class XZOutputStream extends FinishableOutputStream { * the integrity check. This constructor is equivalent * XZOutputStream(out, filterOptions, XZ.CHECK_CRC64). * - * @param out output stream to which the compressed data - * will be written + * @param out output stream to which the compressed data + * will be written * - * @param filterOptions - * array of filter options to use + * @param filterOptions + * array of filter options to use * - * @throws UnsupportedOptionsException - * invalid filter chain + * @throws UnsupportedOptionsException + * invalid filter chain * - * @throws IOException may be thrown from out + * @throws IOException may be thrown from out */ public XZOutputStream(OutputStream out, FilterOptions[] filterOptions) - throws IOException { + throws IOException { this(out, filterOptions, XZ.CHECK_CRC64); } @@ -144,19 +147,19 @@ public class XZOutputStream extends FinishableOutputStream { * Creates a new XZ compressor using 1-4 filters and the specified * integrity check type. * - * @param out output stream to which the compressed data - * will be written + * @param out output stream to which the compressed data + * will be written * - * @param filterOptions - * array of filter options to use + * @param filterOptions + * array of filter options to use * - * @param checkType type of the integrity check, - * for example XZ.CHECK_CRC32 + * @param checkType type of the integrity check, + * for example XZ.CHECK_CRC32 * - * @throws UnsupportedOptionsException - * invalid filter chain + * @throws UnsupportedOptionsException + * invalid filter chain * - * @throws IOException may be thrown from out + * @throws IOException may be thrown from out */ public XZOutputStream(OutputStream out, FilterOptions[] filterOptions, int checkType) throws IOException { @@ -174,15 +177,15 @@ public class XZOutputStream extends FinishableOutputStream { * This is equivalent to passing a single-member FilterOptions array * to updateFilters(FilterOptions[]). * - * @param filterOptions - * new filter to use + * @param filterOptions + * new filter to use * - * @throws UnsupportedOptionsException - * unsupported filter chain, or trying to change - * the filter chain in the middle of a Block + * @throws UnsupportedOptionsException + * unsupported filter chain, or trying to change + * the filter chain in the middle of a Block */ public void updateFilters(FilterOptions filterOptions) - throws XZIOException { + throws XZIOException { FilterOptions[] opts = new FilterOptions[1]; opts[0] = filterOptions; updateFilters(opts); @@ -196,22 +199,22 @@ public class XZOutputStream extends FinishableOutputStream { * current XZ Block before calling this function. The new filter chain * will then be used for the next XZ Block. * - * @param filterOptions - * new filter chain to use + * @param filterOptions + * new filter chain to use * - * @throws UnsupportedOptionsException - * unsupported filter chain, or trying to change - * the filter chain in the middle of a Block + * @throws UnsupportedOptionsException + * unsupported filter chain, or trying to change + * the filter chain in the middle of a Block */ public void updateFilters(FilterOptions[] filterOptions) - throws XZIOException { + throws XZIOException { if (blockEncoder != null) throw new UnsupportedOptionsException("Changing filter options " - + "in the middle of a XZ Block not implemented"); + + "in the middle of a XZ Block not implemented"); if (filterOptions.length < 1 || filterOptions.length > 4) throw new UnsupportedOptionsException( - "XZ filter chain must be 1-4 filters"); + "XZ filter chain must be 1-4 filters"); filtersSupportFlushing = true; FilterEncoder[] newFilters = new FilterEncoder[filterOptions.length]; @@ -227,17 +230,17 @@ public class XZOutputStream extends FinishableOutputStream { /** * Writes one byte to be compressed. * - * @throws XZIOException - * XZ Stream has grown too big + * @throws XZIOException + * XZ Stream has grown too big * - * @throws XZIOException - * finish() or close() - * was already called + * @throws XZIOException + * finish() or close() + * was already called * - * @throws IOException may be thrown by the underlying output stream + * @throws IOException may be thrown by the underlying output stream */ public void write(int b) throws IOException { - tempBuf[0] = (byte)b; + tempBuf[0] = (byte) b; write(tempBuf, 0, 1); } @@ -249,21 +252,21 @@ public class XZOutputStream extends FinishableOutputStream { * be written to the underlaying output stream, but be aware that * flushing reduces compression ratio. * - * @param buf buffer of bytes to be written - * @param off start offset in buf - * @param len number of bytes to write + * @param buf buffer of bytes to be written + * @param off start offset in buf + * @param len number of bytes to write * - * @throws XZIOException - * XZ Stream has grown too big: total file size - * about 8 EiB or the Index field exceeds - * 16 GiB; you shouldn't reach these sizes - * in practice + * @throws XZIOException + * XZ Stream has grown too big: total file size + * about 8 EiB or the Index field exceeds + * 16 GiB; you shouldn't reach these sizes + * in practice * - * @throws XZIOException - * finish() or close() - * was already called and len > 0 + * @throws XZIOException + * finish() or close() + * was already called and len > 0 * - * @throws IOException may be thrown by the underlying output stream + * @throws IOException may be thrown by the underlying output stream */ public void write(byte[] buf, int off, int len) throws IOException { if (off < 0 || len < 0 || off + len < 0 || off + len > buf.length) @@ -303,13 +306,13 @@ public class XZOutputStream extends FinishableOutputStream { * Doing this very often will increase the size of the compressed * file a lot (more than plain flush() would do). * - * @throws XZIOException - * XZ Stream has grown too big + * @throws XZIOException + * XZ Stream has grown too big * - * @throws XZIOException - * stream finished or closed + * @throws XZIOException + * stream finished or closed * - * @throws IOException may be thrown by the underlying output stream + * @throws IOException may be thrown by the underlying output stream */ public void endBlock() throws IOException { if (exception != null) @@ -321,7 +324,7 @@ public class XZOutputStream extends FinishableOutputStream { // NOTE: Once there is threading with multiple Blocks, it's possible // that this function will be more like a barrier that returns // before the last Block has been finished. - if (blockEncoder != null) { + if (blockEncoder != null) try { blockEncoder.finish(); index.add(blockEncoder.getUnpaddedSize(), @@ -331,7 +334,6 @@ public class XZOutputStream extends FinishableOutputStream { exception = e; throw e; } - } } /** @@ -348,13 +350,13 @@ public class XZOutputStream extends FinishableOutputStream { * such a filter, flush() will call endBlock() * before flushing. * - * @throws XZIOException - * XZ Stream has grown too big + * @throws XZIOException + * XZ Stream has grown too big * - * @throws XZIOException - * stream finished or closed + * @throws XZIOException + * stream finished or closed * - * @throws IOException may be thrown by the underlying output stream + * @throws IOException may be thrown by the underlying output stream */ public void flush() throws IOException { if (exception != null) @@ -364,18 +366,17 @@ public class XZOutputStream extends FinishableOutputStream { throw new XZIOException("Stream finished or closed"); try { - if (blockEncoder != null) { - if (filtersSupportFlushing) { + if (blockEncoder != null) + if (filtersSupportFlushing) // This will eventually call out.flush() so // no need to do it here again. blockEncoder.flush(); - } else { + else { endBlock(); out.flush(); } - } else { + else out.flush(); - } } catch (IOException e) { exception = e; throw e; @@ -395,10 +396,10 @@ public class XZOutputStream extends FinishableOutputStream { * close(). If the stream will be closed anyway, there * usually is no need to call finish() separately. * - * @throws XZIOException - * XZ Stream has grown too big + * @throws XZIOException + * XZ Stream has grown too big * - * @throws IOException may be thrown by the underlying output stream + * @throws IOException may be thrown by the underlying output stream */ public void finish() throws IOException { if (!finished) { @@ -428,10 +429,10 @@ public class XZOutputStream extends FinishableOutputStream { * by finish() is thrown and the exception from the failed * out.close() is lost. * - * @throws XZIOException - * XZ Stream has grown too big + * @throws XZIOException + * XZ Stream has grown too big * - * @throws IOException may be thrown by the underlying output stream + * @throws IOException may be thrown by the underlying output stream */ public void close() throws IOException { if (out != null) { @@ -440,7 +441,8 @@ public class XZOutputStream extends FinishableOutputStream { // exception here. try { finish(); - } catch (IOException e) {} + } catch (IOException e) { + } try { out.close(); @@ -460,7 +462,7 @@ public class XZOutputStream extends FinishableOutputStream { private void encodeStreamFlags(byte[] buf, int off) { buf[off] = 0x00; - buf[off + 1] = (byte)streamFlags.checkType; + buf[off + 1] = (byte) streamFlags.checkType; } private void encodeStreamHeader() throws IOException { @@ -477,7 +479,7 @@ public class XZOutputStream extends FinishableOutputStream { byte[] buf = new byte[6]; long backwardSize = index.getIndexSize() / 4 - 1; for (int i = 0; i < 4; ++i) - buf[i] = (byte)(backwardSize >>> (i * 8)); + buf[i] = (byte) (backwardSize >>> (i * 8)); encodeStreamFlags(buf, 4); diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/check/CRC32.java b/HMCLAPI/src/main/java/org/tukaani/xz/check/CRC32.java index f18289879..3e2cd6f63 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/check/CRC32.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/check/CRC32.java @@ -6,10 +6,10 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.check; public class CRC32 extends Check { + private final java.util.zip.CRC32 state = new java.util.zip.CRC32(); public CRC32() { @@ -23,10 +23,10 @@ public class CRC32 extends Check { public byte[] finish() { long value = state.getValue(); - byte[] buf = { (byte)(value), - (byte)(value >>> 8), - (byte)(value >>> 16), - (byte)(value >>> 24) }; + byte[] buf = {(byte) (value), + (byte) (value >>> 8), + (byte) (value >>> 16), + (byte) (value >>> 24)}; state.reset(); return buf; } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/check/CRC64.java b/HMCLAPI/src/main/java/org/tukaani/xz/check/CRC64.java index 02b15b748..e2ad35e81 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/check/CRC64.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/check/CRC64.java @@ -6,10 +6,10 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.check; public class CRC64 extends Check { + private static final long poly = 0xC96C5795D7870F42L; private static final long[] crcTable = new long[256]; @@ -17,15 +17,14 @@ public class CRC64 extends Check { static { for (int b = 0; b < crcTable.length; ++b) { - long r = b; - for (int i = 0; i < 8; ++i) { - if ((r & 1) == 1) - r = (r >>> 1) ^ poly; - else - r >>>= 1; - } + long r = b; + for (int i = 0; i < 8; ++i) + if ((r & 1) == 1) + r = (r >>> 1) ^ poly; + else + r >>>= 1; - crcTable[b] = r; + crcTable[b] = r; } } @@ -38,7 +37,7 @@ public class CRC64 extends Check { int end = off + len; while (off < end) - crc = crcTable[(buf[off++] ^ (int)crc) & 0xFF] ^ (crc >>> 8); + crc = crcTable[(buf[off++] ^ (int) crc) & 0xFF] ^ (crc >>> 8); } public byte[] finish() { @@ -47,7 +46,7 @@ public class CRC64 extends Check { byte[] buf = new byte[8]; for (int i = 0; i < buf.length; ++i) - buf[i] = (byte)(value >> (i * 8)); + buf[i] = (byte) (value >> (i * 8)); return buf; } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/check/Check.java b/HMCLAPI/src/main/java/org/tukaani/xz/check/Check.java index 02c011e4d..0d9af8435 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/check/Check.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/check/Check.java @@ -6,17 +6,18 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.check; import org.tukaani.xz.XZ; import org.tukaani.xz.UnsupportedOptionsException; public abstract class Check { + int size; String name; public abstract void update(byte[] buf, int off, int len); + public abstract byte[] finish(); public void update(byte[] buf) { @@ -32,7 +33,7 @@ public abstract class Check { } public static Check getInstance(int checkType) - throws UnsupportedOptionsException { + throws UnsupportedOptionsException { switch (checkType) { case XZ.CHECK_NONE: return new None(); @@ -46,12 +47,13 @@ public abstract class Check { case XZ.CHECK_SHA256: try { return new SHA256(); - } catch (java.security.NoSuchAlgorithmException e) {} + } catch (java.security.NoSuchAlgorithmException e) { + } break; } throw new UnsupportedOptionsException( - "Unsupported Check ID " + checkType); + "Unsupported Check ID " + checkType); } } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/check/None.java b/HMCLAPI/src/main/java/org/tukaani/xz/check/None.java index b07c8e667..52065560e 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/check/None.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/check/None.java @@ -6,16 +6,17 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.check; public class None extends Check { + public None() { size = 0; name = "None"; } - public void update(byte[] buf, int off, int len) {} + public void update(byte[] buf, int off, int len) { + } public byte[] finish() { byte[] empty = new byte[0]; diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/check/SHA256.java b/HMCLAPI/src/main/java/org/tukaani/xz/check/SHA256.java index 66503c793..3d4c636d1 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/check/SHA256.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/check/SHA256.java @@ -6,10 +6,10 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.check; public class SHA256 extends Check { + private final java.security.MessageDigest sha256; public SHA256() throws java.security.NoSuchAlgorithmException { diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/common/DecoderUtil.java b/HMCLAPI/src/main/java/org/tukaani/xz/common/DecoderUtil.java index 77ba4413e..9b50bbd9b 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/common/DecoderUtil.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/common/DecoderUtil.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.common; import java.io.InputStream; @@ -19,6 +18,7 @@ import org.tukaani.xz.CorruptedInputException; import org.tukaani.xz.UnsupportedOptionsException; public class DecoderUtil extends Util { + public static boolean isCRC32Valid(byte[] buf, int off, int len, int ref_off) { CRC32 crc32 = new CRC32(); @@ -26,14 +26,14 @@ public class DecoderUtil extends Util { long value = crc32.getValue(); for (int i = 0; i < 4; ++i) - if ((byte)(value >>> (i * 8)) != buf[ref_off + i]) + if ((byte) (value >>> (i * 8)) != buf[ref_off + i]) return false; return true; } public static StreamFlags decodeStreamHeader(byte[] buf) - throws IOException { + throws IOException { for (int i = 0; i < XZ.HEADER_MAGIC.length; ++i) if (buf[i] != XZ.HEADER_MAGIC[i]) throw new XZFormatException(); @@ -46,17 +46,16 @@ public class DecoderUtil extends Util { return decodeStreamFlags(buf, XZ.HEADER_MAGIC.length); } catch (UnsupportedOptionsException e) { throw new UnsupportedOptionsException( - "Unsupported options in XZ Stream Header"); + "Unsupported options in XZ Stream Header"); } } public static StreamFlags decodeStreamFooter(byte[] buf) - throws IOException { - if (buf[10] != XZ.FOOTER_MAGIC[0] || buf[11] != XZ.FOOTER_MAGIC[1]) { + throws IOException { + if (buf[10] != XZ.FOOTER_MAGIC[0] || buf[11] != XZ.FOOTER_MAGIC[1]) // NOTE: The exception could be XZFormatException too. // It depends on the situation which one is better. throw new CorruptedInputException("XZ Stream Footer is corrupt"); - } if (!isCRC32Valid(buf, 4, 6, 0)) throw new CorruptedInputException("XZ Stream Footer is corrupt"); @@ -66,7 +65,7 @@ public class DecoderUtil extends Util { streamFlags = decodeStreamFlags(buf, 8); } catch (UnsupportedOptionsException e) { throw new UnsupportedOptionsException( - "Unsupported options in XZ Stream Footer"); + "Unsupported options in XZ Stream Footer"); } streamFlags.backwardSize = 0; @@ -79,7 +78,7 @@ public class DecoderUtil extends Util { } private static StreamFlags decodeStreamFlags(byte[] buf, int off) - throws UnsupportedOptionsException { + throws UnsupportedOptionsException { if (buf[off] != 0x00 || (buf[off + 1] & 0xFF) >= 0x10) throw new UnsupportedOptionsException(); @@ -113,7 +112,7 @@ public class DecoderUtil extends Util { if (b == 0x00) throw new CorruptedInputException(); - num |= (long)(b & 0x7F) << (i * 7); + num |= (long) (b & 0x7F) << (i * 7); } return num; diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/common/EncoderUtil.java b/HMCLAPI/src/main/java/org/tukaani/xz/common/EncoderUtil.java index 57f688b54..8dd2176aa 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/common/EncoderUtil.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/common/EncoderUtil.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.common; import java.io.OutputStream; @@ -14,23 +13,24 @@ import java.io.IOException; import java.util.zip.CRC32; public class EncoderUtil extends Util { + public static void writeCRC32(OutputStream out, byte[] buf) - throws IOException { + throws IOException { CRC32 crc32 = new CRC32(); crc32.update(buf); long value = crc32.getValue(); for (int i = 0; i < 4; ++i) - out.write((byte)(value >>> (i * 8))); + out.write((byte) (value >>> (i * 8))); } public static void encodeVLI(OutputStream out, long num) - throws IOException { + throws IOException { while (num >= 0x80) { - out.write((byte)(num | 0x80)); + out.write((byte) (num | 0x80)); num >>>= 7; } - out.write((byte)num); + out.write((byte) num); } } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/common/StreamFlags.java b/HMCLAPI/src/main/java/org/tukaani/xz/common/StreamFlags.java index b306987d0..b577e58d2 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/common/StreamFlags.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/common/StreamFlags.java @@ -6,10 +6,10 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.common; public class StreamFlags { + public int checkType = -1; public long backwardSize = -1; } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/common/Util.java b/HMCLAPI/src/main/java/org/tukaani/xz/common/Util.java index c4324ce05..d52edd28e 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/common/Util.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/common/Util.java @@ -6,10 +6,10 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.common; public class Util { + public static final int STREAM_HEADER_SIZE = 12; public static final long BACKWARD_SIZE_MAX = 1L << 34; public static final int BLOCK_HEADER_SIZE_MAX = 1024; diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/delta/DeltaCoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/delta/DeltaCoder.java index d94eb6605..8afc7e03a 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/delta/DeltaCoder.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/delta/DeltaCoder.java @@ -6,10 +6,10 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.delta; abstract class DeltaCoder { + static final int DISTANCE_MIN = 1; static final int DISTANCE_MAX = 256; static final int DISTANCE_MASK = DISTANCE_MAX - 1; diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/delta/DeltaDecoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/delta/DeltaDecoder.java index 154cbf349..a8f6645c3 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/delta/DeltaDecoder.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/delta/DeltaDecoder.java @@ -6,10 +6,10 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.delta; public class DeltaDecoder extends DeltaCoder { + public DeltaDecoder(int distance) { super(distance); } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/delta/DeltaEncoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/delta/DeltaEncoder.java index 17accce98..1125d2d9c 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/delta/DeltaEncoder.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/delta/DeltaEncoder.java @@ -6,10 +6,10 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.delta; public class DeltaEncoder extends DeltaCoder { + public DeltaEncoder(int distance) { super(distance); } @@ -18,7 +18,7 @@ public class DeltaEncoder extends DeltaCoder { for (int i = 0; i < len; ++i) { byte tmp = history[(distance + pos) & DISTANCE_MASK]; history[pos-- & DISTANCE_MASK] = in[in_off + i]; - out[i] = (byte)(in[in_off + i] - tmp); + out[i] = (byte) (in[in_off + i] - tmp); } } } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/index/BlockInfo.java b/HMCLAPI/src/main/java/org/tukaani/xz/index/BlockInfo.java index babae7f78..cf6ad16dd 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/index/BlockInfo.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/index/BlockInfo.java @@ -6,12 +6,12 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.index; import org.tukaani.xz.common.StreamFlags; public class BlockInfo { + public int blockNumber = -1; public long compressedOffset = -1; public long uncompressedOffset = -1; diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexBase.java b/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexBase.java index e5561052c..e92c14807 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexBase.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexBase.java @@ -6,13 +6,13 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.index; import org.tukaani.xz.common.Util; import org.tukaani.xz.XZIOException; abstract class IndexBase { + private final XZIOException invalidIndexException; long blocksSum = 0; long uncompressedSum = 0; @@ -34,11 +34,11 @@ abstract class IndexBase { public long getStreamSize() { return Util.STREAM_HEADER_SIZE + blocksSum + getIndexSize() - + Util.STREAM_HEADER_SIZE; + + Util.STREAM_HEADER_SIZE; } int getIndexPaddingSize() { - return (int)((4 - getUnpaddedIndexSize()) & 3); + return (int) ((4 - getUnpaddedIndexSize()) & 3); } void add(long unpaddedSize, long uncompressedSize) throws XZIOException { @@ -49,8 +49,8 @@ abstract class IndexBase { ++recordCount; if (blocksSum < 0 || uncompressedSum < 0 - || getIndexSize() > Util.BACKWARD_SIZE_MAX - || getStreamSize() < 0) + || getIndexSize() > Util.BACKWARD_SIZE_MAX + || getStreamSize() < 0) throw invalidIndexException; } } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexDecoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexDecoder.java index a3ae9863f..66685ef75 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexDecoder.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexDecoder.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.index; import java.io.IOException; @@ -20,6 +19,7 @@ import org.tukaani.xz.MemoryLimitException; import org.tukaani.xz.UnsupportedOptionsException; public class IndexDecoder extends IndexBase { + private final StreamFlags streamFlags; private final long streamPadding; private final int memoryUsage; @@ -40,7 +40,7 @@ public class IndexDecoder extends IndexBase { public IndexDecoder(SeekableInputStream in, StreamFlags streamFooterFlags, long streamPadding, int memoryLimit) - throws IOException { + throws IOException { super(new CorruptedInputException("XZ Index is corrupt")); this.streamFlags = streamFooterFlags; this.streamPadding = streamPadding; @@ -71,21 +71,21 @@ public class IndexDecoder extends IndexBase { // allocate the arrays to hold the Records. if (count > Integer.MAX_VALUE) throw new UnsupportedOptionsException("XZ Index has over " - + Integer.MAX_VALUE + " Records"); + + Integer.MAX_VALUE + " Records"); // Calculate approximate memory requirements and check the // memory usage limit. - memoryUsage = 1 + (int)((16L * count + 1023) / 1024); + memoryUsage = 1 + (int) ((16L * count + 1023) / 1024); if (memoryLimit >= 0 && memoryUsage > memoryLimit) throw new MemoryLimitException(memoryUsage, memoryLimit); // Allocate the arrays for the Records. - unpadded = new long[(int)count]; - uncompressed = new long[(int)count]; + unpadded = new long[(int) count]; + uncompressed = new long[(int) count]; int record = 0; // Decode the Records. - for (int i = (int)count; i > 0; --i) { + for (int i = (int) count; i > 0; --i) { // Get the next Record. long unpaddedSize = DecoderUtil.decodeVLI(inChecked); long uncompressedSize = DecoderUtil.decodeVLI(inChecked); @@ -135,7 +135,7 @@ public class IndexDecoder extends IndexBase { public void setOffsets(IndexDecoder prev) { // NOTE: SeekableXZInputStream checks that the total number of Blocks // in concatenated Streams fits into an int. - recordOffset = prev.recordOffset + (int)prev.recordCount; + recordOffset = prev.recordOffset + (int) prev.recordCount; compressedOffset = prev.compressedOffset + prev.getStreamSize() + prev.streamPadding; assert (compressedOffset & 3) == 0; @@ -153,7 +153,7 @@ public class IndexDecoder extends IndexBase { public int getRecordCount() { // It was already checked in the constructor that it fits into an int. // Otherwise we couldn't have allocated the arrays. - return (int)recordCount; + return (int) recordCount; } public long getUncompressedSize() { diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexEncoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexEncoder.java index 9db40d110..f1e142767 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexEncoder.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexEncoder.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.index; import java.io.OutputStream; @@ -18,6 +17,7 @@ import org.tukaani.xz.common.EncoderUtil; import org.tukaani.xz.XZIOException; public class IndexEncoder extends IndexBase { + private final ArrayList records = new ArrayList(); public IndexEncoder() { @@ -25,7 +25,7 @@ public class IndexEncoder extends IndexBase { } public void add(long unpaddedSize, long uncompressedSize) - throws XZIOException { + throws XZIOException { super.add(unpaddedSize, uncompressedSize); records.add(new IndexRecord(unpaddedSize, uncompressedSize)); } @@ -41,8 +41,8 @@ public class IndexEncoder extends IndexBase { EncoderUtil.encodeVLI(outChecked, recordCount); // List of Records - for (Iterator i = records.iterator(); i.hasNext(); ) { - IndexRecord record = (IndexRecord)i.next(); + for (Iterator i = records.iterator(); i.hasNext();) { + IndexRecord record = (IndexRecord) i.next(); EncoderUtil.encodeVLI(outChecked, record.unpadded); EncoderUtil.encodeVLI(outChecked, record.uncompressed); } @@ -54,6 +54,6 @@ public class IndexEncoder extends IndexBase { // CRC32 long value = crc32.getValue(); for (int i = 0; i < 4; ++i) - out.write((byte)(value >>> (i * 8))); + out.write((byte) (value >>> (i * 8))); } } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexHash.java b/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexHash.java index ab168c69f..ea74eaf6c 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexHash.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexHash.java @@ -6,7 +6,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.index; import java.io.InputStream; @@ -20,6 +19,7 @@ import org.tukaani.xz.XZIOException; import org.tukaani.xz.CorruptedInputException; public class IndexHash extends IndexBase { + private org.tukaani.xz.check.Check hash; public IndexHash() { @@ -33,7 +33,7 @@ public class IndexHash extends IndexBase { } public void add(long unpaddedSize, long uncompressedSize) - throws XZIOException { + throws XZIOException { super.add(unpaddedSize, uncompressedSize); ByteBuffer buf = ByteBuffer.allocate(2 * 8); @@ -68,15 +68,15 @@ public class IndexHash extends IndexBase { } if (stored.blocksSum > blocksSum - || stored.uncompressedSum > uncompressedSum - || stored.indexListSize > indexListSize) + || stored.uncompressedSum > uncompressedSum + || stored.indexListSize > indexListSize) throw new CorruptedInputException("XZ Index is corrupt"); } if (stored.blocksSum != blocksSum - || stored.uncompressedSum != uncompressedSum - || stored.indexListSize != indexListSize - || !Arrays.equals(stored.hash.finish(), hash.finish())) + || stored.uncompressedSum != uncompressedSum + || stored.indexListSize != indexListSize + || !Arrays.equals(stored.hash.finish(), hash.finish())) throw new CorruptedInputException("XZ Index is corrupt"); // Index Padding diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexRecord.java b/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexRecord.java index 5f6ba0fc9..d215e7041 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexRecord.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/index/IndexRecord.java @@ -6,10 +6,10 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.index; class IndexRecord { + final long unpadded; final long uncompressed; diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lz/BT4.java b/HMCLAPI/src/main/java/org/tukaani/xz/lz/BT4.java index a73b666f2..d4f0d78d8 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/lz/BT4.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/lz/BT4.java @@ -7,10 +7,10 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.lz; final class BT4 extends LZEncoder { + private final Hash234 hash; private final int[] tree; private final Matches matches; @@ -25,7 +25,7 @@ final class BT4 extends LZEncoder { } BT4(int dictSize, int beforeSizeMin, int readAheadMax, - int niceLen, int matchLenMax, int depthLimit) { + int niceLen, int matchLenMax, int depthLimit) { super(dictSize, beforeSizeMin, readAheadMax, niceLen, matchLenMax); cyclicSize = dictSize + 1; @@ -100,7 +100,7 @@ final class BT4 extends LZEncoder { // Also here the hashing algorithm guarantees that if the first byte // matches, also the next two bytes do. if (delta2 != delta3 && delta3 < cyclicSize - && buf[readPos - delta3] == buf[readPos]) { + && buf[readPos - delta3] == buf[readPos]) { lenBest = 3; matches.dist[matches.count++] = delta3 - 1; delta2 = delta3; @@ -170,7 +170,7 @@ final class BT4 extends LZEncoder { } if ((buf[readPos + len - delta] & 0xFF) - < (buf[readPos + len] & 0xFF)) { + < (buf[readPos + len] & 0xFF)) { tree[ptr1] = currentMatch; ptr1 = pair + 1; currentMatch = tree[ptr1]; @@ -205,21 +205,20 @@ final class BT4 extends LZEncoder { + (delta > cyclicPos ? cyclicSize : 0)) << 1; int len = Math.min(len0, len1); - if (buf[readPos + len - delta] == buf[readPos + len]) { + if (buf[readPos + len - delta] == buf[readPos + len]) // No need to look for longer matches than niceLenLimit // because we only are updating the tree, not returning // matches found to the caller. - do { + do if (++len == niceLenLimit) { tree[ptr1] = tree[pair]; tree[ptr0] = tree[pair + 1]; return; } - } while (buf[readPos + len - delta] == buf[readPos + len]); - } + while (buf[readPos + len - delta] == buf[readPos + len]); if ((buf[readPos + len - delta] & 0xFF) - < (buf[readPos + len] & 0xFF)) { + < (buf[readPos + len] & 0xFF)) { tree[ptr1] = currentMatch; ptr1 = pair + 1; currentMatch = tree[ptr1]; diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lz/CRC32Hash.java b/HMCLAPI/src/main/java/org/tukaani/xz/lz/CRC32Hash.java index 2adfdbfd9..d5ff919bf 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/lz/CRC32Hash.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/lz/CRC32Hash.java @@ -7,13 +7,13 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.lz; /** * Provides a CRC32 table using the polynomial from IEEE 802.3. */ class CRC32Hash { + private static final int CRC32_POLY = 0xEDB88320; static final int[] crcTable = new int[256]; @@ -22,12 +22,11 @@ class CRC32Hash { for (int i = 0; i < 256; ++i) { int r = i; - for (int j = 0; j < 8; ++j) { + for (int j = 0; j < 8; ++j) if ((r & 1) != 0) r = (r >>> 1) ^ CRC32_POLY; else r >>>= 1; - } crcTable[i] = r; } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lz/HC4.java b/HMCLAPI/src/main/java/org/tukaani/xz/lz/HC4.java index 0f49fd4ea..1e839551e 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/lz/HC4.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/lz/HC4.java @@ -7,10 +7,10 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.lz; final class HC4 extends LZEncoder { + private final Hash234 hash; private final int[] chain; private final Matches matches; @@ -32,7 +32,7 @@ final class HC4 extends LZEncoder { * See LZEncoder.getInstance for parameter descriptions. */ HC4(int dictSize, int beforeSizeMin, int readAheadMax, - int niceLen, int matchLenMax, int depthLimit) { + int niceLen, int matchLenMax, int depthLimit) { super(dictSize, beforeSizeMin, readAheadMax, niceLen, matchLenMax); hash = new Hash234(dictSize); @@ -57,7 +57,7 @@ final class HC4 extends LZEncoder { * Moves to the next byte, checks that there is enough available space, * and possibly normalizes the hash tables and the hash chain. * - * @return number of bytes available, including the current byte + * @return number of bytes available, including the current byte */ private int movePos() { int avail = movePos(4, 4); @@ -118,7 +118,7 @@ final class HC4 extends LZEncoder { // Also here the hashing algorithm guarantees that if the first byte // matches, also the next two bytes do. if (delta2 != delta3 && delta3 < cyclicSize - && buf[readPos - delta3] == buf[readPos]) { + && buf[readPos - delta3] == buf[readPos]) { lenBest = 3; matches.dist[matches.count++] = delta3 - 1; delta2 = delta3; @@ -161,7 +161,7 @@ final class HC4 extends LZEncoder { // a match that is at least one byte longer than lenBest. This // too short matches get quickly skipped. if (buf[readPos + lenBest - delta] == buf[readPos + lenBest] - && buf[readPos - delta] == buf[readPos]) { + && buf[readPos - delta] == buf[readPos]) { // Calculate the length of the match. int len = 0; while (++len < matchLenLimit) @@ -188,13 +188,12 @@ final class HC4 extends LZEncoder { public void skip(int len) { assert len >= 0; - while (len-- > 0) { + while (len-- > 0) if (movePos() != 0) { // Update the hash chain and hash tables. hash.calcHashes(buf, readPos); chain[cyclicPos] = hash.getHash4Pos(); hash.updateTables(lzPos); } - } } } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lz/Hash234.java b/HMCLAPI/src/main/java/org/tukaani/xz/lz/Hash234.java index 8253bc047..5314398b1 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/lz/Hash234.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/lz/Hash234.java @@ -7,10 +7,10 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.lz; final class Hash234 extends CRC32Hash { + private static final int HASH_2_SIZE = 1 << 10; private static final int HASH_2_MASK = HASH_2_SIZE - 1; diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lz/LZDecoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/lz/LZDecoder.java index 680fec10b..1bfbe38d1 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/lz/LZDecoder.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/lz/LZDecoder.java @@ -7,7 +7,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.lz; import java.io.DataInputStream; @@ -15,6 +14,7 @@ import java.io.IOException; import org.tukaani.xz.CorruptedInputException; public final class LZDecoder { + private final byte[] buf; private int start = 0; private int pos = 0; @@ -104,7 +104,7 @@ public final class LZDecoder { } public void copyUncompressed(DataInputStream inData, int len) - throws IOException { + throws IOException { int copySize = Math.min(buf.length - pos, len); inData.readFully(buf, pos, copySize); pos += copySize; diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lz/LZEncoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/lz/LZEncoder.java index 267d7dd4a..f1b31a763 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/lz/LZEncoder.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/lz/LZEncoder.java @@ -7,13 +7,13 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.lz; import java.io.OutputStream; import java.io.IOException; public abstract class LZEncoder { + public static final int MF_HC4 = 0x04; public static final int MF_BT4 = 0x14; @@ -43,20 +43,19 @@ public abstract class LZEncoder { private int pendingSize = 0; static void normalize(int[] positions, int normalizationOffset) { - for (int i = 0; i < positions.length; ++i) { + for (int i = 0; i < positions.length; ++i) if (positions[i] <= normalizationOffset) positions[i] = 0; else positions[i] -= normalizationOffset; - } } /** * Gets the size of the LZ window buffer that needs to be allocated. */ private static int getBufSize( - int dictSize, int extraSizeBefore, int extraSizeAfter, - int matchLenMax) { + int dictSize, int extraSizeBefore, int extraSizeAfter, + int matchLenMax) { int keepSizeBefore = extraSizeBefore + dictSize; int keepSizeAfter = extraSizeAfter + matchLenMax; int reserveSize = Math.min(dictSize / 2 + (256 << 10), 512 << 20); @@ -68,8 +67,8 @@ public abstract class LZEncoder { * the match finder as kibibytes. */ public static int getMemoryUsage( - int dictSize, int extraSizeBefore, int extraSizeAfter, - int matchLenMax, int mf) { + int dictSize, int extraSizeBefore, int extraSizeAfter, + int matchLenMax, int mf) { // Buffer size + a little extra int m = getBufSize(dictSize, extraSizeBefore, extraSizeAfter, matchLenMax) / 1024 + 10; @@ -93,30 +92,30 @@ public abstract class LZEncoder { /** * Creates a new LZEncoder. *

- * @param dictSize dictionary size + * @param dictSize dictionary size * - * @param extraSizeBefore - * number of bytes to keep available in the - * history in addition to dictSize + * @param extraSizeBefore + * number of bytes to keep available in the + * history in addition to dictSize * - * @param extraSizeAfter - * number of bytes that must be available - * after current position + matchLenMax + * @param extraSizeAfter + * number of bytes that must be available + * after current position + matchLenMax * - * @param niceLen if a match of at least niceLen - * bytes is found, be happy with it and don't - * stop looking for longer matches + * @param niceLen if a match of at least niceLen + * bytes is found, be happy with it and don't + * stop looking for longer matches * - * @param matchLenMax don't test for matches longer than - * matchLenMax bytes + * @param matchLenMax don't test for matches longer than + * matchLenMax bytes * - * @param mf match finder ID + * @param mf match finder ID * - * @param depthLimit match finder search depth limit + * @param depthLimit match finder search depth limit */ public static LZEncoder getInstance( - int dictSize, int extraSizeBefore, int extraSizeAfter, - int niceLen, int matchLenMax, int mf, int depthLimit) { + int dictSize, int extraSizeBefore, int extraSizeAfter, + int niceLen, int matchLenMax, int mf, int depthLimit) { switch (mf) { case MF_HC4: return new HC4(dictSize, extraSizeBefore, extraSizeAfter, @@ -270,7 +269,7 @@ public abstract class LZEncoder { } public void copyUncompressed(OutputStream out, int backward, int len) - throws IOException { + throws IOException { out.write(buf, readPos + 1 - backward, len); } @@ -319,10 +318,10 @@ public abstract class LZEncoder { /** * Get the length of a match at the given distance. * - * @param dist zero-based distance of the match to test - * @param lenLimit don't test for a match longer than this + * @param dist zero-based distance of the match to test + * @param lenLimit don't test for a match longer than this * - * @return length of the match; it is in the range [0, lenLimit] + * @return length of the match; it is in the range [0, lenLimit] */ public int getMatchLen(int dist, int lenLimit) { int backPos = readPos - dist - 1; @@ -337,11 +336,11 @@ public abstract class LZEncoder { /** * Get the length of a match at the given distance and forward offset. * - * @param forward forward offset - * @param dist zero-based distance of the match to test - * @param lenLimit don't test for a match longer than this + * @param forward forward offset + * @param dist zero-based distance of the match to test + * @param lenLimit don't test for a match longer than this * - * @return length of the match; it is in the range [0, lenLimit] + * @return length of the match; it is in the range [0, lenLimit] */ public int getMatchLen(int forward, int dist, int lenLimit) { int curPos = readPos + forward; @@ -360,9 +359,9 @@ public abstract class LZEncoder { * useless for actual encoding since match finder's results should * naturally always be valid if it isn't broken. * - * @param matches return value from getMatches + * @param matches return value from getMatches * - * @return true if matches are valid, false if match finder is broken + * @return true if matches are valid, false if match finder is broken */ public boolean verifyMatches(Matches matches) { int lenLimit = Math.min(getAvail(), matchLenMax); @@ -378,18 +377,18 @@ public abstract class LZEncoder { * Moves to the next byte, checks if there is enough input available, * and returns the amount of input available. * - * @param requiredForFlushing - * minimum number of available bytes when - * flushing; encoding may be continued with - * new input after flushing - * @param requiredForFinishing - * minimum number of available bytes when - * finishing; encoding must not be continued - * after finishing or the match finder state - * may be corrupt + * @param requiredForFlushing + * minimum number of available bytes when + * flushing; encoding may be continued with + * new input after flushing + * @param requiredForFinishing + * minimum number of available bytes when + * finishing; encoding must not be continued + * after finishing or the match finder state + * may be corrupt * - * @return the number of bytes available or zero if there - * is not enough input available + * @return the number of bytes available or zero if there + * is not enough input available */ int movePos(int requiredForFlushing, int requiredForFinishing) { assert requiredForFlushing >= requiredForFinishing; @@ -397,12 +396,11 @@ public abstract class LZEncoder { ++readPos; int avail = writePos - readPos; - if (avail < requiredForFlushing) { + if (avail < requiredForFlushing) if (avail < requiredForFinishing || !finishing) { ++pendingSize; avail = 0; } - } return avail; } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lz/Matches.java b/HMCLAPI/src/main/java/org/tukaani/xz/lz/Matches.java index 2fbee11b7..1b85aa27f 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/lz/Matches.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/lz/Matches.java @@ -7,10 +7,10 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.lz; public final class Matches { + public final int[] len; public final int[] dist; public int count = 0; diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMACoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMACoder.java index c31c9a6c2..64887df0c 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMACoder.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMACoder.java @@ -7,12 +7,12 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.lzma; import org.tukaani.xz.rangecoder.RangeCoder; abstract class LZMACoder { + static final int POS_STATES_MAX = 1 << 4; static final int MATCH_LEN_MIN = 2; @@ -44,11 +44,11 @@ abstract class LZMACoder { final short[] isRep2 = new short[State.STATES]; final short[][] isRep0Long = new short[State.STATES][POS_STATES_MAX]; final short[][] distSlots = new short[DIST_STATES][DIST_SLOTS]; - final short[][] distSpecial = { new short[2], new short[2], - new short[4], new short[4], - new short[8], new short[8], - new short[16], new short[16], - new short[32], new short[32] }; + final short[][] distSpecial = {new short[2], new short[2], + new short[4], new short[4], + new short[8], new short[8], + new short[16], new short[16], + new short[32], new short[32]}; final short[] distAlign = new short[ALIGN_SIZE]; static final int getDistState(int len) { @@ -88,8 +88,8 @@ abstract class LZMACoder { RangeCoder.initProbs(distAlign); } - abstract class LiteralCoder { + private final int lc; private final int literalPosMask; @@ -104,8 +104,8 @@ abstract class LZMACoder { return low + high; } - abstract class LiteralSubcoder { + final short[] probs = new short[0x300]; void reset() { @@ -114,8 +114,8 @@ abstract class LZMACoder { } } - abstract class LengthCoder { + static final int LOW_SYMBOLS = 1 << 3; static final int MID_SYMBOLS = 1 << 3; static final int HIGH_SYMBOLS = 1 << 8; diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMADecoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMADecoder.java index 8eb4ac2b3..1d0737047 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMADecoder.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMADecoder.java @@ -7,7 +7,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.lzma; import java.io.IOException; @@ -15,6 +14,7 @@ import org.tukaani.xz.lz.LZDecoder; import org.tukaani.xz.rangecoder.RangeDecoder; public final class LZMADecoder extends LZMACoder { + private final LZDecoder lz; private final RangeDecoder rc; private final LiteralDecoder literalDecoder; @@ -52,9 +52,9 @@ public final class LZMADecoder extends LZMACoder { while (lz.hasSpace()) { int posState = lz.getPos() & posMask; - if (rc.decodeBit(isMatch[state.get()], posState) == 0) { + if (rc.decodeBit(isMatch[state.get()], posState) == 0) literalDecoder.decode(); - } else { + else { int len = rc.decodeBit(isRep, state.get()) == 0 ? decodeMatch(posState) : decodeRepMatch(posState); @@ -79,16 +79,16 @@ public final class LZMADecoder extends LZMACoder { int len = matchLenDecoder.decode(posState); int distSlot = rc.decodeBitTree(distSlots[getDistState(len)]); - if (distSlot < DIST_MODEL_START) { + if (distSlot < DIST_MODEL_START) reps[0] = distSlot; - } else { + else { int limit = (distSlot >> 1) - 1; reps[0] = (2 | (distSlot & 1)) << limit; - if (distSlot < DIST_MODEL_END) { + if (distSlot < DIST_MODEL_END) reps[0] |= rc.decodeReverseBitTree( - distSpecial[distSlot - DIST_MODEL_START]); - } else { + distSpecial[distSlot - DIST_MODEL_START]); + else { reps[0] |= rc.decodeDirectBits(limit - ALIGN_BITS) << ALIGN_BITS; reps[0] |= rc.decodeReverseBitTree(distAlign); @@ -107,12 +107,12 @@ public final class LZMADecoder extends LZMACoder { } else { int tmp; - if (rc.decodeBit(isRep1, state.get()) == 0) { + if (rc.decodeBit(isRep1, state.get()) == 0) tmp = reps[1]; - } else { - if (rc.decodeBit(isRep2, state.get()) == 0) { + else { + if (rc.decodeBit(isRep2, state.get()) == 0) tmp = reps[2]; - } else { + else { tmp = reps[3]; reps[3] = reps[2]; } @@ -129,8 +129,8 @@ public final class LZMADecoder extends LZMACoder { return repLenDecoder.decode(posState); } - private class LiteralDecoder extends LiteralCoder { + LiteralSubdecoder[] subdecoders; LiteralDecoder(int lc, int lp) { @@ -151,17 +151,16 @@ public final class LZMADecoder extends LZMACoder { subdecoders[i].decode(); } - private class LiteralSubdecoder extends LiteralSubcoder { + void decode() throws IOException { int symbol = 1; - if (state.isLiteral()) { - do { + if (state.isLiteral()) + do symbol = (symbol << 1) | rc.decodeBit(probs, symbol); - } while (symbol < 0x100); - - } else { + while (symbol < 0x100); + else { int matchByte = lz.getByte(reps[0]); int offset = 0x100; int matchBit; @@ -176,14 +175,14 @@ public final class LZMADecoder extends LZMACoder { } while (symbol < 0x100); } - lz.putByte((byte)symbol); + lz.putByte((byte) symbol); state.updateLiteral(); } } } - private class LengthDecoder extends LengthCoder { + int decode(int posState) throws IOException { if (rc.decodeBit(choice, 0) == 0) return rc.decodeBitTree(low[posState]) + MATCH_LEN_MIN; diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMAEncoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMAEncoder.java index 95b0004f9..e4dff726d 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMAEncoder.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMAEncoder.java @@ -7,7 +7,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.lzma; import org.tukaani.xz.lz.LZEncoder; @@ -15,6 +14,7 @@ import org.tukaani.xz.lz.Matches; import org.tukaani.xz.rangecoder.RangeEncoder; public abstract class LZMAEncoder extends LZMACoder { + public static final int MODE_FAST = 1; public static final int MODE_NORMAL = 2; @@ -28,7 +28,7 @@ public abstract class LZMAEncoder extends LZMACoder { * less space than MATCH_LEN_MAX bytes. */ private static final int LZMA2_UNCOMPRESSED_LIMIT - = (2 << 20) - MATCH_LEN_MAX; + = (2 << 20) - MATCH_LEN_MAX; /** * LZMA2 chunk is considered full when its compressed size exceeds @@ -58,7 +58,7 @@ public abstract class LZMAEncoder extends LZMACoder { private final int distSlotPricesSize; private final int[][] distSlotPrices; private final int[][] fullDistPrices - = new int[DIST_STATES][FULL_DISTANCES]; + = new int[DIST_STATES][FULL_DISTANCES]; private final int[] alignPrices = new int[ALIGN_SIZE]; int back = 0; @@ -72,12 +72,12 @@ public abstract class LZMAEncoder extends LZMACoder { switch (mode) { case MODE_FAST: m += LZMAEncoderFast.getMemoryUsage( - dictSize, extraSizeBefore, mf); + dictSize, extraSizeBefore, mf); break; case MODE_NORMAL: m += LZMAEncoderNormal.getMemoryUsage( - dictSize, extraSizeBefore, mf); + dictSize, extraSizeBefore, mf); break; default: @@ -88,9 +88,9 @@ public abstract class LZMAEncoder extends LZMACoder { } public static LZMAEncoder getInstance( - RangeEncoder rc, int lc, int lp, int pb, int mode, - int dictSize, int extraSizeBefore, - int niceLen, int mf, int depthLimit) { + RangeEncoder rc, int lc, int lp, int pb, int mode, + int dictSize, int extraSizeBefore, + int niceLen, int mf, int depthLimit) { switch (mode) { case MODE_FAST: return new LZMAEncoderFast(rc, lc, lp, pb, @@ -207,14 +207,14 @@ public abstract class LZMAEncoder extends LZMACoder { /** * Compresses for LZMA2. * - * @return true if the LZMA2 chunk became full, false otherwise + * @return true if the LZMA2 chunk became full, false otherwise */ public boolean encodeForLZMA2() { if (!lz.isStarted() && !encodeInit()) return false; while (uncompressedSize <= LZMA2_UNCOMPRESSED_LIMIT - && rc.getPendingSize() <= LZMA2_COMPRESSED_LIMIT) + && rc.getPendingSize() <= LZMA2_COMPRESSED_LIMIT) if (!encodeSymbol()) return false; @@ -291,11 +291,11 @@ public abstract class LZMAEncoder extends LZMACoder { int base = (2 | (distSlot & 1)) << footerBits; int distReduced = dist - base; - if (distSlot < DIST_MODEL_END) { + if (distSlot < DIST_MODEL_END) rc.encodeReverseBitTree( - distSpecial[distSlot - DIST_MODEL_START], - distReduced); - } else { + distSpecial[distSlot - DIST_MODEL_START], + distReduced); + else { rc.encodeDirectBits(distReduced >>> ALIGN_BITS, footerBits - ALIGN_BITS); rc.encodeReverseBitTree(distAlign, distReduced & ALIGN_MASK); @@ -319,9 +319,9 @@ public abstract class LZMAEncoder extends LZMACoder { int dist = reps[rep]; rc.encodeBit(isRep0, state.get(), 1); - if (rep == 1) { + if (rep == 1) rc.encodeBit(isRep1, state.get(), 0); - } else { + else { rc.encodeBit(isRep1, state.get(), 1); rc.encodeBit(isRep2, state.get(), rep - 2); @@ -335,9 +335,9 @@ public abstract class LZMAEncoder extends LZMACoder { reps[0] = dist; } - if (len == 1) { + if (len == 1) state.updateShortRep(); - } else { + else { repLenEncoder.encode(len, posState); state.updateLongRep(); } @@ -379,11 +379,11 @@ public abstract class LZMAEncoder extends LZMACoder { int getLongRepPrice(int anyRepPrice, int rep, State state, int posState) { int price = anyRepPrice; - if (rep == 0) { + if (rep == 0) price += RangeEncoder.getBitPrice(isRep0[state.get()], 0) + RangeEncoder.getBitPrice( - isRep0Long[state.get()][posState], 1); - } else { + isRep0Long[state.get()][posState], 1); + else { price += RangeEncoder.getBitPrice(isRep0[state.get()], 1); if (rep == 1) @@ -410,9 +410,9 @@ public abstract class LZMAEncoder extends LZMACoder { + matchLenEncoder.getPrice(len, posState); int distState = getDistState(len); - if (dist < FULL_DISTANCES) { + if (dist < FULL_DISTANCES) price += fullDistPrices[distState][dist]; - } else { + else { // Note that distSlotPrices includes also // the price of direct bits. int distSlot = getDistSlot(dist); @@ -429,24 +429,24 @@ public abstract class LZMAEncoder extends LZMACoder { for (int distState = 0; distState < DIST_STATES; ++distState) { for (int distSlot = 0; distSlot < distSlotPricesSize; ++distSlot) distSlotPrices[distState][distSlot] - = RangeEncoder.getBitTreePrice( - distSlots[distState], distSlot); + = RangeEncoder.getBitTreePrice( + distSlots[distState], distSlot); for (int distSlot = DIST_MODEL_END; distSlot < distSlotPricesSize; - ++distSlot) { + ++distSlot) { int count = (distSlot >>> 1) - 1 - ALIGN_BITS; distSlotPrices[distState][distSlot] - += RangeEncoder.getDirectBitsPrice(count); + += RangeEncoder.getDirectBitsPrice(count); } for (int dist = 0; dist < DIST_MODEL_START; ++dist) fullDistPrices[distState][dist] - = distSlotPrices[distState][dist]; + = distSlotPrices[distState][dist]; } int dist = DIST_MODEL_START; for (int distSlot = DIST_MODEL_START; distSlot < DIST_MODEL_END; - ++distSlot) { + ++distSlot) { int footerBits = (distSlot >>> 1) - 1; int base = (2 | (distSlot & 1)) << footerBits; @@ -454,12 +454,12 @@ public abstract class LZMAEncoder extends LZMACoder { for (int i = 0; i < limit; ++i) { int distReduced = dist - base; int price = RangeEncoder.getReverseBitTreePrice( - distSpecial[distSlot - DIST_MODEL_START], - distReduced); + distSpecial[distSlot - DIST_MODEL_START], + distReduced); for (int distState = 0; distState < DIST_STATES; ++distState) fullDistPrices[distState][dist] - = distSlotPrices[distState][distSlot] + price; + = distSlotPrices[distState][distSlot] + price; ++dist; } @@ -492,8 +492,8 @@ public abstract class LZMAEncoder extends LZMACoder { repLenEncoder.updatePrices(); } - class LiteralEncoder extends LiteralCoder { + LiteralSubencoder[] subencoders; LiteralEncoder(int lc, int lp) { @@ -527,17 +527,18 @@ public abstract class LZMAEncoder extends LZMACoder { int getPrice(int curByte, int matchByte, int prevByte, int pos, State state) { int price = RangeEncoder.getBitPrice( - isMatch[state.get()][pos & posMask], 0); + isMatch[state.get()][pos & posMask], 0); int i = getSubcoderIndex(prevByte, pos); price += state.isLiteral() - ? subencoders[i].getNormalPrice(curByte) - : subencoders[i].getMatchedPrice(curByte, matchByte); + ? subencoders[i].getNormalPrice(curByte) + : subencoders[i].getMatchedPrice(curByte, matchByte); return price; } private class LiteralSubencoder extends LiteralSubcoder { + void encode() { int symbol = lz.getByte(readAhead) | 0x100; @@ -616,8 +617,8 @@ public abstract class LZMAEncoder extends LZMACoder { } } - class LengthEncoder extends LengthCoder { + /** * The prices are updated after at least * PRICE_UPDATE_INTERVAL many lengths @@ -676,12 +677,11 @@ public abstract class LZMAEncoder extends LZMACoder { } void updatePrices() { - for (int posState = 0; posState < counters.length; ++posState) { + for (int posState = 0; posState < counters.length; ++posState) if (counters[posState] <= 0) { counters[posState] = PRICE_UPDATE_INTERVAL; updatePrices(posState); } - } } private void updatePrices(int posState) { @@ -690,22 +690,22 @@ public abstract class LZMAEncoder extends LZMACoder { int i = 0; for (; i < LOW_SYMBOLS; ++i) prices[posState][i] = choice0Price - + RangeEncoder.getBitTreePrice(low[posState], i); + + RangeEncoder.getBitTreePrice(low[posState], i); choice0Price = RangeEncoder.getBitPrice(choice[0], 1); int choice1Price = RangeEncoder.getBitPrice(choice[1], 0); for (; i < LOW_SYMBOLS + MID_SYMBOLS; ++i) prices[posState][i] = choice0Price + choice1Price - + RangeEncoder.getBitTreePrice(mid[posState], - i - LOW_SYMBOLS); + + RangeEncoder.getBitTreePrice(mid[posState], + i - LOW_SYMBOLS); choice1Price = RangeEncoder.getBitPrice(choice[1], 1); for (; i < prices[posState].length; ++i) prices[posState][i] = choice0Price + choice1Price - + RangeEncoder.getBitTreePrice(high, i - LOW_SYMBOLS - - MID_SYMBOLS); + + RangeEncoder.getBitTreePrice(high, i - LOW_SYMBOLS + - MID_SYMBOLS); } } } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMAEncoderFast.java b/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMAEncoderFast.java index ca6e13ac2..e507c8fed 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMAEncoderFast.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMAEncoderFast.java @@ -7,7 +7,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.lzma; import org.tukaani.xz.lz.LZEncoder; @@ -15,6 +14,7 @@ import org.tukaani.xz.lz.Matches; import org.tukaani.xz.rangecoder.RangeEncoder; final class LZMAEncoderFast extends LZMAEncoder { + private static int EXTRA_SIZE_BEFORE = 1; private static int EXTRA_SIZE_AFTER = MATCH_LEN_MAX - 1; @@ -22,13 +22,13 @@ final class LZMAEncoderFast extends LZMAEncoder { static int getMemoryUsage(int dictSize, int extraSizeBefore, int mf) { return LZEncoder.getMemoryUsage( - dictSize, Math.max(extraSizeBefore, EXTRA_SIZE_BEFORE), - EXTRA_SIZE_AFTER, MATCH_LEN_MAX, mf); + dictSize, Math.max(extraSizeBefore, EXTRA_SIZE_BEFORE), + EXTRA_SIZE_AFTER, MATCH_LEN_MAX, mf); } LZMAEncoderFast(RangeEncoder rc, int lc, int lp, int pb, - int dictSize, int extraSizeBefore, - int niceLen, int mf, int depthLimit) { + int dictSize, int extraSizeBefore, + int niceLen, int mf, int depthLimit) { super(rc, LZEncoder.getInstance(dictSize, Math.max(extraSizeBefore, EXTRA_SIZE_BEFORE), @@ -95,7 +95,7 @@ final class LZMAEncoderFast extends LZMAEncoder { } while (matches.count > 1 - && mainLen == matches.len[matches.count - 2] + 1) { + && mainLen == matches.len[matches.count - 2] + 1) { if (!changePair(matches.dist[matches.count - 2], mainDist)) break; @@ -108,15 +108,14 @@ final class LZMAEncoderFast extends LZMAEncoder { mainLen = 1; } - if (bestRepLen >= MATCH_LEN_MIN) { + if (bestRepLen >= MATCH_LEN_MIN) if (bestRepLen + 1 >= mainLen - || (bestRepLen + 2 >= mainLen && mainDist >= (1 << 9)) - || (bestRepLen + 3 >= mainLen && mainDist >= (1 << 15))) { + || (bestRepLen + 2 >= mainLen && mainDist >= (1 << 9)) + || (bestRepLen + 3 >= mainLen && mainDist >= (1 << 15))) { back = bestRepIndex; skip(bestRepLen - 1); return bestRepLen; } - } if (mainLen < MATCH_LEN_MIN || avail <= MATCH_LEN_MIN) return 1; @@ -130,12 +129,12 @@ final class LZMAEncoderFast extends LZMAEncoder { int newDist = matches.dist[matches.count - 1]; if ((newLen >= mainLen && newDist < mainDist) - || (newLen == mainLen + 1 - && !changePair(mainDist, newDist)) - || newLen > mainLen + 1 - || (newLen + 1 >= mainLen - && mainLen >= MATCH_LEN_MIN + 1 - && changePair(newDist, mainDist))) + || (newLen == mainLen + 1 + && !changePair(mainDist, newDist)) + || newLen > mainLen + 1 + || (newLen + 1 >= mainLen + && mainLen >= MATCH_LEN_MIN + 1 + && changePair(newDist, mainDist))) return 1; } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMAEncoderNormal.java b/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMAEncoderNormal.java index 6f8d81b90..8fad60ed5 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMAEncoderNormal.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/lzma/LZMAEncoderNormal.java @@ -7,7 +7,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.lzma; import org.tukaani.xz.lz.LZEncoder; @@ -15,6 +14,7 @@ import org.tukaani.xz.lz.Matches; import org.tukaani.xz.rangecoder.RangeEncoder; final class LZMAEncoderNormal extends LZMAEncoder { + private static final int OPTS = 4096; private static int EXTRA_SIZE_BEFORE = OPTS; @@ -33,14 +33,14 @@ final class LZMAEncoderNormal extends LZMAEncoder { static int getMemoryUsage(int dictSize, int extraSizeBefore, int mf) { return LZEncoder.getMemoryUsage(dictSize, - Math.max(extraSizeBefore, EXTRA_SIZE_BEFORE), - EXTRA_SIZE_AFTER, MATCH_LEN_MAX, mf) + Math.max(extraSizeBefore, EXTRA_SIZE_BEFORE), + EXTRA_SIZE_AFTER, MATCH_LEN_MAX, mf) + OPTS * 64 / 1024; } LZMAEncoderNormal(RangeEncoder rc, int lc, int lp, int pb, - int dictSize, int extraSizeBefore, - int niceLen, int mf, int depthLimit) { + int dictSize, int extraSizeBefore, + int niceLen, int mf, int depthLimit) { super(rc, LZEncoder.getInstance(dictSize, Math.max(extraSizeBefore, EXTRA_SIZE_BEFORE), @@ -166,10 +166,9 @@ final class LZMAEncoderNormal extends LZMAEncoder { // encoded as a repeated match (short or long), we must be return // to have the byte encoded as a literal. if (mainLen < MATCH_LEN_MIN && curByte != matchByte - && repLens[repBest] < MATCH_LEN_MIN) + && repLens[repBest] < MATCH_LEN_MIN) return 1; - int pos = lz.getPos(); int posState = pos & posMask; @@ -202,7 +201,6 @@ final class LZMAEncoderNormal extends LZMAEncoder { return 1; } - // Update the lookup tables for distances and lengths before using // those price calculation functions. (The price function above // don't need these tables.) @@ -263,7 +261,6 @@ final class LZMAEncoderNormal extends LZMAEncoder { } } - avail = Math.min(lz.getAvail(), OPTS - 1); // Get matches for later bytes and optimize the use of LZMA symbols @@ -272,7 +269,7 @@ final class LZMAEncoderNormal extends LZMAEncoder { while (++optCur < optEnd) { matches = getMatches(); if (matches.count > 0 - && matches.len[matches.count - 1] >= niceLen) + && matches.len[matches.count - 1] >= niceLen) break; --avail; @@ -314,14 +311,12 @@ final class LZMAEncoderNormal extends LZMAEncoder { opts[optCur].state.updateLongRep(); else opts[optCur].state.updateMatch(); - } else { + } else opts[optCur].state.set(opts[optPrev].state); - } opts[optCur].state.updateLiteral(); - } else { + } else opts[optCur].state.set(opts[optPrev].state); - } if (optPrev == optCur - 1) { // Must be either a short rep or a literal. @@ -378,8 +373,8 @@ final class LZMAEncoderNormal extends LZMAEncoder { // Try a literal. int literalPrice = opts[optCur].price - + literalEncoder.getPrice(curByte, matchByte, lz.getByte(1), - pos, opts[optCur].state); + + literalEncoder.getPrice(curByte, matchByte, lz.getByte(1), + pos, opts[optCur].state); if (literalPrice < opts[optCur + 1].price) { opts[optCur + 1].set1(literalPrice, optCur, -1); nextIsByte = true; @@ -387,7 +382,7 @@ final class LZMAEncoderNormal extends LZMAEncoder { // Try a short rep. if (matchByte == curByte && (opts[optCur + 1].optPrev == optCur - || opts[optCur + 1].backPrev != 0)) { + || opts[optCur + 1].backPrev != 0)) { int shortRepPrice = getShortRepPrice(anyRepPrice, opts[optCur].state, posState); @@ -514,7 +509,7 @@ final class LZMAEncoderNormal extends LZMAEncoder { while (startLen > matches.len[match]) ++match; - for (int len = startLen; ; ++len) { + for (int len = startLen;; ++len) { int dist = matches.dist[match]; // Calculate the price of a match of len bytes from the nearest @@ -541,9 +536,9 @@ final class LZMAEncoderNormal extends LZMAEncoder { int matchByte = lz.getByte(0); // lz.getByte(len, len) int prevByte = lz.getByte(len, 1); int price = matchAndLenPrice - + literalEncoder.getPrice(curByte, matchByte, - prevByte, pos + len, - nextState); + + literalEncoder.getPrice(curByte, matchByte, + prevByte, pos + len, + nextState); nextState.updateLiteral(); // Rep0 diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lzma/Optimum.java b/HMCLAPI/src/main/java/org/tukaani/xz/lzma/Optimum.java index 845ac97fe..8a259897f 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/lzma/Optimum.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/lzma/Optimum.java @@ -7,10 +7,10 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.lzma; final class Optimum { + private static final int INFINITY_PRICE = 1 << 30; final State state = new State(); diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/lzma/State.java b/HMCLAPI/src/main/java/org/tukaani/xz/lzma/State.java index 0ece86090..fc260c397 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/lzma/State.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/lzma/State.java @@ -7,10 +7,10 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.lzma; final class State { + static final int STATES = 12; private static final int LIT_STATES = 7; @@ -30,7 +30,8 @@ final class State { private int state; - State() {} + State() { + } State(State other) { state = other.state; diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/package-info.java b/HMCLAPI/src/main/java/org/tukaani/xz/package-info.java index 6d7c1b7d5..a06dadaa4 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/package-info.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/package-info.java @@ -10,7 +10,7 @@ *

  • Single-threaded streamed compression and decompression
  • *
  • Single-threaded decompression with limited random access support
  • *
  • Raw streams (no .xz headers) for advanced users, including LZMA2 - * with preset dictionary
  • + * with preset dictionary * *

    * Threading is planned but it is unknown when it will be implemented. diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeCoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeCoder.java index df9b0c486..38f32c997 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeCoder.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeCoder.java @@ -7,17 +7,17 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.rangecoder; import java.util.Arrays; public abstract class RangeCoder { + static final int SHIFT_BITS = 8; static final int TOP_MASK = 0xFF000000; static final int BIT_MODEL_TOTAL_BITS = 11; static final int BIT_MODEL_TOTAL = 1 << BIT_MODEL_TOTAL_BITS; - static final short PROB_INIT = (short)(BIT_MODEL_TOTAL / 2); + static final short PROB_INIT = (short) (BIT_MODEL_TOTAL / 2); static final int MOVE_BITS = 5; public static final void initProbs(short[] probs) { diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeDecoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeDecoder.java index e63532e6c..4aa95a6ce 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeDecoder.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeDecoder.java @@ -7,13 +7,13 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.rangecoder; import java.io.DataInputStream; import java.io.IOException; public abstract class RangeDecoder extends RangeCoder { + int range = 0; int code = 0; @@ -29,13 +29,12 @@ public abstract class RangeDecoder extends RangeCoder { // Compare code and bound as if they were unsigned 32-bit integers. if ((code ^ 0x80000000) < (bound ^ 0x80000000)) { range = bound; - probs[index] = (short)( - prob + ((BIT_MODEL_TOTAL - prob) >>> MOVE_BITS)); + probs[index] = (short) (prob + ((BIT_MODEL_TOTAL - prob) >>> MOVE_BITS)); bit = 0; } else { range -= bound; code -= bound; - probs[index] = (short)(prob - (prob >>> MOVE_BITS)); + probs[index] = (short) (prob - (prob >>> MOVE_BITS)); bit = 1; } @@ -45,9 +44,9 @@ public abstract class RangeDecoder extends RangeCoder { public int decodeBitTree(short[] probs) throws IOException { int symbol = 1; - do { + do symbol = (symbol << 1) | decodeBit(probs, symbol); - } while (symbol < probs.length); + while (symbol < probs.length); return symbol - probs.length; } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeDecoderFromBuffer.java b/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeDecoderFromBuffer.java index cac7a7e68..f8a788733 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeDecoderFromBuffer.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeDecoderFromBuffer.java @@ -7,7 +7,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.rangecoder; import java.io.DataInputStream; @@ -15,6 +14,7 @@ import java.io.IOException; import org.tukaani.xz.CorruptedInputException; public final class RangeDecoderFromBuffer extends RangeDecoder { + private static final int INIT_SIZE = 5; private final byte[] buf; @@ -26,7 +26,7 @@ public final class RangeDecoderFromBuffer extends RangeDecoder { } public void prepareInputBuffer(DataInputStream in, int len) - throws IOException { + throws IOException { if (len < INIT_SIZE) throw new CorruptedInputException(); @@ -50,7 +50,7 @@ public final class RangeDecoderFromBuffer extends RangeDecoder { } public void normalize() throws IOException { - if ((range & TOP_MASK) == 0) { + if ((range & TOP_MASK) == 0) try { // If the input is corrupt, this might throw // ArrayIndexOutOfBoundsException. @@ -59,6 +59,5 @@ public final class RangeDecoderFromBuffer extends RangeDecoder { } catch (ArrayIndexOutOfBoundsException e) { throw new CorruptedInputException(); } - } } } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeDecoderFromStream.java b/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeDecoderFromStream.java index 142b518db..2579e7657 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeDecoderFromStream.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeDecoderFromStream.java @@ -7,7 +7,6 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.rangecoder; import java.io.InputStream; @@ -16,6 +15,7 @@ import java.io.IOException; import org.tukaani.xz.CorruptedInputException; public final class RangeDecoderFromStream extends RangeDecoder { + private final DataInputStream inData; public RangeDecoderFromStream(InputStream in) throws IOException { diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeEncoder.java b/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeEncoder.java index a06fdcce3..95e51634e 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeEncoder.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/rangecoder/RangeEncoder.java @@ -7,18 +7,18 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.rangecoder; import java.io.OutputStream; import java.io.IOException; public final class RangeEncoder extends RangeCoder { + private static final int MOVE_REDUCING_BITS = 4; private static final int BIT_PRICE_SHIFT_BITS = 4; private static final int[] prices - = new int[BIT_MODEL_TOTAL >>> MOVE_REDUCING_BITS]; + = new int[BIT_MODEL_TOTAL >>> MOVE_REDUCING_BITS]; private long low; private int range; @@ -35,7 +35,7 @@ public final class RangeEncoder extends RangeCoder { static { for (int i = (1 << MOVE_REDUCING_BITS) / 2; i < BIT_MODEL_TOTAL; - i += (1 << MOVE_REDUCING_BITS)) { + i += (1 << MOVE_REDUCING_BITS)) { int w = i; int bitCount = 0; @@ -50,8 +50,8 @@ public final class RangeEncoder extends RangeCoder { } prices[i >> MOVE_REDUCING_BITS] - = (BIT_MODEL_TOTAL_BITS << BIT_PRICE_SHIFT_BITS) - - 15 - bitCount; + = (BIT_MODEL_TOTAL_BITS << BIT_PRICE_SHIFT_BITS) + - 15 - bitCount; } } @@ -84,17 +84,17 @@ public final class RangeEncoder extends RangeCoder { } private void shiftLow() { - int lowHi = (int)(low >>> 32); + int lowHi = (int) (low >>> 32); if (lowHi != 0 || low < 0xFF000000L) { int temp = cache; do { - buf[bufPos++] = (byte)(temp + lowHi); + buf[bufPos++] = (byte) (temp + lowHi); temp = 0xFF; } while (--cacheSize != 0); - cache = (byte)(low >>> 24); + cache = (byte) (low >>> 24); } ++cacheSize; @@ -108,12 +108,11 @@ public final class RangeEncoder extends RangeCoder { // NOTE: Any non-zero value for bit is taken as 1. if (bit == 0) { range = bound; - probs[index] = (short)( - prob + ((BIT_MODEL_TOTAL - prob) >>> MOVE_BITS)); + probs[index] = (short) (prob + ((BIT_MODEL_TOTAL - prob) >>> MOVE_BITS)); } else { low += bound & 0xFFFFFFFFL; range -= bound; - probs[index] = (short)(prob - (prob >>> MOVE_BITS)); + probs[index] = (short) (prob - (prob >>> MOVE_BITS)); } if ((range & TOP_MASK) == 0) { diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/simple/ARM.java b/HMCLAPI/src/main/java/org/tukaani/xz/simple/ARM.java index 6febf78ce..939ce7c43 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/simple/ARM.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/simple/ARM.java @@ -7,10 +7,10 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.simple; public final class ARM implements SimpleFilter { + private final boolean isEncoder; private int pos; @@ -23,7 +23,7 @@ public final class ARM implements SimpleFilter { int end = off + len - 4; int i; - for (i = off; i <= end; i += 4) { + for (i = off; i <= end; i += 4) if ((buf[i + 3] & 0xFF) == 0xEB) { int src = ((buf[i + 2] & 0xFF) << 16) | ((buf[i + 1] & 0xFF) << 8) @@ -37,11 +37,10 @@ public final class ARM implements SimpleFilter { dest = src - (pos + i - off); dest >>>= 2; - buf[i + 2] = (byte)(dest >>> 16); - buf[i + 1] = (byte)(dest >>> 8); - buf[i] = (byte)dest; + buf[i + 2] = (byte) (dest >>> 16); + buf[i + 1] = (byte) (dest >>> 8); + buf[i] = (byte) dest; } - } i -= off; pos += i; diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/simple/ARMThumb.java b/HMCLAPI/src/main/java/org/tukaani/xz/simple/ARMThumb.java index b8e7ca926..fb4ff7b5e 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/simple/ARMThumb.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/simple/ARMThumb.java @@ -7,10 +7,10 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.simple; public final class ARMThumb implements SimpleFilter { + private final boolean isEncoder; private int pos; @@ -23,7 +23,7 @@ public final class ARMThumb implements SimpleFilter { int end = off + len - 4; int i; - for (i = off; i <= end; i += 2) { + for (i = off; i <= end; i += 2) if ((buf[i + 1] & 0xF8) == 0xF0 && (buf[i + 3] & 0xF8) == 0xF8) { int src = ((buf[i + 1] & 0x07) << 19) | ((buf[i] & 0xFF) << 11) @@ -38,13 +38,12 @@ public final class ARMThumb implements SimpleFilter { dest = src - (pos + i - off); dest >>>= 1; - buf[i + 1] = (byte)(0xF0 | ((dest >>> 19) & 0x07)); - buf[i] = (byte)(dest >>> 11); - buf[i + 3] = (byte)(0xF8 | ((dest >>> 8) & 0x07)); - buf[i + 2] = (byte)dest; + buf[i + 1] = (byte) (0xF0 | ((dest >>> 19) & 0x07)); + buf[i] = (byte) (dest >>> 11); + buf[i + 3] = (byte) (0xF8 | ((dest >>> 8) & 0x07)); + buf[i + 2] = (byte) dest; i += 2; } - } i -= off; pos += i; diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/simple/IA64.java b/HMCLAPI/src/main/java/org/tukaani/xz/simple/IA64.java index 776a1b796..097dcfba0 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/simple/IA64.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/simple/IA64.java @@ -7,15 +7,15 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.simple; public final class IA64 implements SimpleFilter { + private static final int[] BRANCH_TABLE = { - 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, - 4, 4, 6, 6, 0, 0, 7, 7, - 4, 4, 0, 0, 4, 4, 0, 0 }; + 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, + 4, 4, 6, 6, 0, 0, 7, 7, + 4, 4, 0, 0, 4, 4, 0, 0}; private final boolean isEncoder; private int pos; @@ -47,11 +47,11 @@ public final class IA64 implements SimpleFilter { long instrNorm = instr >>> bitRes; if (((instrNorm >>> 37) & 0x0F) != 0x05 - || ((instrNorm >>> 9) & 0x07) != 0x00) + || ((instrNorm >>> 9) & 0x07) != 0x00) continue; - int src = (int)((instrNorm >>> 13) & 0x0FFFFF); - src |= ((int)(instrNorm >>> 36) & 1) << 20; + int src = (int) ((instrNorm >>> 13) & 0x0FFFFF); + src |= ((int) (instrNorm >>> 36) & 1) << 20; src <<= 4; int dest; @@ -70,7 +70,7 @@ public final class IA64 implements SimpleFilter { instr |= instrNorm << bitRes; for (int j = 0; j < 6; ++j) - buf[i + bytePos + j] = (byte)(instr >>> (8 * j)); + buf[i + bytePos + j] = (byte) (instr >>> (8 * j)); } } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/simple/PowerPC.java b/HMCLAPI/src/main/java/org/tukaani/xz/simple/PowerPC.java index b7400ab58..8b965c1c6 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/simple/PowerPC.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/simple/PowerPC.java @@ -7,10 +7,10 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.simple; public final class PowerPC implements SimpleFilter { + private final boolean isEncoder; private int pos; @@ -23,7 +23,7 @@ public final class PowerPC implements SimpleFilter { int end = off + len - 4; int i; - for (i = off; i <= end; i += 4) { + for (i = off; i <= end; i += 4) if ((buf[i] & 0xFC) == 0x48 && (buf[i + 3] & 0x03) == 0x01) { int src = ((buf[i] & 0x03) << 24) | ((buf[i + 1] & 0xFF) << 16) @@ -36,12 +36,11 @@ public final class PowerPC implements SimpleFilter { else dest = src - (pos + i - off); - buf[i] = (byte)(0x48 | ((dest >>> 24) & 0x03)); - buf[i + 1] = (byte)(dest >>> 16); - buf[i + 2] = (byte)(dest >>> 8); - buf[i + 3] = (byte)((buf[i + 3] & 0x03) | dest); + buf[i] = (byte) (0x48 | ((dest >>> 24) & 0x03)); + buf[i + 1] = (byte) (dest >>> 16); + buf[i + 2] = (byte) (dest >>> 8); + buf[i + 3] = (byte) ((buf[i + 3] & 0x03) | dest); } - } i -= off; pos += i; diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/simple/SPARC.java b/HMCLAPI/src/main/java/org/tukaani/xz/simple/SPARC.java index 913c8acc1..4ba922591 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/simple/SPARC.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/simple/SPARC.java @@ -7,10 +7,10 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.simple; public final class SPARC implements SimpleFilter { + private final boolean isEncoder; private int pos; @@ -23,9 +23,9 @@ public final class SPARC implements SimpleFilter { int end = off + len - 4; int i; - for (i = off; i <= end; i += 4) { + for (i = off; i <= end; i += 4) if ((buf[i] == 0x40 && (buf[i + 1] & 0xC0) == 0x00) - || (buf[i] == 0x7F && (buf[i + 1] & 0xC0) == 0xC0)) { + || (buf[i] == 0x7F && (buf[i + 1] & 0xC0) == 0xC0)) { int src = ((buf[i] & 0xFF) << 24) | ((buf[i + 1] & 0xFF) << 16) | ((buf[i + 2] & 0xFF) << 8) @@ -42,12 +42,11 @@ public final class SPARC implements SimpleFilter { dest = (((0 - ((dest >>> 22) & 1)) << 22) & 0x3FFFFFFF) | (dest & 0x3FFFFF) | 0x40000000; - buf[i] = (byte)(dest >>> 24); - buf[i + 1] = (byte)(dest >>> 16); - buf[i + 2] = (byte)(dest >>> 8); - buf[i + 3] = (byte)dest; + buf[i] = (byte) (dest >>> 24); + buf[i + 1] = (byte) (dest >>> 16); + buf[i + 2] = (byte) (dest >>> 8); + buf[i + 3] = (byte) dest; } - } i -= off; pos += i; diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/simple/SimpleFilter.java b/HMCLAPI/src/main/java/org/tukaani/xz/simple/SimpleFilter.java index 6f729063e..cc37fed52 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/simple/SimpleFilter.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/simple/SimpleFilter.java @@ -6,9 +6,9 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.simple; public interface SimpleFilter { + int code(byte[] buf, int off, int len); } diff --git a/HMCLAPI/src/main/java/org/tukaani/xz/simple/X86.java b/HMCLAPI/src/main/java/org/tukaani/xz/simple/X86.java index a05e08b75..2883e2779 100644 --- a/HMCLAPI/src/main/java/org/tukaani/xz/simple/X86.java +++ b/HMCLAPI/src/main/java/org/tukaani/xz/simple/X86.java @@ -7,12 +7,12 @@ * This file has been put into the public domain. * You can do whatever you want with this file. */ - package org.tukaani.xz.simple; public final class X86 implements SimpleFilter { + private static final boolean[] MASK_TO_ALLOWED_STATUS - = {true, true, true, false, true, false, false, false}; + = {true, true, true, false, true, false, false, false}; private static final int[] MASK_TO_BIT_NUMBER = {0, 1, 2, 2, 3, 3, 3, 3}; @@ -40,18 +40,17 @@ public final class X86 implements SimpleFilter { continue; prevPos = i - prevPos; - if ((prevPos & ~3) != 0) { // (unsigned)prevPos > 3 + if ((prevPos & ~3) != 0) // (unsigned)prevPos > 3 prevMask = 0; - } else { + else { prevMask = (prevMask << (prevPos - 1)) & 7; - if (prevMask != 0) { + if (prevMask != 0) if (!MASK_TO_ALLOWED_STATUS[prevMask] || test86MSByte( - buf[i + 4 - MASK_TO_BIT_NUMBER[prevMask]])) { + buf[i + 4 - MASK_TO_BIT_NUMBER[prevMask]])) { prevPos = i; prevMask = (prevMask << 1) | 1; continue; } - } } prevPos = i; @@ -72,20 +71,19 @@ public final class X86 implements SimpleFilter { break; int index = MASK_TO_BIT_NUMBER[prevMask] * 8; - if (!test86MSByte((byte)(dest >>> (24 - index)))) + if (!test86MSByte((byte) (dest >>> (24 - index)))) break; src = dest ^ ((1 << (32 - index)) - 1); } - buf[i + 1] = (byte)dest; - buf[i + 2] = (byte)(dest >>> 8); - buf[i + 3] = (byte)(dest >>> 16); - buf[i + 4] = (byte)(~(((dest >>> 24) & 1) - 1)); + buf[i + 1] = (byte) dest; + buf[i + 2] = (byte) (dest >>> 8); + buf[i + 3] = (byte) (dest >>> 16); + buf[i + 4] = (byte) (~(((dest >>> 24) & 1) - 1)); i += 4; - } else { + } else prevMask = (prevMask << 1) | 1; - } } prevPos = i - prevPos; diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/Main.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/Main.java index 494b84be3..cdfa98649 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/Main.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/Main.java @@ -56,8 +56,8 @@ public class Main { HMCLog.warn("Failed to set look and feel", ex); } new UpdateChecker(new VersionNumber(firstVer, secondVer, thirdVer), "hmcsm", () -> { - SwingUtilities.invokeLater(() -> MessageBox.Show("发现更新!")); - }).start(); + SwingUtilities.invokeLater(() -> MessageBox.Show("发现更新!")); + }).start(); new MainWindow().setVisible(true); } catch (Throwable t) { HMCLog.err("There's something wrong when running server holder.", t); diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginInfo.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginInfo.java index 8d2ec61f0..ccd654753 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginInfo.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginInfo.java @@ -23,8 +23,9 @@ import java.util.List; * @author huangyuhui */ public class PluginInfo { + public String website, dbo_page, description, slug, plugin_name, - link, stage, main; + link, stage, main; public List authors, categories; public List versions; } diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginManager.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginManager.java index 96c47b496..4b9afb6ff 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginManager.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/cbplugins/PluginManager.java @@ -51,32 +51,32 @@ public class PluginManager { String result = NetUtils.doGet("http://api.bukget.org/3//plugins?fields=slug,plugin_name,description,versions.version,versions.game_versions"); Gson gson = new Gson(); List list = gson.fromJson(result, new TypeToken>() { - }.getType()); + }.getType()); return list; } public static final String CATEGORY_ADMIN_TOOLS = "Admin Tools", - CATEGORY_DEVELOPER_TOOLS = "Developer Tools", - CATEGORY_FUN = "Fun", - CATEGORY_GENERAL = "General", - CATEGORY_ANTI_GRIEFING_TOOLS = "Anti Griefing Tools", - CATEGORY_MECHAICS = "Mechanics", - CATEGORY_Fixes = "Fixes", - CATEGORY_ROLE_PLAYING = "Role Playing", - CATEGORY_WORLD_EDITING_AND_MANAGEMENT = "World Editing and Management", - CATEGORY_TELEPORTATION = "Teleportation", - CATEGORY_INFORMATIONAL = "Informational", - CATEGORY_ECONOMY = "Economy", - CATEGORY_CHAT_RELATED = "Chat Related", - CATEGORY_MISCELLANEOUS = "Miscellaneous", - CATEGORY_WORLD_GENERATORS = "World Generators", - CATEGORY_WEBSITE_ADMINISTRATION = "Website Administration"; + CATEGORY_DEVELOPER_TOOLS = "Developer Tools", + CATEGORY_FUN = "Fun", + CATEGORY_GENERAL = "General", + CATEGORY_ANTI_GRIEFING_TOOLS = "Anti Griefing Tools", + CATEGORY_MECHAICS = "Mechanics", + CATEGORY_Fixes = "Fixes", + CATEGORY_ROLE_PLAYING = "Role Playing", + CATEGORY_WORLD_EDITING_AND_MANAGEMENT = "World Editing and Management", + CATEGORY_TELEPORTATION = "Teleportation", + CATEGORY_INFORMATIONAL = "Informational", + CATEGORY_ECONOMY = "Economy", + CATEGORY_CHAT_RELATED = "Chat Related", + CATEGORY_MISCELLANEOUS = "Miscellaneous", + CATEGORY_WORLD_GENERATORS = "World Generators", + CATEGORY_WEBSITE_ADMINISTRATION = "Website Administration"; public static List getPluginsByCategory(String category) throws Exception { String result = NetUtils.doGet("http://api.bukget.org/3//categories/" + category + "?fields=slug,plugin_name,description,versions.version,versions.game_versions"); Gson gson = new Gson(); List list = gson.fromJson(result, new TypeToken>() { - }.getType()); + }.getType()); return list; } @@ -84,7 +84,7 @@ public class PluginManager { String result = NetUtils.doGet("http://api.bukget.org/3//categories/"); Gson gson = new Gson(); List list = gson.fromJson(result, new TypeToken>() { - }.getType()); + }.getType()); return list; } diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/bukkit/BukkitFormatThread.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/bukkit/BukkitFormatThread.java index b809066ca..8fb5ffbe4 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/bukkit/BukkitFormatThread.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/bukkit/BukkitFormatThread.java @@ -53,7 +53,8 @@ public class BukkitFormatThread extends Thread { allforge.addAll(table.getElementsByTag("tr")); for (Element e : allforge) { Elements tds = e.getElementsByTag("td"); - if (tds.isEmpty()) continue; + if (tds.isEmpty()) + continue; BukkitVersion v = new BukkitVersion(); Elements ths = e.getElementsByTag("th"); v.buildNumber = v.infoLink = null; @@ -66,7 +67,8 @@ public class BukkitFormatThread extends Thread { } v.version = tds.get(0).text(); v.type = tds.get(1).text(); - if (tds.get(2).getElementsByTag("a").isEmpty()) continue; + if (tds.get(2).getElementsByTag("a").isEmpty()) + continue; v.downloadLink = "http://dl.bukkit.org" + tds.get(2).getElementsByTag("a").get(0).attr("href"); formattedList.add(v); } diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/bukkit/BukkitVersion.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/bukkit/BukkitVersion.java index b8b6a50ab..0c1ce5ca5 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/bukkit/BukkitVersion.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/bukkit/BukkitVersion.java @@ -21,7 +21,7 @@ package org.jackhuang.hellominecraft.svrmgr.installer.bukkit; * @author huangyuhui */ public class BukkitVersion { - + public String buildNumber, version, type, downloadLink, infoLink; - + } diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeFormatThread.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeFormatThread.java index 0cef3f9dd..8bcbbfca3 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeFormatThread.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeFormatThread.java @@ -56,7 +56,8 @@ public class ForgeFormatThread extends Thread { allforge.addAll(table.getElementsByTag("tr")); for (Element e : allforge) { Elements tds = e.getElementsByTag("td"); - if (tds.isEmpty()) continue; + if (tds.isEmpty()) + continue; ForgeVersion v = new ForgeVersion(); v.ver = tds.get(0).text(); v.mcver = tds.get(1).text(); @@ -74,8 +75,10 @@ public class ForgeFormatThread extends Thread { v.changelog = href; else if (prev != null) { int index; - if (href.contains("adf.ly")) index = 0; - else index = 1; + if (href.contains("adf.ly")) + index = 0; + else + index = 1; if (prev.toLowerCase().contains("installer")) v.installer[index] = href; else if (prev.toLowerCase().contains("server")) diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeInstaller.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeInstaller.java index d6cf8b4ab..d4a37d65c 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeInstaller.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/ForgeInstaller.java @@ -74,7 +74,7 @@ public class ForgeInstaller { entry = zipFile.getEntry(profile.install.filePath); InputStream is = zipFile.getInputStream(entry); - //MinecraftLibrary forge = new MinecraftLibrary(profile.install.path); + //MinecraftLibrary forge = new MinecraftLibrary(profile.install.path); //forge.format(); File file = new File(gameDir, profile.install.filePath); file.getParentFile().mkdirs(); @@ -85,11 +85,10 @@ public class ForgeInstaller { } File minecraftserver = new File(gameDir, "minecraft_server." + profile.install.minecraft + ".jar"); - if (minecraftserver.exists() && JOptionPane.showConfirmDialog(null, "已发现官方服务端文件,是否要重新下载?") == JOptionPane.YES_OPTION) { + if (minecraftserver.exists() && JOptionPane.showConfirmDialog(null, "已发现官方服务端文件,是否要重新下载?") == JOptionPane.YES_OPTION) if (!TaskWindow.getInstance().addTask(new FileDownloadTask("https://s3.amazonaws.com/Minecraft.Download/versions/{MCVER}/minecraft_server.{MCVER}.jar".replace("{MCVER}", profile.install.minecraft), - minecraftserver).setTag("minecraft_server")).start()) + minecraftserver).setTag("minecraft_server")).start()) MessageBox.Show("Minecraft官方服务端下载失败!"); - } TaskWindow.TaskWindowFactory tw = TaskWindow.getInstance(); for (MinecraftLibrary library : profile.versionInfo.libraries) { library.init(); @@ -101,11 +100,12 @@ public class ForgeInstaller { } if (!tw.start()) MessageBox.Show("压缩库下载失败!"); - + tw = TaskWindow.getInstance(); for (MinecraftLibrary library : profile.versionInfo.libraries) { File packxz = new File(gameDir, "libraries" + File.separator + library.formatted + ".pack.xz"); - if (packxz.exists()) return; + if (packxz.exists()) + return; File lib = new File(gameDir, "libraries" + File.separator + library.formatted); lib.getParentFile().mkdirs(); String libURL = "https://libraries.minecraft.net/"; @@ -115,7 +115,7 @@ public class ForgeInstaller { } if (!tw.start()) MessageBox.Show("库下载失败!"); - + ArrayList badLibs = new ArrayList<>(); for (MinecraftLibrary library : profile.versionInfo.libraries) { File lib = new File(gameDir, "libraries" + File.separator + library.formatted); @@ -135,7 +135,7 @@ public class ForgeInstaller { } public static void unpackLibrary(File output, byte[] data) - throws IOException { + throws IOException { if (output.exists()) output.delete(); @@ -153,13 +153,13 @@ public class ForgeInstaller { byte[] checksums = Arrays.copyOfRange(decompressed, decompressed.length - len - 8, decompressed.length - 8); try (FileOutputStream jarBytes = new FileOutputStream(output); JarOutputStream jos = new JarOutputStream(jarBytes)) { - + Pack200.newUnpacker().unpack(new ByteArrayInputStream(decompressed), jos); - + jos.putNextEntry(new JarEntry("checksums.sha1")); jos.write(checksums); jos.closeEntry(); - + } } @@ -185,10 +185,10 @@ public class ForgeInstaller { JarEntry entry = jar.getNextJarEntry(); while (entry != null) { byte[] eData = IOUtils.readFully(jar); - + if (entry.getName().equals("checksums.sha1")) hashes = new String(eData, Charset.forName("UTF-8")).split("\n"); - + if (!entry.isDirectory()) files.put(entry.getName(), DigestUtils.sha1Hex(eData)); entry = jar.getNextJarEntry(); diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/MinecraftLibrary.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/MinecraftLibrary.java index bd30ce2b2..04edb44c3 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/MinecraftLibrary.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/MinecraftLibrary.java @@ -34,7 +34,7 @@ public class MinecraftLibrary { str = s[0]; str = str.replace('.', File.separatorChar); str += File.separator + s[1] + File.separator + s[2] - + File.separator + s[1] + '-' + s[2] + ".jar"; + + File.separator + s[1] + '-' + s[2] + ".jar"; formatted = str; } } diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/MinecraftVersion.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/MinecraftVersion.java index cf8492335..cf1e6d51e 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/MinecraftVersion.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/installer/cauldron/MinecraftVersion.java @@ -25,7 +25,7 @@ import java.util.List; public class MinecraftVersion { public String minecraftArguments, mainClass, time, id, type, processArguments, - releaseTime, assets, jar, inheritsFrom; + releaseTime, assets, jar, inheritsFrom; public int minimumLauncherVersion; public List libraries; diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/ScheduleTranslator.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/ScheduleTranslator.java index 01c7ee830..ff7d25784 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/ScheduleTranslator.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/ScheduleTranslator.java @@ -75,7 +75,7 @@ public class ScheduleTranslator { } public static Object[] getRow(Schedule s) { - return new Object[]{ + return new Object[] { getName(s), getTimeTypeName(s), s.per, s.content }; } diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/Server.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/Server.java index 8a78c9fcc..98dfb3ee8 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/Server.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/Server.java @@ -53,7 +53,7 @@ import org.jackhuang.hellominecraft.utils.functions.Consumer; * @author huangyuhui */ public class Server implements Event, MonitorThread.MonitorThreadListener, - ActionListener { + ActionListener { private static Server instance; private static boolean disactived = false; @@ -112,7 +112,7 @@ public class Server implements Event, MonitorThread.MonitorThreadListen jvmPath = IOUtils.getJavaDir(); else jvmPath = SettingsManager.settings.javaDir; - String[] puts = new String[]{ + String[] puts = new String[] { jvmPath, "-Xmx" + memory + "m", "-jar", @@ -124,8 +124,8 @@ public class Server implements Event, MonitorThread.MonitorThreadListen pb.directory(new File(SettingsManager.settings.mainjar).getParentFile()); try { disactiveMods(SettingsManager.settings.inactiveExtMods, - SettingsManager.settings.inactiveCoreMods, - SettingsManager.settings.inactivePlugins); + SettingsManager.settings.inactiveCoreMods, + SettingsManager.settings.inactivePlugins); server = pb.start(); registerThread(threadA, server.getInputStream()); registerThread(threadB, server.getErrorStream()); @@ -206,7 +206,8 @@ public class Server implements Event, MonitorThread.MonitorThreadListen private void registerThreadC(Process p) { threadC = new WaitForThread(p); - for (Event l : listenersC) threadC.event.register(l); + for (Event l : listenersC) + threadC.event.register(l); threadC.event.register(this); threadC.start(); } @@ -221,9 +222,13 @@ public class Server implements Event, MonitorThread.MonitorThreadListen System.err.println("Server crashed(exit code: " + t + ")"); } isRunning = false; - for (Schedule schedule : schedules) if (schedule.timeType == Schedule.TIME_TYPE_SERVER_STOPPED) ScheduleTranslator.translate(this, schedule).run(); - if (timer != null) timer.cancel(); - if (pastTimer != null) pastTimer.stop(); + for (Schedule schedule : schedules) + if (schedule.timeType == Schedule.TIME_TYPE_SERVER_STOPPED) + ScheduleTranslator.translate(this, schedule).run(); + if (timer != null) + timer.cancel(); + if (pastTimer != null) + pastTimer.stop(); restoreMods(); if (isRestart) { try { @@ -238,7 +243,7 @@ public class Server implements Event, MonitorThread.MonitorThreadListen } private static void disactiveMods(ArrayList inactiveExtMods, - ArrayList inactiveCoreMods, ArrayList inactivePlugins) { + ArrayList inactiveCoreMods, ArrayList inactivePlugins) { disactiveModsByType(inactiveExtMods, "mods"); disactiveModsByType(inactiveCoreMods, "coremods"); disactiveModsByType(inactivePlugins, "plugins"); @@ -256,11 +261,12 @@ public class Server implements Event, MonitorThread.MonitorThreadListen System.out.println("没有文件: " + paramString); return; } - for (File file : files) if (!file.isDirectory()) { + for (File file : files) + if (!file.isDirectory()) { String name = file.getName(); if ((!paramArrayOfString.contains(name)) - || ((!name.toLowerCase().endsWith(".zip")) && (!name.toLowerCase().endsWith(".jar")))) + || ((!name.toLowerCase().endsWith(".zip")) && (!name.toLowerCase().endsWith(".jar")))) continue; String newName = name + "X"; @@ -278,8 +284,10 @@ public class Server implements Event, MonitorThread.MonitorThreadListen private static void restoreModsByType(String paramString) { System.out.println("还原被禁用的文件: " + paramString); File[] files = new File(Utilities.getGameDir(), paramString).listFiles(); - if (files == null) return; - for (File file : files) if (!file.isDirectory()) { + if (files == null) + return; + for (File file : files) + if (!file.isDirectory()) { String name = file.getName(); String lowName = name.toLowerCase(); if ((!lowName.endsWith(".zipx")) && (!lowName.endsWith(".jarx"))) @@ -289,9 +297,8 @@ public class Server implements Event, MonitorThread.MonitorThreadListen File newFile = new File(file.getParentFile(), newName); if (newFile.exists()) file.delete(); - else - if (!file.renameTo(newFile)) - System.out.println("无法重命名: " + file.getName() + " 到: " + newFile.getName() + " 在: " + file.getParent()); + else if (!file.renameTo(newFile)) + System.out.println("无法重命名: " + file.getName() + " 到: " + newFile.getName() + " 在: " + file.getParent()); } } @@ -346,7 +353,8 @@ public class Server implements Event, MonitorThread.MonitorThreadListen ScheduleTranslator.translate(this, schedules.get(i)).run(); continue; } - if (schedules.get(i).timeType != Schedule.TIME_TYPE_PER) continue; + if (schedules.get(i).timeType != Schedule.TIME_TYPE_PER) + continue; long mill = (long) Math.floor(schedules.get(i).per * 60 * 1000); timerTasks.add(ScheduleTranslator.translate(this, schedules.get(i))); timer.schedule(timerTasks.get(i), mill, mill); @@ -360,7 +368,9 @@ public class Server implements Event, MonitorThread.MonitorThreadListen } if (status.length() > 20) if (status.substring(20).contains("[SEVERE] This crash report has been saved to: ")) - for (Schedule schedule : schedules) if (schedule.timeType == Schedule.TIME_TYPE_SERVER_CRASHED) ScheduleTranslator.translate(this, schedule).run(); + for (Schedule schedule : schedules) + if (schedule.timeType == Schedule.TIME_TYPE_SERVER_CRASHED) + ScheduleTranslator.translate(this, schedule).run(); } GregorianCalendar c = new GregorianCalendar(); @@ -368,15 +378,19 @@ public class Server implements Event, MonitorThread.MonitorThreadListen @Override public void actionPerformed(ActionEvent e) { c.setTime(new Date()); - if (c.get(Calendar.SECOND) != 0) return; + if (c.get(Calendar.SECOND) != 0) + return; int minute = c.get(Calendar.MINUTE); for (Schedule schedule : schedules) { - if (schedule.timeType != Schedule.TIME_TYPE_PAST_HOUR) continue; - if (schedule.per == minute) ScheduleTranslator.translate(this, schedule).run(); + if (schedule.timeType != Schedule.TIME_TYPE_PAST_HOUR) + continue; + if (schedule.per == minute) + ScheduleTranslator.translate(this, schedule).run(); } } private void sendStatus(String status) { - for (MonitorThread.MonitorThreadListener l : listeners) l.onStatus(status); + for (MonitorThread.MonitorThreadListener l : listeners) + l.onStatus(status); } } diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/backups/BackupManager.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/backups/BackupManager.java index 3d0075495..15938a6e7 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/backups/BackupManager.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/backups/BackupManager.java @@ -49,7 +49,7 @@ public class BackupManager { try { SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); Compressor.zip(Utilities.getGameDir() + folder + File.separator, - backupDir() + "world+" + f.format(new Date()) + "+" + folder + ".zip"); + backupDir() + "world+" + f.format(new Date()) + "+" + folder + ".zip"); } catch (IOException ex) { HMCLog.warn("Failed to compress world pack.", ex); } @@ -101,7 +101,7 @@ public class BackupManager { try { SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); Compressor.zip(Utilities.getGameDir() + "plugins" + File.separator, - backupDir() + "plugin+" + f.format(new Date()) + "+plugins.zip"); + backupDir() + "plugin+" + f.format(new Date()) + "+plugins.zip"); } catch (IOException ex) { HMCLog.warn("Failed to compress world pack with plugins.", ex); } diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoRestartSchedule.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoRestartSchedule.java index 4babde80f..f10061040 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoRestartSchedule.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/server/schedules/AutoRestartSchedule.java @@ -19,15 +19,16 @@ package org.jackhuang.hellominecraft.svrmgr.server.schedules; import java.util.TimerTask; import org.jackhuang.hellominecraft.svrmgr.server.Server; import org.jackhuang.hellominecraft.svrmgr.settings.Schedule; + /** * * @author huangyuhui */ public class AutoRestartSchedule extends TimerTask { - + Schedule main; Server server; - + public AutoRestartSchedule(Schedule s, Server s2) { main = s; server = s2; diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/PlayerList.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/PlayerList.java index 565161fc4..6f4107693 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/PlayerList.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/PlayerList.java @@ -71,7 +71,8 @@ public abstract class PlayerList { String[] lines = s.split("\n"); op = new HashSet(); for (String l : lines) { - if (l.startsWith("#")) continue; + if (l.startsWith("#")) + continue; T player = newPlayer(l); if (StrUtils.isBlank(l)) continue; diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/Schedule.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/Schedule.java index 22d956de4..e4d30df70 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/Schedule.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/Schedule.java @@ -23,19 +23,19 @@ package org.jackhuang.hellominecraft.svrmgr.settings; public class Schedule { public static final int TYPE_AUTO_SAVE = 0, - TYPE_AUTO_RESTART = 1, - TYPE_AUTO_BACKUP = 2, - TYPE_AUTO_BROADCAST = 3, - TYPE_AUTO_SEND_COMMAND = 4, - TYPE_AUTO_EXECUTE = 5; + TYPE_AUTO_RESTART = 1, + TYPE_AUTO_BACKUP = 2, + TYPE_AUTO_BROADCAST = 3, + TYPE_AUTO_SEND_COMMAND = 4, + TYPE_AUTO_EXECUTE = 5; public static final int TYPE2_AUTO_BACKUP_PLUGINS = 1, - TYPE2_AUTH_BACKUP_CONFIG = 2, - TYPE3_AUTH_BACKUP_WORLD = 3; + TYPE2_AUTH_BACKUP_CONFIG = 2, + TYPE3_AUTH_BACKUP_WORLD = 3; public static final int TIME_TYPE_PER = 0, - TIME_TYPE_PAST_HOUR = 1, - TIME_TYPE_SERVER_STARTED = 2, - TIME_TYPE_SERVER_STOPPED = 3, - TIME_TYPE_SERVER_CRASHED = 4; + TIME_TYPE_PAST_HOUR = 1, + TIME_TYPE_SERVER_STARTED = 2, + TIME_TYPE_SERVER_STOPPED = 3, + TIME_TYPE_SERVER_CRASHED = 4; public int type, type2, timeType; public String content; diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/ServerProperties.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/ServerProperties.java index db8ecd6c0..9b60a8f5b 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/ServerProperties.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/ServerProperties.java @@ -228,38 +228,38 @@ public class ServerProperties { public static String getDefault() { return "generator-settings=\n" - + "op-permission-level=4\n" - + "allow-nether=true\n" - + "level-name=world\n" - + "enable-query=false\n" - + "allow-flight=false\n" - + "announce-player-achievements=true\n" - + "server-port=25565\n" - + "level-type=DEFAULT\n" - + "enable-rcon=false\n" - + "force-gamemode=false\n" - + "level-seed=\n" - + "server-ip=\n" - + "max-build-height=256\n" - + "spawn-npcs=true\n" - + "white-list=false\n" - + "spawn-animals=true\n" - + "hardcore=false\n" - + "snooper-enabled=true\n" - + "online-mode=false\n" - + "resource-pack=\n" - + "pvp=true\n" - + "difficulty=1\n" - + "server-name=Unknown Server\n" - + "enable-command-block=false\n" - + "gamemode=0\n" - + "player-idle-timeout=0\n" - + "max-players=20\n" - + "spawn-monsters=true\n" - + "generate-structures=true\n" - + "view-distance=10\n" - + "spawn-protection=16\n" - + "motd=A Minecraft Server"; + + "op-permission-level=4\n" + + "allow-nether=true\n" + + "level-name=world\n" + + "enable-query=false\n" + + "allow-flight=false\n" + + "announce-player-achievements=true\n" + + "server-port=25565\n" + + "level-type=DEFAULT\n" + + "enable-rcon=false\n" + + "force-gamemode=false\n" + + "level-seed=\n" + + "server-ip=\n" + + "max-build-height=256\n" + + "spawn-npcs=true\n" + + "white-list=false\n" + + "spawn-animals=true\n" + + "hardcore=false\n" + + "snooper-enabled=true\n" + + "online-mode=false\n" + + "resource-pack=\n" + + "pvp=true\n" + + "difficulty=1\n" + + "server-name=Unknown Server\n" + + "enable-command-block=false\n" + + "gamemode=0\n" + + "player-idle-timeout=0\n" + + "max-players=20\n" + + "spawn-monsters=true\n" + + "generate-structures=true\n" + + "view-distance=10\n" + + "spawn-protection=16\n" + + "motd=A Minecraft Server"; } } diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/Settings.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/Settings.java index ea42821e5..7ced5a6f8 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/Settings.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/settings/Settings.java @@ -28,7 +28,7 @@ public class Settings { public String maxMemory; public String mainjar, bgPath, javaDir, javaArgs; public ArrayList inactiveExtMods, inactiveCoreMods, inactivePlugins, - inactiveWorlds; + inactiveWorlds; public ArrayList schedules; public Settings() { diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/threads/MonitorThread.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/threads/MonitorThread.java index f6d0794fe..4a0865293 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/threads/MonitorThread.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/threads/MonitorThread.java @@ -29,40 +29,40 @@ import org.jackhuang.hellominecraft.HMCLog; * @author huangyuhui */ public class MonitorThread extends Thread { - + public interface MonitorThreadListener { + void onStatus(String status); } - + InputStream is; BufferedReader br; ArrayList listeners; - + public MonitorThread(InputStream is) { this.listeners = new ArrayList<>(5); - try { + try { br = new BufferedReader(new InputStreamReader(is, System.getProperty("sun.jnu.encoding", "gbk"))); } catch (UnsupportedEncodingException ex) { br = new BufferedReader(new InputStreamReader(is)); } } - + public void addListener(MonitorThreadListener l) { listeners.add(l); } - + @Override public void run() { String line; try { - while((line = br.readLine()) != null) { - for(MonitorThreadListener l : listeners) - if(l != null) + while ((line = br.readLine()) != null) + for (MonitorThreadListener l : listeners) + if (l != null) l.onStatus(line); - } } catch (IOException ex) { HMCLog.warn("Failed to monitor threads.", ex); } } - + } diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/IMonitorService.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/IMonitorService.java index 3d64fd371..fa1ad7c28 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/IMonitorService.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/IMonitorService.java @@ -26,7 +26,8 @@ public interface IMonitorService { * 获得当前的监控对象. * * @return 返回构造好的监控对象 + * * @throws Exception */ public MonitorInfoBean getMonitorInfoBean() throws Exception; -} \ No newline at end of file +} diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/ModType.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/ModType.java index 19901b593..5570451ef 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/ModType.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/ModType.java @@ -50,7 +50,8 @@ public class ModType { java.util.Enumeration e = zipFile.entries(); while (e.hasMoreElements()) { ZipEntry zipEnt = (ZipEntry) e.nextElement(); - if (zipEnt.isDirectory()) continue; + if (zipEnt.isDirectory()) + continue; gbkPath = zipEnt.getName(); if ("mcmod.info".equals(gbkPath)) return ForgeMod; diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/MonitorServiceImpl.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/MonitorServiceImpl.java index f9e1743da..baf1b85a4 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/MonitorServiceImpl.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/MonitorServiceImpl.java @@ -42,6 +42,7 @@ public class MonitorServiceImpl implements IMonitorService { * 获得当前的监控对象. * * @return 返回构造好的监控对象 + * * @throws Exception * @author GuoHuang */ @@ -144,7 +145,7 @@ public class MonitorServiceImpl implements IMonitorService { } private static void freeResource(InputStream is, InputStreamReader isr, - BufferedReader br) { + BufferedReader br) { try { if (is != null) is.close(); @@ -161,6 +162,7 @@ public class MonitorServiceImpl implements IMonitorService { * 获得CPU使用率. * * @return 返回cpu使用率 + * * @author GuoHuang */ private double getCpuRatioForWindows() { @@ -186,7 +188,9 @@ public class MonitorServiceImpl implements IMonitorService { * 读取CPU信息. * * @param proc + * * @return + * * @author GuoHuang */ private long[] readCpu(final Process proc) { @@ -249,6 +253,7 @@ public class MonitorServiceImpl implements IMonitorService { * 测试方法. * * @param args + * * @throws Exception * @author GuoHuang */ diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/Utilities.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/Utilities.java index 0c058ebc1..3780bf74a 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/Utilities.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/utils/Utilities.java @@ -27,14 +27,12 @@ import org.jackhuang.hellominecraft.svrmgr.settings.SettingsManager; public class Utilities { public static String addSeparator(String path) { - if (path == null || path.trim().length() == 0) { + if (path == null || path.trim().length() == 0) return ""; - } - if (path.charAt(path.length() - 1) == File.separatorChar) { + if (path.charAt(path.length() - 1) == File.separatorChar) return path; - } else { + else return path + File.separatorChar; - } } public static boolean isSeparator(char ch) { @@ -44,37 +42,31 @@ public class Utilities { public static String removeLastSeparator(String dir) { String t = dir.trim(); char ch = t.charAt(t.length() - 1); - if (isSeparator(ch)) { + if (isSeparator(ch)) return t.substring(0, t.length() - 1); - } return t; } public static String extractLastDirectory(String dir) { String t = removeLastSeparator(dir); int i = t.length() - 1; - while (i >= 0 && !isSeparator(dir.charAt(i))) { + while (i >= 0 && !isSeparator(dir.charAt(i))) i--; - } - if (i < 0) { + if (i < 0) return t; - } return t.substring(i + 1, (t.length() - i) + (i + 1) - 1); } public static ArrayList findAllFile(File f) { ArrayList arr = new ArrayList<>(); - if (!f.exists()) { + if (!f.exists()) return arr; - } if (f.isDirectory()) { File[] f1 = f.listFiles(); int len = f1.length; - for (int i = 0; i < len; i++) { - if (f1[i].isFile()) { + for (int i = 0; i < len; i++) + if (f1[i].isFile()) arr.add(f1[i].getName()); - } - } } return arr; } @@ -84,27 +76,23 @@ public class Utilities { if (f.isDirectory()) { File[] f1 = f.listFiles(); int len = f1.length; - for (int i = 0; i < len; i++) { - if (f1[i].isDirectory()) { + for (int i = 0; i < len; i++) + if (f1[i].isDirectory()) arr.add(f1[i].getName()); - } - } } return arr; } public static void deleteAll(File f) { - if (f == null || !f.exists()) { + if (f == null || !f.exists()) return; - } - if (f.isFile()) { + if (f.isFile()) f.delete(); - } else { + else { File f1[] = f.listFiles(); int len = f1.length; - for (int i = 0; i < len; i++) { + for (int i = 0; i < len; i++) deleteAll(f1[i]); - } f.delete(); } } @@ -130,6 +118,7 @@ public class Utilities { return def; } } + public static int tryParseInteger(String integer, int def) { try { return Integer.parseInt(integer); @@ -139,11 +128,10 @@ public class Utilities { } public static boolean isEquals(String base, String to) { - if (base == null) { + if (base == null) return (to == null); - } else { + else return base.equals(to); - } } public static String getGameDir() { @@ -155,11 +143,10 @@ public class Utilities { public static String getPath(String lastFolder) { String path = getGameDir(); File file = new File((new StringBuilder()).append(path).append(lastFolder).toString()); - if (file.exists()) { + if (file.exists()) return file.getPath(); - } else { + else return null; - } } public static String try2GetPath(String lastFolder) { @@ -171,9 +158,8 @@ public class Utilities { public static String trimExtension(String filename) { if ((filename != null) && (filename.length() > 0)) { int i = filename.lastIndexOf('.'); - if ((i > -1) && (i < (filename.length()))) { + if ((i > -1) && (i < (filename.length()))) return filename.substring(0, i); - } } return filename; } @@ -181,7 +167,7 @@ public class Utilities { public static boolean openLink(String url) { boolean isBrowsed = false; //判断当前系统是否支持Java AWT Desktop扩展 - if (java.awt.Desktop.isDesktopSupported()) { + if (java.awt.Desktop.isDesktopSupported()) try { //创建一个URI实例 java.net.URI uri = java.net.URI.create(url); @@ -197,8 +183,6 @@ public class Utilities { //此为uri为空时抛出异常 //此为无法获取系统默认浏览器 } - - } return isBrowsed; } } diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/InputDialog.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/InputDialog.java index 591311884..41b8a7fe9 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/InputDialog.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/InputDialog.java @@ -58,7 +58,7 @@ public class InputDialog extends javax.swing.JDialog { makeLayout(); Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize(); setLocation((scrSize.width - this.getWidth()) / 2, - (scrSize.height - this.getHeight()) / 2); + (scrSize.height - this.getHeight()) / 2); } final void makeNewField(String message) { @@ -71,24 +71,24 @@ public class InputDialog extends javax.swing.JDialog { javax.swing.GroupLayout jPanelLayout = new javax.swing.GroupLayout(panel); panel.setLayout(jPanelLayout); jPanelLayout.setHorizontalGroup( - jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanelLayout.createSequentialGroup() - .addContainerGap() - .addGroup(jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanelLayout.createSequentialGroup() - .addComponent(label) - .addGap(0, 0, Short.MAX_VALUE)) - .addComponent(textField)) - .addContainerGap()) + jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanelLayout.createSequentialGroup() + .addContainerGap() + .addGroup(jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanelLayout.createSequentialGroup() + .addComponent(label) + .addGap(0, 0, Short.MAX_VALUE)) + .addComponent(textField)) + .addContainerGap()) ); jPanelLayout.setVerticalGroup( - jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanelLayout.createSequentialGroup() - .addContainerGap() - .addComponent(label) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(textField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) + jPanelLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(jPanelLayout.createSequentialGroup() + .addContainerGap() + .addComponent(label) + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) + .addComponent(textField, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) + .addContainerGap(GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) ); textFields.add(textField); panels.add(panel); @@ -101,25 +101,25 @@ public class InputDialog extends javax.swing.JDialog { for (JPanel p : panels) g.addComponent(p, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE); g.addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addGap(0, 0, Short.MAX_VALUE) - .addComponent(jButton1)); + .addGap(0, 0, Short.MAX_VALUE) + .addComponent(jButton1)); layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addGroup(g) - .addContainerGap()) + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(layout.createSequentialGroup() + .addContainerGap() + .addGroup(g) + .addContainerGap()) ); GroupLayout.SequentialGroup g2 = layout.createSequentialGroup() - .addContainerGap(); + .addContainerGap(); for (JPanel p : panels) g2 = g2.addComponent(p, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED); + .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED); g2 = g2.addComponent(jButton1) - .addContainerGap(); + .addContainerGap(); layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(g2) + layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) + .addGroup(g2) ); pack(); diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.java index b212a3c96..b94d23ea5 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/MainWindow.java @@ -94,7 +94,7 @@ import org.jackhuang.hellominecraft.utils.Event; * @author huangyuhui */ public final class MainWindow extends javax.swing.JFrame - implements MonitorThread.MonitorThreadListener, Event { +implements MonitorThread.MonitorThreadListener, Event { ImageIcon background = new ImageIcon(getClass().getResource("/background.jpg")); JLabel backgroundLabel; @@ -133,7 +133,7 @@ public final class MainWindow extends javax.swing.JFrame Dimension scrSize = Toolkit.getDefaultToolkit().getScreenSize(); setLocation((scrSize.width - this.getWidth()) / 2, - (scrSize.height - this.getHeight()) / 2); + (scrSize.height - this.getHeight()) / 2); this.setIconImage(new ImageIcon(getClass().getResource("/icon.png")).getImage()); @@ -258,7 +258,7 @@ public final class MainWindow extends javax.swing.JFrame @Override public void actionPerformed(ActionEvent e) { - InputDialog id = new InputDialog(MainWindow.this, true, new String[]{"玩家", "讯息"}); + InputDialog id = new InputDialog(MainWindow.this, true, new String[] {"玩家", "讯息"}); id.setVisible(true); Server.getInstance().sendCommand("tell " + id.result[0] + " " + id.result[1]); } @@ -432,7 +432,7 @@ public final class MainWindow extends javax.swing.JFrame @Override public void actionPerformed(ActionEvent e) { - InputDialog id = new InputDialog(MainWindow.this, true, new String[]{ + InputDialog id = new InputDialog(MainWindow.this, true, new String[] { "要调整的天气(只能填:clear[意思是取消所有天气]或rain[意思是下雨]或thunder[意思是打雷]", "时间" }); @@ -487,7 +487,7 @@ public final class MainWindow extends javax.swing.JFrame @Override public void actionPerformed(ActionEvent e) { - InputDialog id = new InputDialog(MainWindow.this, true, new String[]{"玩家", "物品ID", "数量"}); + InputDialog id = new InputDialog(MainWindow.this, true, new String[] {"玩家", "物品ID", "数量"}); id.setVisible(true); if (id.result != null) Server.getInstance().sendCommand("give " + id.result[0] + " " + id.result[1] + " " + id.result[2]); @@ -2938,27 +2938,32 @@ public final class MainWindow extends javax.swing.JFrame void loadFromOPs() { File mainjar = new File(SettingsManager.settings.mainjar); - if (!mainjar.exists()) return; + if (!mainjar.exists()) + return; File folder = mainjar.getParentFile(); op = new Op(); op.initByBoth(new File(folder, "ops.txt"), new File(folder, "ops.json")); - for (Op.Operator ss : op.op) lstOPModel.addElement(ss.name); + for (Op.Operator ss : op.op) + lstOPModel.addElement(ss.name); lstOP.setModel(lstOPModel); } void loadFromWhiteList() { File mainjar = new File(SettingsManager.settings.mainjar); - if (!mainjar.exists()) return; + if (!mainjar.exists()) + return; File folder = mainjar.getParentFile(); whitelist = new WhiteList(); whitelist.initByBoth(new File(folder, "white-list.txt"), new File(folder, "white-list.json")); - for (WhiteList.WhiteListPlayer ss : whitelist.op) lstWhiteListModel.addElement(ss.name); + for (WhiteList.WhiteListPlayer ss : whitelist.op) + lstWhiteListModel.addElement(ss.name); lstWhiteList.setModel(lstWhiteListModel); } void loadFromBannedPlayers() { File mainjar = new File(SettingsManager.settings.mainjar); - if (!mainjar.exists()) return; + if (!mainjar.exists()) + return; File folder = mainjar.getParentFile(); banned = new BannedPlayers(); banned.initByBoth(new File(folder, "banned-players.txt"), new File(folder, "banned-players.json")); @@ -2969,13 +2974,14 @@ public final class MainWindow extends javax.swing.JFrame void loadLocalMods() { String path = Utilities.getPath("mods"); - if (path == null) return; + if (path == null) + return; ArrayList sl = Utilities.findAllFile(new File(path)); DefaultTableModel model = (DefaultTableModel) lstExternalMods.getModel(); while (model.getRowCount() > 0) model.removeRow(0); for (String s : sl) - model.addRow(new Object[]{!SettingsManager.settings.inactiveExtMods.contains(s), s, ModType.getModTypeShowName(ModType.getModType(Utilities.addSeparator(path) + s))}); + model.addRow(new Object[] {!SettingsManager.settings.inactiveExtMods.contains(s), s, ModType.getModTypeShowName(ModType.getModType(Utilities.addSeparator(path) + s))}); lstExternalMods.updateUI(); } @@ -2991,11 +2997,11 @@ public final class MainWindow extends javax.swing.JFrame for (String s : sl) { PluginInformation p = PluginManager.getPluginYML(new File(Utilities.getGameDir() + "plugins" + File.separator + s)); if (p == null) - model.addRow(new Object[]{!SettingsManager.settings.inactivePlugins.contains(s), s, - "", "", "", ""}); + model.addRow(new Object[] {!SettingsManager.settings.inactivePlugins.contains(s), s, + "", "", "", ""}); else - model.addRow(new Object[]{!SettingsManager.settings.inactivePlugins.contains(s), s, - p.name, p.version, p.author, p.description}); + model.addRow(new Object[] {!SettingsManager.settings.inactivePlugins.contains(s), s, + p.name, p.version, p.author, p.description}); } lstPlugins.updateUI(); @@ -3010,7 +3016,7 @@ public final class MainWindow extends javax.swing.JFrame while (model.getRowCount() > 0) model.removeRow(0); for (String s : sl) - model.addRow(new Object[]{!SettingsManager.settings.inactiveCoreMods.contains(s), s, ModType.getModTypeShowName(ModType.getModType(Utilities.addSeparator(path) + s))}); + model.addRow(new Object[] {!SettingsManager.settings.inactiveCoreMods.contains(s), s, ModType.getModTypeShowName(ModType.getModType(Utilities.addSeparator(path) + s))}); lstCoreMods.updateUI(); } @@ -3021,7 +3027,7 @@ public final class MainWindow extends javax.swing.JFrame if (SettingsManager.settings.inactiveWorlds == null) SettingsManager.settings.inactiveWorlds = new ArrayList<>(); for (String world : s) - model.addRow(new Object[]{ + model.addRow(new Object[] { world, Utilities.getGameDir() + world, !SettingsManager.settings.inactiveWorlds.contains(world) }); lstWorlds.updateUI(); @@ -3032,7 +3038,7 @@ public final class MainWindow extends javax.swing.JFrame DefaultTableModel model = (DefaultTableModel) lstBackups.getModel(); for (String backup : al) { String[] names = Utilities.trimExtension(backup).split("\\+"); - model.addRow(new Object[]{ + model.addRow(new Object[] { names[0], names[1], names[2] }); } @@ -3054,27 +3060,28 @@ public final class MainWindow extends javax.swing.JFrame void loadBukkits() { int idx = cboBukkitType.getSelectedIndex(); - if (idx == -1) return; + if (idx == -1) + return; if (idx == 1) { BukkitFormatThread thread = new BukkitFormatThread( - "http://dl.bukkit.org/downloads/craftbukkit/list/beta/", value -> { - craftBukkitBeta = value; - reloadBukkitList(); - }); + "http://dl.bukkit.org/downloads/craftbukkit/list/beta/", value -> { + craftBukkitBeta = value; + reloadBukkitList(); + }); thread.start(); } else if (idx == 0) { BukkitFormatThread thread = new BukkitFormatThread( - "http://dl.bukkit.org/downloads/craftbukkit/list/rb/", value -> { - craftBukkitRecommended = value; - reloadBukkitList(); - }); + "http://dl.bukkit.org/downloads/craftbukkit/list/rb/", value -> { + craftBukkitRecommended = value; + reloadBukkitList(); + }); thread.start(); } else if (idx == 2) { BukkitFormatThread thread = new BukkitFormatThread( - "http://dl.bukkit.org/downloads/craftbukkit/list/dev/", value -> { - craftBukkitDev = value; - reloadBukkitList(); - }); + "http://dl.bukkit.org/downloads/craftbukkit/list/dev/", value -> { + craftBukkitDev = value; + reloadBukkitList(); + }); thread.start(); } } @@ -3104,7 +3111,7 @@ public final class MainWindow extends javax.swing.JFrame while (model.getRowCount() > 0) model.removeRow(0); for (ForgeVersion v : mcpcPackages.get(ver)) { - Object[] row = new Object[]{ + Object[] row = new Object[] { v.mcver, v.ver, v.releasetime }; model.addRow(row); @@ -3131,7 +3138,7 @@ public final class MainWindow extends javax.swing.JFrame while (model.getRowCount() > 0) model.removeRow(0); for (BukkitVersion v : list) { - Object[] row = new Object[]{ + Object[] row = new Object[] { v.buildNumber, v.version }; model.addRow(row); @@ -3185,13 +3192,14 @@ public final class MainWindow extends javax.swing.JFrame ArrayList al = Utilities.findAllFile(new File(Utilities.getGameDir() + "infos-HMCSM")); DefaultTableModel model = (DefaultTableModel) lstInfos.getModel(); for (String s : al) - model.addRow(new Object[]{s, Utilities.trimExtension(s)}); + model.addRow(new Object[] {s, Utilities.trimExtension(s)}); lstInfos.updateUI(); } void refreshReports() { ArrayList al = Utilities.findAllFile(new File(Utilities.getGameDir() + "crash-reports")); - for (String s : al) lstCrashReportsModel.addElement(s); + for (String s : al) + lstCrashReportsModel.addElement(s); lstReports.setModel(lstCrashReportsModel); } @@ -3217,7 +3225,7 @@ public final class MainWindow extends javax.swing.JFrame l = PluginManager.getPluginsByCategory(cboCategory.getSelectedItem().toString()); plugins = l; for (BukkitPlugin p : l) - model.addRow(new Object[]{ + model.addRow(new Object[] { p.plugin_name, p.description, p.getLatestVersion(), p.getLatestBukkit() }); lstBukkitPlugins.updateUI(); @@ -3266,7 +3274,8 @@ public final class MainWindow extends javax.swing.JFrame s.getPlayerNumber(t -> { lblPlayers.setText("在线人数" + t.key); lstPlayersModel.clear(); - for (String s1 : t.value) lstPlayersModel.addElement(s1); + for (String s1 : t.value) + lstPlayersModel.addElement(s1); lstPlayers.setModel(lstPlayersModel); }); else @@ -3329,11 +3338,11 @@ public final class MainWindow extends javax.swing.JFrame Server.init(SettingsManager.settings.mainjar, String.valueOf(SettingsManager.settings.maxMemory)); Server.getInstance() - .addListener((MonitorThread.MonitorThreadListener) this); + .addListener((MonitorThread.MonitorThreadListener) this); Server.getInstance() - .addListener((Event) this); + .addListener((Event) this); Server.getInstance() - .clearSchedule(); + .clearSchedule(); for (Schedule s : SettingsManager.settings.schedules) Server.getInstance().addSchedule(s); @@ -3583,7 +3592,7 @@ public final class MainWindow extends javax.swing.JFrame FileUtils.copyFile(new File(path), newf); DefaultTableModel model = (DefaultTableModel) lstExternalMods.getModel(); - model.addRow(new Object[]{fc.getSelectedFile().getName(), ModType.getModTypeShowName(ModType.getModType(newf))}); + model.addRow(new Object[] {fc.getSelectedFile().getName(), ModType.getModTypeShowName(ModType.getModType(newf))}); lstExternalMods.updateUI(); } catch (IOException e) { MessageBox.Show(bundle.getString("添加失败")); @@ -3624,7 +3633,7 @@ public final class MainWindow extends javax.swing.JFrame DefaultTableModel model = (DefaultTableModel) lstCoreMods.getModel(); lstCoreMods.updateUI(); - model.addRow(new Object[]{fc.getSelectedFile().getName(), ModType.getModTypeShowName(ModType.getModType(newf))}); + model.addRow(new Object[] {fc.getSelectedFile().getName(), ModType.getModTypeShowName(ModType.getModType(newf))}); FileUtils.copyFile(new File(path), newf); } catch (IOException e) { MessageBox.Show(java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/VersionSettingsWindow").getString("添加失败")); @@ -3666,7 +3675,7 @@ public final class MainWindow extends javax.swing.JFrame DefaultTableModel model = (DefaultTableModel) lstPlugins.getModel(); lstPlugins.updateUI(); - model.addRow(new Object[]{fc.getSelectedFile().getName(), ModType.getModTypeShowName(ModType.getModType(newf))}); + model.addRow(new Object[] {fc.getSelectedFile().getName(), ModType.getModTypeShowName(ModType.getModType(newf))}); FileUtils.copyFile(new File(path), newf); } catch (IOException e) { MessageBox.Show(java.util.ResourceBundle.getBundle("org/jackhuang/hellominecraftlauncher/VersionSettingsWindow").getString("添加失败")); @@ -3860,9 +3869,9 @@ public final class MainWindow extends javax.swing.JFrame return; DefaultTableModel model = (DefaultTableModel) lstBackups.getModel(); Utilities.deleteAll(new File(BackupManager.backupDir() - + model.getValueAt(index, 0) + "+" - + model.getValueAt(index, 1) + "+" - + model.getValueAt(index, 2) + ".zip")); + + model.getValueAt(index, 0) + "+" + + model.getValueAt(index, 1) + "+" + + model.getValueAt(index, 2) + ".zip")); model.removeRow(index); }//GEN-LAST:event_btnDeleteBackupActionPerformed @@ -3872,9 +3881,9 @@ public final class MainWindow extends javax.swing.JFrame return; DefaultTableModel model = (DefaultTableModel) lstBackups.getModel(); BackupManager.restoreBackup(BackupManager.backupDir() - + model.getValueAt(index, 0) + "+" - + model.getValueAt(index, 1) + "+" - + model.getValueAt(index, 2) + ".zip"); + + model.getValueAt(index, 0) + "+" + + model.getValueAt(index, 1) + "+" + + model.getValueAt(index, 2) + ".zip"); }//GEN-LAST:event_btnRestoreBackupActionPerformed private void btnRefreshDownloadsActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnRefreshDownloadsActionPerformed @@ -4024,7 +4033,7 @@ public final class MainWindow extends javax.swing.JFrame BukkitVersion v = cb.get(idx); File file = new File(IOUtils.currentDir(), "craftbukkit-" + ext + "-" + v.version + ".jar"); TaskWindow.getInstance().addTask(new FileDownloadTask(v.downloadLink, IOUtils.tryGetCanonicalFile(file)).setTag("bukkit-" + ext + "-" + v.version)) - .start(); + .start(); }//GEN-LAST:event_btnDownloadCraftbukkitActionPerformed private void btnDownloadMCPCActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnDownloadMCPCActionPerformed @@ -4133,8 +4142,8 @@ public final class MainWindow extends javax.swing.JFrame SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); try { FileUtils.write(new File(Utilities.getGameDir() + "infos-HMCSM" - + File.separator + format.format(new Date()) + ".txt"), - txtMain.getText()); + + File.separator + format.format(new Date()) + ".txt"), + txtMain.getText()); } catch (IOException ex) { HMCLog.warn("Failed to save info", ex); } @@ -4168,10 +4177,10 @@ public final class MainWindow extends javax.swing.JFrame MonitorThread mainThread; DefaultListModel lstOPModel = new DefaultListModel(), - lstWhiteListModel = new DefaultListModel(), - lstBannedModel = new DefaultListModel(), - lstCrashReportsModel = new DefaultListModel(), - lstPlayersModel = new DefaultListModel(); + lstWhiteListModel = new DefaultListModel(), + lstBannedModel = new DefaultListModel(), + lstCrashReportsModel = new DefaultListModel(), + lstPlayersModel = new DefaultListModel(); List plugins; Map> mcpcPackages; List craftBukkitRecommended, craftBukkitBeta, craftBukkitDev; diff --git a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/PluginInfoDialog.java b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/PluginInfoDialog.java index f87b18435..633565ad5 100644 --- a/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/PluginInfoDialog.java +++ b/HMCSM/src/main/java/org/jackhuang/hellominecraft/svrmgr/views/PluginInfoDialog.java @@ -49,7 +49,7 @@ public class PluginInfoDialog extends javax.swing.JDialog { //SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); DefaultTableModel model = (DefaultTableModel) lstPluginInfo.getModel(); for (PluginVersion v : pi.versions) - model.addRow(new Object[]{ + model.addRow(new Object[] { v.date, v.version, v.filename, StrUtils.parseParams("", v.game_versions.toArray(), ", "), v.type }); @@ -231,9 +231,9 @@ public class PluginInfoDialog extends javax.swing.JDialog { return; String url = pi.versions.get(index).download; TaskWindow.getInstance() - .addTask(new FileDownloadTask(url, new File(Utilities.getGameDir() + "plugins" - + File.separator + pi.versions.get(index).filename))) - .start(); + .addTask(new FileDownloadTask(url, new File(Utilities.getGameDir() + "plugins" + + File.separator + pi.versions.get(index).filename))) + .start(); }//GEN-LAST:event_jButton1ActionPerformed // Variables declaration - do not modify//GEN-BEGIN:variables diff --git a/HMCSM/src/main/resources/index.html b/HMCSM/src/main/resources/index.html index 835f442b8..7885f78ac 100644 --- a/HMCSM/src/main/resources/index.html +++ b/HMCSM/src/main/resources/index.html @@ -11,6 +11,6 @@ and open the template in the editor. - +