Skip to content

Commit

Permalink
[Java.Interop] Rename JniHandleOwnership to JniObjectReferenceOptions
Browse files Browse the repository at this point in the history
Fixes: dotnet#7

More "rename types to prevent collision with Xamarin.Android names"...
  • Loading branch information
jonpryor committed Oct 22, 2015
1 parent b5c05e1 commit 8c52dbd
Show file tree
Hide file tree
Showing 34 changed files with 175 additions and 176 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -218,15 +218,15 @@ Dictionary<string, List<JavaFieldInfo>> LookupFields ()
for (int i = 0; i < len; ++i) {
var field = JniEnvironment.Arrays.GetObjectArrayElement (fields, i);
var n_name = Field_getName.CallVirtualObjectMethod (field);
var name = JniEnvironment.Strings.ToString (ref n_name, JniHandleOwnership.Transfer);
var name = JniEnvironment.Strings.ToString (ref n_name, JniObjectReferenceOptions.DisposeSourceReference);
var isStatic = IsStatic (field);

List<JavaFieldInfo> overloads;
if (!Fields.TryGetValue (name, out overloads))
Fields.Add (name, overloads = new List<JavaFieldInfo> ());

var n_type = Field_getType.CallVirtualObjectMethod (field);
using (var type = new JniType (ref n_type, JniHandleOwnership.Transfer)) {
using (var type = new JniType (ref n_type, JniObjectReferenceOptions.DisposeSourceReference)) {
var info = JniEnvironment.Current.JavaVM.GetJniTypeInfoForJniTypeReference (type.Name);
overloads.Add (new JavaFieldInfo (Members, name + "\u0000" + info.JniTypeReference, isStatic));
}
Expand Down Expand Up @@ -258,15 +258,15 @@ Dictionary<string, List<JavaMethodInfo>> LookupMethods ()
for (int i = 0; i < len; ++i) {
var method = JniEnvironment.Arrays.GetObjectArrayElement (methods, i);
var n_name = Method_getName.CallVirtualObjectMethod (method);
var name = JniEnvironment.Strings.ToString (ref n_name, JniHandleOwnership.Transfer);
var name = JniEnvironment.Strings.ToString (ref n_name, JniObjectReferenceOptions.DisposeSourceReference);
var isStatic = IsStatic (method);

List<JavaMethodInfo> overloads;
if (!Methods.TryGetValue (name, out overloads))
Methods.Add (name, overloads = new List<JavaMethodInfo> ());

var nrt = Method_getReturnType.CallVirtualObjectMethod (method);
var rt = new JniType (ref nrt, JniHandleOwnership.Transfer);
var rt = new JniType (ref nrt, JniObjectReferenceOptions.DisposeSourceReference);
var m = new JavaMethodInfo (Members, method, name, isStatic) {
ReturnType = rt,
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public override unsafe object Invoke (IJavaPeerable self, JValue* arguments)
{
if (self == null) {
var h = members.InstanceMethods.StartCreateInstance (JniSignature, typeof (JavaInstanceProxy), arguments);
self = JniEnvironment.Current.JavaVM.GetObject<JavaInstanceProxy> (ref h, JniHandleOwnership.Transfer);
self = JniEnvironment.Current.JavaVM.GetObject<JavaInstanceProxy> (ref h, JniObjectReferenceOptions.DisposeSourceReference);
}
members.InstanceMethods.FinishCreateInstance (JniSignature, self, arguments);
return new DynamicJavaInstance (self);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ namespace Java.Interop.Dynamic {
[JniTypeInfoAttribute ("java/lang/Object")]
class JavaInstanceProxy : JavaObject {

public JavaInstanceProxy (ref JniObjectReference reference, JniHandleOwnership transfer)
public JavaInstanceProxy (ref JniObjectReference reference, JniObjectReferenceOptions transfer)
: base (ref reference, transfer)
{
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ protected virtual void Dispose (bool disposing)

protected static object ToReturnValue (ref JniObjectReference handle, string signature, int n)
{
var instance = JniEnvironment.Current.JavaVM.GetObject (ref handle, JniHandleOwnership.Transfer);
var instance = JniEnvironment.Current.JavaVM.GetObject (ref handle, JniObjectReferenceOptions.DisposeSourceReference);
switch (signature [n]) {
case 'L':
return new DynamicJavaInstance (instance);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ public override DynamicMetaObject BindConvert (ConvertBinder binder)
return binder.FallbackConvert (this);

var r = ConversionTarget;
var value = marshalInfo.GetValueFromJni (ref r, JniHandleOwnership.DoNotTransfer, binder.Type);
var value = marshalInfo.GetValueFromJni (ref r, JniObjectReferenceOptions.CreateNewReference, binder.Type);
var valueE = Expression.Convert (Expression.Constant (value), binder.Type);
return new DynamicMetaObject (valueE, BindingRestrictions.GetTypeRestriction (valueE, binder.Type), value);
}
Expand Down
2 changes: 1 addition & 1 deletion src/Java.Interop.Export/Tests/Java.Interop/ExportTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ namespace Java.InteropTests
[JniTypeInfo ("com/xamarin/interop/export/ExportType")]
public class ExportTest : JavaObject
{
public ExportTest (ref JniObjectReference reference, JniHandleOwnership transfer)
public ExportTest (ref JniObjectReference reference, JniObjectReferenceOptions transfer)
: base (ref reference, transfer)
{
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ static unsafe ExportTest CreateExportTest (JniType type)
{
var c = type.GetConstructor ("()V");
var p = type.NewObject (c, null);
return new ExportTest (ref p, JniHandleOwnership.Transfer);
return new ExportTest (ref p, JniObjectReferenceOptions.DisposeSourceReference);
}

[Test]
Expand Down
2 changes: 1 addition & 1 deletion src/Java.Interop/Java.Interop.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,6 @@
<Compile Include="Java.Interop\JniWeakGlobalReference.cs" />
<Compile Include="Java.Interop\JniLocalReference.cs" />
<Compile Include="Java.Interop\JavaException.cs" />
<Compile Include="Java.Interop\JniHandleOwnership.cs" />
<Compile Include="Java.Interop\JniNativeMethodRegistration.cs" />
<Compile Include="Java.Interop\JavaObject.cs" />
<Compile Include="Java.Interop\JniSystem.cs" />
Expand All @@ -74,6 +73,7 @@
<Compile Include="Java.Interop\JniMarshalInfo.cs" />
<Compile Include="Java.Interop\JniObjectReference.cs" />
<Compile Include="Java.Interop\JniObjectReferenceManager.cs" />
<Compile Include="Java.Interop\JniObjectReferenceOptions.cs" />
<Compile Include="Java.Interop\JniObjectReferenceType.cs" />
<Compile Include="Java.Interop\JniPeerInstanceMethods.cs" />
<Compile Include="Java.Interop\JniPeerInstanceFields.cs" />
Expand Down
8 changes: 4 additions & 4 deletions src/Java.Interop/Java.Interop/JavaArray.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,14 @@ namespace Java.Interop
{
public abstract class JavaArray<T> : JavaObject, IList, IList<T>
{
internal delegate TArray ArrayCreator<TArray> (ref JniObjectReference reference, JniHandleOwnership transfer)
internal delegate TArray ArrayCreator<TArray> (ref JniObjectReference reference, JniObjectReferenceOptions transfer)
where TArray : JavaArray<T>;

// Value was created via CreateMarshalCollection, and thus can
// be disposed of with impunity when no longer needed.
protected bool forMarshalCollection;

internal JavaArray (ref JniObjectReference handle, JniHandleOwnership transfer)
internal JavaArray (ref JniObjectReference handle, JniObjectReferenceOptions transfer)
: base (ref handle, transfer)
{
}
Expand Down Expand Up @@ -140,7 +140,7 @@ internal static JniObjectReference CreateLocalRef<TArray> (object value, Func<IL
return array.PeerReference.NewLocalRef ();
}

internal static IList<T> GetValueFromJni<TArray> (ref JniObjectReference reference, JniHandleOwnership transfer, Type targetType, ArrayCreator<TArray> creator)
internal static IList<T> GetValueFromJni<TArray> (ref JniObjectReference reference, JniObjectReferenceOptions transfer, Type targetType, ArrayCreator<TArray> creator)
where TArray : JavaArray<T>
{
var value = JniEnvironment.Current.JavaVM.PeekObject (reference);
Expand Down Expand Up @@ -350,7 +350,7 @@ public void Dispose ()

public abstract class JavaPrimitiveArray<T> : JavaArray<T> {

internal JavaPrimitiveArray (ref JniObjectReference reference, JniHandleOwnership transfer)
internal JavaPrimitiveArray (ref JniObjectReference reference, JniObjectReferenceOptions transfer)
: base (ref reference, transfer)
{
}
Expand Down
34 changes: 17 additions & 17 deletions src/Java.Interop/Java.Interop/JavaException.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public unsafe JavaException ()
var peer = JniPeerMembers.InstanceMethods.StartCreateInstance ("()V", GetType (), null);
using (SetPeerReference (
ref peer,
JniHandleOwnership.Transfer)) {
JniObjectReferenceOptions.DisposeSourceReference)) {
JniPeerMembers.InstanceMethods.FinishCreateInstance ("()V", this, null);
}
javaStackTrace = _GetJavaStack (PeerReference);
Expand All @@ -44,11 +44,11 @@ public unsafe JavaException (string message)
var peer = JniPeerMembers.InstanceMethods.StartCreateInstance (signature, GetType (), args);
using (SetPeerReference (
ref peer,
JniHandleOwnership.Transfer)) {
JniObjectReferenceOptions.DisposeSourceReference)) {
JniPeerMembers.InstanceMethods.FinishCreateInstance (signature, this, args);
}
} finally {
JniEnvironment.References.Dispose (ref native_message, JniHandleOwnership.Transfer);
JniEnvironment.References.Dispose (ref native_message, JniObjectReferenceOptions.DisposeSourceReference);
}
javaStackTrace = _GetJavaStack (PeerReference);
}
Expand All @@ -64,19 +64,19 @@ public unsafe JavaException (string message, Exception innerException)
var peer = JniPeerMembers.InstanceMethods.StartCreateInstance (signature, GetType (), args);
using (SetPeerReference (
ref peer,
JniHandleOwnership.Transfer)) {
JniObjectReferenceOptions.DisposeSourceReference)) {
JniPeerMembers.InstanceMethods.FinishCreateInstance (signature, this, args);
}
} finally {
JniEnvironment.References.Dispose (ref native_message, JniHandleOwnership.Transfer);
JniEnvironment.References.Dispose (ref native_message, JniObjectReferenceOptions.DisposeSourceReference);
}
javaStackTrace = _GetJavaStack (PeerReference);
}

public JavaException (ref JniObjectReference reference, JniHandleOwnership transfer)
public JavaException (ref JniObjectReference reference, JniObjectReferenceOptions transfer)
: base (_GetMessage (ref reference, transfer), _GetCause (ref reference, transfer))
{
if ((transfer & JniHandleOwnership.Invalid) == JniHandleOwnership.Invalid)
if (transfer == JniObjectReferenceOptions.Invalid)
return;

if (!reference.IsValid)
Expand Down Expand Up @@ -121,7 +121,7 @@ public override string StackTrace {
}
}

protected SetSafeHandleCompletion SetPeerReference (ref JniObjectReference handle, JniHandleOwnership transfer)
protected SetSafeHandleCompletion SetPeerReference (ref JniObjectReference handle, JniObjectReferenceOptions transfer)
{
return JniEnvironment.Current.JavaVM.SetObjectPeerReference (
this,
Expand Down Expand Up @@ -174,24 +174,24 @@ public override unsafe int GetHashCode ()
return _members.InstanceMethods.CallInt32Method ("hashCode\u0000()I", this, null);
}

static string _GetMessage (ref JniObjectReference reference, JniHandleOwnership transfer)
static string _GetMessage (ref JniObjectReference reference, JniObjectReferenceOptions transfer)
{
if ((transfer & JniHandleOwnership.Invalid) == JniHandleOwnership.Invalid)
if (transfer == JniObjectReferenceOptions.Invalid)
return null;

var m = _members.InstanceMethods.GetMethodID ("getMessage\u0000()Ljava/lang/String;");
var s = m.CallVirtualObjectMethod (reference);
return JniEnvironment.Strings.ToString (ref s, JniHandleOwnership.Transfer);
return JniEnvironment.Strings.ToString (ref s, JniObjectReferenceOptions.DisposeSourceReference);
}

static Exception _GetCause (ref JniObjectReference reference, JniHandleOwnership transfer)
static Exception _GetCause (ref JniObjectReference reference, JniObjectReferenceOptions transfer)
{
if ((transfer & JniHandleOwnership.Invalid) == JniHandleOwnership.Invalid)
if (transfer == JniObjectReferenceOptions.Invalid)
return null;

var m = _members.InstanceMethods.GetMethodID ("getCause\u0000()Ljava/lang/Throwable;");
var e = m.CallVirtualObjectMethod (reference);
return JniEnvironment.Current.JavaVM.GetExceptionForThrowable (ref e, JniHandleOwnership.Transfer);
return JniEnvironment.Current.JavaVM.GetExceptionForThrowable (ref e, JniObjectReferenceOptions.DisposeSourceReference);
}

unsafe string _GetJavaStack (JniObjectReference handle)
Expand All @@ -211,12 +211,12 @@ unsafe string _GetJavaStack (JniObjectReference handle)
pst_args [0] = new JValue (pwriter);
pst.CallVirtualVoidMethod (handle, pst_args);
var s = JniEnvironment.Current.Object_toString.CallVirtualObjectMethod (swriter);
return JniEnvironment.Strings.ToString (ref s, JniHandleOwnership.Transfer);
return JniEnvironment.Strings.ToString (ref s, JniObjectReferenceOptions.DisposeSourceReference);
} finally {
JniEnvironment.References.Dispose (ref pwriter, JniHandleOwnership.Transfer);
JniEnvironment.References.Dispose (ref pwriter, JniObjectReferenceOptions.DisposeSourceReference);
}
} finally {
JniEnvironment.References.Dispose (ref swriter, JniHandleOwnership.Transfer);
JniEnvironment.References.Dispose (ref swriter, JniObjectReferenceOptions.DisposeSourceReference);
}
}
}
Expand Down
10 changes: 5 additions & 5 deletions src/Java.Interop/Java.Interop/JavaObject.cs
Original file line number Diff line number Diff line change
Expand Up @@ -43,9 +43,9 @@ public virtual JniPeerMembers JniPeerMembers {
get {return _members;}
}

public JavaObject (ref JniObjectReference reference, JniHandleOwnership transfer)
public JavaObject (ref JniObjectReference reference, JniObjectReferenceOptions transfer)
{
if ((transfer & JniHandleOwnership.Invalid) == JniHandleOwnership.Invalid)
if (transfer == JniObjectReferenceOptions.Invalid)
return;

using (SetPeerReference (ref reference, transfer)) {
Expand All @@ -57,12 +57,12 @@ public unsafe JavaObject ()
var peer = JniPeerMembers.InstanceMethods.StartCreateInstance ("()V", GetType (), null);
using (SetPeerReference (
ref peer,
JniHandleOwnership.Transfer)) {
JniObjectReferenceOptions.DisposeSourceReference)) {
JniPeerMembers.InstanceMethods.FinishCreateInstance ("()V", this, null);
}
}

protected SetPeerReferenceCompletion SetPeerReference (ref JniObjectReference handle, JniHandleOwnership transfer)
protected SetPeerReferenceCompletion SetPeerReference (ref JniObjectReference handle, JniObjectReferenceOptions transfer)
{
return JniEnvironment.Current.JavaVM.SetObjectPeerReference (
this,
Expand Down Expand Up @@ -115,7 +115,7 @@ public override unsafe string ToString ()
"toString\u0000()Ljava/lang/String;",
this,
null);
return JniEnvironment.Strings.ToString (ref lref, JniHandleOwnership.Transfer);
return JniEnvironment.Strings.ToString (ref lref, JniObjectReferenceOptions.DisposeSourceReference);
}

int IJavaPeerableEx.IdentityHashCode {
Expand Down
16 changes: 8 additions & 8 deletions src/Java.Interop/Java.Interop/JavaObjectArray.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ namespace Java.Interop
{
public class JavaObjectArray<T> : JavaArray<T>
{
public JavaObjectArray (ref JniObjectReference handle, JniHandleOwnership transfer)
public JavaObjectArray (ref JniObjectReference handle, JniObjectReferenceOptions transfer)
: base (ref handle, transfer)
{
}
Expand All @@ -25,10 +25,10 @@ static JniObjectReference _NewArray (int length)
}

public unsafe JavaObjectArray (int length)
: this (ref *InvalidJniObjectReference, JniHandleOwnership.Invalid)
: this (ref *InvalidJniObjectReference, JniObjectReferenceOptions.Invalid)
{
var peer = _NewArray (CheckLength (length));
using (SetPeerReference (ref peer, JniHandleOwnership.Transfer)) {
using (SetPeerReference (ref peer, JniObjectReferenceOptions.DisposeSourceReference)) {
}
}

Expand Down Expand Up @@ -60,14 +60,14 @@ public override T this [int index] {
T GetElementAt (int index)
{
var lref = JniEnvironment.Arrays.GetObjectArrayElement (PeerReference, index);
return JniMarshal.GetValue<T> (ref lref, JniHandleOwnership.Transfer);
return JniMarshal.GetValue<T> (ref lref, JniObjectReferenceOptions.DisposeSourceReference);
}

void SetElementAt (int index, T value)
{
var h = JniMarshal.CreateLocalRef (value);
JniEnvironment.Arrays.SetObjectArrayElement (PeerReference, index, h);
JniEnvironment.References.Dispose (ref h, JniHandleOwnership.Transfer);
JniEnvironment.References.Dispose (ref h, JniObjectReferenceOptions.DisposeSourceReference);
}

public override IEnumerator<T> GetEnumerator ()
Expand All @@ -85,7 +85,7 @@ public override void Clear ()
for (int i = 0; i < len; i++) {
JniEnvironment.Arrays.SetObjectArrayElement (PeerReference, i, v);
}
JniEnvironment.References.Dispose (ref v, JniHandleOwnership.Transfer);
JniEnvironment.References.Dispose (ref v, JniObjectReferenceOptions.DisposeSourceReference);
}

public override int IndexOf (T item)
Expand Down Expand Up @@ -133,9 +133,9 @@ internal override bool TargetTypeIsCurrentType (Type targetType)
targetType == typeof (JavaObjectArray<T>);
}

internal static object GetValue (ref JniObjectReference handle, JniHandleOwnership transfer, Type targetType)
internal static object GetValue (ref JniObjectReference handle, JniObjectReferenceOptions transfer, Type targetType)
{
return JavaArray<T>.GetValueFromJni (ref handle, transfer, targetType, (ref JniObjectReference h, JniHandleOwnership t) => new JavaObjectArray<T> (ref h, t) {
return JavaArray<T>.GetValueFromJni (ref handle, transfer, targetType, (ref JniObjectReference h, JniObjectReferenceOptions t) => new JavaObjectArray<T> (ref h, t) {
forMarshalCollection = true,
});
}
Expand Down
2 changes: 1 addition & 1 deletion src/Java.Interop/Java.Interop/JavaPeerableExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public static string GetJniTypeName (this IJavaPeerable self)
return JniEnvironment.Types.GetJniTypeNameFromInstance (self.PeerReference);
}

internal static object GetValue (ref JniObjectReference handle, JniHandleOwnership transfer, Type targetType)
internal static object GetValue (ref JniObjectReference handle, JniObjectReferenceOptions transfer, Type targetType)
{
return JniEnvironment.Current.JavaVM.GetObject (ref handle, transfer, targetType);
}
Expand Down
Loading

0 comments on commit 8c52dbd

Please sign in to comment.