You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2007/12/22 18:41:16 UTC

svn commit: r606472 - /cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/LazyClassDescriptorDecorator.java

Author: aadamchik
Date: Sat Dec 22 09:41:15 2007
New Revision: 606472

URL: http://svn.apache.org/viewvc?rev=606472&view=rev
Log:
POJO: prevent early resolution of the descriptor for the relationship target that can lead to an endless loop on startup

Modified:
    cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/LazyClassDescriptorDecorator.java

Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/LazyClassDescriptorDecorator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/LazyClassDescriptorDecorator.java?rev=606472&r1=606471&r2=606472&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/LazyClassDescriptorDecorator.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/reflect/LazyClassDescriptorDecorator.java Sat Dec 22 09:41:15 2007
@@ -75,6 +75,17 @@
     }
 
     public Class<?> getObjectClass() {
+        
+        // note that we can resolve Object class without triggering descriptor resolution.
+        // This is very helpful when compiling POJO relationships
+        if (descriptor == null) {
+
+            ObjEntity entity = descriptorMap.getResolver().getObjEntity(entityName);
+            if (entity != null) {
+                return entity.getJavaClass();
+            }
+        }
+
         checkDescriptorInitialized();
         return descriptor.getObjectClass();
     }
@@ -92,7 +103,7 @@
         checkDescriptorInitialized();
         return descriptor.getIdProperties();
     }
-    
+
     public Iterator<ArcProperty> getMapArcProperties() {
         checkDescriptorInitialized();
         return descriptor.getMapArcProperties();