User: dsundstrom
  Date: 02/01/16 13:07:18

  Modified:    src/main/org/jboss/ejb/plugins/cmp/jdbc
                        JDBCLoadEntityCommand.java
  Log:
  Fixed bug where read ahead strategy was ignored.
  Added support for lazy load groups.
  
  Revision  Changes    Path
  1.15      +23 -8     
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCLoadEntityCommand.java
  
  Index: JDBCLoadEntityCommand.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCLoadEntityCommand.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- JDBCLoadEntityCommand.java        2002/01/15 22:33:08     1.14
  +++ JDBCLoadEntityCommand.java        2002/01/16 21:07:18     1.15
  @@ -40,7 +40,7 @@
    * @author <a href="mailto:[EMAIL PROTECTED]";>Justin Forder</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>Dirk Zimmermann</a>
    * @author <a href="mailto:[EMAIL PROTECTED]";>danch (Dan Christopherson)</a>
  - * @version $Revision: 1.14 $
  + * @version $Revision: 1.15 $
    */
   public class JDBCLoadEntityCommand {
      private final JDBCStoreManager manager;
  @@ -237,22 +237,37 @@
            JDBCCMPFieldBridge requiredField,
            EntityEnterpriseContext ctx) {
   
  -      ArrayList fields = new ArrayList(entity.getEagerLoadFields());
  -      if(requiredField != null && !fields.contains(requiredField)) {
  -         fields.add(requiredField);
  +      // get the load fields
  +      ArrayList loadFields = new ArrayList(entity.getFields().size());
  +      if(requiredField == null) {
  +         log.debug("Default eager-load for entity");
  +         loadFields.addAll(entity.getEagerLoadFields());
  +      } else {
  +         loadFields.add(requiredField);
  +         for(Iterator groups = entity.getLazyLoadGroups(); groups.hasNext();) {
  +            List group = (List)groups.next();
  +            if(group.contains(requiredField)) {
  +               for(Iterator fields = group.iterator(); fields.hasNext();) {
  +                  JDBCFieldBridge field = (JDBCFieldBridge)fields.next();
  +                  if(!loadFields.contains(field)) {
  +                     loadFields.add(field);
  +                  }
  +               }
  +            }
  +         }
         }
   
         // remove any field that is a member of the primary key
         // or has not timed out or is already loaded
  -      for(Iterator iter=fields.iterator(); iter.hasNext();) {
  -         JDBCFieldBridge field = (JDBCFieldBridge)iter.next();
  +      for(Iterator fields = loadFields.iterator(); fields.hasNext();) {
  +         JDBCFieldBridge field = (JDBCFieldBridge)fields.next();
            if(field.isPrimaryKeyMember() ||
                  !field.isReadTimedOut(ctx) ||
                  field.isLoaded(ctx)) {
  -            iter.remove();
  +            fields.remove();
            }
         }
         
  -      return fields;
  +      return loadFields;
      }
   }
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to