java: Implement 6 more JNI syncbase internal functions
The functions added in this CL are:
Service.GetPermissions
Service.SetPermissions
Database.GetPermissions
Database.SetPermissions
Collection.GetPermissions
Collection.SetPermissions
This CL also makes the newVBytesFromJava more resilient (works when a
nil is passed in) and reorders the bottom part of the jni.go to be in
alphabetical order of the v23_syncbase_ types they are operating on.
MultiPart: 2/2
Change-Id: Ib855a53b1ff317fae851a282aea6a4fdae2ecb20
diff --git a/syncbase/src/test/java/io/v/syncbase/internal/CollectionTest.java b/syncbase/src/test/java/io/v/syncbase/internal/CollectionTest.java
index db07d1d..a5fb7b5 100644
--- a/syncbase/src/test/java/io/v/syncbase/internal/CollectionTest.java
+++ b/syncbase/src/test/java/io/v/syncbase/internal/CollectionTest.java
@@ -92,6 +92,31 @@
}
@Test
+ public void permissions() {
+ Id dbId = new Id("idp:a:angrybirds", "permissions_collection");
+ String dbName = dbId.encode();
+ Id collectionId = new Id("idp:u:alice", "collection");
+ String collectionName = Util.NamingJoin(Arrays.asList(dbName, collectionId.encode()));
+ try {
+ Database.Create(dbName, null);
+ String batchHandle = Database.BeginBatch(dbId.encode(), null);
+ Collection.Create(collectionName, batchHandle, null);
+ Permissions permissions = Collection.GetPermissions(collectionName, batchHandle);
+ assertNotNull(permissions);
+ String json = new String(permissions.json);
+ assertTrue(json.contains("Admin"));
+ Database.Commit(dbName, batchHandle);
+
+ batchHandle = Database.BeginBatch(dbId.encode(), null);
+ Collection.SetPermissions(collectionName, batchHandle, permissions);
+ Database.Commit(dbName, batchHandle);
+ } catch (VError vError) {
+ vError.printStackTrace();
+ fail(vError.toString());
+ }
+ }
+
+ @Test
public void deleteRangeCollection() {
Id dbId = new Id("idp:a:angrybirds", "delete_range_collection");
String dbName = dbId.encode();
diff --git a/syncbase/src/test/java/io/v/syncbase/internal/DatabaseTest.java b/syncbase/src/test/java/io/v/syncbase/internal/DatabaseTest.java
index 23f7591..aa97ff2 100644
--- a/syncbase/src/test/java/io/v/syncbase/internal/DatabaseTest.java
+++ b/syncbase/src/test/java/io/v/syncbase/internal/DatabaseTest.java
@@ -14,6 +14,7 @@
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
@@ -83,6 +84,28 @@
}
@Test
+ public void permissions() {
+ Id dbId = new Id("idp:a:angrybirds", "permissions_db");
+ String dbName = dbId.encode();
+ try {
+ Database.Create(dbName, null);
+ VersionedPermissions versionedPermissions1 = Database.GetPermissions(dbName);
+ assertNotNull(versionedPermissions1);
+ assertTrue(versionedPermissions1.version.length() > 0);
+ String json = new String(versionedPermissions1.permissions.json);
+ assertTrue(json.contains("Admin"));
+
+ Database.SetPermissions(dbName, versionedPermissions1);
+ VersionedPermissions versionedPermissions2 = Database.GetPermissions(dbName);
+ assertNotEquals(versionedPermissions1.version, versionedPermissions2.version);
+ assertEquals(json, new String(versionedPermissions2.permissions.json));
+ } catch (VError vError) {
+ vError.printStackTrace();
+ fail(vError.toString());
+ }
+ }
+
+ @Test
public void abortDatabase() {
Id dbId = new Id("idp:a:angrybirds", "abort_db");
String dbName = dbId.encode();
diff --git a/syncbase/src/test/java/io/v/syncbase/internal/ServiceTest.java b/syncbase/src/test/java/io/v/syncbase/internal/ServiceTest.java
index 58e5ebb..da6b8d9 100644
--- a/syncbase/src/test/java/io/v/syncbase/internal/ServiceTest.java
+++ b/syncbase/src/test/java/io/v/syncbase/internal/ServiceTest.java
@@ -7,7 +7,10 @@
import org.junit.Before;
import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
public class ServiceTest {
@Before
@@ -19,4 +22,23 @@
public void listDatabases() {
assertTrue(Service.ListDatabases().isEmpty());
}
+
+ @Test
+ public void getPermissions() {
+ VersionedPermissions versionedPermissions1 = Service.GetPermissions();
+ assertNotNull(versionedPermissions1);
+ assertTrue(versionedPermissions1.version.length() > 0);
+ String json = new String(versionedPermissions1.permissions.json);
+ assertTrue(json.contains("Admin"));
+
+ try {
+ Service.SetPermissions(versionedPermissions1);
+ VersionedPermissions versionedPermissions2 = Service.GetPermissions();
+ assertEquals("1", versionedPermissions2.version);
+ assertEquals(json, new String(versionedPermissions2.permissions.json));
+ } catch (VError vError) {
+ vError.printStackTrace();
+ fail(vError.toString());
+ }
+ }
}