package com.gmail.nossr50.util;

import java.io.InputStreamReader;
import java.net.URL;
import java.net.UnknownHostException;

import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;

import com.gmail.nossr50.mcMMO;
import com.gmail.nossr50.config.Config;

public class UpdateChecker {
    private UpdateChecker() {}

    public static boolean updateAvailable() throws Exception {
        String checkType = "release";
        if (Config.getInstance().getPreferBeta()) {
            checkType = "latest";
        }
        String version = mcMMO.p.getDescription().getVersion();
        URL url = new URL("http://api.bukget.org/api2/bukkit/plugin/mcmmo/" + checkType);
        InputStreamReader isr;
        try {
            isr = new InputStreamReader(url.openStream());
        }
        catch (UnknownHostException e) {
            return false;
        }

        String newVersion;
        try {
            JSONParser jp = new JSONParser();
            Object o = jp.parse(isr);

            if (!(o instanceof JSONObject)) {
                isr.close();
                return false;
            }

            JSONObject jo = (JSONObject) o;
            jo = (JSONObject) jo.get("versions");
            newVersion = (String) jo.get("version");

            String[] oldTokens = version.replaceAll("(?i)(-)(.+?)(-)", "-").split("[.]|-b");
            String[] newTokens = newVersion.replaceAll("(?i)(-)(.+?)(-)", "-").split("[.]|-b");

            for (int i = 0; i < 4; i++) {
                Integer newVer = Integer.parseInt(newTokens[i]);
                Integer oldVer;
                try {
                    oldVer = Integer.parseInt(oldTokens[i]);
                }
                catch (NumberFormatException e) {
                    oldVer = 0;
                }
                if (oldVer < newVer) {
                    isr.close();
                    return true;
                }
            }
            return false;
        }
        catch (ParseException e) {
            isr.close();
            return false;
        }
    }
}

@@ -1097,37 +1097,8 @@
 ) %7B%0A
-                isr.close();%0A
     
@@ -1859,41 +1859,8 @@
 ) %7B%0A
-                    isr.close();%0A
     
@@ -2007,19 +2007,20 @@
     
-isr.close()
+return false
 ;%0A  
@@ -2025,32 +2025,59 @@
         
+%7D%0A
     
-return false
+    finally %7B%0A            isr.close()
 ;%0A      

Use finally to close the update checker stream