You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by an...@apache.org on 2009/11/23 05:25:15 UTC
svn commit: r883241 - in /tapestry/tapestry5/branches/5.0/tapestry-ioc:
pom.xml src/main/java/org/apache/tapestry5/ioc/internal/util/OneShotLock.java
Author: andyhot
Date: Mon Nov 23 04:25:15 2009
New Revision: 883241
URL: http://svn.apache.org/viewvc?rev=883241&view=rev
Log:
TAP5-934: javassist + error reporting to work in 1.6jvm
Modified:
tapestry/tapestry5/branches/5.0/tapestry-ioc/pom.xml
tapestry/tapestry5/branches/5.0/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/OneShotLock.java
Modified: tapestry/tapestry5/branches/5.0/tapestry-ioc/pom.xml
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/branches/5.0/tapestry-ioc/pom.xml?rev=883241&r1=883240&r2=883241&view=diff
==============================================================================
--- tapestry/tapestry5/branches/5.0/tapestry-ioc/pom.xml (original)
+++ tapestry/tapestry5/branches/5.0/tapestry-ioc/pom.xml Mon Nov 23 04:25:15 2009
@@ -27,7 +27,7 @@
<dependency>
<groupId>javassist</groupId>
<artifactId>javassist</artifactId>
- <version>3.8.0.GA</version>
+ <version>3.9.0.GA</version>
</dependency>
<dependency>
Modified: tapestry/tapestry5/branches/5.0/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/OneShotLock.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/branches/5.0/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/OneShotLock.java?rev=883241&r1=883240&r2=883241&view=diff
==============================================================================
--- tapestry/tapestry5/branches/5.0/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/OneShotLock.java (original)
+++ tapestry/tapestry5/branches/5.0/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/OneShotLock.java Mon Nov 23 04:25:15 2009
@@ -36,21 +36,16 @@
{
if (lock)
{
- // This is how I would think it would be:
+ // The depth to find the caller of the check() or lock() method varies between JDKs.
- // [0] is getStackTrace()
- // [1] is innerCheck()
- // [2] is check() or lock()
- // [3] is caller of check() or lock()
- // ... so why do we get element 4? Found this via trial and error. Some extra stack frame
- // gets in there somehow, as in, getStackTrace() must be calling something (probably native)
- // that creates the actual array, and includes itself as [0], getStackTrace() as [1], etc.
- // Maybe it's something to do with synchronized?
+ StackTraceElement[] elements = Thread.currentThread().getStackTrace();
- StackTraceElement element = Thread.currentThread().getStackTrace()[4];
+ int i = 0;
+ while (!elements[i].getMethodName().equals("innerCheck"))
+ i++;
- throw new IllegalStateException(UtilMessages.oneShotLock(element));
+ throw new IllegalStateException(UtilMessages.oneShotLock(elements[i + 2]));
}
}