arminw      2005/11/15 16:58:38

  Modified:    src/java/org/apache/ojb/broker/metadata Tag: OJB_1_0_RELEASE
                        ObjectReferenceDescriptor.java
  Log:
  when lookup FK field-descriptor note by field index too, last part of OJB-55 
patch
  
  Revision  Changes    Path
  No                   revision
  No                   revision
  1.37.2.4  +28 -19    
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.2.3
  retrieving revision 1.37.2.4
  diff -u -r1.37.2.3 -r1.37.2.4
  --- ObjectReferenceDescriptor.java    4 Jun 2005 15:03:35 -0000       1.37.2.3
  +++ ObjectReferenceDescriptor.java    16 Nov 2005 00:58:38 -0000      1.37.2.4
  @@ -93,7 +93,7 @@
        */
        public FieldDescriptor[] getForeignKeyFieldDescriptors(ClassDescriptor 
mif)
        {
  -             FieldDescriptor[] foreignKeyFieldDescriptors = null;
  +             FieldDescriptor[] foreignKeyFieldDescriptors;
                if ((foreignKeyFieldDescriptors = (FieldDescriptor[]) 
fkFieldMap.get(mif)) == null)
                {
                        // 1. collect vector of indices of Fk-Fields
  @@ -126,29 +126,39 @@
                                        else
                                        {
                                                fkfd = 
mif.getFieldDescriptorByName((String) fk);
  +                                     }
  +                    if (fkfd == null)
  +                    {
                           /*
  +                        OJB-55
                           arminw:
                           it's possible that the FK field is declared in the 
super classes of this object,
                           so we can search for a valid field in super 
class-descriptor
                           */
  -                        if (fkfd == null)
  +                        ClassDescriptor tmp = mif;
  +                        while(tmp.getSuperClassDescriptor() != null)
                           {
  -                            ClassDescriptor tmp = mif;
  -                            while(tmp.getSuperClassDescriptor() != null)
  +                            if (fk instanceof Integer)
  +                                                     {
  +                                                             Integer index = 
(Integer) fk;
  +                                                             fkfd = 
tmp.getFieldDescriptorByIndex(index.intValue());
  +                                                     }
  +                                                     else
  +                                                     {
  +                                                             fkfd = 
tmp.getFieldDescriptorByName((String) fk);
  +                                                     }
  +                            if(fkfd != null)
  +                            {
  +                                break;
  +                            }
  +                            else
                               {
  -                                fkfd = tmp.getFieldDescriptorByName((String) 
fk);
  -                                if(fkfd != null)
  -                                {
  -                                    break;
  -                                }
  -                                else
  -                                {
  -                                    tmp = tmp.getSuperClassDescriptor();
  -                                }
  +                                tmp = tmp.getSuperClassDescriptor();
                               }
                           }
  -                                     }
  -                                     if (fkfd == null)
  +                    }
  +
  +                    if (fkfd == null)
                                        {
                           throw new OJBRuntimeException("Incorrect or not 
found field reference name '"
                                   + fk + "' in descriptor " + this + " for 
class-descriptor '"
  @@ -188,8 +198,7 @@
               // FieldConversion fc = fmd.getFieldConversion();
               // Object val = fc.javaToSql(f.get(obj));
   
  -            Object val = f.get(obj);
  -            result[i] = val;
  +            result[i] = f.get(obj);
           }
           return result;
       }
  @@ -337,7 +346,7 @@
        */
       public boolean getCascadeStore()
       {
  -        return getCascadingStore() == CASCADE_OBJECT ? true : false;
  +        return getCascadingStore() == CASCADE_OBJECT;
       }
   
       /**
  @@ -381,7 +390,7 @@
        */
       public boolean getCascadeDelete()
       {
  -        return getCascadingDelete() == CASCADE_OBJECT ? true : false;
  +        return getCascadingDelete() == CASCADE_OBJECT;
       }
   
       /**
  
  
  

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

Reply via email to