You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tapestry.apache.org by hl...@apache.org on 2012/01/26 19:07:47 UTC
svn commit: r1236335 - in
/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5:
internal/services/TapestryAOPStackFrameAnalyzer.java
services/TapestryModule.java
Author: hlship
Date: Thu Jan 26 18:07:46 2012
New Revision: 1236335
URL: http://svn.apache.org/viewvc?rev=1236335&view=rev
Log:
TAP5-1832: Tapestry could do an even better job of filtering unnecessary stack frames from the exception report
Modified:
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TapestryAOPStackFrameAnalyzer.java
tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TapestryAOPStackFrameAnalyzer.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TapestryAOPStackFrameAnalyzer.java?rev=1236335&r1=1236334&r2=1236335&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TapestryAOPStackFrameAnalyzer.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TapestryAOPStackFrameAnalyzer.java Thu Jan 26 18:07:46 2012
@@ -1,4 +1,4 @@
-// Copyright 2010 The Apache Software Foundation
+// Copyright 2010, 2012 The Apache Software Foundation
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -20,13 +20,13 @@ import org.apache.tapestry5.services.Sta
/**
* Encapsulates a number of tests for identifying stack frames that are a side-effect
* of various Tapestry Aspect Oriented Programming and other code generation behaviors.
- *
+ *
* @since 5.2.0
*/
public class TapestryAOPStackFrameAnalyzer implements StackTraceElementAnalyzer
{
private static final String[] SYNTHETIC_METHOD_PREFIXES = new String[]
- { "_$get_", "_$set_", "_$readaccess_", "_$writeaccess_" };
+ {"conduit_get_", "conduit_set_", "reject_field_change_", "shim_set_", "shim_get_"};
public String classForFrame(StackTraceElement frame)
{
@@ -38,16 +38,25 @@ public class TapestryAOPStackFrameAnalyz
private boolean omit(StackTraceElement frame)
{
- // $FieldAccess class in root package is generated
-
- if (frame.getClassName().startsWith("$FieldAccess_"))
+ if (frame.getClassName().equals("org.apache.tapestry5.internal.plastic.MethodHandleImpl"))
+ {
return true;
+ }
if (frame.getMethodName().equals("invoke") && frame.getClassName().contains("$MethodAccess_"))
+ {
return true;
+ }
- if (frame.getMethodName().equals("invokeAdvisedMethod") && frame.getClassName().contains("$invocation_"))
+ if (frame.getMethodName().equals("proceedToAdvisedMethod") && frame.getClassName().contains("$Invocation_"))
+ {
return true;
+ }
+
+ if (frame.getMethodName().equals("invoke") && frame.getClassName().contains("$Shim_"))
+ {
+ return true;
+ }
for (String prefix : SYNTHETIC_METHOD_PREFIXES)
{
Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java?rev=1236335&r1=1236334&r2=1236335&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java Thu Jan 26 18:07:46 2012
@@ -2592,6 +2592,8 @@ public final class TapestryModule
* <dd>Omits stack frames for classes related to Tapestry AOP (such as advice, etc.)</dd>
* <dt>OperationTracker</dt>
* <dd>Omits stack frames related to {@link OperationTracker}</dd>
+ * <dt>Access</dt>
+ * <dd>Omits tack frames used to provide with access to container class private members</dd>
* </dl>
*
* @since 5.1.0.0
@@ -2599,15 +2601,19 @@ public final class TapestryModule
public static void contributeMasterStackTraceElementAnalyzer(
OrderedConfiguration<StackTraceElementAnalyzer> configuration)
{
- configuration.addInstance("Application", ApplicationStackTraceElementAnalyzer.class);
- configuration.add("Proxies", new ProxiesStackTraceElementAnalyzer(), "before:Application");
- configuration.add("Synthetic", new SyntheticStackTraceElementAnalyzer(), "before:Application");
+ configuration.addInstance("TapestryAOP", TapestryAOPStackFrameAnalyzer.class);
+ configuration.add("Proxies", new ProxiesStackTraceElementAnalyzer());
+ configuration.add("Synthetic", new SyntheticStackTraceElementAnalyzer());
configuration.add("SunReflect", new PrefixCheckStackTraceElementAnalyzer(
StackTraceElementClassConstants.OMITTED, "sun.reflect."));
- configuration.addInstance("TapestryAOP", TapestryAOPStackFrameAnalyzer.class, "before:Application");
- configuration.add("OperationTracker", new RegexpStackTraceElementAnalyzer(Pattern.compile("internal\\.(RegistryImpl|PerThreadOperationTracker|OperationTrackerImpl)\\.invoke\\("), StackTraceElementClassConstants.OMITTED));
+ configuration.add("OperationTracker", new RegexpStackTraceElementAnalyzer(Pattern.compile("internal\\.(RegistryImpl|PerThreadOperationTracker|OperationTrackerImpl).*(run|invoke)\\("), StackTraceElementClassConstants.OMITTED));
+ configuration.add("Access", new RegexpStackTraceElementAnalyzer(Pattern.compile("\\.access\\$\\d+\\("), StackTraceElementClassConstants.OMITTED));
+
+ configuration.addInstance("Application", ApplicationStackTraceElementAnalyzer.class);
+
}
+
/**
* Advises the {@link org.apache.tapestry5.services.messages.ComponentMessagesSource} service so
* that the creation