You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by pp...@apache.org on 2012/01/26 18:56:13 UTC

svn commit: r1236326 - in /openjpa/trunk: openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ openjpa-kernel/src/main/java/org/apache/openjpa/meta/ openjpa-lib/src/main/java/org/apache/openjpa/lib/identifier/

Author: ppoddar
Date: Thu Jan 26 17:56:12 2012
New Revision: 1236326

URL: http://svn.apache.org/viewvc?rev=1236326&view=rev
Log:
OPENJPA-2116: Optimize frequent operations  a) field denotes a relation and b) schema name needs conversion.

Modified:
    openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java
    openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java
    openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/identifier/IdentifierUtilImpl.java

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java?rev=1236326&r1=1236325&r2=1236326&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/FetchConfigurationImpl.java Thu Jan 26 17:56:12 2012
@@ -816,7 +816,7 @@ public class FetchConfigurationImpl
         if (!includes(fm))
             return FETCH_NONE;
         
-        Class<?> type = getRelationType(fm);
+        Class<?> type = fm.getRelationType();
         if (type == null)
             return FETCH_LOAD;
         if (_availableDepth == 0)
@@ -842,7 +842,7 @@ public class FetchConfigurationImpl
     }
 
     public FetchConfiguration traverse(FieldMetaData fm) {
-        Class<?> type = getRelationType(fm);
+        Class<?> type = fm.getRelationType();
         if (type == null)
             return this;
 
@@ -943,18 +943,6 @@ public class FetchConfigurationImpl
         return Math.min(max, avail);
     }
 
-    /**
-     * Return the relation type of the given field.
-     */
-    private static Class<?> getRelationType(FieldMetaData fm) {
-        if (fm.isDeclaredTypePC())
-            return fm.getDeclaredType();
-        if (fm.getElement().isDeclaredTypePC())
-            return fm.getElement().getDeclaredType();
-        if (fm.getKey().isDeclaredTypePC())
-            return fm.getKey().getDeclaredType();
-        return null;
-    }
 
     /**
      * Reduce the given logical depth by 1.

Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java?rev=1236326&r1=1236325&r2=1236326&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java Thu Jan 26 17:56:12 2012
@@ -2390,5 +2390,19 @@ public class FieldMetaData
     public void setPersistentCollection(boolean persistentCollection) {
         _persistentCollection = persistentCollection;
     }
-    
+    private Class<?> _relationType = Unknown.class;
+    public Class<?> getRelationType() {
+    	if (_relationType == Unknown.class) {
+            if (isDeclaredTypePC())
+            	_relationType = getDeclaredType();
+            else if (getElement().isDeclaredTypePC())
+            	_relationType = getElement().getDeclaredType();
+            else if (getKey().isDeclaredTypePC())
+            	_relationType = getKey().getDeclaredType();
+            else
+            	_relationType = null;
+    	}
+    	return _relationType;
+    }
+    private class Unknown{};
 }

Modified: openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/identifier/IdentifierUtilImpl.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/identifier/IdentifierUtilImpl.java?rev=1236326&r1=1236325&r2=1236326&view=diff
==============================================================================
--- openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/identifier/IdentifierUtilImpl.java (original)
+++ openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/identifier/IdentifierUtilImpl.java Thu Jan 26 17:56:12 2012
@@ -542,7 +542,8 @@ public class IdentifierUtilImpl implemen
 
 
     protected boolean needsConversion(IdentifierConfiguration config) {
-        return !(config.getConversionKey().equals(getIdentifierConfiguration().getConversionKey()));
+    	return (config != getIdentifierConfiguration()) 
+           && !(config.getConversionKey().equals(getIdentifierConfiguration().getConversionKey()));
     }
 
     private IdentifierRule[] getNamingRules(String[] rules) {