0bcc1d67bc
* Added handshake support * Add support for v4 hello and goodbye * Add support for pulling n results * Add support for transactions * Add pull n for the dump * Add support for NOOP * Add support for multiple queries * Update bolt session to support qid * Update drivers test with multiple versions and go * Extract failure handling into a function * Use unique ptr instead of optional for query execution * Destroy stream before query execution Co-authored-by: Antonio Andelic <antonio.andelic@memgraph.io>
81 lines
2.8 KiB
Java
81 lines
2.8 KiB
Java
import org.neo4j.driver.AuthTokens;
|
|
import org.neo4j.driver.GraphDatabase;
|
|
import org.neo4j.driver.Session;
|
|
import org.neo4j.driver.Driver;
|
|
import org.neo4j.driver.Transaction;
|
|
import org.neo4j.driver.TransactionWork;
|
|
import org.neo4j.driver.Result;
|
|
import org.neo4j.driver.Config;
|
|
import org.neo4j.driver.exceptions.ClientException;
|
|
import org.neo4j.driver.exceptions.TransientException;
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
import static org.neo4j.driver.Values.parameters;
|
|
import java.util.*;
|
|
|
|
public class Transactions {
|
|
public static String createPerson(Transaction tx, String name) {
|
|
Result result = tx.run("CREATE (a:Person {name: $name}) RETURN a.name", parameters("name", name));
|
|
return result.single().get(0).asString();
|
|
}
|
|
|
|
public static void main(String[] args) {
|
|
Config config = Config.builder().withoutEncryption().withMaxTransactionRetryTime(0, TimeUnit.SECONDS).build();
|
|
Driver driver = GraphDatabase.driver( "bolt://localhost:7687", AuthTokens.basic( "neo4j", "1234" ), config );
|
|
|
|
try ( Session session = driver.session() ) {
|
|
try {
|
|
session.writeTransaction(new TransactionWork<String>()
|
|
{
|
|
@Override
|
|
public String execute(Transaction tx) {
|
|
createPerson(tx, "mirko");
|
|
Result result = tx.run("CREATE (");
|
|
return result.single().get(0).asString();
|
|
}
|
|
});
|
|
} catch (ClientException e) {
|
|
System.out.println(e);
|
|
}
|
|
|
|
session.writeTransaction(new TransactionWork<String>()
|
|
{
|
|
@Override
|
|
public String execute(Transaction tx) {
|
|
System.out.println(createPerson(tx, "mirko"));
|
|
System.out.println(createPerson(tx, "slavko"));
|
|
return "Done";
|
|
}
|
|
});
|
|
|
|
System.out.println( "All ok!" );
|
|
|
|
boolean timed_out = false;
|
|
try {
|
|
session.writeTransaction(new TransactionWork<String>()
|
|
{
|
|
@Override
|
|
public String execute(Transaction tx) {
|
|
Result result = tx.run("MATCH (a), (b), (c), (d), (e), (f) RETURN COUNT(*) AS cnt");
|
|
return result.single().get(0).asString();
|
|
}
|
|
});
|
|
} catch (TransientException e) {
|
|
timed_out = true;
|
|
}
|
|
|
|
if (timed_out) {
|
|
System.out.println("The query timed out as was expected.");
|
|
} else {
|
|
throw new Exception("The query should have timed out, but it didn't!");
|
|
}
|
|
}
|
|
catch ( Exception e ) {
|
|
System.out.println( e );
|
|
System.exit( 1 );
|
|
}
|
|
|
|
driver.close();
|
|
}
|
|
}
|