arminw 2005/11/15 17:23:50
Modified: src/java/org/apache/ojb/broker/metadata Tag: OJB_1_0_RELEASE
ObjectReferenceDescriptor.java
Log:
minor improvement
Revision Changes Path
No revision
No revision
1.37.2.5 +30 -43
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.4
retrieving revision 1.37.2.5
diff -u -r1.37.2.4 -r1.37.2.5
--- ObjectReferenceDescriptor.java 16 Nov 2005 00:58:38 -0000 1.37.2.4
+++ ObjectReferenceDescriptor.java 16 Nov 2005 01:23:49 -0000 1.37.2.5
@@ -91,10 +91,10 @@
/**
*
*/
- public FieldDescriptor[] getForeignKeyFieldDescriptors(ClassDescriptor
mif)
+ public FieldDescriptor[] getForeignKeyFieldDescriptors(ClassDescriptor
cld)
{
FieldDescriptor[] foreignKeyFieldDescriptors;
- if ((foreignKeyFieldDescriptors = (FieldDescriptor[])
fkFieldMap.get(mif)) == null)
+ if ((foreignKeyFieldDescriptors = (FieldDescriptor[])
fkFieldMap.get(cld)) == null)
{
// 1. collect vector of indices of Fk-Fields
Vector v = getForeignKeyFields();
@@ -103,13 +103,13 @@
if (v != null)
{
Vector ret;
- if (mif.isInterface())
+ if (cld.isInterface())
{
//exchange interface class descriptor
with first concrete
//class
- Vector extents = mif.getExtentClasses();
+ Vector extents = cld.getExtentClasses();
Class firstConcreteClass = (Class)
extents.get(0);
- mif =
getClassDescriptor().getRepository().getDescriptorFor(firstConcreteClass);
+ cld =
getClassDescriptor().getRepository().getDescriptorFor(firstConcreteClass);
}
ret = new Vector();
@@ -117,44 +117,31 @@
while (iter.hasNext())
{
Object fk = iter.next();
- FieldDescriptor fkfd;
- if (fk instanceof Integer)
- {
- Integer index = (Integer) fk;
- fkfd =
mif.getFieldDescriptorByIndex(index.intValue());
- }
- else
- {
- fkfd =
mif.getFieldDescriptorByName((String) fk);
- }
- if (fkfd == null)
+ FieldDescriptor fkfd = null;
+ /*
+ OJB-55
+ 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
+ */
+ ClassDescriptor tmp = cld;
+ while(tmp != 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
- */
- ClassDescriptor tmp = mif;
- while(tmp.getSuperClassDescriptor() != null)
+ if (fk instanceof Integer)
+ {
+ Integer index = (Integer) fk;
+ fkfd =
cld.getFieldDescriptorByIndex(index.intValue());
+ }
+ else
+ {
+ fkfd = tmp.getFieldDescriptorByName((String) fk);
+ }
+ if(fkfd != null)
+ {
+ break;
+ }
+ else
{
- if (fk instanceof Integer)
- {
- Integer index =
(Integer) fk;
- fkfd =
tmp.getFieldDescriptorByIndex(index.intValue());
- }
- else
- {
- fkfd =
tmp.getFieldDescriptorByName((String) fk);
- }
- if(fkfd != null)
- {
- break;
- }
- else
- {
- tmp = tmp.getSuperClassDescriptor();
- }
+ tmp = tmp.getSuperClassDescriptor();
}
}
@@ -162,12 +149,12 @@
{
throw new OJBRuntimeException("Incorrect or not
found field reference name '"
+ fk + "' in descriptor " + this + " for
class-descriptor '"
- + mif.getClassNameOfObject() + "'");
+ + (cld != null ? cld.getClassNameOfObject()
+ "'" : "'null'"));
}
ret.add(fkfd);
}
foreignKeyFieldDescriptors =
(FieldDescriptor[]) ret.toArray(new FieldDescriptor[ret.size()]);
- fkFieldMap.put(mif, foreignKeyFieldDescriptors);
+ fkFieldMap.put(cld, foreignKeyFieldDescriptors);
}
}
return foreignKeyFieldDescriptors;
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]