raphael     2002/11/09 07:09:22

  Modified:    src/java/org/apache/jetspeed/services/registry
                        CastorRegistryService.java
  Log:
  Fix bug 5627: Removing an entry from xreg does not remove the entry from Registry
  
  Revision  Changes    Path
  1.26      +38 -2     
jakarta-jetspeed/src/java/org/apache/jetspeed/services/registry/CastorRegistryService.java
  
  Index: CastorRegistryService.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/services/registry/CastorRegistryService.java,v
  retrieving revision 1.25
  retrieving revision 1.26
  diff -u -r1.25 -r1.26
  --- CastorRegistryService.java        7 Nov 2002 20:18:09 -0000       1.25
  +++ CastorRegistryService.java        9 Nov 2002 15:09:22 -0000       1.26
  @@ -785,8 +785,17 @@
           }
   
           int count = 0;
  +        int counDeleted = 0;
           LocalRegistry registry = (LocalRegistry)get(regName);
   
  +        Vector toDelete = new Vector();
  +        Iterator i = registry.listEntryNames();
  +
  +        while(i.hasNext())
  +        {
  +            toDelete.add(i.next());
  +        }
  +
           if (registry == null)
           {
               Log.error("RegistryService: Null " + name + " registry in refresh");
  @@ -807,6 +816,15 @@
                   {
                       Log.debug("RegistryService: Skipping fragment " + location);
                   }
  +
  +                //remove this fragment entries from the delete list
  +                Vector entries = fragment.getEntries(regName);
  +                i = entries.iterator();
  +                while(i.hasNext())
  +                {
  +                    toDelete.remove(((RegistryEntry)i.next()).getName());
  +                }
  +
                   continue;
               }
   
  @@ -864,15 +882,33 @@
                       {
                           Log.error("RegistryService: RegistryException while adding 
" + entry.getName() + "from " + location, e);
                       }
  +
  +                    //remove this entry from the delete list
  +                    toDelete.remove(entry.getName());
                   }
               }
   
               count+=fragCount;
           }
   
  +        //now delete the entries not found in any fragment
  +        i = toDelete.iterator();
  +        while(i.hasNext())
  +        {
  +            String entryName = (String)i.next();
  +
  +            if ((verbose>1) && Log.getLogger().isDebugEnabled())
  +            {
  +                Log.debug("RegistryService: removing entry " + entryName);
  +            }
  +
  +            registry.removeLocalEntry(entryName);
  +        }
  +
  +
           if ((verbose>1) && Log.getLogger().isDebugEnabled())
           {
  -            Log.debug("RegistryService: Merged " + count + " entries into the " + 
name);
  +            Log.debug("RegistryService: Merged " + count + " entries and deleted "+ 
toDelete.size()+ " in " + name);
           }
       }
   
  
  
  

--
To unsubscribe, e-mail:   <mailto:jetspeed-dev-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:jetspeed-dev-help@;jakarta.apache.org>

Reply via email to