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 2007/02/20 18:57:25 UTC

svn commit: r509688 - /incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachedStateManager.java

Author: ppoddar
Date: Tue Feb 20 09:57:24 2007
New Revision: 509688

URL: http://svn.apache.org/viewvc?view=rev&rev=509688
Log:
Prevent access to the pc fields by implictly invoking _pc.toString() as that may cause infinite loop if toString() again tries to access unloaded field(s) 


Modified:
    incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachedStateManager.java

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachedStateManager.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachedStateManager.java?view=diff&rev=509688&r1=509687&r2=509688
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachedStateManager.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachedStateManager.java Tue Feb 20 09:57:24 2007
@@ -396,8 +396,10 @@
 
     public void accessingField(int idx) {
         if (!_access && !_loaded.get(idx))
+        	// do not access the pc fields by implictly invoking _pc.toString()
+        	// may cause infinite loop if again tries to access unloaded field 
             throw new IllegalStateException(_loc.get("unloaded-detached",
-                _pc).getMessage());
+                _pc.getClass()+"@"+System.identityHashCode(_pc)).getMessage());
     }
 
     public boolean serializing() {



Re: svn commit: r509688 - /incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DetachedStateManager.java

Posted by Craig L Russell <Cr...@Sun.COM>.
Hi Pinaki,

Would it be possible to include the field number with the error  
message? Seems like if you get this exception you'd like to know  
which field it is complaining about.

Craig

On Feb 20, 2007, at 9:57 AM, ppoddar@apache.org wrote:

> Author: ppoddar
> Date: Tue Feb 20 09:57:24 2007
> New Revision: 509688
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=509688
> Log:
> Prevent access to the pc fields by implictly invoking _pc.toString 
> () as that may cause infinite loop if toString() again tries to  
> access unloaded field(s)
>
>
> Modified:
>     incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/ 
> openjpa/kernel/DetachedStateManager.java
>
> Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/ 
> apache/openjpa/kernel/DetachedStateManager.java
> URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa- 
> kernel/src/main/java/org/apache/openjpa/kernel/ 
> DetachedStateManager.java?view=diff&rev=509688&r1=509687&r2=509688
> ====================================================================== 
> ========
> --- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/ 
> openjpa/kernel/DetachedStateManager.java (original)
> +++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/ 
> openjpa/kernel/DetachedStateManager.java Tue Feb 20 09:57:24 2007
> @@ -396,8 +396,10 @@
>
>      public void accessingField(int idx) {
>          if (!_access && !_loaded.get(idx))
> +        	// do not access the pc fields by implictly invoking  
> _pc.toString()
> +        	// may cause infinite loop if again tries to access  
> unloaded field
>              throw new IllegalStateException(_loc.get("unloaded- 
> detached",
> -                _pc).getMessage());
> +                _pc.getClass()+"@"+System.identityHashCode 
> (_pc)).getMessage());
>      }
>
>      public boolean serializing() {
>
>

Craig Russell
Architect, Sun Java Enterprise System http://java.sun.com/products/jdo
408 276-5638 mailto:Craig.Russell@sun.com
P.S. A good JDO? O, Gasp!