[Fix] Fixed not closing document in StrolchXmlHelper, added test
This commit is contained in:
parent
2724bb9706
commit
538ded80b8
|
@ -91,4 +91,12 @@ public class SimpleStrolchElementListener implements StrolchElementListener {
|
|||
return Collections.emptyList();
|
||||
return new ArrayList<>(this.activities.values());
|
||||
}
|
||||
|
||||
public List<StrolchRootElement> getElements() {
|
||||
List<StrolchRootElement> elements = new ArrayList<>();
|
||||
elements.addAll(getResources());
|
||||
elements.addAll(getOrders());
|
||||
elements.addAll(getActivities());
|
||||
return elements;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package li.strolch.model.xml;
|
|||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import javax.xml.stream.FactoryConfigurationError;
|
||||
|
@ -43,7 +44,13 @@ public class StrolchXmlHelper {
|
|||
return elementListener.getActivity(id);
|
||||
}
|
||||
|
||||
public static void writeToFile(File file, List<StrolchRootElement> elements) {
|
||||
public static List<StrolchRootElement> parseFile(File file) {
|
||||
SimpleStrolchElementListener elementListener = new SimpleStrolchElementListener();
|
||||
new XmlModelSaxFileReader(elementListener, file, false).parseFile();
|
||||
return elementListener.getElements();
|
||||
}
|
||||
|
||||
public static void writeToFile(File file, Collection<StrolchRootElement> elements) {
|
||||
|
||||
try (FileOutputStream out = new FileOutputStream(file)) {
|
||||
|
||||
|
@ -53,6 +60,8 @@ public class StrolchXmlHelper {
|
|||
element.accept(new StrolchElementToSaxWriterVisitor(writer));
|
||||
}
|
||||
|
||||
writer.writeEndDocument();
|
||||
|
||||
} catch (Exception e) {
|
||||
throw new RuntimeException("Failed to write elements to " + file, e);
|
||||
}
|
||||
|
|
|
@ -0,0 +1,34 @@
|
|||
package li.strolch.model;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import li.strolch.model.activity.Activity;
|
||||
import li.strolch.model.activity.TimeOrdering;
|
||||
import li.strolch.model.xml.StrolchXmlHelper;
|
||||
|
||||
public class StrolchXmlHelperTest {
|
||||
|
||||
@Test
|
||||
public void shouldWriteAndReadXml() {
|
||||
|
||||
File outFile = new File("target/" + getClass().getSimpleName());
|
||||
|
||||
Activity activity = ModelGenerator.createActivity("activity", "Activity", "Activity", TimeOrdering.SERIES);
|
||||
Resource resource = ModelGenerator.createResource("res", "Res", "Res");
|
||||
Order order = ModelGenerator.createOrder("order", "Order", "Order");
|
||||
|
||||
Set<StrolchRootElement> elements = new HashSet<>(Arrays.asList(activity, resource, order));
|
||||
|
||||
StrolchXmlHelper.writeToFile(outFile, elements);
|
||||
Set<StrolchRootElement> result = new HashSet<>(StrolchXmlHelper.parseFile(outFile));
|
||||
|
||||
assertEquals(elements, result);
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue