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 br...@apache.org on 2003/11/05 21:33:11 UTC

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

brj         2003/11/05 12:33:11

  Modified:    src/java/org/apache/ojb/broker/core
                        PersistenceBrokerImpl.java
               src/java/org/apache/ojb/broker/accesslayer/sql
                        SqlQueryStatement.java
               src/java/org/apache/ojb/broker/metadata ClassDescriptor.java
                        DescriptorRepository.java
  Log:
  moved getAllConcreteSubclassesOf to DescriptorRepository
  
  Revision  Changes    Path
  1.46      +8 -9      db-ojb/src/java/org/apache/ojb/broker/core/PersistenceBrokerImpl.java
  
  Index: PersistenceBrokerImpl.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/core/PersistenceBrokerImpl.java,v
  retrieving revision 1.45
  retrieving revision 1.46
  diff -u -r1.45 -r1.46
  --- PersistenceBrokerImpl.java	2 Nov 2003 13:21:08 -0000	1.45
  +++ PersistenceBrokerImpl.java	5 Nov 2003 20:33:10 -0000	1.46
  @@ -502,11 +502,11 @@
               String lastUsedTable = cld.getFullTableName();
               if (cld.isExtent())
               {
  -                Iterator extentClasses = cld.getAllConcreteExtentClasses().iterator();
  +                Iterator extents = getDescriptorRepository().getAllConcreteSubclassesOf(cld).iterator();
   
  -                while (extentClasses.hasNext())
  +                while (extents.hasNext())
                   {
  -                    Class ec = (Class) extentClasses.next();
  +                    Class ec = (Class) extents.next();
                       ClassDescriptor extCld = getClassDescriptor(ec);
   
                       // read same table only once
  @@ -1765,7 +1765,7 @@
           // we can lookup all tables of the extent classes:
           if (newObj == null && cld.isExtent())
           {
  -            Iterator extents = cld.getAllConcreteExtentClasses().iterator();
  +            Iterator extents = getDescriptorRepository().getAllConcreteSubclassesOf(cld).iterator();
               
               while (extents.hasNext())
               {
  @@ -2521,11 +2521,10 @@
               chainingIter.addIterator(factory.createRsIterator(query, cld, this));
           }
   
  -        Iterator extentClasses = cld.getAllConcreteExtentClasses().iterator();
  -
  -        while (extentClasses.hasNext())
  +        Iterator extents = getDescriptorRepository().getAllConcreteSubclassesOf(cld).iterator();
  +        while (extents.hasNext())
           {
  -            Class ec = (Class) extentClasses.next();
  +            Class ec = (Class) extents.next();
               ClassDescriptor extCld = getClassDescriptor(ec);
   
               // read same table only once
  
  
  
  1.57      +2 -2      db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SqlQueryStatement.java
  
  Index: SqlQueryStatement.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SqlQueryStatement.java,v
  retrieving revision 1.56
  retrieving revision 1.57
  diff -u -r1.56 -r1.57
  --- SqlQueryStatement.java	19 Sep 2003 19:34:05 -0000	1.56
  +++ SqlQueryStatement.java	5 Nov 2003 20:33:11 -0000	1.57
  @@ -1694,7 +1694,7 @@
               // BRJ : build alias for extents, only one per Table
   			if (lookForExtents)
   			{
  -				List extClasses = aCld.getRepository().getConcreteSubclassesOf(aCld.getClassOfObject());
  +				List extClasses = aCld.getRepository().getAllConcreteSubclassesOf(aCld);
   				ClassDescriptor extCd;
   				String extTable;
   				Map extMap = new HashMap(); // only one Alias per Table
  
  
  
  1.71      +1 -47     db-ojb/src/java/org/apache/ojb/broker/metadata/ClassDescriptor.java
  
  Index: ClassDescriptor.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/metadata/ClassDescriptor.java,v
  retrieving revision 1.70
  retrieving revision 1.71
  diff -u -r1.70 -r1.71
  --- ClassDescriptor.java	1 Nov 2003 21:08:57 -0000	1.70
  +++ ClassDescriptor.java	5 Nov 2003 20:33:11 -0000	1.71
  @@ -586,52 +586,6 @@
   
   
       /**
  -     * Return all concrete extent classes of the hierarchy recursively
  -     * @return Collection
  -     */
  -    public Collection getAllConcreteExtentClasses()
  -    {
  -        Set result = new HashSet();
  -        Vector extents = getExtentClasses();
  -        
  -        for (int i = 0; i < extents.size(); i++)
  -        {
  -            Class ext = (Class)extents.elementAt(i);
  -            ClassDescriptor extCld = getRepository().getDescriptorFor(ext);
  -            
  -            if (!extCld.isInterface())
  -            {    
  -                result.add(ext);
  -            }
  -            result.addAll(extCld.getAllConcreteExtentClasses());
  -        }
  -        
  -        return result;
  -    }
  -
  -    /**
  -     * Return all extent classes of the hierarchy recursively
  -     * @return Collection
  -     */
  -    public Collection getAllExtentClasses()
  -    {
  -        Set result = new HashSet();
  -        Vector extents = getExtentClasses();
  -        
  -        for (int i = 0; i < extents.size(); i++)
  -        {
  -            Class ext = (Class)extents.elementAt(i);
  -            ClassDescriptor extCld = getRepository().getDescriptorFor(ext);
  -            
  -            result.add(ext);
  -            result.addAll(extCld.getAllExtentClasses());
  -        }
  -        
  -        return result;
  -    }
  -
  -    
  -    /**
        * Return the names of all classes in this extent
        * @return java.util.Vector a Vector containing the fully qualified names
        * of all classes in this extent
  
  
  
  1.38      +18 -26    db-ojb/src/java/org/apache/ojb/broker/metadata/DescriptorRepository.java
  
  Index: DescriptorRepository.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/metadata/DescriptorRepository.java,v
  retrieving revision 1.37
  retrieving revision 1.38
  diff -u -r1.37 -r1.38
  --- DescriptorRepository.java	11 Jul 2003 07:42:04 -0000	1.37
  +++ DescriptorRepository.java	5 Nov 2003 20:33:11 -0000	1.38
  @@ -54,22 +54,15 @@
    * <http://www.apache.org/>.
    */
   
  +import java.io.Serializable;
  +import java.util.*;
  +
   import org.apache.commons.lang.SystemUtils;
   import org.apache.commons.lang.builder.ToStringBuilder;
   import org.apache.commons.lang.builder.ToStringStyle;
   import org.apache.ojb.broker.OJBRuntimeException;
   import org.apache.ojb.broker.PersistenceBrokerException;
   
  -import java.io.Serializable;
  -import java.util.ArrayList;
  -import java.util.Enumeration;
  -import java.util.HashMap;
  -import java.util.Hashtable;
  -import java.util.Iterator;
  -import java.util.List;
  -import java.util.Map;
  -import java.util.Vector;
  -
   /**
    * The repository containing all object mapping and manipulation information of
    * all used persistent objects.
  @@ -258,29 +251,28 @@
        *
        * @return a List of Class objects
        */
  -    public List getConcreteSubclassesOf(Class superClass)
  +    public List getAllConcreteSubclassesOf(ClassDescriptor aCld)
       {
  -        //logger.debug("-- -- -- Looking for concrete subclasses of ["+superClass.getName()+"]");
  -        List concreteSubclasses = new ArrayList();
  -        ClassDescriptor cld = getDescriptorFor(superClass);
  -        Vector extent = cld.getExtentClasses();
  -        Iterator it = extent.iterator();
  -        while (it.hasNext())
  +        // BRJ: set to prevent duplicates
  +        Set concreteSubclasses = new HashSet();
  +        Iterator iter = aCld.getExtentClasses().iterator();
  +
  +        while (iter.hasNext())
           {
  -            Class extentClass = (Class) it.next();
  -            //logger.debug("-- -- -- Extent class for ["+superClass.getName()+"] -> ["+extentClass+"]");
  -            ClassDescriptor extentClassCld = getDescriptorFor(extentClass);
  -            if (!extentClassCld.isAbstract())
  +            Class extentClass = (Class) iter.next();
  +            ClassDescriptor extCld = getDescriptorFor(extentClass);
  +            if (!extCld.isInterface())
               {
                   concreteSubclasses.add(extentClass);
               }
  -            // recurse
  -            concreteSubclasses.addAll(getConcreteSubclassesOf(extentClass));
   
  +            // recurse
  +            concreteSubclasses.addAll(getAllConcreteSubclassesOf(extCld));
           }
  -        return concreteSubclasses;
  +        
  +        return new ArrayList(concreteSubclasses);
       }
  -
  +    
       /**
        * Checks if repository contains given class.
        */
  
  
  

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