svn commit: r465604 - /db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/ClassDescriptor.java

[email protected]
Newsgroups gmane.comp.jakarta.ojb.devel
Message-ID <[email protected]>
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;
     }
 
     /**
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.