@Test public void shouldRunEnterprise() { assumeThat(Neo4jContainerTest.class.getResource(ACCEPTANCE_FILE_LOCATION)).isNotNull(); try ( Neo4jContainer neo4jContainer = new Neo4jContainer() .withEnterpriseEdition() .withAdminPassword("Picard123") ) { neo4jContainer.start(); try ( Driver driver = getDriver(neo4jContainer); Session session = driver.session() ) { String edition = session .run("CALL dbms.components() YIELD edition RETURN edition", Collections.emptyMap()) .next().get(0).asString(); assertThat(edition).isEqualTo("enterprise"); } } }
@Override public BoltServerAddress apply( Value value ) { return new BoltServerAddress( value.asString() ); } };
private static StatementType extractStatementType( Map<String,Value> metadata ) { Value typeValue = metadata.get( "type" ); if ( typeValue != null ) { return StatementType.fromCode( typeValue.asString() ); } return null; }
private static String extractConnectionId( Map<String,Value> metadata ) { Value value = metadata.get( CONNECTION_ID_METADATA_KEY ); if ( value == null || value.isNull() ) { throw new IllegalStateException( "Unable to extract " + CONNECTION_ID_METADATA_KEY + " from a response to HELLO message. " + "Received metadata: " + metadata ); } return value.asString(); } }
private String get( Value value, String defaultValue ) { if( value.equals( Values.NULL ) ) { return defaultValue; } else { return value.asString(); } }
@Override public void setAuth(AuthToken authToken) { if (authToken instanceof InternalAuthToken) { Map<String, Value> map = ((InternalAuthToken)authToken).toMap(); Value scheme = map.get("scheme"); if (scheme != null) { if ("basic".equals(scheme.asString())) { String uid = map.get("principal") != null ? map.get("principal").asString() : null; String pw = map.get("credentials") != null ? map.get("credentials").asString() : null; if (uid != null && pw != null) this.setAuth(uid, pw); } } } }
@Override public void setAuth(AuthToken authToken) { if (authToken instanceof InternalAuthToken) { Map<String, Value> map = ((InternalAuthToken)authToken).toMap(); Value scheme = map.get("scheme"); if (scheme != null) { if ("basic".equals(scheme.asString())) { String uid = map.get("principal") != null ? map.get("principal").asString() : null; String pw = map.get("credentials") != null ? map.get("credentials").asString() : null; if (uid != null && pw != null) this.setAuth(uid, pw); } } } }
@Override public void onSuccess( Map<String,Value> metadata ) { Value bookmarkValue = metadata.get( "bookmark" ); if ( bookmarkValue == null ) { commitFuture.complete( null ); } else { commitFuture.complete( Bookmarks.from( bookmarkValue.asString() ) ); } }
public List<String> extractStatementKeys( Map<String,Value> metadata ) { Value keysValue = metadata.get( "fields" ); if ( keysValue != null ) { if ( !keysValue.isEmpty() ) { List<String> keys = new ArrayList<>( keysValue.size() ); for ( Value value : keysValue.values() ) { keys.add( value.asString() ); } return keys; } } return emptyList(); }
public static final String formatToString(Value value) { if(value instanceof StringValue) return value.asString(); else if(value instanceof IntegerValue) return String.valueOf(value.asInt()); else if(value instanceof FloatValue) return String.valueOf(value.asFloat()); else if(value instanceof BooleanValue) return String.valueOf(value.asBoolean()); throw new NotSupportConvertException(); }
@Override public Void apply( Value value ) { result.servers( value.get( "role" ).asString() ) .addAll( value.get( "addresses" ).asList( OF_BoltServerAddress ) ); return null; } } );
public static final Object formatValue(Class<?> clazz, Value value) { if(value.isNull()) return null; if(clazz.isAssignableFrom(Integer.class)) return (Integer)value.asInt(); if(clazz.isAssignableFrom(Short.class)) return Short.valueOf(value.asString()); if(clazz.isAssignableFrom(Character.class)) return (Character)value.asString().charAt(0); if(clazz.isAssignableFrom(Float.class)) return (Float)value.asFloat(); if(clazz.isAssignableFrom(Double.class)) return (Double)value.asDouble(); if(clazz.isAssignableFrom(Long.class)) return (Long)value.asLong(); if(clazz.isAssignableFrom(Number.class)) return value.asNumber(); if(clazz.isAssignableFrom(Boolean.class)) return (Boolean)value.asBoolean(); if(clazz.isAssignableFrom(byte[].class)) return value.asByteArray(); if(clazz.isAssignableFrom(LocalDate.class)) return value.asLocalDate(); if(clazz.isAssignableFrom(LocalTime.class)) return value.asLocalTime(); if(clazz.isAssignableFrom(LocalDateTime.class)) return value.asLocalDateTime(); if(clazz.isAssignableFrom(OffsetTime.class)) return value.asOffsetTime(); if(clazz.isAssignableFrom(IsoDuration.class)) return value.asIsoDuration(); if(clazz.isAssignableFrom(ZonedDateTime.class)) return value.asZonedDateTime(); if(clazz.isAssignableFrom(Date.class)) return LocalDateTimeOperation.toDate().convert(value.asLocalDateTime()); if(clazz.isAssignableFrom(String.class)) return formatToString(value); if(clazz.isAssignableFrom(Enum.class)) return MethodOperation.invoked(null , MethodOperation.getMethod(clazz , "valueOf" , String.class), value.asString()); throw new NotSupportConvertException(); }
public Bookmarks extractBookmarks( Map<String,Value> metadata ) { Value bookmarkValue = metadata.get( "bookmark" ); if ( bookmarkValue != null && !bookmarkValue.isNull() && bookmarkValue.hasType( TYPE_SYSTEM.STRING() ) ) { return Bookmarks.from( bookmarkValue.asString() ); } return Bookmarks.empty(); }
Neo4jIndexManagement(Neo4jTransaction transaction, String namespace, Set<String> managedDomains) { currentIndexes = new LinkedHashSet<>(); StatementResult statementResult = transaction.executeCypher(String.format("CALL db.indexes")); while (statementResult.hasNext()) { Record record = statementResult.next(); Value labelValue = record.get("label"); Value properties = record.get("properties"); String label = labelValue.asString(); List<String> propertyList = properties.asList(Value::asString); currentIndexes.add(new Index(label, propertyList, !label.endsWith("_E"))); } wantedIndexes = new LinkedHashSet<>(); for (String managedDomain : managedDomains) { wantedIndexes.add(new Index(managedDomain, List.of("id"), true)); wantedIndexes.add(new Index(managedDomain + "_E", List.of("path", "hashOrValue"), false)); } createMissingIndices(transaction); }
@Test public void map() { List<Map<String, Object>> results = asList( getRow(1), getRow(2) ); StatementResult statementResult = new GremlinServerStatementResult(serverInfo, statement, results.iterator(), converter); assertThat(statementResult.list(r -> r.get(KEY2).asString())) .containsExactly("value1", "value2"); }
@Override public T apply( Value plan ) { final String operatorType = plan.get( "operatorType" ).asString(); final Value argumentsValue = plan.get( "args" ); final Map<String, Value> arguments = argumentsValue.isNull() ? Collections.<String, Value>emptyMap() : argumentsValue.asMap( Values.ofValue() ); final Value identifiersValue = plan.get( "identifiers" ); final List<String> identifiers = identifiersValue.isNull() ? Collections.<String>emptyList() : identifiersValue.asList( ofString() ); final Value childrenValue = plan.get( "children" ); final List<T> children = childrenValue.isNull() ? Collections.<T>emptyList() : childrenValue.asList( this ); return planCreator.create( operatorType, arguments, identifiers, children, plan ); } }
@Test public void withParameter() { Driver driver = GremlinDatabase.driver("//localhost:" + server.getPort()); try (Session session = driver.session()) { StatementResult result = session.run("CREATE (a:Greeting) " + "SET a.message = $message " + "RETURN a.message", parameters("message", "Hello")); String message = result.single().get(0).asString(); assertThat(message).isEqualTo("Hello"); } }
@Test public void inMemory() throws Exception { // freshReadmeSnippet: inMemory TinkerGraph graph = TinkerFactory.createModern(); GraphTraversalSource traversal = graph.traversal(); Driver driver = GremlinDatabase.driver(traversal); // freshReadmeSnippet: inMemory try (Session session = driver.session()) { StatementResult result = session.run("RETURN 'Hello'"); String message = result.single().get(0).asString(); assertThat(message).isEqualTo("Hello"); } }
@Test public void multipleRows() { Cluster cluster = Cluster.build() .addContactPoints("localhost") .port(server.getPort()) .create(); Driver driver = GremlinDatabase.driver(cluster); try (Session session = driver.session()) { StatementResult result = session.run("MATCH (p:person) RETURN p.name, p.age"); List<String> rows = result.list(r -> r.get("p.name").asString() + r.get("p.age").asInt()); assertThat(rows).containsExactly("marko29", "vadas27", "josh32", "peter35"); } }