Merged gcj-eclipse branch to trunk.

From-SVN: r120621
This commit is contained in:
Tom Tromey
2007-01-09 19:58:05 +00:00
parent c648dedbde
commit 97b8365caf
17478 changed files with 606493 additions and 100744 deletions
@@ -72,7 +72,6 @@ import java.util.prefs.BackingStoreException;
* <br />
*
* @author Mario Torre <neugens@limasoftware.net>
* @version 1.0.1
*/
public class GConfBasedPreferences
extends AbstractPreferences
@@ -136,12 +135,20 @@ public class GConfBasedPreferences
absolutePath = absolutePath.substring(0, absolutePath.length() - 1);
}
// strip invalid characters
// please, note that all names are unescaped into the native peer
int index = absolutePath.lastIndexOf('/');
if (index > -1)
{
absolutePath = absolutePath.substring(0, index + 1);
absolutePath = absolutePath + GConfNativePeer.escapeString(name);
}
this.node = this.getRealRoot(isUser) + absolutePath;
boolean nodeExist = backend.nodeExist(this.node);
this.newNode = !nodeExist;
backend.startWatchingNode(this.node);
}
/**
@@ -156,7 +163,15 @@ public class GConfBasedPreferences
// we don't check anything here, if the node is a new node this will be
// detected in the constructor, so we simply return a new reference to
// the requested node.
return new GConfBasedPreferences(this, name, this.isUser);
GConfBasedPreferences preferenceNode
= new GConfBasedPreferences(this, name, this.isUser);
// register the node for to GConf so that it can listen
// events outside the scope of the application
backend.startWatchingNode(this.node);
return preferenceNode;
}
/**
@@ -365,6 +380,10 @@ public class GConfBasedPreferences
{
String nodeName = "";
// strip key
// please, note that all names are unescaped into the native peer
key = GConfNativePeer.escapeString(key);
if (this.node.endsWith("/"))
{
nodeName = this.node + key;
@@ -373,7 +392,7 @@ public class GConfBasedPreferences
{
nodeName = this.node + "/" + key;
}
return nodeName;
}
@@ -45,7 +45,6 @@ import java.util.prefs.BackingStoreException;
* Native peer for GConf based preference backend.
*
* @author Mario Torre <neugens@limasoftware.net>
* @version 1.0.1
*/
public final class GConfNativePeer
{
@@ -150,7 +149,7 @@ public final class GConfNativePeer
*/
public List getKeys(String node) throws BackingStoreException
{
return gconf_client_gconf_client_all_keys(node);
return gconf_client_all_keys(node);
}
/**
@@ -162,9 +161,25 @@ public final class GConfNativePeer
*/
public List getChildrenNodes(String node) throws BackingStoreException
{
return gconf_client_gconf_client_all_nodes(node);
return gconf_client_all_nodes(node);
}
/**
* Escape the given string so the it is a valid GConf name.
*/
public static String escapeString(String plain)
{
return gconf_escape_key(plain);
}
/**
* Unescape a string escaped with {@link #escapeString}.
*/
public static String unescapeString(String escaped)
{
return gconf_unescape_key(escaped);
}
/**
* Suggest to the backend GConf daemon to synch with the database.
*/
@@ -270,8 +285,9 @@ public final class GConfNativePeer
* Suggest to the GConf native peer a sync with the database.
*
*/
native static final protected void gconf_client_suggest_sync();
native static final protected void gconf_client_suggest_sync()
throws BackingStoreException;
/**
* Returns a list of all nodes under the given node.
*
@@ -279,8 +295,9 @@ public final class GConfNativePeer
* @return A list of nodes under the given source node.
*/
native
static final protected List gconf_client_gconf_client_all_nodes(String node);
static final protected List gconf_client_all_nodes(String node)
throws BackingStoreException;
/**
* Returns a list of all keys stored in the given node.
*
@@ -288,8 +305,28 @@ public final class GConfNativePeer
* @return A list of all keys stored in the given node.
*/
native
static final protected List gconf_client_gconf_client_all_keys(String node);
static final protected List gconf_client_all_keys(String node)
throws BackingStoreException;
/**
* Escape the input String so that it's a valid element for GConf.
*
* @param plain the String to escape.
* @return An escaped String for use with GConf.
*/
native
static final protected String gconf_escape_key(String plain);
/**
* Converts a string escaped with gconf_escape_key back into its
* original form.
*
* @param escaped key as returned by gconf_escape_key
* @return An unescaped key.
*/
native
static final protected String gconf_unescape_key(String escaped);
static
{
System.loadLibrary("gconfpeer");