1
2
3
4
5
6
7
8
9
10
11 package edu.uci.ics.jung.io.graphml.parser;
12
13 import java.io.Reader;
14 import java.io.StringReader;
15
16 import javax.xml.stream.XMLEventReader;
17 import javax.xml.stream.XMLInputFactory;
18 import javax.xml.stream.events.StartElement;
19 import javax.xml.stream.events.XMLEvent;
20
21 import org.junit.Assert;
22 import org.junit.Before;
23 import org.junit.After;
24
25 import edu.uci.ics.jung.graph.Hypergraph;
26 import edu.uci.ics.jung.io.graphml.DummyEdge;
27 import edu.uci.ics.jung.io.graphml.DummyGraphObjectBase;
28 import edu.uci.ics.jung.io.graphml.KeyMap;
29 import edu.uci.ics.jung.io.graphml.DummyVertex;
30
31 public abstract class AbstractParserTest {
32
33
34 private ElementParserRegistry<Hypergraph<DummyVertex,DummyEdge>,DummyVertex,DummyEdge> registry;
35
36 @Before
37 public void setUp() throws Exception {
38 registry = new ElementParserRegistry<Hypergraph<DummyVertex,DummyEdge>,DummyVertex,DummyEdge>(
39 new KeyMap(),
40 new DummyGraphObjectBase.UndirectedSparseGraphFactory(),
41 new DummyVertex.Factory(),
42 new DummyEdge.EdgeFactory(),
43 new DummyEdge.HyperEdgeFactory());
44 }
45
46 @After
47 public void tearDown() throws Exception {
48 registry = null;
49 }
50
51 protected Object readObject(String xml) throws Exception {
52
53 Reader fileReader = new StringReader(xml);
54 XMLInputFactory factory = XMLInputFactory.newInstance();
55 XMLEventReader xmlEventReader = factory.createXMLEventReader(fileReader);
56 xmlEventReader = factory.createFilteredReader(xmlEventReader,
57 new GraphMLEventFilter());
58
59 try {
60 while( xmlEventReader.hasNext() ) {
61 XMLEvent event = xmlEventReader.nextEvent();
62 if (event.isStartElement()) {
63
64 StartElement start = event.asStartElement();
65 String name = start.getName().getLocalPart();
66 return registry.getParser(name).parse(xmlEventReader, start);
67 }
68 }
69 } finally {
70 xmlEventReader.close();
71 }
72
73 Assert.fail("failed to read object from XML: " + xml);
74 return null;
75 }
76 }