mirror of git://gcc.gnu.org/git/gcc.git
				
				
				
			
		
			
				
	
	
		
			287 lines
		
	
	
		
			8.4 KiB
		
	
	
	
		
			Java
		
	
	
	
			
		
		
	
	
			287 lines
		
	
	
		
			8.4 KiB
		
	
	
	
		
			Java
		
	
	
	
/* GConfNativePeer.java -- GConf based preference peer for native methods
 | 
						|
 Copyright (C) 2006 Free Software Foundation, Inc.
 | 
						|
 | 
						|
 This file is part of GNU Classpath.
 | 
						|
 | 
						|
 GNU Classpath is free software; you can redistribute it and/or modify
 | 
						|
 it under the terms of the GNU General Public License as published by
 | 
						|
 the Free Software Foundation; either version 2, or (at your option)
 | 
						|
 any later version.
 | 
						|
 | 
						|
 GNU Classpath is distributed in the hope that it will be useful, but
 | 
						|
 WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 | 
						|
 General Public License for more details.
 | 
						|
 | 
						|
 You should have received a copy of the GNU General Public License
 | 
						|
 along with GNU Classpath; see the file COPYING.  If not, write to the
 | 
						|
 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
 | 
						|
 02110-1301 USA.
 | 
						|
 | 
						|
 Linking this library statically or dynamically with other modules is
 | 
						|
 making a combined work based on this library.  Thus, the terms and
 | 
						|
 conditions of the GNU General Public License cover the whole
 | 
						|
 combination.
 | 
						|
 | 
						|
 As a special exception, the copyright holders of this library give you
 | 
						|
 permission to link this library with independent modules to produce an
 | 
						|
 executable, regardless of the license terms of these independent
 | 
						|
 modules, and to copy and distribute the resulting executable under
 | 
						|
 terms of your choice, provided that you also meet, for each linked
 | 
						|
 independent module, the terms and conditions of the license of that
 | 
						|
 module.  An independent module is a module which is not derived from
 | 
						|
 or based on this library.  If you modify this library, you may extend
 | 
						|
 this exception to your version of the library, but you are not
 | 
						|
 obligated to do so.  If you do not wish to do so, delete this
 | 
						|
 exception statement from your version. */
 | 
						|
 | 
						|
 | 
						|
package gnu.java.util.prefs.gconf;
 | 
						|
 | 
						|
import java.util.List;
 | 
						|
import java.util.prefs.BackingStoreException;
 | 
						|
 | 
						|
/**
 | 
						|
 * Native peer for GConf based preference backend.
 | 
						|
 *
 | 
						|
 * @author Mario Torre <neugens@limasoftware.net>
 | 
						|
 */
 | 
						|
public final class GConfNativePeer
 | 
						|
{
 | 
						|
  /**
 | 
						|
   * Creates a new instance of GConfNativePeer
 | 
						|
   */
 | 
						|
  public GConfNativePeer()
 | 
						|
  {
 | 
						|
    init_class();
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Queries whether the node <code>node</code> exists in theGConf database.
 | 
						|
   * Returns <code>true</code> or <code>false</code>.
 | 
						|
   *
 | 
						|
   * @param node the node to check.
 | 
						|
   */
 | 
						|
  public boolean nodeExist(String node)
 | 
						|
  {
 | 
						|
    return gconf_dir_exists(node);
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Change the value of key to val. Automatically creates the key if it didn't
 | 
						|
   * exist before (ie it was unset or it only had a default value).
 | 
						|
   * Key names must be valid GConf key names, that is, there can be more
 | 
						|
   * restrictions than for normal Preference Backend.
 | 
						|
   *
 | 
						|
   * @param key the key to alter (or add).
 | 
						|
   * @param value the new value for this key.
 | 
						|
   * @return true if the key was updated, false otherwise.
 | 
						|
   */
 | 
						|
  public boolean setString(String key, String value)
 | 
						|
  {
 | 
						|
    return gconf_set_string(key, value);
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Unsets the value of key; if key is already unset, has no effect. Depending
 | 
						|
   * on the GConf daemon, unsetting a key may have the side effect to remove it
 | 
						|
   * completely form the database.
 | 
						|
   *
 | 
						|
   * @param key the key to unset.
 | 
						|
   * @return true on success, false if the key was not updated.
 | 
						|
   */
 | 
						|
  public boolean unset(String key)
 | 
						|
  {
 | 
						|
    return gconf_unset(key);
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Gets the value of a configuration key.
 | 
						|
   *
 | 
						|
   * @param key the configuration key.
 | 
						|
   * @return the values of this key, null if the key is not valid.
 | 
						|
   */
 | 
						|
  public String getKey(String key)
 | 
						|
  {
 | 
						|
    return gconf_get_string(key);
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Lists the key in the given node. Does not list subnodes. Keys names are the
 | 
						|
   * stripped names (name relative to the current node) of the keys stored in
 | 
						|
   * this node.
 | 
						|
   *
 | 
						|
   * @param node the node where keys are stored.
 | 
						|
   * @return a java.util.List of keys. If there are no keys in the given node, a
 | 
						|
   *         list of size 0 is returned.
 | 
						|
   */
 | 
						|
  public List<String> getKeys(String node) throws BackingStoreException
 | 
						|
  {
 | 
						|
    return gconf_all_keys(node);
 | 
						|
  }
 | 
						|
 | 
						|
  /**
 | 
						|
   * Lists the subnodes in <code>node</code>. The returned list contains
 | 
						|
   * allocated strings. Each string is the name relative tho the given node.
 | 
						|
   *
 | 
						|
   * @param node the node to get subnodes from. If there are no subnodes in the
 | 
						|
   *          given node, a list of size 0 is returned.
 | 
						|
   */
 | 
						|
  public List<String> getChildrenNodes(String node) throws BackingStoreException
 | 
						|
  {
 | 
						|
    return gconf_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.
 | 
						|
   */
 | 
						|
  public void suggestSync() throws BackingStoreException
 | 
						|
  {
 | 
						|
    gconf_suggest_sync();
 | 
						|
  }
 | 
						|
 | 
						|
  protected void finalize() throws Throwable
 | 
						|
  {
 | 
						|
    try
 | 
						|
      {
 | 
						|
        finalize_class();
 | 
						|
      }
 | 
						|
    finally
 | 
						|
      {
 | 
						|
        super.finalize();
 | 
						|
      }
 | 
						|
  }
 | 
						|
 | 
						|
  /* ***** native methods ***** */
 | 
						|
 | 
						|
  /*
 | 
						|
   * Basicly, these are one to one mappings to GConfClient functions.
 | 
						|
   * GConfClient instances are handled by the native layer, and are hidden from
 | 
						|
   * the main java class.
 | 
						|
   */
 | 
						|
 | 
						|
  /**
 | 
						|
   * Initialize the GConf native peer and enable the object cache.
 | 
						|
   * It is meant to be used by the static initializer.
 | 
						|
   */
 | 
						|
  native synchronized static final private void init_id_cache();
 | 
						|
 | 
						|
  /**
 | 
						|
   * Initialize the GConf native peer. This is meant to be used by the
 | 
						|
   * class constructor.
 | 
						|
   */
 | 
						|
  native synchronized static final private void init_class();
 | 
						|
 | 
						|
  /**
 | 
						|
   * Class finalizer.
 | 
						|
   */
 | 
						|
  native synchronized static final private void finalize_class();
 | 
						|
 | 
						|
  /**
 | 
						|
   * Queries the GConf database to see if the given node exists, returning
 | 
						|
   * true if the node exist, false otherwise.
 | 
						|
   *
 | 
						|
   * @param node the node to query for existence.
 | 
						|
   * @return true if the node exist, false otherwise.
 | 
						|
   */
 | 
						|
  native synchronized
 | 
						|
  static final protected boolean gconf_dir_exists(String node);
 | 
						|
 | 
						|
  /**
 | 
						|
   * Sets the given key/value pair into the GConf database.
 | 
						|
   * The key must be a valid GConf key.
 | 
						|
   *
 | 
						|
   * @param key the key to store in the GConf database
 | 
						|
   * @param value the value to associate to the given key.
 | 
						|
   * @return true if the change has effect, false otherwise.
 | 
						|
   */
 | 
						|
  native synchronized
 | 
						|
  static final protected boolean gconf_set_string(String key, String value);
 | 
						|
 | 
						|
  /**
 | 
						|
   * Returns the key associated to the given key. Null is returned if the
 | 
						|
   * key is not valid.
 | 
						|
   *
 | 
						|
   * @param key the key to return the value of.
 | 
						|
   * @return The value associated to the given key, or null.
 | 
						|
   */
 | 
						|
  native synchronized
 | 
						|
  static final protected String gconf_get_string(String key);
 | 
						|
 | 
						|
  /**
 | 
						|
   * Usets the given key, removing the key from the database.
 | 
						|
   *
 | 
						|
   * @param key the key to remove.
 | 
						|
   * @return true if the operation success, false otherwise.
 | 
						|
   */
 | 
						|
  native synchronized static final protected boolean gconf_unset(String key);
 | 
						|
 | 
						|
  /**
 | 
						|
   * Suggest to the GConf native peer a sync with the database.
 | 
						|
   *
 | 
						|
   */
 | 
						|
  native synchronized static final protected void gconf_suggest_sync()
 | 
						|
    throws BackingStoreException;
 | 
						|
 | 
						|
  /**
 | 
						|
   * Returns a list of all nodes under the given node.
 | 
						|
   *
 | 
						|
   * @param node the source node.
 | 
						|
   * @return A list of nodes under the given source node.
 | 
						|
   */
 | 
						|
  native
 | 
						|
  static synchronized final protected List<String> gconf_all_nodes(String node)
 | 
						|
    throws BackingStoreException;
 | 
						|
 | 
						|
  /**
 | 
						|
   * Returns a list of all keys stored in the given node.
 | 
						|
   *
 | 
						|
   * @param node the source node.
 | 
						|
   * @return A list of all keys stored in the given node.
 | 
						|
   */
 | 
						|
  native synchronized
 | 
						|
  static final protected List<String> gconf_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 synchronized
 | 
						|
  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 synchronized
 | 
						|
  static final protected String gconf_unescape_key(String escaped);
 | 
						|
 | 
						|
  static
 | 
						|
    {
 | 
						|
      System.loadLibrary("gconfpeer");
 | 
						|
      init_id_cache();
 | 
						|
    }
 | 
						|
}
 |