aboutsummaryrefslogtreecommitdiff
path: root/libraries
diff options
context:
space:
mode:
authoricelimetea <fr3shtea@outlook.com>2022-04-24 14:45:01 +0100
committericelimetea <fr3shtea@outlook.com>2022-04-24 14:45:01 +0100
commitc968c1be7892fbc1ba0571d30a03b20e3f8a5abc (patch)
tree4d27e0624d6a4025002be232722059fd8db78708 /libraries
parent5adcc26190b82dc9c1050452645d762f5e8b5a5e (diff)
downloadPrismLauncher-c968c1be7892fbc1ba0571d30a03b20e3f8a5abc.tar.gz
PrismLauncher-c968c1be7892fbc1ba0571d30a03b20e3f8a5abc.tar.bz2
PrismLauncher-c968c1be7892fbc1ba0571d30a03b20e3f8a5abc.zip
Refactor some parts of NewLaunch
Diffstat (limited to 'libraries')
-rw-r--r--libraries/launcher/org/multimc/EntryPoint.java155
-rw-r--r--libraries/launcher/org/multimc/Launcher.java2
-rw-r--r--libraries/launcher/org/multimc/ParamBucket.java51
3 files changed, 95 insertions, 113 deletions
diff --git a/libraries/launcher/org/multimc/EntryPoint.java b/libraries/launcher/org/multimc/EntryPoint.java
index 0f904f5f..c923bbde 100644
--- a/libraries/launcher/org/multimc/EntryPoint.java
+++ b/libraries/launcher/org/multimc/EntryPoint.java
@@ -16,22 +16,24 @@ package org.multimc;/*
import org.multimc.onesix.OneSixLauncher;
-import java.io.*;
-import java.nio.charset.Charset;
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.nio.charset.StandardCharsets;
public class EntryPoint
{
- private enum Action
- {
- Proceed,
- Launch,
- Abort
- }
+
+ private final ParamBucket params = new ParamBucket();
+
+ private org.multimc.Launcher launcher;
public static void main(String[] args)
{
EntryPoint listener = new EntryPoint();
+
int retCode = listener.listen();
+
if (retCode != 0)
{
System.out.println("Exiting with " + retCode);
@@ -41,111 +43,92 @@ public class EntryPoint
private Action parseLine(String inData) throws ParseException
{
- String[] pair = inData.split(" ", 2);
+ String[] pair = inData.split("\\s+", 2);
- if(pair.length == 1)
- {
- String command = pair[0];
- if (pair[0].equals("launch"))
+ if (pair.length == 0)
+ throw new ParseException("Unexpected empty string!");
+
+ switch (pair[0]) {
+ case "launch": {
return Action.Launch;
+ }
- else if (pair[0].equals("abort"))
+ case "abort": {
return Action.Abort;
+ }
- else throw new ParseException("Error while parsing:" + pair[0]);
- }
+ case "launcher": {
+ if (pair.length != 2)
+ throw new ParseException("Expected 2 tokens, got 1!");
- if(pair.length != 2)
- throw new ParseException("Pair length is not 2.");
+ if (pair[1].equals("onesix")) {
+ launcher = new OneSixLauncher();
- String command = pair[0];
- String param = pair[1];
+ Utils.log("Using onesix launcher.");
+
+ return Action.Proceed;
+ } else {
+ throw new ParseException("Invalid launcher type: " + pair[1]);
+ }
+ }
+
+ default: {
+ if (pair.length != 2)
+ throw new ParseException("Error while parsing:" + pair[0]);
+
+ params.add(pair[0], pair[1]);
- if(command.equals("launcher"))
- {
- if(param.equals("onesix"))
- {
- m_launcher = new OneSixLauncher();
- Utils.log("Using onesix launcher.");
- Utils.log();
return Action.Proceed;
}
- else
- throw new ParseException("Invalid launcher type: " + param);
}
-
- m_params.add(command, param);
- //System.out.println(command + " : " + param);
- return Action.Proceed;
}
public int listen()
{
- BufferedReader buffer;
- try
- {
- buffer = new BufferedReader(new InputStreamReader(System.in, "UTF-8"));
- } catch (UnsupportedEncodingException e)
- {
- System.err.println("For some reason, your java does not support UTF-8. Consider living in the current century.");
+ Action action = Action.Proceed;
+
+ try (BufferedReader reader = new BufferedReader(new InputStreamReader(
+ System.in,
+ StandardCharsets.UTF_8
+ ))) {
+ String line;
+
+ while (action == Action.Proceed) {
+ if ((line = reader.readLine()) != null) {
+ action = parseLine(line);
+ } else {
+ action = Action.Abort;
+ }
+ }
+ } catch (IOException | ParseException e) {
+ Utils.log("Launcher ABORT due to exception:");
+
e.printStackTrace();
+
return 1;
}
- boolean isListening = true;
- boolean isAborted = false;
+
// Main loop
- while (isListening)
- {
- String inData;
- try
- {
- // Read from the pipe one line at a time
- inData = buffer.readLine();
- if (inData != null)
- {
- Action a = parseLine(inData);
- if(a == Action.Abort)
- {
- isListening = false;
- isAborted = true;
- }
- if(a == Action.Launch)
- {
- isListening = false;
- }
- }
- else
- {
- isListening = false;
- isAborted = true;
- }
- }
- catch (IOException e)
- {
- System.err.println("Launcher ABORT due to IO exception:");
- e.printStackTrace();
- return 1;
- }
- catch (ParseException e)
- {
- System.err.println("Launcher ABORT due to PARSE exception:");
- e.printStackTrace();
- return 1;
- }
- }
- if(isAborted)
+ if (action == Action.Abort)
{
System.err.println("Launch aborted by the launcher.");
return 1;
}
- if(m_launcher != null)
+
+ if (launcher != null)
{
- return m_launcher.launch(m_params);
+ return launcher.launch(params);
}
+
System.err.println("No valid launcher implementation specified.");
+
return 1;
}
- private ParamBucket m_params = new ParamBucket();
- private org.multimc.Launcher m_launcher;
+ private enum Action {
+ Proceed,
+ Launch,
+ Abort
+ }
+
}
diff --git a/libraries/launcher/org/multimc/Launcher.java b/libraries/launcher/org/multimc/Launcher.java
index d8cb6d1b..c5e8fbc1 100644
--- a/libraries/launcher/org/multimc/Launcher.java
+++ b/libraries/launcher/org/multimc/Launcher.java
@@ -18,5 +18,5 @@ package org.multimc;
public interface Launcher
{
- abstract int launch(ParamBucket params);
+ int launch(ParamBucket params);
}
diff --git a/libraries/launcher/org/multimc/ParamBucket.java b/libraries/launcher/org/multimc/ParamBucket.java
index 2fde1329..8ff03ddc 100644
--- a/libraries/launcher/org/multimc/ParamBucket.java
+++ b/libraries/launcher/org/multimc/ParamBucket.java
@@ -19,62 +19,62 @@ package org.multimc;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
+import java.util.Map;
public class ParamBucket
{
+
+ private final Map<String, List<String>> paramsMap = new HashMap<>();
+
public void add(String key, String value)
{
- List<String> coll = null;
- if(!m_params.containsKey(key))
- {
- coll = new ArrayList<String>();
- m_params.put(key, coll);
- }
- else
- {
- coll = m_params.get(key);
- }
- coll.add(value);
+ paramsMap.computeIfAbsent(key, k -> new ArrayList<>())
+ .add(value);
}
public List<String> all(String key) throws NotFoundException
{
- if(!m_params.containsKey(key))
+ List<String> params = paramsMap.get(key);
+
+ if (params == null)
throw new NotFoundException();
- return m_params.get(key);
+
+ return params;
}
public List<String> allSafe(String key, List<String> def)
{
- if(!m_params.containsKey(key) || m_params.get(key).size() < 1)
- {
+ List<String> params = paramsMap.get(key);
+
+ if (params == null || params.isEmpty())
return def;
- }
- return m_params.get(key);
+
+ return params;
}
public List<String> allSafe(String key)
{
- return allSafe(key, new ArrayList<String>());
+ return allSafe(key, new ArrayList<>());
}
public String first(String key) throws NotFoundException
{
List<String> list = all(key);
- if(list.size() < 1)
- {
+
+ if (list.isEmpty())
throw new NotFoundException();
- }
+
return list.get(0);
}
public String firstSafe(String key, String def)
{
- if(!m_params.containsKey(key) || m_params.get(key).size() < 1)
- {
+ List<String> params = paramsMap.get(key);
+
+ if (params == null || params.isEmpty())
return def;
- }
- return m_params.get(key).get(0);
+
+ return params.get(0);
}
public String firstSafe(String key)
@@ -82,5 +82,4 @@ public class ParamBucket
return firstSafe(key, "");
}
- private HashMap<String, List<String>> m_params = new HashMap<String, List<String>>();
}