### Question:
BlueprintsGraphMetaverseReader implements IMetaverseReader { @Override public IMetaverseNode findNode( String id ) { Vertex vertex = getGraph().getVertex( id ); if ( vertex == null ) { return null; } MetaverseUtil.enhanceVertex( vertex ); MetaverseNode node = new MetaverseNode( vertex ); return node; } BlueprintsGraphMetaverseReader( Graph graph ); @Override IMetaverseNode findNode( String id ); @Override List<IMetaverseNode> findNodes( String property, String value ); @Override IMetaverseLink findLink( String leftNodeID, String linkType, String rightNodeID, Direction direction ); @Override Graph getMetaverse(); @Override String exportToXml(); @Override String exportFormat( String format ); void exportToStream( String format, OutputStream out ); @Override Graph search( List<String> resultTypes, List<String> startNodeIDs, boolean shortestOnly ); @Override Graph getGraph( String id );  }### Answer:
@Test public void testFindNode() throws Exception { IMetaverseReader metaverseReader = new BlueprintsGraphMetaverseReader( graph ); IMetaverseNode node = metaverseReader.findNode( "data.txt" ); assertNotNull( "Node is null", node ); assertEquals( "Id is wrong", "data.txt", node.getStringID() ); assertEquals( "Type is wrong", DictionaryConst.NODE_TYPE_FILE, node.getType() ); assertEquals( "Name is wrong", "Text file: data.txt", node.getName() ); assertNull( node.getProperty( DictionaryConst.PROPERTY_TYPE_LOCALIZED ) ); node = metaverseReader.findNode( "bogus" ); assertNull( "Node is not null", node ); node = metaverseReader.findNode( "trans1.ktr" ); assertNotNull( "Node is null", node ); assertEquals( "Id is wrong", "trans1.ktr", node.getStringID() ); assertEquals( "Type is wrong", DictionaryConst.NODE_TYPE_TRANS, node.getType() ); assertEquals( "Localized type is wrong", "Transformation", node.getProperty( DictionaryConst.PROPERTY_TYPE_LOCALIZED ) ); assertEquals( "Localized type is wrong", "Document", node.getProperty( DictionaryConst.PROPERTY_CATEGORY_LOCALIZED ) ); }