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]