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/04/03 04:20:43 UTC

cvs commit: db-ojb/src/java/org/apache/ojb/broker/metadata ObjectReferenceDescriptor.java

arminw      2005/04/02 18:20:43

  Modified:    src/java/org/apache/ojb/broker/metadata Tag: OJB_1_0_RELEASE
                        ObjectReferenceDescriptor.java
  Log:
  add check for proxy object, materialize object when needed
  add method comment
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.37.2.1  +7 -0      db-ojb/src/java/org/apache/ojb/broker/metadata/ObjectReferenceDescriptor.java
  
  Index: ObjectReferenceDescriptor.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/metadata/ObjectReferenceDescriptor.java,v
  retrieving revision 1.37
  retrieving revision 1.37.2.1
  diff -u -r1.37 -r1.37.2.1
  --- ObjectReferenceDescriptor.java	13 Jun 2004 08:26:01 -0000	1.37
  +++ ObjectReferenceDescriptor.java	3 Apr 2005 02:20:43 -0000	1.37.2.1
  @@ -22,6 +22,7 @@
   import org.apache.commons.lang.builder.ToStringBuilder;
   import org.apache.ojb.broker.OJBRuntimeException;
   import org.apache.ojb.broker.PersistenceBrokerException;
  +import org.apache.ojb.broker.core.proxy.ProxyHelper;
   import org.apache.ojb.broker.metadata.fieldaccess.PersistentField;
   
   /**
  @@ -142,12 +143,18 @@
   	}
   
       /**
  +     * Returns an Object array of all FK field values of the specified object.
  +     * If the specified object is an unmaterialized Proxy, it will be materialized
  +     * to read the FK values.
  +     *
        * @throws MetadataException if an error occours while accessing ForeingKey values on obj
        */
       public Object[] getForeignKeyValues(Object obj, ClassDescriptor mif)
               throws PersistenceBrokerException
       {
           FieldDescriptor[] fks = getForeignKeyFieldDescriptors(mif);
  +        // materialize object only if FK fields are declared
  +        if(fks.length > 0) obj = ProxyHelper.getRealObject(obj);
           Object[] result = new Object[fks.length];
           for (int i = 0; i < result.length; i++)
           {
  
  
  

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