org.apache.jetspeed.util
Class PreferencesRootWrapper

java.lang.Object
  extended by java.util.prefs.Preferences
      extended by org.apache.jetspeed.util.PreferencesRootWrapper
All Implemented Interfaces:
java.util.Observer

public class PreferencesRootWrapper
extends java.util.prefs.Preferences
implements java.util.Observer

PreferencesRootWrapper is a lightweight wrapper around the Jetspeed persistent PreferencesImpl to allow restarting the Jetspeed Portal.

As the (Sun) Java Preferences implementation only creates a PreferencesFactory instance *once* per JVM (as static final), reloading the Jetspeed Portal (using a new classloader) requires a wrapper solution to prevent ClassCastExceptions and/or out-of-sync kept proxies and caches.

As a newly created Jetspeed Portal classloader can no longer cast a previous Preferences root to its own PreferencesImpl, a "trick" is used by also implementing the Observer interface (which is provided by the Java system classloader). The Observer interface is used because it is very lightweight and allows passing an Object instance through its update method. That update method is used to "inject" the newly created Preferences root instance.

Version:
$Id: PreferencesRootWrapper.java 740489 2009-02-03 22:25:06Z taylor $
Author:
Ate Douma

Field Summary
 
Fields inherited from class java.util.prefs.Preferences
MAX_KEY_LENGTH, MAX_NAME_LENGTH, MAX_VALUE_LENGTH
 
Constructor Summary
PreferencesRootWrapper()
           
 
Method Summary
 java.lang.String absolutePath()
           
 void addNodeChangeListener(java.util.prefs.NodeChangeListener ncl)
           
 void addPreferenceChangeListener(java.util.prefs.PreferenceChangeListener pcl)
           
 java.lang.String[] childrenNames()
           
 void clear()
           
 boolean equals(java.lang.Object obj)
           
 void exportNode(java.io.OutputStream os)
           
 void exportSubtree(java.io.OutputStream os)
           
 void flush()
           
 java.lang.String get(java.lang.String key, java.lang.String def)
           
 boolean getBoolean(java.lang.String key, boolean def)
           
 byte[] getByteArray(java.lang.String key, byte[] def)
           
 double getDouble(java.lang.String key, double def)
           
 float getFloat(java.lang.String key, float def)
           
 int getInt(java.lang.String key, int def)
           
 long getLong(java.lang.String key, long def)
           
 int hashCode()
           
 boolean isUserNode()
           
 java.lang.String[] keys()
           
 java.lang.String name()
           
 java.util.prefs.Preferences node(java.lang.String pathName)
           
 boolean nodeExists(java.lang.String pathName)
           
 java.util.prefs.Preferences parent()
           
 void put(java.lang.String key, java.lang.String value)
           
 void putBoolean(java.lang.String key, boolean value)
           
 void putByteArray(java.lang.String key, byte[] value)
           
 void putDouble(java.lang.String key, double value)
           
 void putFloat(java.lang.String key, float value)
           
 void putInt(java.lang.String key, int value)
           
 void putLong(java.lang.String key, long value)
           
 void remove(java.lang.String key)
           
 void removeNode()
           
 void removeNodeChangeListener(java.util.prefs.NodeChangeListener ncl)
           
 void removePreferenceChangeListener(java.util.prefs.PreferenceChangeListener pcl)
           
 void sync()
           
 java.lang.String toString()
           
 void update(java.util.Observable o, java.lang.Object arg)
           
 
Methods inherited from class java.util.prefs.Preferences
importPreferences, systemNodeForPackage, systemRoot, userNodeForPackage, userRoot
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

Constructor Detail

PreferencesRootWrapper

public PreferencesRootWrapper()
Method Detail

absolutePath

public java.lang.String absolutePath()
Specified by:
absolutePath in class java.util.prefs.Preferences

addNodeChangeListener

public void addNodeChangeListener(java.util.prefs.NodeChangeListener ncl)
Specified by:
addNodeChangeListener in class java.util.prefs.Preferences

addPreferenceChangeListener

public void addPreferenceChangeListener(java.util.prefs.PreferenceChangeListener pcl)
Specified by:
addPreferenceChangeListener in class java.util.prefs.Preferences

childrenNames

public java.lang.String[] childrenNames()
                                 throws java.util.prefs.BackingStoreException
Specified by:
childrenNames in class java.util.prefs.Preferences
Throws:
java.util.prefs.BackingStoreException

clear

public void clear()
           throws java.util.prefs.BackingStoreException
Specified by:
clear in class java.util.prefs.Preferences
Throws:
java.util.prefs.BackingStoreException

equals

public boolean equals(java.lang.Object obj)
Overrides:
equals in class java.lang.Object

exportNode

public void exportNode(java.io.OutputStream os)
                throws java.io.IOException,
                       java.util.prefs.BackingStoreException
Specified by:
exportNode in class java.util.prefs.Preferences
Throws:
java.io.IOException
java.util.prefs.BackingStoreException

exportSubtree

public void exportSubtree(java.io.OutputStream os)
                   throws java.io.IOException,
                          java.util.prefs.BackingStoreException
Specified by:
exportSubtree in class java.util.prefs.Preferences
Throws:
java.io.IOException
java.util.prefs.BackingStoreException

flush

public void flush()
           throws java.util.prefs.BackingStoreException
Specified by:
flush in class java.util.prefs.Preferences
Throws:
java.util.prefs.BackingStoreException

get

public java.lang.String get(java.lang.String key,
                            java.lang.String def)
Specified by:
get in class java.util.prefs.Preferences

getBoolean

public boolean getBoolean(java.lang.String key,
                          boolean def)
Specified by:
getBoolean in class java.util.prefs.Preferences

getByteArray

public byte[] getByteArray(java.lang.String key,
                           byte[] def)
Specified by:
getByteArray in class java.util.prefs.Preferences

getDouble

public double getDouble(java.lang.String key,
                        double def)
Specified by:
getDouble in class java.util.prefs.Preferences

getFloat

public float getFloat(java.lang.String key,
                      float def)
Specified by:
getFloat in class java.util.prefs.Preferences

getInt

public int getInt(java.lang.String key,
                  int def)
Specified by:
getInt in class java.util.prefs.Preferences

getLong

public long getLong(java.lang.String key,
                    long def)
Specified by:
getLong in class java.util.prefs.Preferences

hashCode

public int hashCode()
Overrides:
hashCode in class java.lang.Object

isUserNode

public boolean isUserNode()
Specified by:
isUserNode in class java.util.prefs.Preferences

keys

public java.lang.String[] keys()
                        throws java.util.prefs.BackingStoreException
Specified by:
keys in class java.util.prefs.Preferences
Throws:
java.util.prefs.BackingStoreException

name

public java.lang.String name()
Specified by:
name in class java.util.prefs.Preferences

node

public java.util.prefs.Preferences node(java.lang.String pathName)
Specified by:
node in class java.util.prefs.Preferences

nodeExists

public boolean nodeExists(java.lang.String pathName)
                   throws java.util.prefs.BackingStoreException
Specified by:
nodeExists in class java.util.prefs.Preferences
Throws:
java.util.prefs.BackingStoreException

parent

public java.util.prefs.Preferences parent()
Specified by:
parent in class java.util.prefs.Preferences

put

public void put(java.lang.String key,
                java.lang.String value)
Specified by:
put in class java.util.prefs.Preferences

putBoolean

public void putBoolean(java.lang.String key,
                       boolean value)
Specified by:
putBoolean in class java.util.prefs.Preferences

putByteArray

public void putByteArray(java.lang.String key,
                         byte[] value)
Specified by:
putByteArray in class java.util.prefs.Preferences

putDouble

public void putDouble(java.lang.String key,
                      double value)
Specified by:
putDouble in class java.util.prefs.Preferences

putFloat

public void putFloat(java.lang.String key,
                     float value)
Specified by:
putFloat in class java.util.prefs.Preferences

putInt

public void putInt(java.lang.String key,
                   int value)
Specified by:
putInt in class java.util.prefs.Preferences

putLong

public void putLong(java.lang.String key,
                    long value)
Specified by:
putLong in class java.util.prefs.Preferences

remove

public void remove(java.lang.String key)
Specified by:
remove in class java.util.prefs.Preferences

removeNode

public void removeNode()
                throws java.util.prefs.BackingStoreException
Specified by:
removeNode in class java.util.prefs.Preferences
Throws:
java.util.prefs.BackingStoreException

removeNodeChangeListener

public void removeNodeChangeListener(java.util.prefs.NodeChangeListener ncl)
Specified by:
removeNodeChangeListener in class java.util.prefs.Preferences

removePreferenceChangeListener

public void removePreferenceChangeListener(java.util.prefs.PreferenceChangeListener pcl)
Specified by:
removePreferenceChangeListener in class java.util.prefs.Preferences

sync

public void sync()
          throws java.util.prefs.BackingStoreException
Specified by:
sync in class java.util.prefs.Preferences
Throws:
java.util.prefs.BackingStoreException

toString

public java.lang.String toString()
Specified by:
toString in class java.util.prefs.Preferences

update

public void update(java.util.Observable o,
                   java.lang.Object arg)
Specified by:
update in interface java.util.Observer


Copyright © 1999-2010 Apache Software Foundation. All Rights Reserved.