Java源码示例:org.apache.tinkerpop.gremlin.process.traversal.util.FastNoSuchElementException
示例1
@Override
public long next() {
if (iterators.isEmpty()) throw FastNoSuchElementException.instance();
TLongIterator currentIterator = iterators.get(this.current);
while (true) {
if (currentIterator.hasNext()) {
return currentIterator.next();
} else {
this.current++;
if (this.current >= iterators.size())
break;
currentIterator = iterators.get(current);
}
}
throw FastNoSuchElementException.instance();
}
示例2
@Override
public T next() {
if (this.iterators.isEmpty()) throw FastNoSuchElementException.instance();
Iterator<T> currentIterator = iterators.get(this.current);
while (true) {
if (currentIterator.hasNext()) {
return currentIterator.next();
} else {
this.current++;
if (this.current >= iterators.size())
break;
currentIterator = iterators.get(current);
}
}
throw FastNoSuchElementException.instance();
}
示例3
@Override
public Edge next() {
try {
while (true) {
if (this.edgeIterator.hasNext())
return new HadoopEdge(this.edgeIterator.next(), this.graph);
if (this.readers.isEmpty())
throw FastNoSuchElementException.instance();
if (this.readers.peek().nextKeyValue()) {
this.edgeIterator = this.readers.peek().getCurrentValue().get().edges(Direction.OUT);
} else {
this.readers.remove().close();
}
}
} catch (final Exception e) {
throw new IllegalStateException(e.getMessage(), e);
}
}
示例4
@Override
public Vertex next() {
try {
if (this.nextVertex != null) {
final Vertex temp = this.nextVertex;
this.nextVertex = null;
return temp;
} else {
while (!this.readers.isEmpty()) {
if (this.readers.peek().nextKeyValue())
return new HadoopVertex(this.readers.peek().getCurrentValue().get(), this.graph);
else
this.readers.remove().close();
}
}
throw FastNoSuchElementException.instance();
} catch (final Exception e) {
throw new IllegalStateException(e.getMessage(), e);
}
}
示例5
@Override
public String next() {
try {
if (this.available) {
this.available = false;
return this.line;
} else {
while (true) {
if (this.readers.isEmpty())
throw FastNoSuchElementException.instance();
if ((this.line = this.readers.peek().readLine()) != null) {
return this.line;
} else
this.readers.remove().close();
}
}
} catch (final IOException e) {
throw new IllegalStateException(e.getMessage(), e);
}
}
示例6
@Override
protected Traverser.Admin<E> processNextStart() {
while (true) {
if (this.iterator.hasNext()) {
return this.isStart ? this.getTraversal().getTraverserGenerator().generate(this.iterator.next(), (Step) this, 1l) : this.head.split(this.iterator.next(), this);
} else {
if (this.isStart) {
if (this.done)
throw FastNoSuchElementException.instance();
else {
this.done = true;
this.iterator = null == this.iteratorSupplier ? EmptyIterator.instance() : this.iteratorSupplier.get();
}
} else {
this.head = this.starts.next();
this.iterator = null == this.iteratorSupplier ? EmptyIterator.instance() : this.iteratorSupplier.get();
}
}
}
}
示例7
@Override
protected Traverser.Admin<S> processNextStart() {
if (mode == Mode.UNSET) throw new IllegalStateException("IO mode was not set to read() or write()");
if (!this.first) throw FastNoSuchElementException.instance();
this.first = false;
final File file = new File(this.file);
if (mode == Mode.READING) {
if (!file.exists()) throw new IllegalStateException(this.file + " does not exist");
return read(file);
} else if (mode == Mode.WRITING) {
return write(file);
} else {
throw new IllegalStateException("Invalid ReadWriting.Mode configured in IoStep: " + mode.name());
}
}
示例8
@Override
protected Traverser.Admin<E> processNextStart() throws NoSuchElementException {
if (this.first) {
this.first = false;
this.localTraversal.addStart(this.starts.next());
}
while (true) {
if (this.localTraversal.hasNext())
return this.localTraversal.nextTraverser();
else if (this.starts.hasNext()) {
this.localTraversal.reset();
this.localTraversal.addStart(this.starts.next());
} else {
throw FastNoSuchElementException.instance();
}
}
}
示例9
@Override
public T next() {
if (this.iterators.isEmpty()) throw FastNoSuchElementException.instance();
Iterator<T> currentIterator = iterators.get(this.current);
while (true) {
if (currentIterator.hasNext()) {
return currentIterator.next();
} else {
this.current++;
if (this.current >= iterators.size())
break;
currentIterator = iterators.get(current);
}
}
throw FastNoSuchElementException.instance();
}
示例10
@Test
@LoadGraphWith(MODERN)
public void shouldThrowFastNoSuchElementExceptionInNestedTraversals() {
//The nested traversal should throw a regular FastNoSuchElementException
final GraphTraversal<Object, Object> nestedTraversal = __.has("name", "foo");
final GraphTraversal<Vertex, Object> traversal = g.V().has("name", "marko").branch(nestedTraversal);
final GraphTraversal.Admin<Object, Object> nestedTraversalAdmin = nestedTraversal.asAdmin();
nestedTraversalAdmin.reset();
nestedTraversalAdmin.addStart(nestedTraversalAdmin.getTraverserGenerator().generate(g.V().has("name", "marko").next(), (Step) traversal.asAdmin().getStartStep(), 1l));
try {
nestedTraversal.next();
} catch (NoSuchElementException e) {
assertEquals(FastNoSuchElementException.class, e.getClass());
}
}
示例11
@Override
protected Traverser.Admin<E> processNextStart() throws NoSuchElementException {
if (this.first) {
this.first = false;
while (this.starts.hasNext()) {
this.localTraversal.addStart(this.starts.next());
}
while (this.localTraversal.hasNext()) {
this.results.add(this.localTraversal.nextTraverser());
}
this.results.sort((o1, o2) -> {
SqlgTraverser x = (SqlgTraverser) o1;
SqlgTraverser y = (SqlgTraverser) o2;
return Long.compare(x.getStartElementIndex(), y.getStartElementIndex());
});
this.resultIterator = this.results.iterator();
}
if (this.resultIterator.hasNext()) {
return this.resultIterator.next();
} else {
throw FastNoSuchElementException.instance();
}
}
示例12
private boolean applyRange(Emit<E> emit) {
if (this.lastReplacedStep.hasRange() && this.lastReplacedStep.applyInStep() && this.lastReplacedStep.getDepth() == emit.getReplacedStepDepth()) {
if (this.lastReplacedStep.getSqlgRangeHolder().hasRange()) {
if (this.lastReplacedStep.getSqlgRangeHolder().getRange().isBefore(this.rangeCount + 1)) {
throw FastNoSuchElementException.instance();
}
if (this.lastReplacedStep.getSqlgRangeHolder().getRange().isAfter(this.rangeCount)) {
this.rangeCount++;
return true;
}
} else {
Preconditions.checkState(this.lastReplacedStep.getSqlgRangeHolder().hasSkip(), "If not a range query then it must be a skip.");
if (this.rangeCount < this.lastReplacedStep.getSqlgRangeHolder().getSkip()) {
this.rangeCount++;
return true;
}
}
this.rangeCount++;
}
return false;
}
示例13
@Override
protected Traverser.Admin<Vertex> processNextStart() {
if (this.first) {
this.first = false;
final SqlgTraverserGenerator generator = SqlgTraverserGenerator.instance();
final Vertex vertex = this.getTraversal().getGraph().get().addVertex(
this.parameters.getKeyValues(
generator.generate(false, (Step)this, 1L, false, false)
));
if (this.callbackRegistry != null && !this.callbackRegistry.getCallbacks().isEmpty()) {
final EventStrategy eventStrategy = getTraversal().getStrategies().getStrategy(EventStrategy.class).get();
final Event.VertexAddedEvent vae = new Event.VertexAddedEvent(eventStrategy.detach(vertex));
this.callbackRegistry.getCallbacks().forEach(c -> c.accept(vae));
}
return generator.generate(vertex, (Step)this, 1L, false, false);
} else
throw FastNoSuchElementException.instance();
}
示例14
@Override
protected Admin<Long> processNextStart() throws NoSuchElementException {
if (this.done) {
throw FastNoSuchElementException.instance();
}
this.done = true;
@SuppressWarnings({ "unchecked", "rawtypes" })
Step<Long, Long> step = (Step) this;
return this.getTraversal().getTraverserGenerator()
.generate(this.originGraphStep.count(), step, 1L);
}
示例15
@Override
protected Traverser.Admin<Long> processNextStart() throws NoSuchElementException {
if (!this.done) {
this.done = true;
final TinkerGraph graph = (TinkerGraph) this.getTraversal().getGraph().get();
return this.getTraversal().getTraverserGenerator().generate(Vertex.class.isAssignableFrom(this.elementClass) ?
(long) TinkerHelper.getVertices(graph).size() :
(long) TinkerHelper.getEdges(graph).size(),
(Step) this, 1L);
} else
throw FastNoSuchElementException.instance();
}
示例16
private void initialize() {
initialized = true;
if (useMultiQuery) {
setParentMultiQueryStep();
if (!starts.hasNext()) {
throw FastNoSuchElementException.instance();
}
final List<Admin<Vertex>> vertices = new ArrayList<>();
starts.forEachRemaining(vertices::add);
starts.add(vertices.iterator());
initializeMultiQuery(vertices);
}
}
示例17
private void initialize() {
initialized = true;
if (!starts.hasNext()) throw FastNoSuchElementException.instance();
List<Traverser.Admin<Element>> elements = new ArrayList<>();
starts.forEachRemaining(elements::add);
starts.add(elements.iterator());
useMultiQuery = useMultiQuery && elements.stream().allMatch(e -> e.get() instanceof Vertex);
if (useMultiQuery) {
initializeMultiQuery(elements);
}
}
示例18
private void initialize() {
initialized = true;
if (!starts.hasNext()) {
throw FastNoSuchElementException.instance();
}
List<Traverser.Admin<Edge>> edges = new ArrayList<>();
Set<Vertex> vertices = Sets.newHashSet();
starts.forEachRemaining(e -> {
edges.add(e);
if (vertices.size() < txVertexCacheSize) {
if (Direction.IN.equals(direction) || Direction.BOTH.equals(direction)) {
vertices.add(e.get().inVertex());
}
if (Direction.OUT.equals(direction) || Direction.BOTH.equals(direction)) {
vertices.add(e.get().outVertex());
}
}
});
// If there are multiple vertices then fetch the properties for all of them in a single multiQuery to
// populate the vertex cache so subsequent queries of properties don't have to go to the storage back end
if (vertices.size() > 1) {
JanusGraphMultiVertexQuery multiQuery = JanusGraphTraversalUtil.getTx(traversal).multiQuery();
((BasicVertexCentricQueryBuilder) multiQuery).profiler(queryProfiler);
multiQuery.addAllVertices(vertices).preFetch();
}
starts.add(edges.iterator());
}
示例19
public static <S, E> Iterator<E> flatMap(final Iterator<S> iterator, final Function<S, Iterator<E>> function) {
return new CloseableIterator<E>() {
private Iterator<E> currentIterator = Collections.emptyIterator();
@Override
public boolean hasNext() {
if (this.currentIterator.hasNext())
return true;
else {
while (iterator.hasNext()) {
this.currentIterator = function.apply(iterator.next());
if (this.currentIterator.hasNext())
return true;
}
}
return false;
}
@Override
public void remove() {
iterator.remove();
}
@Override
public E next() {
if (this.hasNext())
return this.currentIterator.next();
else
throw FastNoSuchElementException.instance();
}
@Override
public void close() {
CloseableIterator.closeIterator(iterator);
}
};
}
示例20
@Override
protected E map(final Traverser.Admin<S> traverser) {
final Iterator<E> iterator = traverser.get().iterator();
if (iterator.hasNext()) {
Number result = iterator.next();
while (iterator.hasNext()) {
result = NumberHelper.add(result, iterator.next());
}
return (E) result;
}
throw FastNoSuchElementException.instance();
}
示例21
@Override
public TraverserSet<S> nextBarrier() throws NoSuchElementException {
this.processAllStarts();
if (this.barrier.isEmpty())
throw FastNoSuchElementException.instance();
else {
final TraverserSet<S> temp = this.barrier;
this.barrier = new TraverserSet<>();
return temp;
}
}
示例22
/**
* Extracts specified range of elements from a Collection.
*/
private static Object applyRangeIterable(final Iterable<Object> iterable, final long low, final long high) {
// See if we only want a single item. It is also possible that we will allow more than one item, but that the
// incoming container is only capable of producing a single item. In that case, we will still emit a
// container. This allows the result type to be predictable based on the step arguments. It also allows us to
// avoid creating the result container for the single case.
boolean single = high != -1 ? (high - low == 1) : false;
final Collection resultCollection =
single ? null : (iterable instanceof Set) ? new LinkedHashSet() : new LinkedList();
Object result = single ? null : resultCollection;
long c = 0L;
for (final Object item : iterable) {
if (c >= low) {
if (c < high || high == -1) {
if (single) {
result = item;
break;
} else {
resultCollection.add(item);
}
} else break;
}
c++;
}
if (null == result)
// We have nothing to emit, so stop traversal.
throw FastNoSuchElementException.instance();
return result;
}
示例23
@Override
protected Traverser.Admin<Edge> processNextStart() {
if (this.first) {
this.first = false;
final TraverserGenerator generator = this.getTraversal().getTraverserGenerator();
final Traverser.Admin traverser = generator.generate(1, (Step) this, 1); // a dead traverser to trigger the traversal
Vertex toVertex = (Vertex) this.parameters.get(traverser, TO, Collections::emptyList).get(0);
Vertex fromVertex = (Vertex) this.parameters.get(traverser, FROM, Collections::emptyList).get(0);
if (toVertex instanceof Attachable)
toVertex = ((Attachable<Vertex>) toVertex)
.attach(Attachable.Method.get(this.getTraversal().getGraph().orElse(EmptyGraph.instance())));
if (fromVertex instanceof Attachable)
fromVertex = ((Attachable<Vertex>) fromVertex)
.attach(Attachable.Method.get(this.getTraversal().getGraph().orElse(EmptyGraph.instance())));
final String edgeLabel = (String) this.parameters.get(traverser, T.label, () -> Edge.DEFAULT_LABEL).get(0);
final Edge edge = fromVertex.addEdge(edgeLabel, toVertex, this.parameters.getKeyValues(traverser, TO, FROM, T.label));
if (callbackRegistry != null) {
final EventStrategy eventStrategy = getTraversal().getStrategies().getStrategy(EventStrategy.class).get();
final Event.EdgeAddedEvent vae = new Event.EdgeAddedEvent(eventStrategy.detach(edge));
callbackRegistry.getCallbacks().forEach(c -> c.accept(vae));
}
return generator.generate(edge, this, 1L);
} else
throw FastNoSuchElementException.instance();
}
示例24
@Override
protected Number map(final Traverser.Admin<S> traverser) {
final Iterator<E> iterator = traverser.get().iterator();
if (iterator.hasNext()) {
Long counter = 1L;
E result = iterator.next();
while (iterator.hasNext()) {
result = (E) NumberHelper.add(result, iterator.next());
counter++;
}
return NumberHelper.div(result, counter, true);
}
throw FastNoSuchElementException.instance();
}
示例25
@Override
protected E map(final Traverser.Admin<S> traverser) {
final Iterator<E> iterator = traverser.get().iterator();
if (iterator.hasNext()) {
Comparable result = iterator.next();
while (iterator.hasNext()) {
result = max(iterator.next(), result);
}
return (E) result;
}
throw FastNoSuchElementException.instance();
}
示例26
@Override
protected Traverser.Admin<Vertex> processNextStart() {
if (this.first) {
this.first = false;
final TraverserGenerator generator = this.getTraversal().getTraverserGenerator();
final Vertex vertex = this.getTraversal().getGraph().get().addVertex(this.parameters.getKeyValues(generator.generate(false, (Step) this, 1L)));
if (this.callbackRegistry != null) {
final EventStrategy eventStrategy = getTraversal().getStrategies().getStrategy(EventStrategy.class).get();
final Event.VertexAddedEvent vae = new Event.VertexAddedEvent(eventStrategy.detach(vertex));
this.callbackRegistry.getCallbacks().forEach(c -> c.accept(vae));
}
return generator.generate(vertex, this, 1L);
} else
throw FastNoSuchElementException.instance();
}
示例27
@Override
protected E map(final Traverser.Admin<S> traverser) {
final Iterator<E> iterator = traverser.get().iterator();
if (iterator.hasNext()) {
Comparable result = iterator.next();
while (iterator.hasNext()) {
result = min(iterator.next(), result);
}
return (E) result;
}
throw FastNoSuchElementException.instance();
}
示例28
@Override
public TraverserSet<S> nextBarrier() throws NoSuchElementException {
if (this.barrier.isEmpty()) {
this.processAllStarts();
}
if (this.barrier.isEmpty())
throw FastNoSuchElementException.instance();
else {
final TraverserSet<S> temp = this.barrier;
this.barrier = new TraverserSet<>();
return temp;
}
}
示例29
@Override
public TraverserSet<S> nextBarrier() throws NoSuchElementException {
this.processAllStarts();
if (this.traverserSet.isEmpty())
throw FastNoSuchElementException.instance();
else {
final TraverserSet<S> temp = new TraverserSet<>();
IteratorUtils.removeOnNext(this.traverserSet.iterator()).forEachRemaining(t -> {
DetachedFactory.detach(t, true); // this should be dynamic
temp.add(t);
});
return temp;
}
}
示例30
@Override
public Traverser.Admin<E> processNextStart() {
if (this.done)
throw FastNoSuchElementException.instance();
this.processAllStarts();
this.done = true;
return this.getTraversal().asAdmin().getTraverserGenerator().generate(this.supply(), (Step<E, E>) this, 1l);
}