v.io/x/jni: move shared library targets to their own package

This is needed so that we can include the jni package from the
syncbase jni directory.

MultiPart: 1/2
Change-Id: I4a6c38c1c78eaf24afe757d3409a3d03c022a039
diff --git a/jni.go b/jni.go
index f974aa6..dd324aa 100644
--- a/jni.go
+++ b/jni.go
@@ -4,7 +4,7 @@
 
 // +build java android
 
-package main
+package jni
 
 import (
 	"os"
diff --git a/log_android.go b/log_android.go
index 565b213..dadd5d0 100644
--- a/log_android.go
+++ b/log_android.go
@@ -4,7 +4,7 @@
 
 // +build android
 
-package main
+package jni
 
 // #include <android/log.h>
 // #cgo LDFLAGS: -llog
diff --git a/dummy.go b/main/dummy.go
similarity index 99%
rename from dummy.go
rename to main/dummy.go
index 53e27bb..fd9706a 100644
--- a/dummy.go
+++ b/main/dummy.go
@@ -6,4 +6,4 @@
 
 package main
 
-func main() {}
+func main() {}
\ No newline at end of file
diff --git a/dummy.go b/main/main.go
similarity index 72%
copy from dummy.go
copy to main/main.go
index 53e27bb..c214545 100644
--- a/dummy.go
+++ b/main/main.go
@@ -2,8 +2,13 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-// +build !java,!android
+// +build java android
 
 package main
 
-func main() {}
+import (
+	_ "v.io/x/jni"
+)
+
+func main() {
+}
diff --git a/v23/security/access/jni.go b/v23/security/access/jni.go
index c4183d7..67fa841 100644
--- a/v23/security/access/jni.go
+++ b/v23/security/access/jni.go
@@ -19,6 +19,8 @@
 var (
 	// Global reference for io.v.v23.security.access.AccessList class.
 	jAccessListClass jutil.Class
+	// Global reference for io.v.v23.security.access.Permissions class.
+	jPermissionsClass jutil.Class
 )
 
 func Init(env jutil.Env) error {
@@ -27,6 +29,10 @@
 	if err != nil {
 		return err
 	}
+	jPermissionsClass, err = jutil.JFindClass(env, "io/v/v23/security/access/Permissions")
+	if err != nil {
+		return err
+	}
 	return nil
 }
 
diff --git a/v23/security/access/util.go b/v23/security/access/util.go
index 405bc9b..ef1d574 100644
--- a/v23/security/access/util.go
+++ b/v23/security/access/util.go
@@ -16,6 +16,18 @@
 
 // GoAccessList converts the provided Java AccessList into a Go AccessList.
 func GoAccessList(env jutil.Env, jAccessList jutil.Object) (acl access.AccessList, err error) {
+	if jAccessList.IsNull() {
+		return
+	}
 	err = jutil.GoVomCopy(env, jAccessList, jAccessListClass, &acl)
 	return
 }
+
+// GoPermissions converts the provided Java Permissions into a Go Permissions.
+func GoPermissions(env jutil.Env, jPermissions jutil.Object) (perms access.Permissions, err error) {
+	if jPermissions.IsNull() {
+		return
+	}
+	err = jutil.GoVomCopy(env, jPermissions, jPermissionsClass, &perms)
+	return
+}