@Override public Set<String> keys() { return sideEffects.keys(); } }
@Override public Set<String> keys() { return this.sideEffects.keys(); }
/** * Return true if the key is a registered side-effect. * * @param key the key to check for existence * @return whether the key exists or not */ public default boolean exists(final String key) { return this.keys().contains(key); }
/** * Determines if there are any side-effects to be retrieved. */ public default boolean isEmpty() { return keys().size() == 0; }
public static String traversalSideEffectsString(final TraversalSideEffects traversalSideEffects) { return "sideEffects" + L_BRACKET + "size:" + traversalSideEffects.keys().size() + R_BRACKET; }
public default <V> void forEach(final BiConsumer<String, V> biConsumer) { this.keys().forEach(key -> biConsumer.accept(key, this.<V>get(key))); }
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()); }
@Override public Set<TraverserRequirement> getTraverserRequirements() { if (null == this.requirements) { // if (!this.locked) this.applyStrategies(); this.requirements = EnumSet.noneOf(TraverserRequirement.class); for (final Step<?, ?> step : this.getSteps()) { this.requirements.addAll(step.getRequirements()); } if (!this.requirements.contains(TraverserRequirement.LABELED_PATH) && TraversalHelper.hasLabels(this)) this.requirements.add(TraverserRequirement.LABELED_PATH); if (!this.getSideEffects().keys().isEmpty()) this.requirements.add(TraverserRequirement.SIDE_EFFECTS); if (null != this.getSideEffects().getSackInitialValue()) this.requirements.add(TraverserRequirement.SACK); if (this.requirements.contains(TraverserRequirement.ONE_BULK)) this.requirements.remove(TraverserRequirement.BULK); this.requirements = Collections.unmodifiableSet(this.requirements); } return this.requirements; }
public static Set<MemoryComputeKey> getMemoryComputeKeys(final Traversal.Admin<?, ?> traversal) { final Set<MemoryComputeKey> keys = new HashSet<>(); final TraversalSideEffects sideEffects = traversal.getSideEffects() instanceof MemoryTraversalSideEffects ? ((MemoryTraversalSideEffects) traversal.getSideEffects()).sideEffects : traversal.getSideEffects(); sideEffects.keys(). stream(). forEach(key -> keys.add(MemoryComputeKey.of(key, sideEffects.getReducer(key), true, false))); return keys; } }
@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); }
assertEquals(4l, map.get("person").longValue()); assertEquals(3, sideEffects.keys().size()); assertTrue(sideEffects.keys().contains("a")); assertTrue(sideEffects.exists("a")); assertTrue(sideEffects.get("a") instanceof LinkedHashMap); assertTrue(sideEffects.keys().contains("b")); assertTrue(sideEffects.exists("b")); assertTrue(sideEffects.get("b") instanceof ArrayList); assertEquals(6l, sideEffects.<List<Integer>>get("b").stream().filter(t -> t == 3).count()); assertTrue(sideEffects.keys().contains("c")); assertTrue(sideEffects.exists("c")); assertTrue(sideEffects.get("c") instanceof ArrayList);
@Test @LoadGraphWith(MODERN) public void g_withSideEffectXa_0_sumX_V_out_sideEffectXsideEffectsXa_bulkXX_capXaX() { final Traversal<Vertex, Integer> traversal = get_g_withSideEffectXa_0_sumX_V_out_sideEffectXsideEffectsXa_bulkXX_capXaX(); assertEquals(6, traversal.next().intValue()); assertFalse(traversal.hasNext()); assertEquals(6, traversal.asAdmin().getSideEffects().<Integer>get("a").intValue()); assertEquals(1, traversal.asAdmin().getSideEffects().keys().size()); checkSideEffects(traversal.asAdmin().getSideEffects(), "a", Integer.class); }
@Test @LoadGraphWith(MODERN) public void g_withSideEffectXa_0X_V_out_sideEffectXsideEffectsXa_1XX_capXaX() { final Traversal<Vertex, Integer> traversal = get_g_withSideEffectXa_0X_V_out_sideEffectXsideEffectsXa_1XX_capXaX(); assertEquals(1, traversal.next().intValue()); assertFalse(traversal.hasNext()); assertEquals(1, traversal.asAdmin().getSideEffects().<Integer>get("a").intValue()); assertEquals(1, traversal.asAdmin().getSideEffects().keys().size()); checkSideEffects(traversal.asAdmin().getSideEffects(), "a", Integer.class); }
logger.warn("Request for side-effect keys on {} returned no side-effects in the cache", sideEffect.get()); handleIterator(context, null == sideEffects ? Collections.emptyIterator() : sideEffects.keys().iterator()); };
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")); } }
/** * Return true if the key is a registered side-effect. * * @param key the key to check for existence * @return whether the key exists or not */ public default boolean exists(final String key) { return this.keys().contains(key); }
/** * Determines if there are any side-effects to be retrieved. */ public default boolean isEmpty() { return keys().size() == 0; }
public static Set<MemoryComputeKey> getMemoryComputeKeys(final Traversal.Admin<?, ?> traversal) { final Set<MemoryComputeKey> keys = new HashSet<>(); final TraversalSideEffects sideEffects = traversal.getSideEffects() instanceof MemoryTraversalSideEffects ? ((MemoryTraversalSideEffects) traversal.getSideEffects()).sideEffects : traversal.getSideEffects(); sideEffects.keys(). stream(). forEach(key -> keys.add(MemoryComputeKey.of(key, sideEffects.getReducer(key), true, false))); return keys; } }
@Test @LoadGraphWith(MODERN) public void g_withSideEffectXa_0_sumX_V_out_sideEffectXsideEffectsXa_bulkXX_capXaX() { final Traversal<Vertex, Integer> traversal = get_g_withSideEffectXa_0_sumX_V_out_sideEffectXsideEffectsXa_bulkXX_capXaX(); assertEquals(6, traversal.next().intValue()); assertFalse(traversal.hasNext()); assertEquals(6, traversal.asAdmin().getSideEffects().<Integer>get("a").intValue()); assertEquals(1, traversal.asAdmin().getSideEffects().keys().size()); checkSideEffects(traversal.asAdmin().getSideEffects(), "a", Integer.class); }
@Test @LoadGraphWith(MODERN) public void g_withSideEffectXa_0X_V_out_sideEffectXsideEffectsXa_1XX_capXaX() { final Traversal<Vertex, Integer> traversal = get_g_withSideEffectXa_0X_V_out_sideEffectXsideEffectsXa_1XX_capXaX(); assertEquals(1, traversal.next().intValue()); assertFalse(traversal.hasNext()); assertEquals(1, traversal.asAdmin().getSideEffects().<Integer>get("a").intValue()); assertEquals(1, traversal.asAdmin().getSideEffects().keys().size()); checkSideEffects(traversal.asAdmin().getSideEffects(), "a", Integer.class); }