org.neo4j.rest.graphdb.traversal.RestTraverser Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of spring-data-neo4j-rest Show documentation
Show all versions of spring-data-neo4j-rest Show documentation
pring Data Neo4j Wrapper for the Neo4j REST API, provides a Graph Database proxy for the remote invocation.
/**
* Copyright (c) 2002-2013 "Neo Technology,"
* Network Engine for Objects in Lund AB [http://neotechnology.com]
*
* This file is part of Neo4j.
*
* Neo4j is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see .
*/
package org.neo4j.rest.graphdb.traversal;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
import org.neo4j.graphdb.*;
import org.neo4j.graphdb.traversal.TraversalMetadata;
import org.neo4j.graphdb.traversal.Traverser;
import org.neo4j.rest.graphdb.util.WrappingResourceIterator;
import org.neo4j.rest.graphdb.RestAPI;
import org.neo4j.rest.graphdb.util.ResourceIterableWrapper;
/**
* @author Michael Hunger
* @since 03.02.11
*/
public class RestTraverser implements Traverser {
private final Collection paths;
public RestTraverser(Collection col, RestAPI restApi) {
this.paths = parseToPaths(col, restApi);
}
private Collection parseToPaths(Collection col, RestAPI restApi) {
Collection result=new ArrayList(col.size());
for (Object path : col) {
if (!(path instanceof Map)) throw new RuntimeException("Expected Map for Path representation but got: "+(path!=null ? path.getClass() : null));
result.add(RestPathParser.parse((Map) path, restApi));
}
return result;
}
public ResourceIterable nodes() {
return new ResourceIterableWrapper(paths) {
@Override
protected Node underlyingObjectToObject(Path path) {
return path.endNode();
}
};
}
public ResourceIterable relationships() {
return new ResourceIterableWrapper(paths) {
@Override
protected Relationship underlyingObjectToObject(Path path) {
return path.lastRelationship();
}
};
}
public ResourceIterator iterator() {
return new WrappingResourceIterator(paths.iterator());
}
@Override
public TraversalMetadata metadata() {
throw new UnsupportedOperationException();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy