raphael     01/05/17 12:31:28

  Modified:    src/java/org/apache/jetspeed/om/newregistry/base
                        BasePortletInfoEntry.java BaseRegistry.java
  Log:
  - fix media types definition & manipulation
  - fix a NPE when querying registry with null name
  
  Revision  Changes    Path
  1.7       +55 -54    
jakarta-jetspeed/src/java/org/apache/jetspeed/om/newregistry/base/BasePortletInfoEntry.java
  
  Index: BasePortletInfoEntry.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/om/newregistry/base/BasePortletInfoEntry.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- BasePortletInfoEntry.java 2001/05/08 14:21:46     1.6
  +++ BasePortletInfoEntry.java 2001/05/17 19:31:20     1.7
  @@ -55,6 +55,7 @@
   package org.apache.jetspeed.om.newregistry.base;
   
   import org.apache.jetspeed.om.newregistry.*;
  +import org.apache.turbine.util.Log;
   
   import java.util.*;
   
  @@ -64,7 +65,7 @@
    * 
    * @see org.apache.jetspeed.om.newregistry.PortletInfoEntry
    * @author <a href="mailto:[EMAIL PROTECTED]";>Raphaël Luta</a>
  - * @version $Id: BasePortletInfoEntry.java,v 1.6 2001/05/08 14:21:46 raphael Exp $
  + * @version $Id: BasePortletInfoEntry.java,v 1.7 2001/05/17 19:31:20 raphael Exp $
    */
   public abstract class BasePortletInfoEntry extends BaseRegistryEntry
   {
  @@ -75,8 +76,10 @@
       
       private transient Map nameIdx = null;
        
  -    private Vector mediaTypes = new Vector();
  +    private Vector medias = new Vector();
       
  +    private transient Map mediasIdx = null;
  +     
       /** @return the classname associated to this entry */
       public String getClassname()
       {
  @@ -221,7 +224,12 @@
        */
       public Iterator listMediaTypes()
       {
  -        return mediaTypes.iterator();
  +        synchronized( medias )
  +        {
  +            buildMediasIndex();
  +        }
  +        
  +        return mediasIdx.keySet().iterator();
       }
       
       /** 
  @@ -233,15 +241,12 @@
        */
       public boolean hasMediaType(String name)
       {
  -        boolean hasMedia = false;
  -        
  -        Iterator i = mediaTypes.iterator();
  -        while ((!hasMedia)&&i.hasNext())
  +        synchronized( medias )
           {
  -            hasMedia=i.next().equals(name);
  +            buildMediasIndex();
           }
           
  -        return hasMedia;
  +        return ((name!=null)&&(mediasIdx.get(name)!=null));
       }
       
       /** 
  @@ -253,7 +258,13 @@
       {
           if (name!=null)
           {
  -            this.mediaTypes.add(name);
  +            synchronized (medias)
  +            {
  +                BaseMediaType m = new BaseMediaType();
  +                m.setRef(name);
  +                mediasIdx.put(name,new Integer(medias.size()));
  +                medias.add(m);
  +            }
           }
       }
       
  @@ -264,13 +275,21 @@
        */
       public void removeMediaType(String name)
       {
  -        Iterator i = mediaTypes.iterator();
  -        while (i.hasNext())
  +        if (name != null)
           {
  -            if (i.next().equals(name))
  +            synchronized (medias)
               {
  -                i.remove();
  -                return;
  +                mediasIdx.remove(name);
  +
  +                Iterator i = medias.iterator();
  +                while (i.hasNext())
  +                {
  +                    if (i.next().equals(name))
  +                    {
  +                        i.remove();
  +                        return;
  +                    }
  +                }
               }
           }
       }
  @@ -282,54 +301,17 @@
        */
       public Vector getParameters()
       {
  -        return parameter;
  +        return this.parameter;
       }
   
  -    /** Needed for Castor 0.8.11 XML serialization for setting the 
  -     *  parameters objects associated to this object
  -     */
  -    public synchronized void setParameters(Vector params)
  -    {
  -        this.parameter = params;
  -        buildNameIndex();
  -    }
  -
       /** Needed for Castor 0.8.11 XML serialization for retrieving the 
        *  media type names associated to this object
        */
       public Vector getMediaTypes()
       {
  -        Vector medias = new Vector();
  -        Iterator i = mediaTypes.iterator();
  -
  -        while(i.hasNext())
  -        {
  -            String name = (String)i.next();
  -            BaseMediaType media = new BaseMediaType();
  -            media.setRef(name);
  -            medias.add(media);
  -        }
  -        
  -        return medias;
  +        return this.medias;
       }
   
  -    /** Needed for Castor 0.8.11 XML serialization for setting the 
  -     *  media type names associated to this object
  -     */
  -    public void setMediaTypes(Vector medias)
  -    {
  -        // clear all the media types stored
  -        this.mediaTypes.clear();
  -        
  -        //store only the media types name
  -        Iterator i = medias.iterator();
  -        while(i.hasNext())
  -        {
  -            BaseMediaType media = (BaseMediaType)i.next();
  -            this.mediaTypes.add( media.getRef() );
  -        }
  -    }
  -
       /** This method recreates the paramter name index for quick retrieval
        *  of parameters by name. Shoule be called whenever a complete index
        *  of parameter should be rebuilt (eg removing a parameter or setting 
  @@ -349,5 +331,24 @@
           }
           
           this.nameIdx = idx;
  +    }            
  +
  +    /** This method recreates the media name index for quick retrieval
  +     *  by name.
  +     */
  +    private void buildMediasIndex()
  +    {
  +        Hashtable idx = new Hashtable();
  +        
  +        Iterator i = medias.iterator();
  +        int count = 0;
  +        while( i.hasNext() )
  +        {
  +            BaseMediaType b = (BaseMediaType)i.next();
  +            idx.put( b.getRef(), new Integer(count) );
  +            count++;
  +        }
  +        
  +        this.mediasIdx = idx;
       }            
   }
  
  
  
  1.2       +6 -3      
jakarta-jetspeed/src/java/org/apache/jetspeed/om/newregistry/base/BaseRegistry.java
  
  Index: BaseRegistry.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed/src/java/org/apache/jetspeed/om/newregistry/base/BaseRegistry.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- BaseRegistry.java 2001/05/02 10:46:21     1.1
  +++ BaseRegistry.java 2001/05/17 19:31:22     1.2
  @@ -64,7 +64,7 @@
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Kevin A. Burton</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Raphaël Luta</a>
  - * @version $Id: BaseRegistry.java,v 1.1 2001/05/02 10:46:21 raphael Exp $
  + * @version $Id: BaseRegistry.java,v 1.2 2001/05/17 19:31:22 raphael Exp $
    */
   public class BaseRegistry implements Registry
   {
  @@ -81,9 +81,12 @@
       public RegistryEntry getEntry( String name ) throws InvalidEntryException
       {
   
  -        RegistryEntry entry = (RegistryEntry)this.entries.get( name ) ;
  +        RegistryEntry entry = null;
  +        
  +        if (name != null) entry = (RegistryEntry)this.entries.get( name ) ;
   
  -        if ( entry == null ) {
  +        if ( entry == null )
  +        {
               throw new InvalidEntryException( 
InvalidEntryException.ENTRY_DOES_NOT_EXIST+" "+name );
           }
           
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to