You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ak...@apache.org on 2005/01/28 20:49:37 UTC

svn commit: r148916 - in incubator/directory/apacheds/trunk/core: . src/main/java/org/apache/ldap/server/prefs src/test/org/apache/ldap/server/prefs

Author: akarasulu
Date: Fri Jan 28 11:49:36 2005
New Revision: 148916

URL: http://svn.apache.org/viewcvs?view=rev&rev=148916
Log:
checking in with one test still failing
Added:
   incubator/directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/prefs/package.html
Modified:
   incubator/directory/apacheds/trunk/core/project.properties
   incubator/directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/prefs/ServerSystemPreferences.java
   incubator/directory/apacheds/trunk/core/src/test/org/apache/ldap/server/prefs/ServerSystemPreferencesTest.java

Modified: incubator/directory/apacheds/trunk/core/project.properties
Url: http://svn.apache.org/viewcvs/incubator/directory/apacheds/trunk/core/project.properties?view=diff&rev=148916&p1=incubator/directory/apacheds/trunk/core/project.properties&r1=148915&p2=incubator/directory/apacheds/trunk/core/project.properties&r2=148916
==============================================================================
--- incubator/directory/apacheds/trunk/core/project.properties	(original)
+++ incubator/directory/apacheds/trunk/core/project.properties	Fri Jan 28 11:49:36 2005
@@ -31,3 +31,6 @@
 maven.ldap.server.schema.deps.dhcp=system,core
 
 maven.license.licenseFile=${basedir}/../LICENSE.txt
+
+maven.junit.sysproperties=java.util.prefs.PreferencesFactory
+java.util.prefs.PreferencesFactory=org.apache.ldap.server.prefs.ServerPreferencesFactory

Modified: incubator/directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/prefs/ServerSystemPreferences.java
Url: http://svn.apache.org/viewcvs/incubator/directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/prefs/ServerSystemPreferences.java?view=diff&rev=148916&p1=incubator/directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/prefs/ServerSystemPreferences.java&r1=148915&p2=incubator/directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/prefs/ServerSystemPreferences.java&r2=148916
==============================================================================
--- incubator/directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/prefs/ServerSystemPreferences.java	(original)
+++ incubator/directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/prefs/ServerSystemPreferences.java	Fri Jan 28 11:49:36 2005
@@ -19,6 +19,8 @@
 
 import java.util.Hashtable;
 import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
 import java.util.prefs.AbstractPreferences;
 import java.util.prefs.BackingStoreException;
 
@@ -58,6 +60,9 @@
     /** the changes (ModificationItems) representing cached alterations to preferences */
     private ArrayList changes = new ArrayList(3);
 
+    /** maps changes based on key: key->list of mods (on same key) */
+    private HashMap keyToChange = new HashMap(3);
+
 
     /**
      * Creates a preferences object for the system preferences root.
@@ -194,6 +199,8 @@
         }
 
         changes.clear();
+
+        keyToChange.clear();
     }
 
 
@@ -211,6 +218,8 @@
         ctx = null;
 
         changes.clear();
+
+        keyToChange.clear();
     }
 
 
@@ -237,6 +246,8 @@
         }
 
         changes.clear();
+
+        keyToChange.clear();
     }
 
 
@@ -305,7 +316,30 @@
 
         ModificationItem mi = new ModificationItem( DirContext.REMOVE_ATTRIBUTE, attr );
 
+        addDelta( mi );
+    }
+
+
+    private void addDelta( ModificationItem mi )
+    {
+        String key = mi.getAttribute().getID();
+
+        List deltas = null;
+
         changes.add( mi );
+
+        if ( keyToChange.containsKey( key ) )
+        {
+            deltas = ( List ) keyToChange.get( key );
+        }
+        else
+        {
+            deltas = new ArrayList();
+        }
+
+        deltas.add( mi );
+
+        keyToChange.put( key, deltas );
     }
 
 
@@ -317,6 +351,25 @@
         {
             Attribute attr = ctx.getAttributes( "" ).get( key );
 
+            if ( keyToChange.containsKey( key ) )
+            {
+                List mods = ( List ) keyToChange.get( key );
+
+                for ( int ii = 0; ii < mods.size(); ii++ )
+                {
+                    ModificationItem mi = ( ModificationItem ) mods.get( ii );
+
+                    if ( mi.getModificationOp() == DirContext.REMOVE_ATTRIBUTE )
+                    {
+                        attr = null;
+                    }
+                    else
+                    {
+                        attr = mi.getAttribute();
+                    }
+                }
+            }
+
             if ( attr == null )
             {
                 return null;
@@ -341,7 +394,7 @@
 
         ModificationItem mi = new ModificationItem( DirContext.REPLACE_ATTRIBUTE, attr );
 
-        changes.add( mi );
+        addDelta( mi );
     }
 
 

Added: incubator/directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/prefs/package.html
Url: http://svn.apache.org/viewcvs/incubator/directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/prefs/package.html?view=auto&rev=148916
==============================================================================
--- (empty file)
+++ incubator/directory/apacheds/trunk/core/src/main/java/org/apache/ldap/server/prefs/package.html	Fri Jan 28 11:49:36 2005
@@ -0,0 +1,10 @@
+Platform independent server side Preferences implementation based on ApacheDS.
+The data is backed by the directory using a specific LDAP schema to map
+preferences to the LDAP/X.500 namespace.  To make sure you're preferences are
+using the right preferences factory implementation please check to see the
+following property is set to our implementation:
+
+java.util.prefs.PreferencesFactory=org.apache.ldap.server.prefs.ServerPreferencesFactory
+
+
+

Modified: incubator/directory/apacheds/trunk/core/src/test/org/apache/ldap/server/prefs/ServerSystemPreferencesTest.java
Url: http://svn.apache.org/viewcvs/incubator/directory/apacheds/trunk/core/src/test/org/apache/ldap/server/prefs/ServerSystemPreferencesTest.java?view=diff&rev=148916&p1=incubator/directory/apacheds/trunk/core/src/test/org/apache/ldap/server/prefs/ServerSystemPreferencesTest.java&r1=148915&p2=incubator/directory/apacheds/trunk/core/src/test/org/apache/ldap/server/prefs/ServerSystemPreferencesTest.java&r2=148916
==============================================================================
--- incubator/directory/apacheds/trunk/core/src/test/org/apache/ldap/server/prefs/ServerSystemPreferencesTest.java	(original)
+++ incubator/directory/apacheds/trunk/core/src/test/org/apache/ldap/server/prefs/ServerSystemPreferencesTest.java	Fri Jan 28 11:49:36 2005
@@ -65,6 +65,47 @@
     }
 
 
+    /**
+     * Tests the creation and use of a new preferences node.
+     *
+     * @throws BackingStoreException if there are failures with the store
+     */
+    public void testCreateAndSet() throws BackingStoreException
+    {
+        Preferences prefs = new ServerSystemPreferences();
+
+        Preferences testNode = prefs.node( "testNode" );
+
+        testNode.put( "testNodeKey", "testNodeValue" );
+
+        testNode.sync();
+
+        testNode.putBoolean( "boolKey", true );
+
+        testNode.putByteArray( "arrayKey", new byte[10] );
+
+        testNode.putDouble( "doubleKey", 3.14 );
+
+        testNode.putFloat( "floatKey", ( float ) 3.14 );
+
+        testNode.putInt( "intKey", 345 );
+
+        testNode.putLong( "longKey", 75449559185447L );
+
+        testNode.sync();
+
+        testNode = prefs.node( "testNode" );
+
+        assertEquals( true, testNode.getBoolean( "boolKey", false ) );
+
+        assertTrue( 3.14 == testNode.getDouble( "doubleKey", 9.20 ) );
+
+        assertTrue( (float) 3.14 == testNode.getFloat( "floatKey", (float) 3.90 ) );
+
+        assertEquals( 345, testNode.getInt( "intKey", 87 ) );
+
+        assertEquals( 75449559185447L, testNode.getLong( "longKey", 75449547L ) );
+    }
 
 
     /**
@@ -72,7 +113,7 @@
      *
      * @throws BackingStoreException if there are failures with the store
      */
-    public void testCreateAndDestroy() throws BackingStoreException
+    public void testCreateAndRemove() throws BackingStoreException
     {
         Preferences prefs = new ServerSystemPreferences();
 
@@ -99,5 +140,52 @@
         testNode = prefs.node( "testNode" );
 
         assertEquals( true, testNode.getBoolean( "boolKey", false ) );
+
+        assertTrue( 3.14 == testNode.getDouble( "doubleKey", 9.20 ) );
+
+        assertTrue( (float) 3.14 == testNode.getFloat( "floatKey", (float) 3.90 ) );
+
+        assertEquals( 345, testNode.getInt( "intKey", 87 ) );
+
+        assertEquals( 75449559185447L, testNode.getLong( "longKey", 75449547L ) );
+
+        testNode.remove( "doubleKey" );
+
+        testNode.remove( "arrayKey" );
+
+        assertEquals( "no value", testNode.get( "doubleKey", "no value" ) );
+
+        assertEquals( "no value", testNode.get( "arrayKey", "no value" ) );
+
+        testNode.sync();
+
+        assertEquals( "no value", testNode.get( "doubleKey", "no value" ) );
+
+        assertEquals( "no value", testNode.get( "arrayKey", "no value" ) );
+    }
+
+
+    /**
+     * Checks to see that setting the system property utilized the right factory
+     * implementation to generate ServerSystemPreferences.
+     */
+    public void testForFactoryUse()
+    {
+        String fqcn = ServerPreferencesFactory.class.getName();
+
+        System.setProperty( "java.util.prefs.PreferencesFactory", fqcn );
+
+        Preferences prefs = Preferences.systemRoot();
+
+        assertEquals( ServerSystemPreferences.class, prefs.getClass() );
+    }
+
+
+    /**
+     * Requests a deep node from the preferences API after setting the
+     */
+    public void testNewDeepNode()
+    {
+
     }
 }