Refine search
static boolean validJanusGraphOrder(OrderGlobalStep orderGlobalStep, Traversal rootTraversal, boolean isVertexOrder) { final List<Pair<Traversal.Admin, Object>> comparators = orderGlobalStep.getComparators(); for(final Pair<Traversal.Admin, Object> comp : comparators) { final String key; if (comp.getValue0() instanceof ElementValueTraversal && comp.getValue1() instanceof Order) { key = ((ElementValueTraversal) comp.getValue0()).getPropertyKey(); } else if (comp.getValue1() instanceof ElementValueComparator) { final ElementValueComparator evc = (ElementValueComparator) comp.getValue1(); if (!(evc.getValueComparator() instanceof Order)) return false; key = evc.getPropertyKey(); } else { // do not fold comparators that include nested traversals that are not simple ElementValues return false; } final JanusGraphTransaction tx = JanusGraphTraversalUtil.getTx(rootTraversal.asAdmin()); final PropertyKey pKey = tx.getPropertyKey(key); if (pKey == null || !(Comparable.class.isAssignableFrom(pKey.dataType())) || (isVertexOrder && pKey.cardinality() != Cardinality.SINGLE)) { return false; } } return true; }
final String key; final Order order; if (comp.getValue0() instanceof ElementValueTraversal) { final ElementValueTraversal evt = (ElementValueTraversal) comp.getValue0(); key = evt.getPropertyKey(); order = (Order) comp.getValue1(); } else { final ElementValueComparator evc = (ElementValueComparator) comp.getValue1(); key = evc.getPropertyKey(); order = (Order) evc.getValueComparator();
public void tryClearGraphs(){ for(Pair<Graph, Configuration> p : openGraphs) { try { innerGraphProvider.clear(p.getValue0(), p.getValue1()); }catch (Exception e){ logger.warn(String.format("Automatic close of Graph instance [%s] and config [%s] generated failure.", p.getValue0() != null ? p.getValue0().toString() : "null", p.getValue1() != null ? p.getValue1().toString() : "null"), e); } } }
/** * {@inheritDoc} */ @Override public <S> List<Pair<Class,S>> find(final Class<? extends Io> builderClass, final Class<S> serializerType) { if (!registeredSerializers.containsKey(builderClass)) return Collections.emptyList(); return Collections.unmodifiableList(registeredSerializers.get(builderClass).stream() .filter(p -> serializerType.isAssignableFrom(p.getValue1().getClass())) .map(p -> Pair.with(p.getValue0(), (S) p.getValue1())) .collect(Collectors.toList())); } }
@Override public int compare(final S objectA, final S objectB) { for (final Pair<Traversal.Admin<S, C>, Comparator<C>> pair : this.comparators) { final int comparison = this.traversers ? pair.getValue1().compare(TraversalUtil.apply((Traverser.Admin<S>) objectA, pair.getValue0()), TraversalUtil.apply((Traverser.Admin<S>) objectB, pair.getValue0())) : pair.getValue1().compare(TraversalUtil.apply(objectA, pair.getValue0()), TraversalUtil.apply(objectB, pair.getValue0())); if (comparison != 0) return comparison; } return 0; }
/** * Converts a set of key values to a Map. Assumes that validations have already taken place to * assure that key positions contain strings and that there are an even number of elements. */ public static Map<String, Object> asMap(final Object... keyValues) { return asPairs(keyValues).stream().collect(Collectors.toMap(p -> p.getValue0(), p -> p.getValue1())); }
@Override public ChainedComparator<S, C> clone() { try { final ChainedComparator<S, C> clone = (ChainedComparator<S, C>) super.clone(); clone.comparators = new ArrayList<>(); for (final Pair<Traversal.Admin<S, C>, Comparator<C>> comparator : this.comparators) { clone.comparators.add(new Pair<>(comparator.getValue0().clone(), comparator.getValue1())); } return clone; } catch (final CloneNotSupportedException e) { throw new IllegalStateException(e.getMessage(), e); } } }
/** * Completes the next waiting future if there is one. */ private synchronized void tryDrainNextWaiting(final boolean force) { // need to peek because the number of available items needs to be >= the expected size for that future. if not // it needs to keep waiting final Pair<CompletableFuture<List<Result>>, Integer> nextWaiting = waiting.peek(); if (nextWaiting != null && (force || (resultLinkedBlockingQueue.size() >= nextWaiting.getValue1() || readComplete.isDone()))) { final int items = nextWaiting.getValue1(); final CompletableFuture<List<Result>> future = nextWaiting.getValue0(); final List<Result> results = new ArrayList<>(items); resultLinkedBlockingQueue.drainTo(results, items); // it's important to check for error here because a future may have already been queued in "waiting" prior // to the first response back from the server. if that happens, any "waiting" futures should be completed // exceptionally otherwise it will look like success. if (null == error.get()) future.complete(results); else future.completeExceptionally(error.get()); waiting.remove(nextWaiting); } }
@Override public OrderLocalStep<S, C> clone() { final OrderLocalStep<S, C> clone = (OrderLocalStep<S, C>) super.clone(); clone.comparators = new ArrayList<>(); for (final Pair<Traversal.Admin<S, C>, Comparator<C>> comparator : this.comparators) { clone.comparators.add(new Pair<>(comparator.getValue0().clone(), comparator.getValue1())); } clone.chainedComparator = null; return clone; }
@Override public OrderGlobalStep<S, C> clone() { final OrderGlobalStep<S, C> clone = (OrderGlobalStep<S, C>) super.clone(); clone.comparators = new ArrayList<>(); for (final Pair<Traversal.Admin<S, C>, Comparator<C>> comparator : this.comparators) { clone.comparators.add(new Pair<>(comparator.getValue0().clone(), comparator.getValue1())); } return clone; }
/** * Creates a {@code GryoMapper}. */ public GryoMapper create() { // consult the registry if provided and inject registry entries as custom classes. registries.forEach(registry -> { final List<Pair<Class, Object>> serializers = registry.find(GryoIo.class); serializers.forEach(p -> { if (null == p.getValue1()) addCustom(p.getValue0()); else if (p.getValue1() instanceof SerializerShim) addCustom(p.getValue0(), new ShadedSerializerAdapter((SerializerShim) p.getValue1())); else if (p.getValue1() instanceof Serializer) addCustom(p.getValue0(), (Serializer) p.getValue1()); else if (p.getValue1() instanceof Function) addCustom(p.getValue0(), (Function<Kryo, Serializer>) p.getValue1()); else throw new IllegalStateException(String.format( "Unexpected value provided by %s for serializable class %s - expected a parameter in [null, %s implementation or Function<%s, %s>], but received %s", registry.getClass().getSimpleName(), p.getValue0().getClass().getCanonicalName(), Serializer.class.getName(), Kryo.class.getSimpleName(), Serializer.class.getSimpleName(), p.getValue1())); }); }); return new GryoMapper(this); }
/** * Creates a Map containing "original", "intermediate" and "final" keys. */ @Override public Object transform(final TraversalExplanation value) { final Map<String, Object> result = new HashMap<>(); result.put(ORIGINAL, getTraversalSteps(value.getOriginalTraversal())); final List<Pair<TraversalStrategy, Traversal.Admin<?, ?>>> strategyTraversals = value.getStrategyTraversals(); result.put(INTERMEDIATE, strategyTraversals.stream().map(pair -> { final Map<String, Object> item = new HashMap<>(); item.put(STRATEGY, pair.getValue0().toString()); item.put(CATEGORY, pair.getValue0().getTraversalCategory().getSimpleName()); item.put(TRAVERSAL, getTraversalSteps(pair.getValue1())); return item; }).collect(Collectors.toList())); result.put(FINAL, getTraversalSteps(strategyTraversals.isEmpty() ? value.getOriginalTraversal() : strategyTraversals.get(strategyTraversals.size() - 1).getValue1())); return result; }
public void ser(final TraversalExplanation te, final JsonGenerator jsonGenerator) throws IOException { final Map<String, Object> m = new HashMap<>(); m.put(GraphSONTokens.ORIGINAL, getStepsAsList(te.getOriginalTraversal())); final List<Pair<TraversalStrategy, Traversal.Admin<?,?>>> strategyTraversals = te.getStrategyTraversals(); final List<Map<String,Object>> intermediates = new ArrayList<>(); for (final Pair<TraversalStrategy, Traversal.Admin<?, ?>> pair : strategyTraversals) { final Map<String,Object> intermediate = new HashMap<>(); intermediate.put(GraphSONTokens.STRATEGY, pair.getValue0().toString()); intermediate.put(GraphSONTokens.CATEGORY, pair.getValue0().getTraversalCategory().getSimpleName()); intermediate.put(GraphSONTokens.TRAVERSAL, getStepsAsList(pair.getValue1())); intermediates.add(intermediate); } m.put(GraphSONTokens.INTERMEDIATE, intermediates); if (strategyTraversals.isEmpty()) m.put(GraphSONTokens.FINAL, getStepsAsList(te.getOriginalTraversal())); else m.put(GraphSONTokens.FINAL, getStepsAsList(strategyTraversals.get(strategyTraversals.size() - 1).getValue1())); jsonGenerator.writeObject(m); }
@Override public void serialize(final TraversalExplanation traversalExplanation, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider) throws IOException { final Map<String, Object> m = new HashMap<>(); m.put(GraphSONTokens.ORIGINAL, getStepsAsList(traversalExplanation.getOriginalTraversal())); final List<Pair<TraversalStrategy, Traversal.Admin<?, ?>>> strategyTraversals = traversalExplanation.getStrategyTraversals(); final List<Map<String, Object>> intermediates = new ArrayList<>(); for (final Pair<TraversalStrategy, Traversal.Admin<?, ?>> pair : strategyTraversals) { final Map<String, Object> intermediate = new HashMap<>(); intermediate.put(GraphSONTokens.STRATEGY, pair.getValue0().toString()); intermediate.put(GraphSONTokens.CATEGORY, pair.getValue0().getTraversalCategory().getSimpleName()); intermediate.put(GraphSONTokens.TRAVERSAL, getStepsAsList(pair.getValue1())); intermediates.add(intermediate); } m.put(GraphSONTokens.INTERMEDIATE, intermediates); if (strategyTraversals.isEmpty()) m.put(GraphSONTokens.FINAL, getStepsAsList(traversalExplanation.getOriginalTraversal())); else m.put(GraphSONTokens.FINAL, getStepsAsList(strategyTraversals.get(strategyTraversals.size() - 1).getValue1())); jsonGenerator.writeObject(m); }
@Override public void serialize(final TraversalExplanation traversalExplanation, final JsonGenerator jsonGenerator, final SerializerProvider serializerProvider) throws IOException { final Map<String, Object> m = new HashMap<>(); m.put(GraphSONTokens.ORIGINAL, getStepsAsList(traversalExplanation.getOriginalTraversal())); final List<Pair<TraversalStrategy, Traversal.Admin<?, ?>>> strategyTraversals = traversalExplanation.getStrategyTraversals(); final List<Map<String, Object>> intermediates = new ArrayList<>(); for (final Pair<TraversalStrategy, Traversal.Admin<?, ?>> pair : strategyTraversals) { final Map<String, Object> intermediate = new HashMap<>(); intermediate.put(GraphSONTokens.STRATEGY, pair.getValue0().toString()); intermediate.put(GraphSONTokens.CATEGORY, pair.getValue0().getTraversalCategory().getSimpleName()); intermediate.put(GraphSONTokens.TRAVERSAL, getStepsAsList(pair.getValue1())); intermediates.add(intermediate); } m.put(GraphSONTokens.INTERMEDIATE, intermediates); if (strategyTraversals.isEmpty()) m.put(GraphSONTokens.FINAL, getStepsAsList(traversalExplanation.getOriginalTraversal())); else m.put(GraphSONTokens.FINAL, getStepsAsList(strategyTraversals.get(strategyTraversals.size() - 1).getValue1())); jsonGenerator.writeObject(m); }
Stream.of(serializer.mimeTypesSupported()).map(mimeType -> Pair.with(mimeType, serializer)) ).forEach(pair -> { final String mimeType = pair.getValue0(); final MessageSerializer serializer = pair.getValue1(); if (serializers.containsKey(mimeType)) logger.info("{} already has {} configured - it will not be replaced by {}, change order of serialization configuration if this is not desired.", mimeType, serializers.get(mimeType).getClass().getName(), serializer.getClass().getName()); else { logger.info("Configured {} with {}", mimeType, pair.getValue1().getClass().getName()); serializers.put(mimeType, serializer);
builder.append("\n\n"); for (final Pair<TraversalStrategy, Traversal.Admin<?, ?>> pairs : this.strategyTraversals) { builder.append(pairs.getValue0()); int spacesToAdd = maxStrategyColumnLength - pairs.getValue0().toString().length() + 1; for (int i = 0; i < spacesToAdd; i++) { builder.append(" "); builder.append("[").append(pairs.getValue0().getTraversalCategory().getSimpleName().substring(0, 1)).append("]"); for (int i = 0; i < 3; i++) { builder.append(" "); builder.append(wordWrap(pairs.getValue1().toString(), maxTraversalColumn, newLineIndent)).append("\n"); this.strategyTraversals.get(this.strategyTraversals.size() - 1).getValue1().toString() : this.traversal.toString()), maxTraversalColumn, newLineIndent)); return builder.toString();