You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by ka...@apache.org on 2008/10/25 12:08:16 UTC

svn commit: r707831 - /directory/sandbox/kayyagari/apacheds-olm/src/main/java/org/apache/directory/olm/util/EntryFieldInterceptor.java

Author: kayyagari
Date: Sat Oct 25 03:08:15 2008
New Revision: 707831

URL: http://svn.apache.org/viewvc?rev=707831&view=rev
Log:
o fixed a bug related to setting the the Attribute changes in dirtyAttrMap
o added javadoc

Modified:
    directory/sandbox/kayyagari/apacheds-olm/src/main/java/org/apache/directory/olm/util/EntryFieldInterceptor.java

Modified: directory/sandbox/kayyagari/apacheds-olm/src/main/java/org/apache/directory/olm/util/EntryFieldInterceptor.java
URL: http://svn.apache.org/viewvc/directory/sandbox/kayyagari/apacheds-olm/src/main/java/org/apache/directory/olm/util/EntryFieldInterceptor.java?rev=707831&r1=707830&r2=707831&view=diff
==============================================================================
--- directory/sandbox/kayyagari/apacheds-olm/src/main/java/org/apache/directory/olm/util/EntryFieldInterceptor.java (original)
+++ directory/sandbox/kayyagari/apacheds-olm/src/main/java/org/apache/directory/olm/util/EntryFieldInterceptor.java Sat Oct 25 03:08:15 2008
@@ -19,11 +19,13 @@
  */
 package org.apache.directory.olm.util;
 
+
 import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.directory.olm.Attribute;
 
+
 /**
  * 
  * A field interceptor for Entry implementations.
@@ -35,11 +37,12 @@
 {
     /** map to hold all the dirty <i>Attribute</i>s*/
     private Map<String, Attribute> dirtyAttrMap = new HashMap<String, Attribute>();
-    
-    //TODO need to have a @NoIntercept annotation for better handling of
-    // fields which doesn't need interception or which are not of type Attribute
+
+    //TODO would be better to have a @NoIntercept annotation for better handling of
+    // fields which doesn't need interception
     private Map<String, Object> dirtyFieldMap = new HashMap<String, Object>();
 
+
     /**
      * 
      * tells if the Entity's any Attributes are changed (dirty).
@@ -48,43 +51,64 @@
      */
     public boolean isDirty()
     {
-        return ( ! dirtyAttrMap.isEmpty() );
+        return ( !dirtyAttrMap.isEmpty() );
     }
-    
+
+
     /**
-     * 
+     * @see FieldInterceptor#interceptWrite(Object, String, Object, Object)
      */
     protected void interceptWrite( Object obj, String name, Object oldValue, Object newValue )
     {
         System.out.println( "intercept obj:" + obj + ", name: " + name + ", oldValue: " + oldValue + ", newValue: "
             + newValue );
-        
-        if( obj instanceof Attribute )
+
+        if ( oldValue == null && newValue == null )
+        {
+            return;
+        }
+
+        if ( ( oldValue instanceof Attribute ) || ( newValue instanceof Attribute ) )
         {
-            if ( ( ! dirtyAttrMap.containsKey( name ) ) && oldValue != newValue )
+            if ( ( !dirtyAttrMap.containsKey( name ) ) && oldValue != newValue )
             {
-                    dirtyAttrMap.put( name, ( Attribute ) oldValue );
+                dirtyAttrMap.put( name, ( Attribute ) oldValue );
             }
         }
-        else if ( ( ! dirtyFieldMap.containsKey( name ) ) && oldValue != newValue )
+        else if ( ( !dirtyFieldMap.containsKey( name ) ) && oldValue != newValue )
         {
             dirtyFieldMap.put( name, oldValue );
         }
     }
 
-    
+
+    /**
+     * 
+     * gives the changed attributes with their field names in the Entry object
+     *
+     * @return a map of modified Attribute field names and the corresponding Attributes' old values
+     */
     public Map<String, Attribute> getDirtyAttrMap()
     {
         return dirtyAttrMap;
     }
 
-    
+
+    /**
+     * 
+     * gives the changed non-attribute fields.
+     *
+     * @return a map of modified non-attribute fields and their old values
+     */
     public Map<String, Object> getDirtyFieldMap()
     {
         return dirtyFieldMap;
     }
-    
-    
+
+
+    /**
+     * @see FieldInterceptor#interceptRead(Object, String, Object)
+     */
     @Override
     protected void interceptRead( Object obj, String name, Object oldValue )
     {