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 ol...@apache.org on 2004/03/06 23:38:52 UTC
cvs commit: db-ojb/src/java/org/apache/ojb/broker/accesslayer CollectionPrefetcher.java
olegnitz 2004/03/06 14:38:52
Modified: src/java/org/apache/ojb/broker/accesslayer
CollectionPrefetcher.java
Log:
Possible NPE fixed
Revision Changes Path
1.23 +11 -8 db-ojb/src/java/org/apache/ojb/broker/accesslayer/CollectionPrefetcher.java
Index: CollectionPrefetcher.java
===================================================================
RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/accesslayer/CollectionPrefetcher.java,v
retrieving revision 1.22
retrieving revision 1.23
diff -u -r1.22 -r1.23
--- CollectionPrefetcher.java 15 Jan 2004 20:58:46 -0000 1.22
+++ CollectionPrefetcher.java 6 Mar 2004 22:38:52 -0000 1.23
@@ -160,13 +160,13 @@
/**
* associate the batched Children with their owner object loop over children
- */
+ */
protected void associateBatched(Collection owners, Collection children)
{
CollectionDescriptor cds = getCollectionDescriptor();
PersistentField field = cds.getPersistentField();
PersistenceBroker pb = getBroker();
- Class ownerTopLevelClass = pb.getTopLevelClass(getOwnerClassDescriptor().getClassOfObject());
+ Class ownerTopLevelClass = pb.getTopLevelClass(getOwnerClassDescriptor().getClassOfObject());
Class collectionClass = cds.getCollectionClass(); // this collection type will be used:
HashMap ownerIdsToLists = new HashMap();
@@ -176,28 +176,31 @@
Object owner = it.next();
ownerIdsToLists.put(new Identity(owner,pb), new ArrayList());
}
-
+
// build the children lists for the owners
for (Iterator it = children.iterator(); it.hasNext();)
{
Object child = it.next();
// BRJ: use cld for real class, relatedObject could be Proxy
ClassDescriptor cld = getDescriptorRepository().getDescriptorFor(ProxyHelper.getRealClass(child));
-
+
Object[] fkValues = cds.getForeignKeyValues(child, cld);
Identity ownerId = new Identity(null, ownerTopLevelClass, fkValues);
List list = (List) ownerIdsToLists.get(ownerId);
- list.add(child);
+ if (list != null)
+ {
+ list.add(child);
+ }
}
- // connect children list to owners
+ // connect children list to owners
for (Iterator it = owners.iterator(); it.hasNext();)
{
Object result;
Object owner = it.next();
Identity ownerId = new Identity(owner, pb);
List list = (List) ownerIdsToLists.get(ownerId);
-
+
if ((collectionClass == null) && field.getType().isArray())
{
int length = list.size();
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org