diff --git a/ChangeLog b/ChangeLog index bdd697f07..d784c8121 100644 --- a/ChangeLog +++ b/ChangeLog @@ -7,6 +7,7 @@ v4.1.11 (2017-03-xx) * extracted VelocyPack implementation to https://github.com/arangodb/java-velocypack * fixed NPE in ArangoCursor (issue #112) * added support for replacing build-in VelocyPack serializer/deserializer +* added ArangoDatabase.getVersion(), ArangoDatabase.getAccessibleDatabases() v4.1.10 (2017-02-22) --------------------------- diff --git a/src/main/java/com/arangodb/ArangoDB.java b/src/main/java/com/arangodb/ArangoDB.java index 50ada67c9..ce58d5986 100644 --- a/src/main/java/com/arangodb/ArangoDB.java +++ b/src/main/java/com/arangodb/ArangoDB.java @@ -390,7 +390,7 @@ public Collection getDatabases() throws ArangoDBException { * @throws ArangoDBException */ public Collection getAccessibleDatabases() throws ArangoDBException { - return executor.execute(getAccessibleDatabasesRequest(db().name()), getDatabaseResponseDeserializer()); + return db().getAccessibleDatabases(); } /** @@ -418,7 +418,7 @@ public Collection getAccessibleDatabasesFor(final String user) throws Ar * @throws ArangoDBException */ public ArangoDBVersion getVersion() throws ArangoDBException { - return executor.execute(getVersionRequest(), ArangoDBVersion.class); + return db().getVersion(); } /** diff --git a/src/main/java/com/arangodb/ArangoDatabase.java b/src/main/java/com/arangodb/ArangoDatabase.java index 4b3422c41..f85c1349d 100644 --- a/src/main/java/com/arangodb/ArangoDatabase.java +++ b/src/main/java/com/arangodb/ArangoDatabase.java @@ -26,6 +26,7 @@ import com.arangodb.entity.AqlExecutionExplainEntity; import com.arangodb.entity.AqlFunctionEntity; import com.arangodb.entity.AqlParseEntity; +import com.arangodb.entity.ArangoDBVersion; import com.arangodb.entity.CollectionEntity; import com.arangodb.entity.CursorEntity; import com.arangodb.entity.DatabaseEntity; @@ -74,6 +75,31 @@ protected ArangoDatabase(final Communication communica super(null, new ArangoExecutorSync(communication, util, documentCache, collectionCache), name); } + /** + * Returns the server name and version number. + * + * @see API + * Documentation + * @return the server version, number + * @throws ArangoDBException + */ + public ArangoDBVersion getVersion() throws ArangoDBException { + return executor.execute(getVersionRequest(), ArangoDBVersion.class); + } + + /** + * Retrieves a list of all databases the current user can access + * + * @see API + * Documentation + * @return a list of all databases the current user can access + * @throws ArangoDBException + */ + public Collection getAccessibleDatabases() throws ArangoDBException { + return executor.execute(getAccessibleDatabasesRequest(), getDatabaseResponseDeserializer()); + } + /** * Returns a handler of the collection by the given name * diff --git a/src/main/java/com/arangodb/internal/InternalArangoDB.java b/src/main/java/com/arangodb/internal/InternalArangoDB.java index e0c4dd2e0..000628779 100644 --- a/src/main/java/com/arangodb/internal/InternalArangoDB.java +++ b/src/main/java/com/arangodb/internal/InternalArangoDB.java @@ -162,11 +162,6 @@ public Collection deserialize(final Response response) throws VPackExcep }; } - protected Request getAccessibleDatabasesRequest(final String database) { - return new Request(database, RequestType.GET, - executor.createPath(ArangoDBConstants.PATH_API_DATABASE, ArangoDBConstants.USER)); - } - protected Request getAccessibleDatabasesForRequest(final String database, final String user) { return new Request(database, RequestType.GET, executor.createPath(ArangoDBConstants.PATH_API_USER, user, ArangoDBConstants.DATABASE)); @@ -187,10 +182,6 @@ public Collection deserialize(final Response response) throws VPackExcep }; } - protected Request getVersionRequest() { - return new Request(ArangoDBConstants.SYSTEM, RequestType.GET, ArangoDBConstants.PATH_API_VERSION); - } - protected Request createUserRequest( final String database, final String user, diff --git a/src/main/java/com/arangodb/internal/InternalArangoDatabase.java b/src/main/java/com/arangodb/internal/InternalArangoDatabase.java index 25de6ae04..d92946413 100644 --- a/src/main/java/com/arangodb/internal/InternalArangoDatabase.java +++ b/src/main/java/com/arangodb/internal/InternalArangoDatabase.java @@ -79,6 +79,19 @@ public String name() { return name; } + protected ResponseDeserializer> getDatabaseResponseDeserializer() { + return arango.getDatabaseResponseDeserializer(); + } + + protected Request getAccessibleDatabasesRequest() { + return new Request(name, RequestType.GET, + executor.createPath(ArangoDBConstants.PATH_API_DATABASE, ArangoDBConstants.USER)); + } + + protected Request getVersionRequest() { + return new Request(name, RequestType.GET, ArangoDBConstants.PATH_API_VERSION); + } + protected Request createCollectionRequest(final String name, final CollectionCreateOptions options) { return new Request(name(), RequestType.POST, ArangoDBConstants.PATH_API_COLLECTION).setBody( executor.serialize(OptionsBuilder.build(options != null ? options : new CollectionCreateOptions(), name))); diff --git a/src/test/java/com/arangodb/ArangoDatabaseTest.java b/src/test/java/com/arangodb/ArangoDatabaseTest.java index 4a1fcf24c..7f2eb29c4 100644 --- a/src/test/java/com/arangodb/ArangoDatabaseTest.java +++ b/src/test/java/com/arangodb/ArangoDatabaseTest.java @@ -24,6 +24,7 @@ import static org.hamcrest.CoreMatchers.nullValue; import static org.hamcrest.Matchers.empty; import static org.hamcrest.Matchers.greaterThan; +import static org.hamcrest.Matchers.hasItem; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.not; import static org.junit.Assert.assertThat; @@ -47,6 +48,7 @@ import com.arangodb.entity.AqlFunctionEntity; import com.arangodb.entity.AqlParseEntity; import com.arangodb.entity.AqlParseEntity.AstNode; +import com.arangodb.entity.ArangoDBVersion; import com.arangodb.entity.BaseDocument; import com.arangodb.entity.BaseEdgeDocument; import com.arangodb.entity.CollectionEntity; @@ -82,6 +84,22 @@ public class ArangoDatabaseTest extends BaseTest { private static final String COLLECTION_NAME = "db_test"; private static final String GRAPH_NAME = "graph_test"; + @Test + public void getVersion() { + final ArangoDBVersion version = db.getVersion(); + assertThat(version, is(notNullValue())); + assertThat(version.getServer(), is(notNullValue())); + assertThat(version.getVersion(), is(notNullValue())); + } + + @Test + public void getAccessibleDatabases() { + final Collection dbs = db.getAccessibleDatabases(); + assertThat(dbs, is(notNullValue())); + assertThat(dbs.size(), greaterThan(0)); + assertThat(dbs, hasItem("_system")); + } + @Test public void createCollection() { try {