You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by ar...@apache.org on 2005/10/01 15:46:51 UTC

cvs commit: db-ojb/src/java/org/apache/ojb/broker/util/collections ManageableMapImpl.java

arminw      2005/10/01 06:46:51

  Modified:    src/java/org/apache/ojb/broker/util/collections
                        ManageableMapImpl.java
  Log:
  update javadoc, add check for composed PK's
  
  Revision  Changes    Path
  1.3       +33 -18    db-ojb/src/java/org/apache/ojb/broker/util/collections/ManageableMapImpl.java
  
  Index: ManageableMapImpl.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/util/collections/ManageableMapImpl.java,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- ManageableMapImpl.java	5 Dec 2004 12:31:00 -0000	1.2
  +++ ManageableMapImpl.java	1 Oct 2005 13:46:50 -0000	1.3
  @@ -26,9 +26,15 @@
   import org.apache.ojb.broker.ManageableCollection;
   import org.apache.ojb.broker.PersistenceBroker;
   import org.apache.ojb.broker.metadata.ClassDescriptor;
  +import org.apache.ojb.broker.metadata.FieldDescriptor;
  +import org.apache.ojb.broker.metadata.MetadataException;
   
   /**
  - * Manageable Wrapper for Map.
  + * Manageable Wrapper for Map, where the primary key is the map key, and the object
  + * is the map value.
  + * <br/>
  + * <strong>Note:</strong> This implementation is limited in use, only objects with
  + * single primary key field are allowed (composed PK's are illegal).
    *
    * @author <a href="mailto:jbraeuchi@gmx.ch">Jakob Braeuchi</a>
    * @version $Id$
  @@ -51,7 +57,7 @@
           }
           setMap(map);
       }
  -    
  +
       /**
        * Default Constructor. Wraps a HashMap.
        */
  @@ -59,7 +65,7 @@
       {
           this(new HashMap());
       }
  -    
  +
       /**
        * @return Returns the map.
        */
  @@ -176,13 +182,22 @@
        */
       public void ojbAdd(PersistenceBroker broker, Object anObject)
       {
  -		if (anObject != null)
  -		{
  -			ClassDescriptor cd  = broker.getDescriptorRepository().getDescriptorFor(anObject.getClass());
  -			Object          key = cd.getPrimaryKey().getPersistentField().get(anObject);
  -
  -            put(key,anObject);
  -		}
  +        if (anObject != null)
  +        {
  +            ClassDescriptor cd  = broker.getDescriptorRepository().getDescriptorFor(anObject.getClass());
  +            FieldDescriptor[] fields = cd.getPkFields();
  +            if(fields.length > 1 || fields.length == 0)
  +            {
  +                throw new MetadataException("ManageableHashMap can only be used for persistence capable objects with" +
  +                        " exactly one primiary key field defined in metadata, for " + anObject.getClass() + " the" +
  +                        " PK field count is " + fields.length);
  +            }
  +            else
  +            {
  +                Object key = fields[0].getPersistentField().get(anObject);
  +                put(key,anObject);
  +            }
  +        }
       }
   
       /**
  @@ -190,11 +205,11 @@
        */
       public void ojbAddAll(PersistenceBroker broker, ManageableCollection otherCollection)
       {
  -		Iterator it = otherCollection.ojbIterator(broker);
  -		while (it.hasNext())
  -		{
  -			ojbAdd(broker, it.next());
  -		}        
  +        Iterator it = otherCollection.ojbIterator(broker);
  +        while (it.hasNext())
  +        {
  +            ojbAdd(broker, it.next());
  +        }
       }
   
       /**
  @@ -216,7 +231,7 @@
           }
           return getMap().equals(obj);
       }
  -    
  +
       /**
        * @see java.lang.Object#hashCode()
        */
  @@ -224,7 +239,7 @@
       {
           return getMap().hashCode();
       }
  -    
  +
       /**
        * @see java.lang.Object#toString()
        */
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org