# HG changeset patch # Parent b278f28c51c64178d3a6f9c1c3f26affff4ccece diff --git a/keyring.impl/src/org/netbeans/modules/keyring/gnome/GnomeKeyringLibrary.java b/keyring.impl/src/org/netbeans/modules/keyring/gnome/GnomeKeyringLibrary.java --- a/keyring.impl/src/org/netbeans/modules/keyring/gnome/GnomeKeyringLibrary.java +++ b/keyring.impl/src/org/netbeans/modules/keyring/gnome/GnomeKeyringLibrary.java @@ -42,10 +42,15 @@ package org.netbeans.modules.keyring.gnome; +import com.sun.jna.DefaultTypeMapper; +import com.sun.jna.FromNativeContext; import com.sun.jna.Library; import com.sun.jna.Native; import com.sun.jna.Pointer; import com.sun.jna.Structure; +import com.sun.jna.ToNativeContext; +import com.sun.jna.TypeConverter; +import java.util.HashMap; /** * JNA wrapper for certain functions from GNOME Keyring API. @@ -54,7 +59,27 @@ */ public interface GnomeKeyringLibrary extends Library { - GnomeKeyringLibrary LIBRARY = (GnomeKeyringLibrary) Native.loadLibrary("gnome-keyring", GnomeKeyringLibrary.class); + GnomeKeyringLibrary LIBRARY = (GnomeKeyringLibrary) Native.loadLibrary("gnome-keyring", GnomeKeyringLibrary.class, new HashMap() { + { + put(OPTION_TYPE_MAPPER, new DefaultTypeMapper() { + { + TypeConverter booleanConverter = new TypeConverter() { + @Override public Object toNative(Object value, ToNativeContext context) { + return new Integer(Boolean.TRUE.equals(value) ? 1 : 0); + } + @Override public Object fromNative(Object value, FromNativeContext context) { + return ((Integer)value).intValue() != 0 ? Boolean.TRUE : Boolean.FALSE; + } + @Override public Class nativeType() { + // gint is 32-bit int + return Integer.class; + } + }; + addTypeConverter(Boolean.class, booleanConverter); + } + }); + } + }); boolean gnome_keyring_is_available();