Back compatibility fix for toggle switch

This commit is contained in:
Bane Stojkovic
2022-12-08 22:32:34 +01:00
parent be996d6494
commit c5a095cad9
@@ -31,6 +31,8 @@ import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.lang.reflect.Modifier;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
@@ -261,24 +263,27 @@ public class ProjectFileManager {
} catch (Exception e) {
warnings.add("Could not read file version number, the file may be corrupted.");
}
FileInputStream fis = new FileInputStream(fileName);
String xml = new String(Files.readAllBytes(Paths.get(fileName)));
missingFields.clear();
try {
Reader reader = new InputStreamReader(fis, "UTF-8");
project = (Project) xStream.fromXML(reader);
try {
xml = cleanupV3XML(xml);
project = (Project) xStream.fromXML(xml);
} catch (Exception e) {
LOG.warn("Could not open with the new xStream, trying the old one", e);
fis.close();
fis = new FileInputStream(fileName);
project = (Project) xStreamOld.fromXML(fis);
project = (Project) xStreamOld.fromXML(xml);
}
if (!missingFields.isEmpty()) {
LOG.warn("The opened file is missing the following properties: " + String.join(", ", missingFields));
warnings.add("The project references unknown component properties, most likely because it was created with a newer version of DIYLC.");
}
fis.close();
return project;
}
private String cleanupV3XML(String xml) {
xml = xml.replaceAll("<name defined-in=\"diylc.AbstractComponent\"></name>", "");
return xml;
}
private VersionNumber readV3Version(String fileName) throws Exception {
File fXmlFile = new File(fileName);