You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by we...@apache.org on 2005/06/13 19:50:05 UTC

svn commit: r190447 - /portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/preference/impl/PrefsPreferenceSetImpl.java

Author: weaver
Date: Mon Jun 13 10:50:04 2005
New Revision: 190447

URL: http://svn.apache.org/viewcvs?rev=190447&view=rev
Log:
Added some dafaults support

Modified:
    portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/preference/impl/PrefsPreferenceSetImpl.java

Modified: portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/preference/impl/PrefsPreferenceSetImpl.java
URL: http://svn.apache.org/viewcvs/portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/preference/impl/PrefsPreferenceSetImpl.java?rev=190447&r1=190446&r2=190447&view=diff
==============================================================================
--- portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/preference/impl/PrefsPreferenceSetImpl.java (original)
+++ portals/jetspeed-2/trunk/components/registry/src/java/org/apache/jetspeed/om/preference/impl/PrefsPreferenceSetImpl.java Mon Jun 13 10:50:04 2005
@@ -39,6 +39,7 @@
 
     protected Preferences prefsRootNode;
     protected PreferencesValidator validator;
+    protected PreferenceSetComposite defaults;
 
     /**
      * @param portletEntity
@@ -53,6 +54,12 @@
         this.prefsRootNode = prefsRootNode;
 
     }
+    
+    public PrefsPreferenceSetImpl( Preferences prefsRootNode,  PreferenceSetComposite defaults) throws BackingStoreException
+    {
+        this(prefsRootNode);        
+        this.defaults = defaults;
+    }
 
     /**
      * <p>
@@ -66,7 +73,16 @@
     {
         try
         {
-            return new HashSet(Arrays.asList(prefsRootNode.childrenNames()));
+            if(defaults != null)
+            {
+                Set names = defaults.getNames();                    
+                names.addAll(new HashSet(Arrays.asList(prefsRootNode.childrenNames())));
+                return names;                
+            }
+            else
+            {
+              return new HashSet(Arrays.asList(prefsRootNode.childrenNames()));
+            }
         }
         catch (BackingStoreException e)
         {
@@ -104,14 +120,17 @@
     {
         try
         {
+            Preference pref = null;
             if (prefsRootNode.nodeExists(key))
             {
-                return new PrefsPreference(prefsRootNode.node(key), key);
+                pref = new PrefsPreference(prefsRootNode.node(key), key);
             }
-            else
+            else if(defaults != null)
             {
-                return null;
+                pref = defaults.get(key);
             }
+            
+            return pref;
         }
         catch (IllegalStateException ise)
         {
@@ -244,7 +263,14 @@
     {
         try
         {
-            return prefsRootNode.childrenNames().length;
+            int length = prefsRootNode.childrenNames().length;
+            
+            if(defaults != null)
+            {
+                length += defaults.size();
+            }
+                  
+            return length;
         }
         catch (IllegalStateException ise)
         {
@@ -269,7 +295,7 @@
      */
     public Iterator iterator()
     {
-		return new PortletPrefsIterator();
+        return new PortletPrefsIterator();
     }
 
     protected class PortletPrefsIterator implements Iterator
@@ -286,6 +312,23 @@
             {
                 beginSize = size();
                 childrenNames = prefsRootNode.childrenNames();
+                if(defaults != null)
+                {
+                    Iterator itr = defaults.getNames().iterator();
+                    while( itr.hasNext())
+                    {
+                        String name = (String) itr.next();
+                        if(!arrayContains(childrenNames, name))
+                        {
+                            String[] tempArray = new String[childrenNames.length+1];
+                            System.arraycopy(childrenNames, 0, tempArray, 0, childrenNames.length);
+                            tempArray[(tempArray.length-1)] = name;
+                            childrenNames = tempArray;
+                        }                       
+                    }
+                }
+               
+                
                 pointer = 0;
             }
             catch (IllegalStateException ise)
@@ -359,6 +402,19 @@
             beginSize = size();
 
         }
+    }
+    
+    protected boolean arrayContains(String[] array, String value)
+    {
+        for(int i=0; i<array.length; i++)
+        {
+            if(array[i].equals(value))
+            {
+                return true;
+            }
+        }
+        
+        return false;
     }
    
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org