[Fix] Fixed not closing document in StrolchXmlHelper, added test

This commit is contained in:
Robert von Burg 2017-03-02 19:41:22 +01:00
parent 2724bb9706
commit 538ded80b8
3 changed files with 52 additions and 1 deletions

View File

@ -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;
}
}

View File

@ -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);
}

View File

@ -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);
}
}