X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Fsone%2Fcore%2FSoneParser.java;h=7900a10a31f19a46d4bb40c4ebd0841f8581d2b8;hb=f1a337e97c0188170e8ea8bb06b99324f3a07dee;hp=79fc09ae9fc474892c594679a96d292f386a1b28;hpb=9f9834453e9555175e4771932d9521209bd7188c;p=Sone.git diff --git a/src/main/java/net/pterodactylus/sone/core/SoneParser.java b/src/main/java/net/pterodactylus/sone/core/SoneParser.java index 79fc09a..7900a10 100644 --- a/src/main/java/net/pterodactylus/sone/core/SoneParser.java +++ b/src/main/java/net/pterodactylus/sone/core/SoneParser.java @@ -90,17 +90,29 @@ public class SoneParser { return null; } - Sone sone = new DefaultSone(new MemoryDatabase(null), originalSone.getId(), originalSone.isLocal()); - SimpleXML soneXml; try { soneXml = SimpleXML.fromDocument(document); } catch (NullPointerException npe1) { /* for some reason, invalid XML can cause NPEs. */ - logger.log(Level.WARNING, String.format("XML for Sone %s can not be parsed!", sone), npe1); + logger.log(Level.WARNING, String.format("XML for Sone %s can not be parsed!", originalSone), npe1); return null; } + SimpleXML clientXml = soneXml.getNode("client"); + Client soneClient = originalSone.getClient(); + if (clientXml != null) { + String clientName = clientXml.getValue("name", null); + String clientVersion = clientXml.getValue("version", null); + if ((clientName == null) || (clientVersion == null)) { + logger.log(Level.WARNING, String.format("Download Sone %s with client XML but missing name or version!", originalSone)); + return null; + } + soneClient = new Client(clientName, clientVersion); + } + + Sone sone = new DefaultSone(new MemoryDatabase(null), originalSone.getId(), originalSone.isLocal(), soneClient); + Integer protocolVersion = null; String soneProtocolVersion = soneXml.getValue("protocol-version", null); if (soneProtocolVersion != null) { @@ -136,17 +148,6 @@ public class SoneParser { return null; } - SimpleXML clientXml = soneXml.getNode("client"); - if (clientXml != null) { - String clientName = clientXml.getValue("name", null); - String clientVersion = clientXml.getValue("version", null); - if ((clientName == null) || (clientVersion == null)) { - logger.log(Level.WARNING, String.format("Download Sone %s with client XML but missing name or version!", sone)); - return null; - } - sone.setClient(new Client(clientName, clientVersion)); - } - SimpleXML profileXml = soneXml.getNode("profile"); if (profileXml == null) { /* TODO - mark Sone as bad. */