Author: arminw
Date: Thu Oct 19 05:29:20 2006
New Revision: 465604

URL: http://svn.apache.org/viewvc?view=rev&rev=465604
Log:
minor improvement handling autoIncrement fields

Modified:
    
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/ClassDescriptor.java

Modified: 
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/ClassDescriptor.java
URL: 
http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/ClassDescriptor.java?view=diff&rev=465604&r1=465603&r2=465604
==============================================================================
--- 
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/ClassDescriptor.java
 (original)
+++ 
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/ClassDescriptor.java
 Thu Oct 19 05:29:20 2006
@@ -216,6 +216,7 @@
     //-----------------------------------------------------------------
     //-----------------------------------------------------------------
     private FieldDescriptor m_autoIncrementField = null;
+    private FieldDescriptor[] autoIncrementFields = null;
     /**
      * the FieldDescriptors for the primitive attributes
      */
@@ -430,13 +431,7 @@
             Arrays.sort(m_FieldDescriptions, FieldDescriptor.getComparator());
         }
 
-        m_fieldDescriptorNameMap = null;
-        m_PkFieldDescriptors = null;
-        m_nonPkFieldDescriptors = null;
-        m_lockingFieldDescriptors = null;
-        m_RwFieldDescriptors = null;
-        m_RwNonPkFieldDescriptors = null;
-        lobFields = null;
+        resetConvenienceFields();
     }
 
     public boolean removeFieldDescriptor(FieldDescriptor fld)
@@ -448,6 +443,13 @@
         result = list.remove(fld);
         m_FieldDescriptions = (FieldDescriptor[]) list.toArray(new 
FieldDescriptor[list.size()]);
 
+        resetConvenienceFields();
+
+        return result;
+    }
+
+    protected void resetConvenienceFields()
+    {
         m_fieldDescriptorNameMap = null;
         m_PkFieldDescriptors = null;
         m_nonPkFieldDescriptors = null;
@@ -455,7 +457,8 @@
         m_RwFieldDescriptors = null;
         m_RwNonPkFieldDescriptors = null;
         lobFields = null;
-        return result;
+        m_autoIncrementField = null;
+        autoIncrementFields = null;
     }
 
     /**
@@ -938,15 +941,23 @@
         return m_autoIncrementField;
     }
 
+    /**
+     * Returns all fields declared as 'autoIncrement' fields.
+     */
     public FieldDescriptor[] getAutoIncrementFields()
     {
-        ArrayList result = new ArrayList();
-        for (int i = 0; i < m_FieldDescriptions.length; i++)
+        if(autoIncrementFields == null)
         {
-            FieldDescriptor field = m_FieldDescriptions[i];
-            if(field.isAutoIncrement()) result.add(field);
+            ArrayList result = new ArrayList();
+            FieldDescriptor[] fields = getFieldDescriptor(false);
+            for (int i = 0; i < fields.length; i++)
+            {
+                FieldDescriptor field = fields[i];
+                if(field.isAutoIncrement()) result.add(field);
+            }
+            autoIncrementFields = (FieldDescriptor[]) result.toArray(new 
FieldDescriptor[result.size()]);
         }
-        return (FieldDescriptor[]) result.toArray(new 
FieldDescriptor[result.size()]);
+        return autoIncrementFields;
     }
 
     /**



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

Reply via email to