summaryrefslogtreecommitdiff
path: root/native
diff options
context:
space:
mode:
authorMario Torre <neugens@limasoftware.net>2006-07-08 22:28:16 +0000
committerMario Torre <neugens@limasoftware.net>2006-07-08 22:28:16 +0000
commit64292d87e369943782d1d4990a88bff5b3d40f02 (patch)
tree00d76a7af558d3e3f0bbc1a3d2086afdcf2772b6 /native
parent73a7fb1e52208fddcacea93e5e34f0d22d9fb2c9 (diff)
downloadclasspath-64292d87e369943782d1d4990a88bff5b3d40f02.tar.gz
2006-07-09 Mario Torre <neugens@limasoftware.net>
* native/jni/gconf-peer/GConfNativePeer.c: Fixed indentation to be more compliant to the GNU coding guidelines. (Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1unset): Added explicit test for errors in the GConf backend. (Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1get_1string): Added explicit test for errors in the GConf backend. Fixed Segmentation Fault when non valid key names are given as input. (Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1set_1string): likewise. (Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1dir_1exists): Added explicit test for errors in the GConf backend. * gnu/java/util/prefs/gconf/GConfNativePeer.java: Added javadoc comments for all native methods. (nodeExist): removed test to check for valid absolute path name for nodes. (startWatchingNode): likewise. (stopWatchingNode): likewise. (setString): likewise, plus fixed javadoc comments. (unset): likekwise. (getKey): likewise. (getKeys): likewise, also fixed javadoc comments. (getChildrenNodes): likewise. * gnu/java/util/prefs/GConfBasedPreferences.java: changed DEFAULT_USER_ROOT to /apps/classpath. (constructor): Test to check for a valid absolute path for nodes is now in the contructor for that node, instead of being on each method of the backend. (getGConfKey): removed empty new line.
Diffstat (limited to 'native')
-rw-r--r--native/jni/gconf-peer/GConfNativePeer.c623
1 files changed, 336 insertions, 287 deletions
diff --git a/native/jni/gconf-peer/GConfNativePeer.c b/native/jni/gconf-peer/GConfNativePeer.c
index 55989f059..bc8f78067 100644
--- a/native/jni/gconf-peer/GConfNativePeer.c
+++ b/native/jni/gconf-peer/GConfNativePeer.c
@@ -78,24 +78,24 @@ static void init_gconf_client (void);
/**
* Throws a new runtime exception after a failure, with the given message.
*/
-static void throw_exception (JNIEnv *env, const char *msg);
+static void throw_exception (JNIEnv * env, const char *msg);
/**
* Throws the given exception after a failure, with the given message.
*/
static void
-throw_exception_by_name (JNIEnv *env, const char *name, const char *msg);
+throw_exception_by_name (JNIEnv * env, const char *name, const char *msg);
/**
* Return a reference to a java.util.ArrayList class.
*/
-static gboolean set_jlist_class (JNIEnv *env);
+static gboolean set_jlist_class (JNIEnv * env);
/**
* Builds a new reference to a new java.util.ArrayList instace.
* The instance should be freed by the caller after use.
*/
-static jclass get_jlist_reference (JNIEnv *env, jclass jlist_class);
+static jclass get_jlist_reference (JNIEnv * env, jclass jlist_class);
/* ***** END: PRIVATE FUNCTIONS DELCARATION ***** */
@@ -108,16 +108,17 @@ static jclass get_jlist_reference (JNIEnv *env, jclass jlist_class);
*/
JNIEXPORT void
JNICALL Java_gnu_java_util_prefs_gconf_GConfNativePeer_init_1class
- (JNIEnv *env, jclass clazz)
+ (JNIEnv *env, jclass clazz)
{
- if (reference_count == 0) {
- Java_gnu_java_util_prefs_gconf_GConfNativePeer_init_1id_1cache
- (env, clazz);
- return;
- }
-
- reference_count++;
-} /* Java_gnu_java_util_prefs_gconf_GConfNativePeer_init_1class */
+ if (reference_count == 0)
+ {
+ Java_gnu_java_util_prefs_gconf_GConfNativePeer_init_1id_1cache
+ (env, clazz);
+ return;
+ }
+
+ reference_count++;
+}
/*
* Class: gnu_java_util_prefs_gconf_GConfNativePeer
@@ -126,27 +127,29 @@ JNICALL Java_gnu_java_util_prefs_gconf_GConfNativePeer_init_1class
*/
JNIEXPORT void
JNICALL Java_gnu_java_util_prefs_gconf_GConfNativePeer_init_1id_1cache
- (JNIEnv *env, jclass clazz __attribute__ ((unused)))
+ (JNIEnv *env, jclass clazz __attribute__ ((unused)))
{
- reference_count++;
+ reference_count++;
- init_gconf_client ();
-
- /* if client is null, there is probably an out or memory */
- if (client == NULL) {
- /* release the string and throw a runtime exception */
- throw_exception (env,
- "Unable to initialize GConfClient in native code\n");
- return;
- }
-
- /* ***** java.util.ArrayList ***** */
- if (set_jlist_class (env) == FALSE) {
- throw_exception (env,
- "Unable to get valid reference to java.util.List in native code\n");
- return;
- }
-} /* Java_gnu_java_util_prefs_gconf_GConfNativePeer_init_1id_1cache */
+ init_gconf_client ();
+
+ /* if client is null, there is probably an out of memory */
+ if (client == NULL)
+ {
+ /* release the string and throw a runtime exception */
+ throw_exception (env,
+ "Unable to initialize GConfClient in native code\n");
+ return;
+ }
+
+ /* ***** java.util.ArrayList ***** */
+ if (set_jlist_class (env) == FALSE)
+ {
+ throw_exception (env,
+ "Unable to get valid reference to java.util.List in native code\n");
+ return;
+ }
+}
/*
* Class: gnu_java_util_prefs_gconf_GConfNativePeer
@@ -155,58 +158,63 @@ JNICALL Java_gnu_java_util_prefs_gconf_GConfNativePeer_init_1id_1cache
*/
JNIEXPORT jobject JNICALL
Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1gconf_1client_1all_1keys
- (JNIEnv *env, jclass clazz __attribute__ ((unused)), jstring node)
+ (JNIEnv *env, jclass clazz __attribute__ ((unused)), jstring node)
{
- const char *dir = NULL;
- GError *err = NULL;
- GSList *entries = NULL;
- GSList *tmp;
-
- /* java.util.ArrayList */
- jobject jlist = NULL;
-
- dir = JCL_jstring_to_cstring(env, node);
- if (dir == NULL) {
- return NULL;
- }
-
- entries = gconf_client_all_entries (client, dir, &err);
- if (err != NULL) {
- throw_exception_by_name (env, "java/util/prefs/BackingStoreException",
- err->message);
- g_error_free (err);
- err = NULL;
-
- JCL_free_cstring(env, node, dir);
- return NULL;
- }
-
- jlist = get_jlist_reference (env, jlist_class);
- if (jlist == NULL) {
- throw_exception_by_name (env, "java/util/prefs/BackingStoreException",
- "Unable to get java.util.List reference in native code\n");
- JCL_free_cstring(env, node, dir);
- g_slist_foreach (entries, (GFunc) gconf_entry_free, NULL);
- g_slist_free (entries);
- return NULL;
- }
-
- tmp = entries;
- while (tmp != NULL) {
- const char *_val = gconf_entry_get_key(tmp->data);
- _val = strrchr (_val, '/'); ++_val;
- (*env)->CallBooleanMethod(env, jlist, jlist_add_id,
- (*env)->NewStringUTF(env, _val));
- tmp = g_slist_next (tmp);
- }
-
- /* clean up things */
- JCL_free_cstring(env, node, dir);
- g_slist_foreach (entries, (GFunc) gconf_entry_free, NULL);
- g_slist_free (entries);
-
- return jlist;
-} /* Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1gconf_1client_1all_1keys */
+ const char *dir = NULL;
+ GError *err = NULL;
+ GSList *entries = NULL;
+ GSList *tmp;
+
+ /* java.util.ArrayList */
+ jobject jlist = NULL;
+
+ dir = JCL_jstring_to_cstring (env, node);
+ if (dir == NULL)
+ {
+ return NULL;
+ }
+
+ entries = gconf_client_all_entries (client, dir, &err);
+ if (err != NULL)
+ {
+ throw_exception_by_name (env, "java/util/prefs/BackingStoreException",
+ err->message);
+ g_error_free (err);
+ err = NULL;
+
+ JCL_free_cstring (env, node, dir);
+ return NULL;
+ }
+
+ jlist = get_jlist_reference (env, jlist_class);
+ if (jlist == NULL)
+ {
+ throw_exception_by_name (env, "java/util/prefs/BackingStoreException",
+ "Unable to get java.util.List reference in native code\n");
+ JCL_free_cstring (env, node, dir);
+ g_slist_foreach (entries, (GFunc) gconf_entry_free, NULL);
+ g_slist_free (entries);
+ return NULL;
+ }
+
+ tmp = entries;
+ while (tmp != NULL)
+ {
+ const char *_val = gconf_entry_get_key (tmp->data);
+ _val = strrchr (_val, '/');
+ ++_val;
+ (*env)->CallBooleanMethod (env, jlist, jlist_add_id,
+ (*env)->NewStringUTF (env, _val));
+ tmp = g_slist_next (tmp);
+ }
+
+ /* clean up things */
+ JCL_free_cstring (env, node, dir);
+ g_slist_foreach (entries, (GFunc) gconf_entry_free, NULL);
+ g_slist_free (entries);
+
+ return jlist;
+}
/*
* Class: gnu_java_util_prefs_gconf_GConfNativePeer
@@ -215,57 +223,62 @@ Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1gconf_1client_1all
*/
JNIEXPORT jobject JNICALL
Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1gconf_1client_1all_1nodes
- (JNIEnv *env, jclass clazz __attribute__ ((unused)), jstring node)
+ (JNIEnv *env, jclass clazz __attribute__ ((unused)), jstring node)
{
- const char *dir = NULL;
- GError *err = NULL;
- GSList *entries = NULL;
- GSList *tmp;
-
- /* java.util.ArrayList */
- jobject jlist = NULL;
-
- dir = JCL_jstring_to_cstring(env, node);
- if (dir == NULL) {
- return NULL;
- }
-
- entries = gconf_client_all_dirs (client, dir, &err);
- if (err != NULL) {
- throw_exception_by_name (env, "java/util/prefs/BackingStoreException",
- err->message);
- g_error_free (err);
- err = NULL;
- JCL_free_cstring(env, node, dir);
- return NULL;
- }
-
- jlist = get_jlist_reference (env, jlist_class);
- if (jlist == NULL) {
- throw_exception_by_name (env, "java/util/prefs/BackingStoreException",
- "Unable to get java.util.List reference in native code\n");
- JCL_free_cstring(env, node, dir);
- g_slist_foreach (entries, (GFunc) gconf_entry_free, NULL);
- g_slist_free (entries);
- return NULL;
- }
-
- tmp = entries;
- while (tmp != NULL) {
- const char *_val = tmp->data;
- _val = strrchr (_val, '/'); ++_val;
- (*env)->CallBooleanMethod(env, jlist, jlist_add_id,
- (*env)->NewStringUTF(env, _val));
- tmp = g_slist_next (tmp);
- }
-
- /* clean up things */
- JCL_free_cstring(env, node, dir);
- g_slist_foreach (entries, (GFunc) gconf_entry_free, NULL);
- g_slist_free (entries);
-
- return jlist;
-} /* Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1gconf_1client_1all_1nodes */
+ const char *dir = NULL;
+ GError *err = NULL;
+ GSList *entries = NULL;
+ GSList *tmp;
+
+ /* java.util.ArrayList */
+ jobject jlist = NULL;
+
+ dir = JCL_jstring_to_cstring (env, node);
+ if (dir == NULL)
+ {
+ return NULL;
+ }
+
+ entries = gconf_client_all_dirs (client, dir, &err);
+ if (err != NULL)
+ {
+ throw_exception_by_name (env, "java/util/prefs/BackingStoreException",
+ err->message);
+ g_error_free (err);
+ err = NULL;
+ JCL_free_cstring (env, node, dir);
+ return NULL;
+ }
+
+ jlist = get_jlist_reference (env, jlist_class);
+ if (jlist == NULL)
+ {
+ throw_exception_by_name (env, "java/util/prefs/BackingStoreException",
+ "Unable to get java.util.List reference in native code\n");
+ JCL_free_cstring (env, node, dir);
+ g_slist_foreach (entries, (GFunc) gconf_entry_free, NULL);
+ g_slist_free (entries);
+ return NULL;
+ }
+
+ tmp = entries;
+ while (tmp != NULL)
+ {
+ const char *_val = tmp->data;
+ _val = strrchr (_val, '/');
+ ++_val;
+ (*env)->CallBooleanMethod (env, jlist, jlist_add_id,
+ (*env)->NewStringUTF (env, _val));
+ tmp = g_slist_next (tmp);
+ }
+
+ /* clean up things */
+ JCL_free_cstring (env, node, dir);
+ g_slist_foreach (entries, (GFunc) gconf_entry_free, NULL);
+ g_slist_free (entries);
+
+ return jlist;
+}
/*
* Class: gnu_java_util_prefs_gconf_GConfNativePeer
@@ -274,18 +287,19 @@ Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1gconf_1client_1all
*/
JNIEXPORT void JNICALL
Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1suggest_1sync
- (JNIEnv *env, jclass clazz __attribute__ ((unused)))
+ (JNIEnv *env, jclass clazz __attribute__ ((unused)))
{
- GError *err = NULL;
-
- gconf_client_suggest_sync (client, &err);
- if (err != NULL) {
- throw_exception_by_name (env, "java/util/prefs/BackingStoreException",
- err->message);
- g_error_free (err);
- err = NULL;
- }
-} /* Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1suggest_1sync */
+ GError *err = NULL;
+
+ gconf_client_suggest_sync (client, &err);
+ if (err != NULL)
+ {
+ throw_exception_by_name (env, "java/util/prefs/BackingStoreException",
+ err->message);
+ g_error_free (err);
+ err = NULL;
+ }
+}
/*
* Class: gnu_java_util_prefs_gconf_GConfNativePeer
@@ -294,22 +308,30 @@ Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1suggest_1sync
*/
JNIEXPORT jboolean JNICALL
Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1unset
- (JNIEnv *env, jclass clazz __attribute__ ((unused)), jstring key)
+ (JNIEnv *env, jclass clazz __attribute__ ((unused)), jstring key)
{
- const char *_key = NULL;
- gboolean result = JNI_FALSE;
-
- _key = JCL_jstring_to_cstring(env, key);
- if (_key == NULL) {
- return JNI_FALSE;
- }
-
- result = gconf_client_unset (client, _key, NULL);
-
- JCL_free_cstring(env, key, _key);
+ const char *_key = NULL;
+ gboolean result = JNI_FALSE;
+ GError *err = NULL;
+
+ _key = JCL_jstring_to_cstring (env, key);
+ if (_key == NULL)
+ {
+ return JNI_FALSE;
+ }
+
+ result = gconf_client_unset (client, _key, &err);
+ if (err != NULL)
+ {
+ result = JNI_FALSE;
+ g_error_free (err);
+ err = NULL;
+ }
+
+ JCL_free_cstring (env, key, _key);
- return result;
-} /* Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1unset */
+ return result;
+}
/*
* Class: gnu_java_util_prefs_gconf_GConfNativePeer
@@ -318,25 +340,36 @@ Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1unset
*/
JNIEXPORT jstring JNICALL
Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1get_1string
- (JNIEnv *env, jclass clazz __attribute__ ((unused)), jstring key)
+ (JNIEnv *env, jclass clazz __attribute__ ((unused)), jstring key)
{
- const char *_key = NULL;
- const char *_value = NULL;
- jstring result = NULL;
-
- _key = JCL_jstring_to_cstring(env, key);
- if (_key == NULL) {
- return NULL;
- }
-
- _value = gconf_client_get_string (client, _key, NULL);
- JCL_free_cstring(env, key, _key);
-
- result = (*env)->NewStringUTF (env, _value);
- g_free ((gpointer) _value);
-
- return result;
-} /* Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1get_1string */
+ const char *_key = NULL;
+ const char *_value = NULL;
+ GError *err = NULL;
+ jstring result = NULL;
+
+ _key = JCL_jstring_to_cstring (env, key);
+ if (_key == NULL)
+ {
+ return NULL;
+ }
+
+ _value = gconf_client_get_string (client, _key, &err);
+ JCL_free_cstring (env, key, _key);
+ if (err != NULL)
+ {
+ /* just in case */
+ if (_value != NULL) g_free ((gpointer) _value);
+ g_error_free (err);
+ err = NULL;
+
+ return NULL;
+ }
+
+ result = (*env)->NewStringUTF (env, _value);
+ g_free ((gpointer) _value);
+
+ return result;
+}
/*
* Class: gnu_java_util_prefs_gconf_GConfNativePeer
@@ -345,28 +378,36 @@ Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1get_1string
*/
JNIEXPORT jboolean JNICALL
Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1set_1string
- (JNIEnv *env, jclass clazz __attribute__ ((unused)),
- jstring key, jstring value)
+ (JNIEnv *env, jclass clazz __attribute__ ((unused)),
+ jstring key, jstring value)
{
- const char *_key = NULL;
- const char *_value = NULL;
-
- gboolean result = JNI_FALSE;
-
- /* load an UTF string from the virtual machine. */
- _key = JCL_jstring_to_cstring (env, key);
- _value = JCL_jstring_to_cstring (env, value);
- if (_key == NULL && _value == NULL) {
- return JNI_FALSE;
- }
-
- result = gconf_client_set_string (client, _key, _value, NULL);
-
- JCL_free_cstring (env, key, _key);
- JCL_free_cstring (env, value, _value);
-
- return (jboolean) result;
-} /* Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1set_1string */
+ const char *_key = NULL;
+ const char *_value = NULL;
+ GError *err = NULL;
+
+ gboolean result = JNI_FALSE;
+
+ /* load an UTF string from the virtual machine. */
+ _key = JCL_jstring_to_cstring (env, key);
+ _value = JCL_jstring_to_cstring (env, value);
+ if (_key == NULL && _value == NULL)
+ {
+ return JNI_FALSE;
+ }
+
+ result = gconf_client_set_string (client, _key, _value, &err);
+ if (err != NULL)
+ {
+ g_error_free (err);
+ err = NULL;
+ result = JNI_FALSE;
+ }
+
+ JCL_free_cstring (env, key, _key);
+ JCL_free_cstring (env, value, _value);
+
+ return (jboolean) result;
+}
/*
* Class: gnu_java_util_prefs_gconf_GConfNativePeer
@@ -375,18 +416,18 @@ Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1set_1string
*/
JNIEXPORT void JNICALL
Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1remove_1dir
- (JNIEnv *env, jclass clazz __attribute__ ((unused)), jstring node)
+ (JNIEnv *env, jclass clazz __attribute__ ((unused)), jstring node)
{
- const char *dir = NULL;
-
- dir = JCL_jstring_to_cstring (env, node);
- if (dir == NULL)
- return;
-
- gconf_client_remove_dir (client, dir, NULL);
-
- JCL_free_cstring (env, node, dir);
-} /* Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1remove_1dir */
+ const char *dir = NULL;
+
+ dir = JCL_jstring_to_cstring (env, node);
+ if (dir == NULL)
+ return;
+
+ gconf_client_remove_dir (client, dir, NULL);
+
+ JCL_free_cstring (env, node, dir);
+}
/*
* Class: gnu_java_util_prefs_gconf_GConfNativePeer
@@ -395,19 +436,19 @@ Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1remove_1dir
*/
JNIEXPORT void JNICALL
Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1add_1dir
- (JNIEnv *env, jclass clazz __attribute__ ((unused)), jstring node)
+ (JNIEnv *env, jclass clazz __attribute__ ((unused)), jstring node)
{
- const char *dir = NULL;
+ const char *dir = NULL;
- dir = JCL_jstring_to_cstring (env, node);
- if (dir == NULL)
- return;
-
- /* ignore errors */
- gconf_client_add_dir (client, dir, GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
+ dir = JCL_jstring_to_cstring (env, node);
+ if (dir == NULL)
+ return;
- JCL_free_cstring (env, node, dir);
-} /* Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1add_1dir */
+ /* ignore errors */
+ gconf_client_add_dir (client, dir, GCONF_CLIENT_PRELOAD_ONELEVEL, NULL);
+
+ JCL_free_cstring (env, node, dir);
+}
/*
* Class: gnu_java_util_prefs_gconf_GConfNativePeer
@@ -416,22 +457,25 @@ Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1add_1dir
*/
JNIEXPORT jboolean JNICALL
Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1dir_1exists
- (JNIEnv *env, jclass clazz __attribute__ ((unused)), jstring node)
-{
- const char *dir = NULL;
- jboolean value = JNI_FALSE;
-
- dir = JCL_jstring_to_cstring (env, node);
- if (dir == NULL)
- return value;
-
- /* we ignore errors here */
- value = gconf_client_dir_exists (client, dir, NULL);
-
- JCL_free_cstring (env, node, dir);
+ (JNIEnv *env, jclass clazz __attribute__ ((unused)), jstring node)
+{
+ const char *dir = NULL;
+ GError *err = NULL;
+ jboolean value = JNI_FALSE;
+ dir = JCL_jstring_to_cstring (env, node);
+ if (dir == NULL)
return value;
-} /* Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1dir_1exists */
+
+ /* on error return false */
+ value = gconf_client_dir_exists (client, dir, &err);
+ if (err != NULL)
+ value = JNI_FALSE;
+
+ JCL_free_cstring (env, node, dir);
+
+ return value;
+}
/*
* Class: gnu_java_util_prefs_gconf_GConfNativePeer
@@ -440,23 +484,24 @@ Java_gnu_java_util_prefs_gconf_GConfNativePeer_gconf_1client_1dir_1exists
*/
JNIEXPORT void
JNICALL Java_gnu_java_util_prefs_gconf_GConfNativePeer_finalize_1class
- (JNIEnv *env, jclass clazz __attribute__ ((unused)))
+ (JNIEnv *env, jclass clazz __attribute__ ((unused)))
{
- if (reference_count == 0) {
- /* last reference, free all resources and return */
- g_object_unref (G_OBJECT (client));
-
- (*env)->DeleteGlobalRef (env, jlist_class);
-
- jlist_class = NULL;
- jlist_init_id = NULL;
- jlist_add_id = NULL;
-
- return;
- }
-
- reference_count--;
-} /* Java_gnu_java_util_prefs_gconf_GConfNativePeer_finalize_1class */
+ if (reference_count == 0)
+ {
+ /* last reference, free all resources and return */
+ g_object_unref (G_OBJECT (client));
+
+ (*env)->DeleteGlobalRef (env, jlist_class);
+
+ jlist_class = NULL;
+ jlist_init_id = NULL;
+ jlist_add_id = NULL;
+
+ return;
+ }
+
+ reference_count--;
+}
/* ***** END: NATIVE FUNCTIONS ***** */
@@ -464,55 +509,59 @@ JNICALL Java_gnu_java_util_prefs_gconf_GConfNativePeer_finalize_1class
static void throw_exception (JNIEnv *env, const char *msg)
{
- throw_exception_by_name (env, "java/lang/RuntimeException", msg);
-} /* throw_exception */
+ throw_exception_by_name (env, "java/lang/RuntimeException", msg);
+}
static void
throw_exception_by_name (JNIEnv *env, const char *name, const char *msg)
-{
- JCL_ThrowException(env, name, msg);
-} /* throw_exception */
+{
+ JCL_ThrowException (env, name, msg);
+}
static void init_gconf_client (void)
-{
- client = gconf_client_get_default ();
- g_type_init();
-} /* init_gconf_client */
+{
+ client = gconf_client_get_default ();
+ g_type_init ();
+}
static gboolean set_jlist_class (JNIEnv *env)
{
- jclass local_jlist_class = NULL;
-
- /* gets a reference to the ArrayList class */
- local_jlist_class = JCL_FindClass (env, "java/util/ArrayList");
- if (local_jlist_class == NULL) {
- return FALSE;
- }
-
- jlist_class = (*env)->NewGlobalRef(env, local_jlist_class);
- (*env)->DeleteLocalRef(env, local_jlist_class);
- if (jlist_class == NULL) {
- return FALSE;
- }
-
- /* and initialize it */
- jlist_init_id = (*env)->GetMethodID (env, jlist_class, "<init>", "()V");
- if (jlist_init_id == NULL) {
- return FALSE;
- }
-
- jlist_add_id = (*env)->GetMethodID (env, jlist_class, "add",
- "(Ljava/lang/Object;)Z");
- if (jlist_add_id == NULL) {
- return FALSE;
- }
-
- return TRUE;
-} /* set_jlist_class */
+ jclass local_jlist_class = NULL;
+
+ /* gets a reference to the ArrayList class */
+ local_jlist_class = JCL_FindClass (env, "java/util/ArrayList");
+ if (local_jlist_class == NULL)
+ {
+ return FALSE;
+ }
+
+ jlist_class = (*env)->NewGlobalRef (env, local_jlist_class);
+ (*env)->DeleteLocalRef (env, local_jlist_class);
+ if (jlist_class == NULL)
+ {
+ return FALSE;
+ }
+
+ /* and initialize it */
+ jlist_init_id = (*env)->GetMethodID (env, jlist_class, "<init>", "()V");
+ if (jlist_init_id == NULL)
+ {
+ return FALSE;
+ }
+
+ jlist_add_id = (*env)->GetMethodID (env, jlist_class, "add",
+ "(Ljava/lang/Object;)Z");
+ if (jlist_add_id == NULL)
+ {
+ return FALSE;
+ }
+
+ return TRUE;
+}
static jobject get_jlist_reference (JNIEnv *env, jclass jlist_class)
{
- return (*env)->NewObject(env, jlist_class, jlist_init_id);
-} /* get_jlist_reference */
+ return (*env)->NewObject (env, jlist_class, jlist_init_id);
+}
/* ***** END: PRIVATE FUNCTIONS IMPLEMENTATION ***** */