public static void checkSideEffects(final TraversalSideEffects sideEffects, final Object... keysClasses) { int counter = 0; for (int i = 0; i < keysClasses.length; i = i + 2) { counter++; final String key = (String) keysClasses[i]; final Class clazz = (Class) keysClasses[i + 1]; assertThat(sideEffects.keys().contains(key), is(true)); assertThat(sideEffects.exists(key), is(true)); assertThat(sideEffects.exists(UUID.randomUUID().toString()), is(false)); // there is slightly different behavior for remote side-effects so carving out a few asserts with that // in mind. the client really doesnt' really have a way of knowing what type of object to create when it // gets an empty iterator so it makes the result null and therefore we end up with a NPE if we try to // access it. the rest of the behavior is solid so better to do this than OptOut I think if (!(sideEffects instanceof RemoteTraversalSideEffects)) { assertEquals(clazz, sideEffects.get((String) keysClasses[i]).getClass()); } } assertEquals(sideEffects.keys().size(), counter); assertThat(sideEffects.keys().contains(UUID.randomUUID().toString()), is(false)); assertEquals(StringFactory.traversalSideEffectsString(sideEffects), sideEffects.toString()); }
private Map<String, Object> getMapOfSideEffects() { final TraversalSideEffects temp = this.getTraversal().getSideEffects(); final Map<String, Object> sideEffects = new HashMap<>(); for (final String sideEffectKey : this.sideEffectKeys) { if (temp.exists(sideEffectKey)) { final E result = temp.get(sideEffectKey); final SideEffectCapable<Object, E> sideEffectCapable = this.sideEffectCapableSteps.get(sideEffectKey); final E finalResult = null == sideEffectCapable ? result : sideEffectCapable.generateFinalResult(result); temp.set(sideEffectKey, finalResult); sideEffects.put(sideEffectKey, finalResult); } } return sideEffects; }
public default <S> S getScopeValue(final Pop pop, final String key, final Traverser.Admin<?> traverser) throws IllegalArgumentException { final Object object = traverser.get(); if (object instanceof Map && ((Map<String, S>) object).containsKey(key)) return ((Map<String, S>) object).get(key); /// if (traverser.getSideEffects().exists(key)) return traverser.getSideEffects().get(key); /// final Path path = traverser.path(); if (path.hasLabel(key)) return path.get(pop, key); /// throw new IllegalArgumentException("Neither the sideEffects, map, nor path has a " + key + "-key: " + this); }
private void processMemorySideEffects(final Memory memory) { // update the traversal side-effects with the state of the memory after the OLAP job execution final TraversalSideEffects sideEffects = this.getTraversal().getSideEffects(); for (final String key : memory.keys()) { if (sideEffects.exists(key)) { // halted traversers should never be propagated through sideEffects assert !key.equals(TraversalVertexProgram.HALTED_TRAVERSERS); sideEffects.set(key, memory.get(key)); } } }
public default <S> S getNullableScopeValue(final Pop pop, final String key, final Traverser.Admin<?> traverser) { final Object object = traverser.get(); if (object instanceof Map && ((Map<String, S>) object).containsKey(key)) return ((Map<String, S>) object).get(key); /// if (traverser.getSideEffects().exists(key)) return traverser.getSideEffects().get(key); /// final Path path = traverser.path(); if (path.hasLabel(key)) return path.get(pop, key); /// return null; }
@Override protected E map(final Traverser.Admin<S> traverser) { E end = null; final Iterator<E> keyIterator = TraversalUtil.applyAll(traverser, this.keyTraversal); if (keyIterator.hasNext()) { final E key = keyIterator.next(); final Object object = traverser.get(); if (object instanceof Map && ((Map) object).containsKey(key)) end = (E) ((Map) object).get(key); else if (key instanceof String) { final String skey = (String) key; if (traverser.getSideEffects().exists(skey)) { end = traverser.getSideEffects().get((String) key); } else { final Path path = traverser.path(); if (path.hasLabel(skey)) end = null == pop ? path.get(skey) : path.get(pop, skey); } } } return null != end ? TraversalUtil.applyNullable(end, this.selectTraversal) : null; }
assertTrue(sideEffects.exists("a")); assertTrue(sideEffects.get("a") instanceof LinkedHashMap); assertTrue(sideEffects.exists("b")); assertTrue(sideEffects.get("b") instanceof ArrayList); assertEquals(18, sideEffects.<List<Integer>>get("b").size()); assertTrue(sideEffects.exists("c")); assertTrue(sideEffects.get("c") instanceof ArrayList); assertEquals(0, sideEffects.<List>get("c").size());
@Test @LoadGraphWith(MODERN) public void g_withSideEffectXa__linkedhashmapX_V_out_groupCountXaX_byXlabelX_out_out_capXaX() { final Traversal<Vertex, Map<String, Long>> traversal = get_g_withSideEffectXa__linkedhashmapX_V_out_groupCountXaX_byXlabelX_out_out_capXaX(); printTraversalForm(traversal); Map<String, Long> map = traversal.next(); assertFalse(traversal.hasNext()); assertEquals(2, map.size()); assertEquals(4l, map.get("software").longValue()); assertEquals(2l, map.get("person").longValue()); final TraversalSideEffects sideEffects = traversal.asAdmin().getSideEffects(); map = sideEffects.get("a"); assertEquals(2, map.size()); assertEquals(4l, map.get("software").longValue()); assertEquals(2l, map.get("person").longValue()); /// assertEquals(1, sideEffects.keys().size()); assertTrue(sideEffects.keys().contains("a")); assertTrue(sideEffects.exists("a")); assertTrue(sideEffects.get("a") instanceof LinkedHashMap); checkSideEffects(traversal.asAdmin().getSideEffects(), "a", LinkedHashMap.class); }
private void checkSideEffects() { assertEquals(0, this.haltedTraversers.size()); assertTrue(this.haltedTraversers.isEmpty()); final TraversalSideEffects sideEffects = this.traversal.get().getSideEffects(); assertTrue(sideEffects instanceof MemoryTraversalSideEffects); assertEquals(1, sideEffects.keys().size()); assertFalse(sideEffects.exists(TraversalVertexProgram.HALTED_TRAVERSERS)); assertTrue(sideEffects.exists("x")); final BulkSet<String> bulkSet = sideEffects.get("x"); assertEquals(4, bulkSet.size()); assertEquals(4, bulkSet.get("java")); } }
if (!sideEffects.exists(sideEffectKey.get())) { final String errorMessage = String.format("Could not find side-effect key for %s in %s.", sideEffectKey.get(), sideEffect.get()); logger.warn(errorMessage);
public static void checkSideEffects(final TraversalSideEffects sideEffects, final Object... keysClasses) { int counter = 0; for (int i = 0; i < keysClasses.length; i = i + 2) { counter++; final String key = (String) keysClasses[i]; final Class clazz = (Class) keysClasses[i + 1]; assertThat(sideEffects.keys().contains(key), is(true)); assertThat(sideEffects.exists(key), is(true)); assertThat(sideEffects.exists(UUID.randomUUID().toString()), is(false)); // there is slightly different behavior for remote side-effects so carving out a few asserts with that // in mind. the client really doesnt' really have a way of knowing what type of object to create when it // gets an empty iterator so it makes the result null and therefore we end up with a NPE if we try to // access it. the rest of the behavior is solid so better to do this than OptOut I think if (!(sideEffects instanceof RemoteTraversalSideEffects)) { assertEquals(clazz, sideEffects.get((String) keysClasses[i]).getClass()); } } assertEquals(sideEffects.keys().size(), counter); assertThat(sideEffects.keys().contains(UUID.randomUUID().toString()), is(false)); assertEquals(StringFactory.traversalSideEffectsString(sideEffects), sideEffects.toString()); }
private Map<String, Object> getMapOfSideEffects() { final TraversalSideEffects temp = this.getTraversal().getSideEffects(); final Map<String, Object> sideEffects = new HashMap<>(); for (final String sideEffectKey : this.sideEffectKeys) { if (temp.exists(sideEffectKey)) { final E result = temp.get(sideEffectKey); final SideEffectCapable<Object, E> sideEffectCapable = this.sideEffectCapableSteps.get(sideEffectKey); final E finalResult = null == sideEffectCapable ? result : sideEffectCapable.generateFinalResult(result); temp.set(sideEffectKey, finalResult); sideEffects.put(sideEffectKey, finalResult); } } return sideEffects; }
private void processMemorySideEffects(final Memory memory) { // update the traversal side-effects with the state of the memory after the OLAP job execution final TraversalSideEffects sideEffects = this.getTraversal().getSideEffects(); for (final String key : memory.keys()) { if (sideEffects.exists(key)) { // halted traversers should never be propagated through sideEffects assert !key.equals(TraversalVertexProgram.HALTED_TRAVERSERS); sideEffects.set(key, memory.get(key)); } } }
public default <S> S getScopeValue(final Pop pop, final String key, final Traverser.Admin<?> traverser) throws IllegalArgumentException { final Object object = traverser.get(); if (object instanceof Map && ((Map<String, S>) object).containsKey(key)) return ((Map<String, S>) object).get(key); /// if (traverser.getSideEffects().exists(key)) return traverser.getSideEffects().get(key); /// final Path path = traverser.path(); if (path.hasLabel(key)) return path.get(pop, key); /// throw new IllegalArgumentException("Neither the sideEffects, map, nor path has a " + key + "-key: " + this); }
public default <S> S getNullableScopeValue(final Pop pop, final String key, final Traverser.Admin<?> traverser) { final Object object = traverser.get(); if (object instanceof Map && ((Map<String, S>) object).containsKey(key)) return ((Map<String, S>) object).get(key); /// if (traverser.getSideEffects().exists(key)) return traverser.getSideEffects().get(key); /// final Path path = traverser.path(); if (path.hasLabel(key)) return path.get(pop, key); /// return null; }
@Override protected E map(final Traverser.Admin<S> traverser) { E end = null; final Iterator<E> keyIterator = TraversalUtil.applyAll(traverser, this.keyTraversal); if (keyIterator.hasNext()) { final E key = keyIterator.next(); final Object object = traverser.get(); if (object instanceof Map && ((Map) object).containsKey(key)) end = (E) ((Map) object).get(key); else if (key instanceof String) { final String skey = (String) key; if (traverser.getSideEffects().exists(skey)) { end = traverser.getSideEffects().get((String) key); } else { final Path path = traverser.path(); if (path.hasLabel(skey)) end = null == pop ? path.get(skey) : path.get(pop, skey); } } } return null != end ? TraversalUtil.applyNullable(end, this.selectTraversal) : null; }
assertTrue(sideEffects.exists("a")); assertTrue(sideEffects.get("a") instanceof LinkedHashMap); assertTrue(sideEffects.exists("b")); assertTrue(sideEffects.get("b") instanceof ArrayList); assertEquals(18, sideEffects.<List<Integer>>get("b").size()); assertTrue(sideEffects.exists("c")); assertTrue(sideEffects.get("c") instanceof ArrayList); assertEquals(0, sideEffects.<List>get("c").size());
@Test @LoadGraphWith(MODERN) public void g_withSideEffectXa__linkedhashmapX_V_out_groupCountXaX_byXlabelX_out_out_capXaX() { final Traversal<Vertex, Map<String, Long>> traversal = get_g_withSideEffectXa__linkedhashmapX_V_out_groupCountXaX_byXlabelX_out_out_capXaX(); printTraversalForm(traversal); Map<String, Long> map = traversal.next(); assertFalse(traversal.hasNext()); assertEquals(2, map.size()); assertEquals(4l, map.get("software").longValue()); assertEquals(2l, map.get("person").longValue()); final TraversalSideEffects sideEffects = traversal.asAdmin().getSideEffects(); map = sideEffects.get("a"); assertEquals(2, map.size()); assertEquals(4l, map.get("software").longValue()); assertEquals(2l, map.get("person").longValue()); /// assertEquals(1, sideEffects.keys().size()); assertTrue(sideEffects.keys().contains("a")); assertTrue(sideEffects.exists("a")); assertTrue(sideEffects.get("a") instanceof LinkedHashMap); checkSideEffects(traversal.asAdmin().getSideEffects(), "a", LinkedHashMap.class); }
if (!sideEffects.exists(sideEffectKey.get())) { final String errorMessage = String.format("Could not find side-effect key for %s in %s.", sideEffectKey.get(), sideEffect.get()); logger.warn(errorMessage);
private void checkSideEffects() { assertEquals(0, this.haltedTraversers.size()); assertTrue(this.haltedTraversers.isEmpty()); final TraversalSideEffects sideEffects = this.traversal.get().getSideEffects(); assertTrue(sideEffects instanceof MemoryTraversalSideEffects); assertEquals(1, sideEffects.keys().size()); assertFalse(sideEffects.exists(TraversalVertexProgram.HALTED_TRAVERSERS)); assertTrue(sideEffects.exists("x")); final BulkSet<String> bulkSet = sideEffects.get("x"); assertEquals(4, bulkSet.size()); assertEquals(4, bulkSet.get("java")); } }