491 lines
20 KiB
Diff
491 lines
20 KiB
Diff
From 010ef698fc87044d3f105fa4db68d85b8632940b Mon Sep 17 00:00:00 2001
|
|
From: Eric Williams
|
|
Date: Wed, 23 May 2018 10:51:43 -0400
|
|
Subject: Bug 394087: [Net] Migration from GConf to GSettings.
|
|
|
|
Use GSettings instead of GConf2 to fetch proxy settings from GNOME.
|
|
Instead it now uses the following GSettings schemas for proxies:
|
|
|
|
org.gnome.system.proxy
|
|
org.gnome.system.proxy.http
|
|
org.gnome.system.proxy.https
|
|
org.gnome.system.proxy.socks
|
|
org.gnome.system.proxy.ftp
|
|
|
|
You can get/set values for the keys in each of these schemas by running
|
|
gsettings [get/set] schema key value.
|
|
|
|
For example, to set the SOCKS proxy host, run: gsettings set
|
|
org.gnome.system.proxy.socks host <value>
|
|
|
|
To test in Eclipse, import the org.eclipse.core.net and
|
|
org.eclipse.core.net.linux.x86_64 projects into your workspace. Launch a
|
|
child Eclipse that depends on these two workspace plugins, and make sure
|
|
the child Eclipse launches with the argument:
|
|
-Dorg.eclipse.core.net.enableGnome
|
|
|
|
as this enables the GNOME proxy functionality. In the child Eclipse, go
|
|
to Window -> Preferences -> General -> Network connections. Selecting
|
|
the "native" combo option will pull in proxy/network settings as set via
|
|
GNOME.
|
|
|
|
Change-Id: I0f620275aa15205245ae4156d9ed63ebf20c3568
|
|
Signed-off-by: Eric Williams <ericwill@redhat.com>---
|
|
.../BUILD_INFO.txt | 12 +-
|
|
.../libgnomeproxy-1.0.0.so | Bin 90809 -> 259848 bytes
|
|
.../org.eclipse.core.net/natives/unix/gnomeproxy.c | 129 ++++++++++-----------
|
|
.../org.eclipse.core.net/natives/unix/gnomeproxy.h | 12 +-
|
|
.../natives/unix/linux/makefile | 11 +-
|
|
.../internal/net/proxy/unix/UnixProxyProvider.java | 30 ++---
|
|
6 files changed, 90 insertions(+), 104 deletions(-)
|
|
|
|
diff --git a/bundles/org.eclipse.core.net/fragments/org.eclipse.core.net.linux.x86_64/BUILD_INFO.txt b/bundles/org.eclipse.core.net/fragments/org.eclipse.core.net.linux.x86_64/BUILD_INFO.txt
|
|
index 8d7c5cd..a312cc7 100644
|
|
--- a/bundles/org.eclipse.core.net/fragments/org.eclipse.core.net.linux.x86_64/BUILD_INFO.txt
|
|
+++ b/bundles/org.eclipse.core.net/fragments/org.eclipse.core.net.linux.x86_64/BUILD_INFO.txt
|
|
@@ -2,9 +2,9 @@ Native Build Info:
|
|
------------------
|
|
|
|
platform: linux.gtk.x86_64
|
|
-built by: Tristan Tarrant, tristan.tarrant@gmail.com
|
|
-build date: 05-November-2009
|
|
-OS Name: CentOS 3.9
|
|
-OS Version: Linux 2.4.21-50.EL
|
|
-Compiler version: gcc (GCC) 3.2.3 20030502 (Red Hat Linux 3.2.3-59)
|
|
-Java version: Java(TM) 2 Runtime Environment, Standard Edition (build Blackdown-1.4.2_03) 64-Bit Server VM
|
|
\ No newline at end of file
|
|
+built by: Eric Williams, ericwill@redhat.com
|
|
+build date: 24-May-2018
|
|
+OS Name: RHEL Workstation 7.5
|
|
+OS Version: Linux 3.10.0
|
|
+Compiler version: gcc (GCC) 4.8.5
|
|
+Java version: Java(TM) 8 Runtime Environment, Standard Edition (1.8.0.171)
|
|
\ No newline at end of file
|
|
diff --git a/bundles/org.eclipse.core.net/natives/unix/gnomeproxy.c b/bundles/org.eclipse.core.net/natives/unix/gnomeproxy.c
|
|
index 2417b4e..f96d15c 100644
|
|
--- a/bundles/org.eclipse.core.net/natives/unix/gnomeproxy.c
|
|
+++ b/bundles/org.eclipse.core.net/natives/unix/gnomeproxy.c
|
|
@@ -1,21 +1,21 @@
|
|
/*
|
|
- * Copyright 2008, 2012 Oakland Software Incorporated and others
|
|
- * All rights reserved. This program and the accompanying materials
|
|
+ * Copyright 2008, 2018 Oakland Software Incorporated and others
|
|
+ * All rights reserved. This program and the accompanying materials
|
|
* are made available under the terms of the Eclipse Public License v1.0
|
|
* which accompanies this distribution, and is available at
|
|
* http://www.eclipse.org/legal/epl-v10.html
|
|
- *
|
|
+ *
|
|
* Contributors:
|
|
* Oakland Software Incorporated - initial API and implementation
|
|
- * IBM Corporation - enabling JNI calls for gconfInit method (bug 232495)
|
|
+ * IBM Corporation - enabling JNI calls for gconfInit method (bug 232495)
|
|
* IBM Corporation - gnomeproxy cannot be built with latest versions of glib (bug 385047)
|
|
+ * Red Hat - GSettings implementation and code clean up (bug 394087)
|
|
*/
|
|
|
|
#include <jni.h>
|
|
|
|
#include <glib.h>
|
|
-#include <gconf/gconf-value.h>
|
|
-#include <gconf/gconf-client.h>
|
|
+#include <gio/gio.h>
|
|
|
|
#ifdef __linux__
|
|
#include <string.h>
|
|
@@ -23,9 +23,11 @@
|
|
#include <strings.h>
|
|
#endif
|
|
|
|
-#include "gnomeproxy.h"
|
|
-
|
|
-static GConfClient *client= NULL;
|
|
+static GSettings *proxySettings = NULL;
|
|
+static GSettings *httpProxySettings = NULL;
|
|
+static GSettings *httpsProxySettings = NULL;
|
|
+static GSettings *socksProxySettings = NULL;
|
|
+static GSettings *ftpProxySettings = NULL;
|
|
|
|
static jclass proxyInfoClass;
|
|
static jclass stringClass;
|
|
@@ -37,18 +39,21 @@ static jmethodID portMethod;
|
|
static jmethodID userMethod;
|
|
static jmethodID passwordMethod;
|
|
|
|
-#define CHECK_NULL(X) { if ((X) == NULL) fprintf (stderr,"JNI error at line %d\n", __LINE__); }
|
|
+#define CHECK_NULL(X) { if ((X) == NULL) fprintf (stderr,"JNI error at line %d\n", __LINE__); }
|
|
|
|
/*
|
|
* Class: org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider
|
|
- * Method: gconfInit
|
|
+ * Method: gsettingsInit
|
|
* Signature: ()V
|
|
*/
|
|
-JNIEXPORT void JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_gconfInit(
|
|
+JNIEXPORT void JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_gsettingsInit(
|
|
JNIEnv *env, jclass clazz) {
|
|
|
|
- g_type_init();
|
|
- client = gconf_client_get_default();
|
|
+ proxySettings = g_settings_new ("org.gnome.system.proxy");
|
|
+ httpProxySettings = g_settings_new ("org.gnome.system.proxy.http");
|
|
+ httpsProxySettings = g_settings_new ("org.gnome.system.proxy.https");
|
|
+ socksProxySettings = g_settings_new ("org.gnome.system.proxy.socks");
|
|
+ ftpProxySettings = g_settings_new ("org.gnome.system.proxy.ftp");
|
|
jclass cls= NULL;
|
|
CHECK_NULL(cls = (*env)->FindClass(env, "org/eclipse/core/internal/net/ProxyData"));
|
|
proxyInfoClass = (*env)->NewGlobalRef(env, cls);
|
|
@@ -72,10 +77,10 @@ JNIEXPORT void JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyPr
|
|
|
|
/*
|
|
* Class: org_eclipse_core_internal_net_UnixProxyProvider
|
|
- * Method: getGConfProxyInfo
|
|
+ * Method: getGSettingsProxyInfo
|
|
* Signature: ([Ljava/lang/String);
|
|
*/
|
|
-JNIEXPORT jobject JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_getGConfProxyInfo(
|
|
+JNIEXPORT jobject JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_getGSettingsProxyInfo(
|
|
JNIEnv *env, jclass clazz, jstring protocol) {
|
|
|
|
jboolean isCopy;
|
|
@@ -83,8 +88,8 @@ JNIEXPORT jobject JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProx
|
|
|
|
jobject proxyInfo= NULL;
|
|
|
|
- if (client == NULL) {
|
|
- Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_gconfInit(env, clazz);
|
|
+ if (proxySettings == NULL) {
|
|
+ Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_gsettingsInit(env, clazz);
|
|
}
|
|
|
|
CHECK_NULL(proxyInfo = (*env)->NewObject(env, proxyInfoClass, proxyInfoConstructor, protocol));
|
|
@@ -93,78 +98,73 @@ JNIEXPORT jobject JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProx
|
|
if (cprotocol == NULL)
|
|
return NULL;
|
|
|
|
- //printf("cprotocol: %s\n", cprotocol);
|
|
-
|
|
- // use_same_proxy means we use the http value for everything
|
|
- gboolean useSame = gconf_client_get_bool(client,
|
|
- "/system/http_proxy/use_same_proxy", NULL);
|
|
+ gboolean useSame = g_settings_get_boolean(proxySettings,
|
|
+ "use-same-proxy");
|
|
|
|
if (strcasecmp(cprotocol, "http") == 0 || useSame) {
|
|
- gboolean useProxy = gconf_client_get_bool(client,
|
|
- "/system/http_proxy/use_http_proxy", NULL);
|
|
+ gboolean useProxy = g_settings_get_boolean(httpProxySettings,
|
|
+ "enabled");
|
|
if (!useProxy) {
|
|
proxyInfo = NULL;
|
|
goto exit;
|
|
}
|
|
|
|
- gchar *host = gconf_client_get_string(client,
|
|
- "/system/http_proxy/host", NULL);
|
|
+ gchar *host = g_settings_get_string(httpProxySettings,
|
|
+ "host");
|
|
jobject jhost = (*env)->NewStringUTF(env, host);
|
|
(*env)->CallVoidMethod(env, proxyInfo, hostMethod, jhost);
|
|
+ g_free(host);
|
|
|
|
- gint port = gconf_client_get_int(client, "/system/http_proxy/port",
|
|
- NULL);
|
|
+ gint port = g_settings_get_int(httpProxySettings, "port");
|
|
(*env)->CallVoidMethod(env, proxyInfo, portMethod, port);
|
|
|
|
- gboolean reqAuth = gconf_client_get_bool(client,
|
|
- "/system/http_proxy/use_authentication", NULL);
|
|
+ gboolean reqAuth = g_settings_get_boolean(httpProxySettings,
|
|
+ "use-authentication");
|
|
if (reqAuth) {
|
|
-
|
|
- gchar *user = gconf_client_get_string(client,
|
|
- "/system/http_proxy/authentication_user", NULL);
|
|
+ gchar *user = g_settings_get_string(httpProxySettings,
|
|
+ "authentication-user");
|
|
jobject juser = (*env)->NewStringUTF(env, user);
|
|
(*env)->CallVoidMethod(env, proxyInfo, userMethod, juser);
|
|
|
|
- gchar *password = gconf_client_get_string(client,
|
|
- "/system/http_proxy/authentication_password", NULL);
|
|
+ gchar *password = g_settings_get_string(httpProxySettings,
|
|
+ "authentication-password");
|
|
jobject jpassword = (*env)->NewStringUTF(env, password);
|
|
(*env)->CallVoidMethod(env, proxyInfo, passwordMethod,
|
|
jpassword);
|
|
+ g_free(user);
|
|
+ g_free(password);
|
|
}
|
|
goto exit;
|
|
}
|
|
|
|
// Everything else applies only if the system proxy mode is manual
|
|
- gchar *mode = gconf_client_get_string(client, "/system/proxy/mode", NULL);
|
|
+ gchar *mode = g_settings_get_string(proxySettings, "mode");
|
|
if (strcasecmp(mode, "manual") != 0) {
|
|
proxyInfo = NULL;
|
|
goto exit;
|
|
}
|
|
+ g_free(mode);
|
|
|
|
- char selector[100];
|
|
-
|
|
+ gchar *host;
|
|
+ gint port;
|
|
if (strcasecmp(cprotocol, "https") == 0) {
|
|
- strcpy(selector, "/system/proxy/secure_");
|
|
+ host = g_settings_get_string(httpsProxySettings, "host");
|
|
+ port = g_settings_get_int(httpsProxySettings, "port");
|
|
} else if (strcasecmp(cprotocol, "socks") == 0) {
|
|
- strcpy(selector, "/system/proxy/socks_");
|
|
+ host = g_settings_get_string(socksProxySettings, "host");
|
|
+ port = g_settings_get_int(socksProxySettings, "port");
|
|
} else if (strcasecmp(cprotocol, "ftp") == 0) {
|
|
- strcpy(selector, "/system/proxy/ftp_");
|
|
+ host = g_settings_get_string(ftpProxySettings, "host");
|
|
+ port = g_settings_get_int(ftpProxySettings, "port");
|
|
} else {
|
|
proxyInfo = NULL;
|
|
goto exit;
|
|
}
|
|
|
|
- char useSelector[100];
|
|
- strcpy(useSelector, selector);
|
|
-
|
|
- gchar *host = gconf_client_get_string(client, strcat(useSelector, "host"),
|
|
- NULL);
|
|
jobject jhost = (*env)->NewStringUTF(env, host);
|
|
(*env)->CallVoidMethod(env, proxyInfo, hostMethod, jhost);
|
|
-
|
|
- strcpy(useSelector, selector);
|
|
- gint port = gconf_client_get_int(client, strcat(useSelector, "port"), NULL);
|
|
(*env)->CallVoidMethod(env, proxyInfo, portMethod, port);
|
|
+ g_free(host);
|
|
|
|
exit: if (isCopy == JNI_TRUE)
|
|
(*env)->ReleaseStringUTFChars(env, protocol, cprotocol);
|
|
@@ -187,31 +187,28 @@ void listProc(gpointer data, gpointer user_data) {
|
|
|
|
/*
|
|
* Class: org_eclipse_core_internal_net_UnixProxyProvider
|
|
- * Method: getGConfNonProxyHosts
|
|
+ * Method: getGSettingsNonProxyHosts
|
|
* Signature: ()[Ljava/lang/String;
|
|
*/
|
|
-JNIEXPORT jobjectArray JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_getGConfNonProxyHosts(
|
|
+JNIEXPORT jobjectArray JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_getGSettingsNonProxyHosts(
|
|
JNIEnv *env, jclass clazz) {
|
|
|
|
- if (client == NULL) {
|
|
- Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_gconfInit(env, clazz);
|
|
+ if (proxySettings == NULL) {
|
|
+ Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_gsettingsInit(env, clazz);
|
|
}
|
|
|
|
- GSList *npHosts;
|
|
- int size;
|
|
+ gchar **npfHostsArray;
|
|
+ GSList *npHosts = NULL;
|
|
+ gint size, i;
|
|
|
|
- npHosts = gconf_client_get_list(client, "/system/http_proxy/ignore_hosts",
|
|
- GCONF_VALUE_STRING, NULL);
|
|
- size = g_slist_length(npHosts);
|
|
+ npfHostsArray = g_settings_get_strv(proxySettings, "ignore-hosts");
|
|
|
|
- // TODO - I'm not sure this is really valid, it's from the JVM implementation
|
|
- // of ProxySelector
|
|
- if (size == 0) {
|
|
- npHosts = gconf_client_get_list(client, "/system/proxy/no_proxy_for",
|
|
- GCONF_VALUE_STRING, NULL);
|
|
+ for (i = 0; npfHostsArray[i] != NULL; i++) {
|
|
+ npHosts = g_slist_prepend(npHosts, npfHostsArray[i]);
|
|
}
|
|
- size = g_slist_length(npHosts);
|
|
|
|
+ npHosts = g_slist_reverse(npHosts);
|
|
+ size = g_slist_length(npHosts);
|
|
jobjectArray ret = (*env)->NewObjectArray(env, size, stringClass, NULL);
|
|
|
|
ListProcContext lpc;
|
|
@@ -220,6 +217,8 @@ JNIEXPORT jobjectArray JNICALL Java_org_eclipse_core_internal_net_proxy_unix_Uni
|
|
lpc.index = 0;
|
|
|
|
g_slist_foreach(npHosts, listProc, &lpc);
|
|
+ g_strfreev(npfHostsArray);
|
|
+ g_slist_free(npHosts);
|
|
return ret;
|
|
}
|
|
|
|
diff --git a/bundles/org.eclipse.core.net/natives/unix/gnomeproxy.h b/bundles/org.eclipse.core.net/natives/unix/gnomeproxy.h
|
|
index cf0e8d7..8dab51c 100644
|
|
--- a/bundles/org.eclipse.core.net/natives/unix/gnomeproxy.h
|
|
+++ b/bundles/org.eclipse.core.net/natives/unix/gnomeproxy.h
|
|
@@ -10,26 +10,26 @@ extern "C" {
|
|
/* Inaccessible static: isGnomeLibLoaded */
|
|
/*
|
|
* Class: org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider
|
|
- * Method: gconfInit
|
|
+ * Method: gsettingsInit
|
|
* Signature: ()V
|
|
*/
|
|
-JNIEXPORT void JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_gconfInit
|
|
+JNIEXPORT void JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_gsettingsInit
|
|
(JNIEnv *, jclass);
|
|
|
|
/*
|
|
* Class: org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider
|
|
- * Method: getGConfProxyInfo
|
|
+ * Method: getGSettingsProxyInfo
|
|
* Signature: (Ljava/lang/String;)Lorg/eclipse/core/internal/net/ProxyData;
|
|
*/
|
|
-JNIEXPORT jobject JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_getGConfProxyInfo
|
|
+JNIEXPORT jobject JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_getGSettingsProxyInfo
|
|
(JNIEnv *, jclass, jstring);
|
|
|
|
/*
|
|
* Class: org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider
|
|
- * Method: getGConfNonProxyHosts
|
|
+ * Method: getGSettingsNonProxyHosts
|
|
* Signature: ()[Ljava/lang/String;
|
|
*/
|
|
-JNIEXPORT jobjectArray JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_getGConfNonProxyHosts
|
|
+JNIEXPORT jobjectArray JNICALL Java_org_eclipse_core_internal_net_proxy_unix_UnixProxyProvider_getGSettingsNonProxyHosts
|
|
(JNIEnv *, jclass);
|
|
|
|
#ifdef __cplusplus
|
|
diff --git a/bundles/org.eclipse.core.net/natives/unix/linux/makefile b/bundles/org.eclipse.core.net/natives/unix/linux/makefile
|
|
index b0e5519..65f6820 100644
|
|
--- a/bundles/org.eclipse.core.net/natives/unix/linux/makefile
|
|
+++ b/bundles/org.eclipse.core.net/natives/unix/linux/makefile
|
|
@@ -1,6 +1,6 @@
|
|
#**********************************************************************
|
|
-# Copyright (c) 2008, 2012 Oakland Software Incorporated and others.
|
|
-# All rights reserved. This program and the accompanying materials
|
|
+# Copyright (c) 2008, 2018 Oakland Software Incorporated and others.
|
|
+# All rights reserved. This program and the accompanying materials
|
|
# are made available under the terms of the Eclipse Public License v1.0
|
|
# which accompanies this distribution, and is available at
|
|
# http://www.eclipse.org/legal/epl-v10.html
|
|
@@ -8,8 +8,9 @@
|
|
# Contributors:
|
|
# Oakland Software Incorporated - initial submission
|
|
# IBM Corporation - refactoring, bug 245849
|
|
+# Red Hat - GSettings implementation and code clean up (bug 394087)
|
|
#
|
|
-#**********************************************************************
|
|
+#**********************************************************************
|
|
#
|
|
# makefile for libgnomeproxy-1.0.0.so
|
|
|
|
@@ -20,10 +21,10 @@ LIB_NAME_FULL = libgnomeproxy-1.0.0.so
|
|
|
|
OS_TYPE = linux
|
|
JDK_INCLUDE = -I${JAVA_HOME}/include -I${JAVA_HOME}/include/${OS_TYPE}
|
|
-INCLUDE = `pkg-config --cflags gconf-2.0`
|
|
+INCLUDE = `pkg-config --cflags gio-2.0`
|
|
COMPILER_FLAGS = -O0 -fPIC -g3 -Wall -c -fmessage-length=0 ${TARGET_ENVIRONMENT}
|
|
|
|
-LIBS := `pkg-config --libs gconf-2.0`
|
|
+LIBS := `pkg-config --libs gio-2.0`
|
|
LINKER_FLAGS= ${TARGET_ENVIRONMENT}
|
|
|
|
all: link
|
|
diff --git a/bundles/org.eclipse.core.net/src/org/eclipse/core/internal/net/proxy/unix/UnixProxyProvider.java b/bundles/org.eclipse.core.net/src/org/eclipse/core/internal/net/proxy/unix/UnixProxyProvider.java
|
|
index 1f13abd..c430217 100644
|
|
--- a/bundles/org.eclipse.core.net/src/org/eclipse/core/internal/net/proxy/unix/UnixProxyProvider.java
|
|
+++ b/bundles/org.eclipse.core.net/src/org/eclipse/core/internal/net/proxy/unix/UnixProxyProvider.java
|
|
@@ -1,5 +1,5 @@
|
|
/*******************************************************************************
|
|
- * Copyright (c) 2008, 2017 Oakland Software Incorporated and others
|
|
+ * Copyright (c) 2008, 2018 Oakland Software Incorporated and others
|
|
* All rights reserved. This program and the accompanying materials
|
|
* are made available under the terms of the Eclipse Public License v1.0
|
|
* which accompanies this distribution, and is available at
|
|
@@ -8,6 +8,7 @@
|
|
* Contributors:
|
|
* Oakland Software Incorporated - initial API and implementation
|
|
* IBM Corporation - implementation
|
|
+ * Red Hat - GSettings implementation and code clean up (bug 394087)
|
|
*******************************************************************************/
|
|
package org.eclipse.core.internal.net.proxy.unix;
|
|
|
|
@@ -28,8 +29,6 @@ import org.eclipse.core.net.proxy.IProxyData;
|
|
|
|
public class UnixProxyProvider extends AbstractProxyProvider {
|
|
|
|
- private static final String LIBRARY_GCONF2 = "gconf-2"; //$NON-NLS-1$
|
|
-
|
|
private static final String LIBRARY_NAME = "gnomeproxy-1.0.0"; //$NON-NLS-1$
|
|
|
|
private static final String ENABLE_GNOME = Activator.ID + ".enableGnome"; //$NON-NLS-1$
|
|
@@ -37,9 +36,7 @@ public class UnixProxyProvider extends AbstractProxyProvider {
|
|
private static boolean isGnomeLibLoaded = false;
|
|
|
|
static {
|
|
- // We have to load this here otherwise gconf seems to have problems
|
|
- // causing hangs and various other bad behavior,
|
|
- // please don't move this to be initialized on another thread.
|
|
+ // Load the GSettings JNI library if org.eclipse.core.net.enableGnome is specified
|
|
String value = System.getProperty(ENABLE_GNOME);
|
|
if ("".equals(value) || "true".equals(value)) { //$NON-NLS-1$ //$NON-NLS-2$
|
|
loadGnomeLib();
|
|
@@ -117,7 +114,7 @@ public class UnixProxyProvider extends AbstractProxyProvider {
|
|
|
|
if (isGnomeLibLoaded) {
|
|
try {
|
|
- npHosts = getGConfNonProxyHosts();
|
|
+ npHosts = getGSettingsNonProxyHosts();
|
|
if (npHosts != null && npHosts.length > 0) {
|
|
if (Policy.DEBUG_SYSTEM_PROVIDERS) {
|
|
Policy.debug("Got Gnome no_proxy"); //$NON-NLS-1$
|
|
@@ -193,7 +190,7 @@ public class UnixProxyProvider extends AbstractProxyProvider {
|
|
if (isGnomeLibLoaded) {
|
|
try {
|
|
// Then ask Gnome
|
|
- pd = getGConfProxyInfo(protocol);
|
|
+ pd = getGSettingsProxyInfo(protocol);
|
|
if (pd != null) {
|
|
if (Policy.DEBUG_SYSTEM_PROVIDERS)
|
|
Policy.debug("Got Gnome proxy: " + pd); //$NON-NLS-1$
|
|
@@ -243,16 +240,6 @@ public class UnixProxyProvider extends AbstractProxyProvider {
|
|
|
|
private static void loadGnomeLib() {
|
|
try {
|
|
- System.loadLibrary(LIBRARY_GCONF2);
|
|
- } catch (final UnsatisfiedLinkError e) {
|
|
- // Expected on systems that are missing Gnome
|
|
- if (Policy.DEBUG_SYSTEM_PROVIDERS)
|
|
- Policy.debug("Could not load library: " //$NON-NLS-1$
|
|
- + System.mapLibraryName(LIBRARY_GCONF2));
|
|
- return;
|
|
- }
|
|
-
|
|
- try {
|
|
System.loadLibrary(LIBRARY_NAME);
|
|
isGnomeLibLoaded = true;
|
|
if (Policy.DEBUG_SYSTEM_PROVIDERS)
|
|
@@ -266,15 +253,14 @@ public class UnixProxyProvider extends AbstractProxyProvider {
|
|
}
|
|
}
|
|
|
|
-
|
|
private void debugPrint(String[] strs) {
|
|
for (int i = 0; i < strs.length; i++)
|
|
System.out.println(i + ": " + strs[i]); //$NON-NLS-1$
|
|
}
|
|
|
|
- protected static native void gconfInit();
|
|
+ protected static native void gsettingsInit();
|
|
|
|
- protected static native ProxyData getGConfProxyInfo(String protocol);
|
|
+ protected static native ProxyData getGSettingsProxyInfo(String protocol);
|
|
|
|
- protected static native String[] getGConfNonProxyHosts();
|
|
+ protected static native String[] getGSettingsNonProxyHosts();
|
|
}
|
|
--
|
|
cgit v1.1
|
|
|