blob: e21a7dc61cc14620447719e60a3321034a306675 [file] [log] [blame]
// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package io.v.v23.security;
import org.joda.time.DateTime;
import java.util.Map;
import io.v.v23.vdl.VdlValue;
import io.v.v23.verror.VException;
class CallImpl implements Call {
private final long nativePtr;
private native DateTime nativeTimestamp(long nativePtr) throws VException;
private native String nativeMethod(long nativePtr);
private native VdlValue[] nativeMethodTags(long nativePtr) throws VException;
private native String nativeSuffix(long nativePtr);
private native Map<String, Discharge> nativeLocalDischarges(long nativePtr);
private native Map<String, Discharge> nativeRemoteDischarges(long nativePtr);
private native String nativeLocalEndpoint(long nativePtr);
private native String nativeRemoteEndpoint(long nativePtr);
private native VPrincipal nativeLocalPrincipal(long nativePtr) throws VException;
private native Blessings nativeLocalBlessings(long nativePtr) throws VException;
private native Blessings nativeRemoteBlessings(long nativePtr) throws VException;
private native void nativeFinalize(long nativePtr);
CallImpl(long nativePtr) {
this.nativePtr = nativePtr;
}
// Implements io.v.v23.security.VContext.
@Override
public DateTime timestamp() {
try {
return nativeTimestamp(nativePtr);
} catch (VException e) {
throw new RuntimeException("Couldn't get timestamp", e);
}
}
@Override
public String method() {
return nativeMethod(nativePtr);
}
@Override
public VdlValue[] methodTags() {
try {
VdlValue[] tags = nativeMethodTags(nativePtr);
return tags != null ? tags : new VdlValue[0];
} catch (VException e) {
throw new RuntimeException("Couldn't get method tags", e);
}
}
@Override
public String suffix() {
return nativeSuffix(nativePtr);
}
@Override
public Map<String, Discharge> localDischarges() {
return nativeLocalDischarges(nativePtr);
}
@Override
public Map<String, Discharge> remoteDischarges() {
return nativeRemoteDischarges(nativePtr);
}
@Override
public String localEndpoint() {
return nativeLocalEndpoint(nativePtr);
}
@Override
public String remoteEndpoint() {
return nativeRemoteEndpoint(nativePtr);
}
@Override
public VPrincipal localPrincipal() {
try {
return nativeLocalPrincipal(nativePtr);
} catch (VException e) {
throw new RuntimeException("Couldn't get local principal", e);
}
}
@Override
public Blessings localBlessings() {
try {
return nativeLocalBlessings(nativePtr);
} catch (VException e) {
throw new RuntimeException("Couldn't get local blessings", e);
}
}
@Override
public Blessings remoteBlessings() {
try {
return nativeRemoteBlessings(nativePtr);
} catch (VException e) {
throw new RuntimeException("Couldn't get remote blessings", e);
}
}
// Implements java.lang.Object.
@Override
protected void finalize() {
nativeFinalize(nativePtr);
}
private long nativePtr() {
return nativePtr;
}
}