@Test public void shouldNotLoadIsDirectedWhenLoaded() { // Given final Edge edge = new Edge.Builder().build(); final ElementValueLoader edgeLoader = mock(ElementValueLoader.class); final LazyEdge lazyEdge = new LazyEdge(edge, edgeLoader); lazyEdge.setIdentifiers(null, null, DirectedType.DIRECTED); // call it to load the value. // When boolean isDirected = lazyEdge.isDirected(); boolean isDirected2 = lazyEdge.isDirected(); // Then assertTrue(isDirected); assertTrue(isDirected2); verify(edgeLoader, never()).loadIdentifiers(edge); }
@Override public boolean isDirected() { loadIdentifiers(); return edge.isDirected(); }
@Test public void shouldDelegatePutPropertyToLazyProperties() { // Given final Edge edge = new Edge.Builder().build(); final ElementValueLoader edgeLoader = mock(ElementValueLoader.class); final LazyEdge lazyEdge = new LazyEdge(edge, edgeLoader); final String propertyName = "property name"; final String propertyValue = "property value"; // When lazyEdge.putProperty(propertyName, propertyValue); // Then assertEquals(propertyValue, edge.getProperty(propertyName)); assertEquals(propertyValue, lazyEdge.getProperty(propertyName)); }
@Test public void shouldLoadPropertyFromLazyProperties() { // Given final Edge edge = new Edge.Builder().build(); final ElementValueLoader edgeLoader = mock(ElementValueLoader.class); final LazyEdge lazyEdge = new LazyEdge(edge, edgeLoader); final String propertyName = "property name"; final String exceptedPropertyValue = "property value"; given(edgeLoader.getProperty(propertyName, lazyEdge.getProperties())).willReturn(exceptedPropertyValue); // When Object propertyValue = lazyEdge.getProperty(propertyName); // Then assertEquals(exceptedPropertyValue, propertyValue); }
@Test public void shouldNotLoadIdentifierWhenLoaded() { // Given final Edge edge = new Edge.Builder().build(); final ElementValueLoader edgeLoader = mock(ElementValueLoader.class); final LazyEdge lazyEdge = new LazyEdge(edge, edgeLoader); final IdentifierType identifierType = IdentifierType.SOURCE; final String exceptedIdentifierValue = "identifier value"; lazyEdge.setIdentifiers(exceptedIdentifierValue, "dest", DirectedType.DIRECTED); // When - should use the loaded value Object identifierValue = lazyEdge.getIdentifier(identifierType); Object identifierValue2 = lazyEdge.getIdentifier(identifierType); // Then assertEquals(exceptedIdentifierValue, identifierValue); assertEquals(exceptedIdentifierValue, identifierValue2); assertEquals(exceptedIdentifierValue, edge.getSource()); verify(edgeLoader, never()).loadIdentifiers(edge); }
@Test public void shouldDelegateSetIdentifiersToEdge() { // Given final Edge edge = mock(Edge.class); given(edge.getProperties()).willReturn(mock(Properties.class)); final ElementValueLoader edgeLoader = mock(ElementValueLoader.class); final LazyEdge lazyEdge = new LazyEdge(edge, edgeLoader); // When lazyEdge.setIdentifiers("src", "dest", DirectedType.UNDIRECTED); // Then verify(edgeLoader, never()).loadIdentifiers(edge); verify(edge).setIdentifiers("src", "dest", DirectedType.UNDIRECTED); }
@Test public void shouldUnwrapEdge() { // Given final Edge edge = new Edge.Builder().build(); final ElementValueLoader edgeLoader = mock(ElementValueLoader.class); final LazyEdge lazyEdge = new LazyEdge(edge, edgeLoader); // When final Edge result = lazyEdge.getElement(); // Then assertSame(edge, result); } }
@Test public void shouldDelegateGetGroupToEdge() { // Given final ElementValueLoader edgeLoader = mock(ElementValueLoader.class); final String group = "group"; final Edge edge = new Edge.Builder().group(group).build(); final LazyEdge lazyEdge = new LazyEdge(edge, edgeLoader); // When final String groupResult = lazyEdge.getGroup(); // Then assertEquals(group, groupResult); }
@Test public void shouldGetLazyProperties() { // Given final Edge edge = new Edge.Builder().build(); final ElementValueLoader edgeLoader = mock(ElementValueLoader.class); final LazyEdge lazyEdge = new LazyEdge(edge, edgeLoader); // When final LazyProperties result = lazyEdge.getProperties(); // Then assertNotNull(result); assertNotSame(edge.getProperties(), result); }
@Test public void shouldLoadIdentifierWhenNotLoaded() { // Given final Edge edge = mock(Edge.class); given(edge.getProperties()).willReturn(mock(Properties.class)); final ElementValueLoader edgeLoader = mock(ElementValueLoader.class); final LazyEdge lazyEdge = new LazyEdge(edge, edgeLoader); final IdentifierType identifierType = IdentifierType.DESTINATION; final String exceptedIdentifierValue = "identifier value"; given(edge.getDestination()).willReturn(exceptedIdentifierValue); // When Object identifierValue = lazyEdge.getIdentifier(identifierType); // Then assertEquals(exceptedIdentifierValue, identifierValue); assertEquals(identifierValue, edge.getDestination()); verify(edgeLoader).loadIdentifiers(edge); }
@Override public boolean accept(final Key key, final Value value) { final String group = elementConverter.getGroupFromColumnFamily(key.getColumnFamilyData().getBackingArray()); if (groupsWithoutFilters.contains(group)) { return true; } final Element element; if (schema.isEntity(group)) { element = new LazyEntity(new Entity(group), new AccumuloEntityValueLoader(group, key, value, elementConverter, schema)); } else { element = new LazyEdge(new Edge(group, null, null, false), new AccumuloEdgeValueLoader(group, key, value, elementConverter, schema, true)); } return elementPredicate.test(element); }
@Override public Object getIdentifier(final IdentifierType identifierType) { loadIdentifiers(); return super.getIdentifier(identifierType); }
@Override public MatchedVertex getMatchedVertex() { loadIdentifiers(); return edge.getMatchedVertex(); }
@Override public Object getSource() { loadIdentifiers(); return edge.getSource(); }
@Override public Object getDestination() { loadIdentifiers(); return edge.getDestination(); }
@Override public Object getDestination() { loadIdentifiers(); return edge.getDestination(); }
@Override public Object getSource() { loadIdentifiers(); return edge.getSource(); }
@Override public Object getIdentifier(final IdentifierType identifierType) { loadIdentifiers(); return super.getIdentifier(identifierType); }
@Override public boolean isDirected() { loadIdentifiers(); return edge.isDirected(); }
@Override public MatchedVertex getMatchedVertex() { loadIdentifiers(); return edge.getMatchedVertex(); }