Разделение на человекочитаемый gson и машинный

This commit is contained in:
Gravit 2018-12-24 17:10:53 +07:00
parent 7e97915fd1
commit 8df7d148da
No known key found for this signature in database
GPG key ID: 061981E1E85D3216
4 changed files with 28 additions and 7 deletions

View file

@ -1,5 +1,6 @@
package ru.gravit.launchserver; package ru.gravit.launchserver;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
import com.google.gson.annotations.Expose; import com.google.gson.annotations.Expose;
import ru.gravit.launcher.Launcher; import ru.gravit.launcher.Launcher;
@ -262,6 +263,9 @@ public static void main(String... args) throws Throwable {
public volatile Map<String, SignedObjectHolder<HashedDir>> updatesDirMap; public volatile Map<String, SignedObjectHolder<HashedDir>> updatesDirMap;
public static Gson gson;
public static GsonBuilder gsonBuilder;
public LaunchServer(Path dir) throws IOException, InvalidKeySpecException { public LaunchServer(Path dir) throws IOException, InvalidKeySpecException {
// Setup config locations // Setup config locations
this.dir = dir; this.dir = dir;
@ -380,12 +384,20 @@ public static void initGson()
{ {
if(Launcher.gson != null) return; if(Launcher.gson != null) return;
Launcher.gsonBuilder = new GsonBuilder(); Launcher.gsonBuilder = new GsonBuilder();
Launcher.gsonBuilder.setPrettyPrinting();
Launcher.gsonBuilder.registerTypeAdapter(AuthProvider.class, new AuthProviderAdapter()); Launcher.gsonBuilder.registerTypeAdapter(AuthProvider.class, new AuthProviderAdapter());
Launcher.gsonBuilder.registerTypeAdapter(TextureProvider.class, new TextureProviderAdapter()); Launcher.gsonBuilder.registerTypeAdapter(TextureProvider.class, new TextureProviderAdapter());
Launcher.gsonBuilder.registerTypeAdapter(AuthHandler.class, new AuthHandlerAdapter()); Launcher.gsonBuilder.registerTypeAdapter(AuthHandler.class, new AuthHandlerAdapter());
Launcher.gsonBuilder.registerTypeAdapter(HWIDHandler.class, new HWIDHandlerAdapter()); Launcher.gsonBuilder.registerTypeAdapter(HWIDHandler.class, new HWIDHandlerAdapter());
Launcher.gson = Launcher.gsonBuilder.create(); Launcher.gson = Launcher.gsonBuilder.create();
//Human readable
LaunchServer.gsonBuilder = new GsonBuilder();
LaunchServer.gsonBuilder.setPrettyPrinting();
LaunchServer.gsonBuilder.registerTypeAdapter(AuthProvider.class, new AuthProviderAdapter());
LaunchServer.gsonBuilder.registerTypeAdapter(TextureProvider.class, new TextureProviderAdapter());
LaunchServer.gsonBuilder.registerTypeAdapter(AuthHandler.class, new AuthHandlerAdapter());
LaunchServer.gsonBuilder.registerTypeAdapter(HWIDHandler.class, new HWIDHandlerAdapter());
LaunchServer.gson = LaunchServer.gsonBuilder.create();
} }
private LauncherBinary binary() { private LauncherBinary binary() {
@ -454,7 +466,7 @@ private void generateConfigIfNotExists() throws IOException {
// Write LaunchServer config // Write LaunchServer config
LogHelper.info("Writing LaunchServer config file"); LogHelper.info("Writing LaunchServer config file");
try (BufferedWriter writer = IOHelper.newWriter(configFile)) { try (BufferedWriter writer = IOHelper.newWriter(configFile)) {
Launcher.gson.toJson(newConfig,writer); LaunchServer.gson.toJson(newConfig,writer);
} }
} }

View file

@ -39,7 +39,7 @@ public void invoke(String... args) throws Exception {
ClientProfile profile = new ClientProfile("1.7.10","asset1.7.10",0,"Test1.7.10","localhost",25565,true,false,"net.minecraft.launchwrapper.Launch"); ClientProfile profile = new ClientProfile("1.7.10","asset1.7.10",0,"Test1.7.10","localhost",25565,true,false,"net.minecraft.launchwrapper.Launch");
try(Writer writer = IOHelper.newWriter(LaunchServer.server.dir.resolve("profiles").resolve("Test.cfg"))) try(Writer writer = IOHelper.newWriter(LaunchServer.server.dir.resolve("profiles").resolve("Test.cfg")))
{ {
Launcher.gson.toJson(profile,writer); LaunchServer.gson.toJson(profile,writer);
} }

View file

@ -7,6 +7,7 @@
import ru.gravit.launchserver.command.Command; import ru.gravit.launchserver.command.Command;
import ru.gravit.launchserver.socket.Client; import ru.gravit.launchserver.socket.Client;
import ru.gravit.utils.helper.IOHelper; import ru.gravit.utils.helper.IOHelper;
import ru.gravit.utils.helper.LogHelper;
import java.io.Reader; import java.io.Reader;
import java.io.Writer; import java.io.Writer;
@ -35,17 +36,25 @@ public void invoke(String... args) throws Exception {
verifyArgs(args,2); verifyArgs(args,2);
if(args[0].equals("unload")) if(args[0].equals("unload"))
{ {
LogHelper.info("Sessions write to %s",args[1]);
Set<Client> clientSet = server.sessionManager.getSessions();
try(Writer writer = IOHelper.newWriter(Paths.get(args[1]))) try(Writer writer = IOHelper.newWriter(Paths.get(args[1])))
{ {
Launcher.gson.toJson(server.sessionManager.getSessions(),writer); LaunchServer.gson.toJson(clientSet,writer);
} }
LogHelper.subInfo("Write %d sessions",clientSet.size());
} else if(args[0].equals("load")) } else if(args[0].equals("load"))
{ {
LogHelper.info("Sessions read from %s",args[1]);
int size = 0;
try(Reader reader = IOHelper.newReader(Paths.get(args[1]))) try(Reader reader = IOHelper.newReader(Paths.get(args[1])))
{ {
Type setType = new TypeToken<HashSet<Client>>(){}.getType(); Type setType = new TypeToken<HashSet<Client>>(){}.getType();
server.sessionManager.loadSessions(Launcher.gson.fromJson(reader,setType)); Set<Client> clientSet = LaunchServer.gson.fromJson(reader,setType);
size = clientSet.size();
server.sessionManager.loadSessions(clientSet);
} }
LogHelper.subInfo("Readed %d sessions",size);
} }
} }
} }

View file

@ -53,13 +53,13 @@ public void invoke(String... args) throws IOException, CommandException {
ClientProfile client; ClientProfile client;
String profilePath = String.format("ru/gravit/launchserver/defaults/profile%s.cfg", version.name); String profilePath = String.format("ru/gravit/launchserver/defaults/profile%s.cfg", version.name);
try (BufferedReader reader = IOHelper.newReader(IOHelper.getResourceURL(profilePath))) { try (BufferedReader reader = IOHelper.newReader(IOHelper.getResourceURL(profilePath))) {
client = Launcher.gson.fromJson(reader,ClientProfile.class); client = LaunchServer.gson.fromJson(reader,ClientProfile.class);
} }
client.setTitle(dirName); client.setTitle(dirName);
client.setDir(dirName); client.setDir(dirName);
try (BufferedWriter writer = IOHelper.newWriter(IOHelper.resolveIncremental(server.profilesDir, try (BufferedWriter writer = IOHelper.newWriter(IOHelper.resolveIncremental(server.profilesDir,
dirName, "cfg"))) { dirName, "cfg"))) {
Launcher.gson.toJson(client,writer); LaunchServer.gson.toJson(client,writer);
} }
// Finished // Finished