Author: brj
Date: Fri Feb  3 13:15:36 2006
New Revision: 374748

URL: http://svn.apache.org/viewcvs?rev=374748&view=rev
Log:
fixed npe in buildSuperJoin, resolving manager.name still a problem

Modified:
    
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SqlQueryStatement.java

Modified: 
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SqlQueryStatement.java
URL: 
http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SqlQueryStatement.java?rev=374748&r1=374747&r2=374748&view=diff
==============================================================================
--- 
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SqlQueryStatement.java
 (original)
+++ 
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/sql/SqlQueryStatement.java
 Fri Feb  3 13:15:36 2006
@@ -1207,7 +1207,7 @@
                                outer = outer || (curr.cld == prev.cld) || 
curr.hasExtents();
                                addJoin(prev, prevKeys, curr, keys, outer, 
attr);
 
-                               buildSuperJoinTree(curr, cld, aPath, outer);
+                               buildSuperJoinTree(curr, cld, attrPath, outer);
                        }
 
                        prev = curr;
@@ -1414,7 +1414,12 @@
      */
     private void setTableAliasForPath(String aPath, List hintClasses, 
TableAlias anAlias)
     {
-        m_pathToAlias.put(buildAliasKey(aPath, hintClasses), anAlias);
+        String key = buildAliasKey(aPath, hintClasses);
+
+        if (m_pathToAlias.get(key) == null)
+        {
+            m_pathToAlias.put(key, anAlias);
+        }
     }
     
     /**
@@ -1778,10 +1783,6 @@
 
     /**
      * build the Join-Information if a super reference exists
-     *
-     * @param left
-     * @param cld
-     * @param name
      */
     protected void buildSuperJoinTree(TableAlias left, ClassDescriptor cld, 
String name, boolean useOuterJoin)
     {
@@ -1790,12 +1791,10 @@
         {
             SuperReferenceDescriptor superRef = cld.getSuperReference();
             FieldDescriptor[] leftFields = 
superRef.getForeignKeyFieldDescriptors(cld);
-            TableAlias base_alias = getTableAliasForPath(name, null, null);
-            String aliasName = String.valueOf(getAliasChar()) + m_aliasCount++;
-            TableAlias right = new TableAlias(superCld, aliasName, 
useOuterJoin, null);
-
+            
+            TableAlias right = createTableAlias(superCld, null, name);
             Join join1to1 = new Join(left, leftFields, right, 
superCld.getPkFields(), useOuterJoin, "superClass");
-            base_alias.addJoin(join1to1);
+            left.addJoin(join1to1);
 
             buildSuperJoinTree(right, superCld, name, useOuterJoin);
         }
@@ -1803,10 +1802,6 @@
 
     /**
      * build the Join-Information for Subclasses having a super reference to 
this class
-     *
-     * @param left
-     * @param cld
-     * @param name
      */
     private void buildMultiJoinTree(TableAlias left, ClassDescriptor cld, 
String name, boolean useOuterJoin)
     {
@@ -1821,13 +1816,10 @@
             {
                 FieldDescriptor[] leftFields = subCld.getPkFields();
                 FieldDescriptor[] rightFields = 
srd.getForeignKeyFieldDescriptors(subCld);
-                TableAlias base_alias = getTableAliasForPath(name, null, null);
-
-                String aliasName = String.valueOf(getAliasChar()) + 
m_aliasCount++;
-                TableAlias right = new TableAlias(subCld, aliasName, false, 
null);
 
+                TableAlias right = createTableAlias(subCld, null, name);
                 Join join1to1 = new Join(left, leftFields, right, rightFields, 
useOuterJoin, "subClass");
-                base_alias.addJoin(join1to1);
+                left.addJoin(join1to1);
 
                 buildMultiJoinTree(right, subCld, name, useOuterJoin);
             }



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

Reply via email to