Changed the XML reader to take an InputStream rather than InputSource- this has changed everything that used an InputSource to use an InputStream. Made the XML Readers actually read after they received a new InputStream. Changed it so the table updates when the boats in the race change. #pair[jjg64, cbt24] #story[782]

This commit is contained in:
Joseph Gardner
2017-05-01 16:42:47 +12:00
parent 3f42d56502
commit 41a94495aa
12 changed files with 42 additions and 28 deletions
@@ -96,7 +96,7 @@ public class BinaryMessageDecoder {
// System.out.println("XML Message!");
XMLMessageDecoder xmdecoder = new XMLMessageDecoder(this.message);
xmdecoder.decode();
data = new XMLMessage(xmdecoder.getAckNumber(), xmdecoder.getTimeStamp(), xmdecoder.getXmlMsgSubType(), xmdecoder.getSequenceNumber(), xmdecoder.getXmlMsgLength(), xmdecoder.getXmlMessageInputSource());
data = new XMLMessage(xmdecoder.getAckNumber(), xmdecoder.getTimeStamp(), xmdecoder.getXmlMsgSubType(), xmdecoder.getSequenceNumber(), xmdecoder.getXmlMsgLength(), xmdecoder.getXmlMessageInputStream());
break;
case RACESTARTSTATUS:
// System.out.println("Race Start Status Message");
@@ -2,9 +2,12 @@ package seng302.Networking.MessageDecoders;
import org.xml.sax.InputSource;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.StringReader;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.charset.StandardCharsets;
import java.util.Arrays;
import static seng302.Networking.Utils.ByteConverter.bytesToLong;
@@ -74,8 +77,9 @@ public class XMLMessageDecoder {
* this will be used latter for the vis
* @return xml string as inputsource
*/
public InputSource getXmlMessageInputSource() {
InputSource is = new InputSource(new StringReader(xmlMessage.trim()));
public InputStream getXmlMessageInputStream() {
InputStream is = new ByteArrayInputStream(xmlMessage.trim().getBytes(StandardCharsets.UTF_8));
// InputSource is = new InputSource(new StringReader(xmlMessage.trim()));
return is;
}
@@ -2,6 +2,8 @@ package seng302.Networking.Utils;
import org.xml.sax.InputSource;
import java.io.InputStream;
/**
* Created by fwy13 on 25/04/17.
*/
@@ -12,13 +14,13 @@ public class XMLMessage extends AC35Data{
private int xmlMsgSubType;
private int sequenceNumber;
private int xmlMsgLength;
private InputSource xmlMessage;
private InputStream xmlMessage;
public static int XMLTypeRegatta = 5;
public static int XMLTypeRace = 6;
public static int XMLTypeBoat = 7;
public XMLMessage(int ackNumber, long timeStamp, int xmlMsgSubType, int sequenceNumber, int xmlMsgLength, InputSource xmlMessage){
public XMLMessage(int ackNumber, long timeStamp, int xmlMsgSubType, int sequenceNumber, int xmlMsgLength, InputStream xmlMessage){
super(MessageType.XMLMESSAGE);
this.ackNumber = ackNumber;
this.timeStamp = timeStamp;
@@ -28,7 +30,7 @@ public class XMLMessage extends AC35Data{
this.xmlMessage = xmlMessage;
}
public InputSource getXmlMessage() {
public InputStream getXmlMessage() {
return xmlMessage;
}