//export Java_io_v_v23_security_VPrincipalImpl_nativeBless func Java_io_v_v23_security_VPrincipalImpl_nativeBless(jenv *C.JNIEnv, jVPrincipalImpl C.jobject, goRef C.jlong, jKey C.jobject, jWith C.jobject, jExtension C.jstring, jCaveat C.jobject, jAdditionalCaveats C.jobjectArray) C.jobject { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) key, err := GoPublicKey(env, jutil.Object(uintptr(unsafe.Pointer(jKey)))) if err != nil { jutil.JThrowV(env, err) return nil } with, err := GoBlessings(env, jutil.Object(uintptr(unsafe.Pointer(jWith)))) if err != nil { jutil.JThrowV(env, err) return nil } extension := jutil.GoString(env, jutil.Object(uintptr(unsafe.Pointer(jExtension)))) caveat, err := GoCaveat(env, jutil.Object(uintptr(unsafe.Pointer(jCaveat)))) if err != nil { jutil.JThrowV(env, err) return nil } additionalCaveats, err := GoCaveats(env, jutil.Object(uintptr(unsafe.Pointer(jAdditionalCaveats)))) if err != nil { jutil.JThrowV(env, err) return nil } blessings, err := (*(*security.Principal)(jutil.GoRefValue(jutil.Ref(goRef)))).Bless(key, with, extension, caveat, additionalCaveats...) if err != nil { jutil.JThrowV(env, err) return nil } jBlessings, err := JavaBlessings(env, blessings) if err != nil { jutil.JThrowV(env, err) return nil } return C.jobject(unsafe.Pointer(jBlessings)) }
//export Java_io_v_v23_security_access_PermissionsAuthorizer_nativeCreate func Java_io_v_v23_security_access_PermissionsAuthorizer_nativeCreate(jenv *C.JNIEnv, jPermissionsAuthorizerClass C.jclass, jPermissions C.jobject, jTagType C.jobject) C.jobject { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) perms, err := GoPermissions(env, jutil.Object(uintptr(unsafe.Pointer(jPermissions)))) if err != nil { jutil.JThrowV(env, err) return nil } tagType, err := jutil.GoVdlType(env, jutil.Object(uintptr(unsafe.Pointer(jTagType)))) if err != nil { jutil.JThrowV(env, err) return nil } authorizer, err := access.PermissionsAuthorizer(perms, tagType) if err != nil { jutil.JThrowV(env, err) return nil } ref := jutil.GoNewRef(&authorizer) // Un-refed when the Java PermissionsAuthorizer is finalized jAuthorizer, err := jutil.NewObject(env, jutil.Class(uintptr(unsafe.Pointer(jPermissionsAuthorizerClass))), []jutil.Sign{jutil.LongSign}, int64(ref)) if err != nil { jutil.GoDecRef(ref) jutil.JThrowV(env, err) return nil } return C.jobject(unsafe.Pointer(jAuthorizer)) }
//export Java_io_v_v23_security_VSecurity_nativeCreateAuthorizer func Java_io_v_v23_security_VSecurity_nativeCreateAuthorizer(jenv *C.JNIEnv, jVSecurityClass C.jclass, kind C.jint, jKey C.jobject) C.jobject { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) var auth security.Authorizer switch kind { case 0: auth = security.AllowEveryone() case 1: auth = security.EndpointAuthorizer() case 2: auth = security.DefaultAuthorizer() case 3: key, err := GoPublicKey(env, jutil.Object(uintptr(unsafe.Pointer(jKey)))) if err != nil { jutil.JThrowV(env, err) return nil } auth = security.PublicKeyAuthorizer(key) default: return nil } ref := jutil.GoNewRef(&auth) // Un-refed when the Java PermissionsAuthorizer is finalized jAuthorizer, err := jutil.NewObject(env, jutil.Class(uintptr(unsafe.Pointer(jPermissionsAuthorizerClass))), []jutil.Sign{jutil.LongSign}, int64(ref)) if err != nil { jutil.GoDecRef(ref) jutil.JThrowV(env, err) return nil } return C.jobject(unsafe.Pointer(jAuthorizer)) }
//export Java_io_v_v23_security_VPrincipalImpl_nativeCreatePersistentForSigner func Java_io_v_v23_security_VPrincipalImpl_nativeCreatePersistentForSigner(jenv *C.JNIEnv, jclass C.jclass, jSigner C.jobject, jDir C.jstring) C.jobject { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) signerObj := jutil.Object(uintptr(unsafe.Pointer(jSigner))) signer, err := GoSigner(env, signerObj) if err != nil { jutil.JThrowV(env, err) return nil } dir := jutil.GoString(env, jutil.Object(uintptr(unsafe.Pointer(jDir)))) stateSerializer, err := vsecurity.NewPrincipalStateSerializer(dir) if err != nil { jutil.JThrowV(env, err) return nil } principal, err := vsecurity.NewPrincipalFromSigner(signer, stateSerializer) if err != nil { jutil.JThrowV(env, err) return nil } ref := jutil.GoNewRef(&principal) // Un-refed when the Java VPrincipalImpl is finalized. jPrincipal, err := jutil.NewObject(env, jVPrincipalImplClass, []jutil.Sign{jutil.LongSign, signerSign, blessingStoreSign, blessingRootsSign}, int64(ref), signerObj, jutil.NullObject, jutil.NullObject) if err != nil { jutil.GoDecRef(ref) jutil.JThrowV(env, err) return nil } return C.jobject(unsafe.Pointer(jPrincipal)) }
//export Java_io_v_impl_google_lib_discovery_GlobalDiscovery_nativeNewDiscovery func Java_io_v_impl_google_lib_discovery_GlobalDiscovery_nativeNewDiscovery(jenv *C.JNIEnv, jRuntime C.jclass, jContext C.jobject, jPath C.jstring, jMountTTL, jScanInterval C.jobject) C.jobject { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) ctx, _, err := jcontext.GoContext(env, jutil.Object(uintptr(unsafe.Pointer(jContext)))) if err != nil { jutil.JThrowV(env, err) return nil } path := jutil.GoString(env, jutil.Object(uintptr(unsafe.Pointer(jPath)))) mountTTL, err := jutil.GoDuration(env, jutil.Object(uintptr(unsafe.Pointer(jMountTTL)))) if err != nil { jutil.JThrowV(env, err) return nil } scanInterval, err := jutil.GoDuration(env, jutil.Object(uintptr(unsafe.Pointer(jScanInterval)))) if err != nil { jutil.JThrowV(env, err) return nil } discovery, err := gdiscovery.NewWithTTL(ctx, path, mountTTL, scanInterval) if err != nil { jutil.JThrowV(env, err) return nil } jDiscovery, err := JavaDiscovery(env, discovery) if err != nil { jutil.JThrowV(env, err) return nil } return C.jobject(unsafe.Pointer(jDiscovery)) }
//export Java_io_v_v23_security_PublicKeyThirdPartyCaveatValidator_nativeValidate func Java_io_v_v23_security_PublicKeyThirdPartyCaveatValidator_nativeValidate(jenv *C.JNIEnv, jThirdPartyValidatorClass C.jclass, jContext C.jobject, jCall C.jobject, jCaveatParam C.jobject) { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) param, err := jutil.GoVomCopyValue(env, jutil.Object(uintptr(unsafe.Pointer(jCaveatParam)))) if err != nil { jutil.JThrowV(env, err) return } ctx, _, err := jcontext.GoContext(env, jutil.Object(uintptr(unsafe.Pointer(jContext)))) if err != nil { jutil.JThrowV(env, err) return } call, err := GoCall(env, jutil.Object(uintptr(unsafe.Pointer(jCall)))) if err != nil { jutil.JThrowV(env, err) return } caveat, err := security.NewCaveat(security.PublicKeyThirdPartyCaveat, param) if err != nil { jutil.JThrowV(env, err) return } if err := caveat.Validate(ctx, call); err != nil { jutil.JThrowV(env, err) return } }
//export Java_io_v_v23_security_BlessingRootsImpl_nativeDump func Java_io_v_v23_security_BlessingRootsImpl_nativeDump(jenv *C.JNIEnv, jBlessingRootsImpl C.jobject, goRef C.jlong) C.jobject { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) dump := (*(*security.BlessingRoots)(jutil.GoRefValue(jutil.Ref(goRef)))).Dump() result := make(map[jutil.Object][]jutil.Object) for pattern, keys := range dump { jBlessingPattern, err := JavaBlessingPattern(env, pattern) if err != nil { jutil.JThrowV(env, err) return nil } jPublicKeys := make([]jutil.Object, len(keys)) for i, key := range keys { var err error if jPublicKeys[i], err = JavaPublicKey(env, key); err != nil { jutil.JThrowV(env, err) return nil } } result[jBlessingPattern] = jPublicKeys } jMap, err := jutil.JObjectMultimap(env, result) if err != nil { jutil.JThrowV(env, err) return nil } return C.jobject(unsafe.Pointer(jMap)) }
//export Java_io_v_v23_security_VSecurity_nativeGetSigningBlessingNames func Java_io_v_v23_security_VSecurity_nativeGetSigningBlessingNames(jenv *C.JNIEnv, jVSecurityClass C.jclass, jCtx C.jobject, jPrincipal C.jobject, jBlessings C.jobject) C.jobjectArray { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) ctx, _, err := jcontext.GoContext(env, jutil.Object(uintptr(unsafe.Pointer(jCtx)))) if err != nil { jutil.JThrowV(env, err) return nil } principal, err := GoPrincipal(env, jutil.Object(uintptr(unsafe.Pointer(jPrincipal)))) if err != nil { jutil.JThrowV(env, err) return nil } blessings, err := GoBlessings(env, jutil.Object(uintptr(unsafe.Pointer(jBlessings)))) if err != nil { jutil.JThrowV(env, err) return nil } blessingStrs, _ := security.SigningBlessingNames(ctx, principal, blessings) jArr, err := jutil.JStringArray(env, blessingStrs) if err != nil { jutil.JThrowV(env, err) return nil } return C.jobjectArray(unsafe.Pointer(jArr)) }
//export Java_io_v_impl_google_rpc_StreamImpl_nativeRecv func Java_io_v_impl_google_rpc_StreamImpl_nativeRecv(jenv *C.JNIEnv, jStream C.jobject, goRef C.jlong, jCallbackObj C.jobject) { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) jCallback := jutil.Object(uintptr(unsafe.Pointer(jCallbackObj))) result := new(vdl.Value) jutil.DoAsyncCall(env, jCallback, func() (jutil.Object, error) { if err := (*(*rpc.Stream)(jutil.GoRefValue(jutil.Ref(goRef)))).Recv(&result); err != nil { if err == io.EOF { // Java uses EndOfFile error to detect EOF. err = verror.NewErrEndOfFile(nil) } return jutil.NullObject, err } vomResult, err := vom.Encode(result) if err != nil { return jutil.NullObject, err } env, freeFunc := jutil.GetEnv() defer freeFunc() jResult, err := jutil.JByteArray(env, vomResult) if err != nil { return jutil.NullObject, err } // Must grab a global reference as we free up the env and all local references that come along // with it. return jutil.NewGlobalRef(env, jResult), nil // Un-refed in DoAsyncCall }) }
//export Java_io_v_impl_google_rpc_ClientCallImpl_nativeCloseSend func Java_io_v_impl_google_rpc_ClientCallImpl_nativeCloseSend(jenv *C.JNIEnv, jCall C.jobject, goRef C.jlong, jCallbackObj C.jobject) { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) jCallback := jutil.Object(uintptr(unsafe.Pointer(jCallbackObj))) jutil.DoAsyncCall(env, jCallback, func() (jutil.Object, error) { return jutil.NullObject, (*(*rpc.ClientCall)(jutil.GoRefValue(jutil.Ref(goRef)))).CloseSend() }) }
//export Java_io_v_impl_google_lib_discovery_UpdateImpl_nativeAttachment func Java_io_v_impl_google_lib_discovery_UpdateImpl_nativeAttachment(jenv *C.JNIEnv, _ C.jobject, goRef C.jlong, jCtx C.jobject, jName C.jstring, jCbObj C.jobject) { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) ctx, _, err := jcontext.GoContext(env, jutil.Object(uintptr(unsafe.Pointer(jCtx)))) if err != nil { jutil.JThrowV(env, err) return } update := *(*discovery.Update)(jutil.GoRefValue(jutil.Ref(goRef))) name := jutil.GoString(env, jutil.Object(uintptr(unsafe.Pointer(jName)))) jCb := jutil.Object(uintptr(unsafe.Pointer(jCbObj))) jutil.DoAsyncCall(env, jCb, func() (jutil.Object, error) { dataOrErr := <-update.Attachment(ctx, name) if dataOrErr.Error != nil { return jutil.NullObject, err } env, freeFunc := jutil.GetEnv() defer freeFunc() jData, err := jutil.JByteArray(env, dataOrErr.Data) if err != nil { return jutil.NullObject, err } // Must grab a global reference as we free up the env and all local references that come // along with it. return jutil.NewGlobalRef(env, jData), nil // Un-refed in DoAsyncCall }) }
//export Java_io_v_impl_google_rpc_ServerImpl_nativeAddName func Java_io_v_impl_google_rpc_ServerImpl_nativeAddName(jenv *C.JNIEnv, jServer C.jobject, goRef C.jlong, jName C.jstring) { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) name := jutil.GoString(env, jutil.Object(uintptr(unsafe.Pointer(jName)))) if err := (*(*rpc.Server)(jutil.GoRefValue(jutil.Ref(goRef)))).AddName(name); err != nil { jutil.JThrowV(env, err) return } }
//export Java_io_v_impl_google_rpc_ClientCallImpl_nativeFinish func Java_io_v_impl_google_rpc_ClientCallImpl_nativeFinish(jenv *C.JNIEnv, jCall C.jobject, goRef C.jlong, jNumResults C.jint, jCallbackObj C.jobject) { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) numResults := int(jNumResults) jCallback := jutil.Object(uintptr(unsafe.Pointer(jCallbackObj))) jutil.DoAsyncCall(env, jCallback, func() (jutil.Object, error) { return doFinish(goRef, numResults) }) }
//export Java_io_v_impl_google_channel_OutputChannelImpl_nativeClose func Java_io_v_impl_google_channel_OutputChannelImpl_nativeClose(jenv *C.JNIEnv, jOutputChannelClass C.jclass, goCloseRef C.jlong, jCallbackObj C.jobject) { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) close := *(*func() error)(jutil.GoRefValue(jutil.Ref(goCloseRef))) jCallback := jutil.Object(uintptr(unsafe.Pointer(jCallbackObj))) jutil.DoAsyncCall(env, jCallback, func() (jutil.Object, error) { return jutil.NullObject, close() }) }
//export Java_io_v_impl_google_lib_discovery_FactoryUtil_injectMockPlugin func Java_io_v_impl_google_lib_discovery_FactoryUtil_injectMockPlugin(jenv *C.JNIEnv, _ C.jclass, jCtx C.jobject) { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) ctx, _, err := jcontext.GoContext(env, jutil.Object(uintptr(unsafe.Pointer(jCtx)))) if err != nil { jutil.JThrowV(env, err) return } injectMockPlugin(ctx) }
//export Java_io_v_impl_google_rpc_ServerCallImpl_nativeRemoteEndpoint func Java_io_v_impl_google_rpc_ServerCallImpl_nativeRemoteEndpoint(jenv *C.JNIEnv, jServerCall C.jobject, goRef C.jlong) C.jobject { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) jEndpoint, err := jnaming.JavaEndpoint(env, (*(*rpc.ServerCall)(jutil.GoRefValue(jutil.Ref(goRef)))).RemoteEndpoint()) if err != nil { jutil.JThrowV(env, err) return nil } return C.jobject(unsafe.Pointer(jEndpoint)) }
//export Java_io_v_impl_google_rpc_ServerRPCHelper_nativeGoAuthorizer func Java_io_v_impl_google_rpc_ServerRPCHelper_nativeGoAuthorizer(jenv *C.JNIEnv, jServerRPCHelper C.jclass, jAuthorizer C.jobject) C.jlong { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) auth, err := jsecurity.GoAuthorizer(env, jutil.Object(uintptr(unsafe.Pointer(jAuthorizer)))) if err != nil { jutil.JThrowV(env, err) return C.jlong(0) } ref := jutil.GoNewRef(&auth) // Un-refed when the Go authorizer is returned to the Go runtime return C.jlong(ref) }
//export Java_io_v_impl_google_rpc_ServerCallImpl_nativeServer func Java_io_v_impl_google_rpc_ServerCallImpl_nativeServer(jenv *C.JNIEnv, jServerCall C.jobject, goRef C.jlong) C.jobject { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) server := (*(*rpc.ServerCall)(jutil.GoRefValue(jutil.Ref(goRef)))).Server() jServer, err := JavaServer(env, server) if err != nil { jutil.JThrowV(env, err) return nil } return C.jobject(unsafe.Pointer(jServer)) }
//export Java_io_v_impl_google_rpc_ServerCallImpl_nativeGrantedBlessings func Java_io_v_impl_google_rpc_ServerCallImpl_nativeGrantedBlessings(jenv *C.JNIEnv, jServerCall C.jobject, goRef C.jlong) C.jobject { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) blessings := (*(*rpc.ServerCall)(jutil.GoRefValue(jutil.Ref(goRef)))).GrantedBlessings() jBlessings, err := jsecurity.JavaBlessings(env, blessings) if err != nil { jutil.JThrowV(env, err) return nil } return C.jobject(unsafe.Pointer(jBlessings)) }
//export Java_io_v_v23_security_BlessingStoreImpl_nativePublicKey func Java_io_v_v23_security_BlessingStoreImpl_nativePublicKey(jenv *C.JNIEnv, jBlessingStoreImpl C.jobject, goRef C.jlong) C.jobject { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) key := (*(*security.BlessingStore)(jutil.GoRefValue(jutil.Ref(goRef)))).PublicKey() jKey, err := JavaPublicKey(env, key) if err != nil { jutil.JThrowV(env, err) return nil } return C.jobject(unsafe.Pointer(jKey)) }
//export Java_io_v_v23_security_BlessingStoreImpl_nativeDefaultBlessings func Java_io_v_v23_security_BlessingStoreImpl_nativeDefaultBlessings(jenv *C.JNIEnv, jBlessingStoreImpl C.jobject, goRef C.jlong) C.jobject { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) blessings, _ := (*(*security.BlessingStore)(jutil.GoRefValue(jutil.Ref(goRef)))).Default() jBlessings, err := JavaBlessings(env, blessings) if err != nil { jutil.JThrowV(env, err) return nil } return C.jobject(unsafe.Pointer(jBlessings)) }
//export Java_io_v_v23_security_BlessingPattern_nativeMakeNonExtendable func Java_io_v_v23_security_BlessingPattern_nativeMakeNonExtendable(jenv *C.JNIEnv, jBlessingPattern C.jobject, goRef C.jlong) C.jobject { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) pattern := (*(*security.BlessingPattern)(jutil.GoRefValue(jutil.Ref(goRef)))).MakeNonExtendable() jPattern, err := JavaBlessingPattern(env, pattern) if err != nil { jutil.JThrowV(env, err) return nil } return C.jobject(unsafe.Pointer(jPattern)) }
//export Java_io_v_impl_google_rpc_ServerImpl_nativeGetStatus func Java_io_v_impl_google_rpc_ServerImpl_nativeGetStatus(jenv *C.JNIEnv, jServer C.jobject, goRef C.jlong) C.jobject { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) status := (*(*rpc.Server)(jutil.GoRefValue(jutil.Ref(goRef)))).Status() jStatus, err := JavaServerStatus(env, status) if err != nil { jutil.JThrowV(env, err) return nil } return C.jobject(unsafe.Pointer(jStatus)) }
//export Java_io_v_v23_context_VContext_nativeWithCancel func Java_io_v_v23_context_VContext_nativeWithCancel(jenv *C.JNIEnv, jVContext C.jobject, goRef C.jlong) C.jobject { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) ctx, cancelFunc := context.WithCancel((*context.T)(jutil.GoRefValue(jutil.Ref(goRef)))) jCtx, err := JavaContext(env, ctx, cancelFunc) if err != nil { jutil.JThrowV(env, err) return nil } return C.jobject(unsafe.Pointer(jCtx)) }
//export Java_io_v_v23_context_VContext_nativeCreate func Java_io_v_v23_context_VContext_nativeCreate(jenv *C.JNIEnv, jVContext C.jclass) C.jobject { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) ctx, _ := context.RootContext() jContext, err := JavaContext(env, ctx, nil) if err != nil { jutil.JThrowV(env, err) return nil } return C.jobject(unsafe.Pointer(jContext)) }
//export Java_io_v_v23_security_access_AccessList_nativeCreate func Java_io_v_v23_security_access_AccessList_nativeCreate(jenv *C.JNIEnv, jAccessList C.jobject) C.jlong { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) acl, err := GoAccessList(env, jutil.Object(uintptr(unsafe.Pointer(jAccessList)))) if err != nil { jutil.JThrowV(env, err) return C.jlong(0) } ref := jutil.GoNewRef(&acl) // Un-refed when the AccessList object is finalized return C.jlong(ref) }
//export Java_io_v_v23_security_Blessings_nativeSigningBlessings func Java_io_v_v23_security_Blessings_nativeSigningBlessings(jenv *C.JNIEnv, jBlessings C.jobject, goRef C.jlong) C.jobject { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) blessings := security.SigningBlessings(*(*security.Blessings)(jutil.GoRefValue(jutil.Ref(goRef)))) jSigningBlessings, err := JavaBlessings(env, blessings) if err != nil { jutil.JThrowV(env, err) return nil } return C.jobject(unsafe.Pointer(jSigningBlessings)) }
//export Java_io_v_v23_security_Blessings_nativeWireFormat func Java_io_v_v23_security_Blessings_nativeWireFormat(jenv *C.JNIEnv, jBlessings C.jobject, goRef C.jlong) C.jobject { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) wire := security.MarshalBlessings(*(*security.Blessings)(jutil.GoRefValue(jutil.Ref(goRef)))) jWire, err := JavaWireBlessings(env, wire) if err != nil { jutil.JThrowV(env, err) return nil } return C.jobject(unsafe.Pointer(jWire)) }
//export Java_io_v_impl_google_lib_discovery_UUIDUtil_attributeUUID func Java_io_v_impl_google_lib_discovery_UUIDUtil_attributeUUID(jenv *C.JNIEnv, _ C.jclass, jName C.jstring) C.jobject { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) name := jutil.GoString(env, jutil.Object(uintptr(unsafe.Pointer(jName)))) jUuid, err := javaUUID(env, idiscovery.NewAttributeUUID(name)) if err != nil { jutil.JThrowV(env, err) return nil } return C.jobject(unsafe.Pointer(jUuid)) }
//export Java_io_v_v23_security_Blessings_nativeCreate func Java_io_v_v23_security_Blessings_nativeCreate(jenv *C.JNIEnv, jBlessingsClass C.jclass, jWire C.jobject) C.jlong { env := jutil.Env(uintptr(unsafe.Pointer(jenv))) var blessings security.Blessings if err := jutil.GoVomCopy(env, jutil.Object(uintptr(unsafe.Pointer(jWire))), jWireBlessingsClass, &blessings); err != nil { jutil.JThrowV(env, err) return C.jlong(0) } ref := jutil.GoNewRef(&blessings) // Un-refed when the Java Blessings object is finalized. return C.jlong(ref) }