View Javadoc
1   /*
2    * Copyright (c) 2008, The JUNG Authors
3    *
4    * All rights reserved.
5    *
6    * This software is open-source under the BSD license; see either
7    * "license.txt" or
8    * https://github.com/jrtom/jung/blob/master/LICENSE for a description.
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  }