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 2011/10/26 01:16:11 UTC
svn commit: r1188964 -
/tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticInternalUtils.java
Author: hlship
Date: Tue Oct 25 23:16:11 2011
New Revision: 1188964
URL: http://svn.apache.org/viewvc?rev=1188964&view=rev
Log:
TAP5-1724: In rare cases, Tapestry may fail to transform a class due to a "JSR/RET are not supported with computeFrames option" exception
Modified:
tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticInternalUtils.java
Modified: tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticInternalUtils.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticInternalUtils.java?rev=1188964&r1=1188963&r2=1188964&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticInternalUtils.java (original)
+++ tapestry/tapestry5/trunk/plastic/src/main/java/org/apache/tapestry5/internal/plastic/PlasticInternalUtils.java Tue Oct 25 23:16:11 2011
@@ -14,30 +14,18 @@
package org.apache.tapestry5.internal.plastic;
-import org.apache.tapestry5.internal.plastic.asm.ClassReader;
-import org.apache.tapestry5.internal.plastic.asm.Type;
+import org.apache.tapestry5.internal.plastic.asm.*;
+import org.apache.tapestry5.internal.plastic.asm.commons.JSRInlinerAdapter;
import org.apache.tapestry5.internal.plastic.asm.tree.ClassNode;
import org.apache.tapestry5.internal.plastic.asm.tree.MethodNode;
import org.apache.tapestry5.internal.plastic.asm.util.TraceClassVisitor;
import org.apache.tapestry5.plastic.InstanceContext;
import org.apache.tapestry5.plastic.MethodDescription;
-import java.io.ByteArrayOutputStream;
-import java.io.Closeable;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.PrintWriter;
-import java.io.StringWriter;
+import java.io.*;
import java.lang.reflect.Array;
import java.net.URL;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -239,8 +227,7 @@ public class PlasticInternalUtils
* Strips out leading and trailing underscores, leaving the real property name.
* In addition, "m_foo" is converted to "foo".
*
- * @param fieldName
- * to convert
+ * @param fieldName to convert
* @return the property name
*/
public static String toPropertyName(String fieldName)
@@ -257,8 +244,7 @@ public class PlasticInternalUtils
/**
* Capitalizes the input string, converting the first character to upper case.
*
- * @param input
- * a non-empty string
+ * @param input a non-empty string
* @return the same string if already capitalized, or a capitalized version
*/
public static String capitalize(String input)
@@ -287,10 +273,8 @@ public class PlasticInternalUtils
}
/**
- * @param loader
- * class loader to look up in
- * @param javaName
- * java name is Java source format (e.g., "int", "int[]", "java.lang.String", "java.lang.String[]", etc.)
+ * @param loader class loader to look up in
+ * @param javaName java name is Java source format (e.g., "int", "int[]", "java.lang.String", "java.lang.String[]", etc.)
* @return class instance
* @throws ClassNotFoundException
*/
@@ -433,7 +417,18 @@ public class PlasticInternalUtils
ClassNode result = new ClassNode();
- cr.accept(result, 0);
+ ClassVisitor adapter = new ClassAdapter(result)
+ {
+ @Override
+ public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions)
+ {
+ MethodVisitor delegate = super.visitMethod(access, name, desc, signature, exceptions);
+
+ return new JSRInlinerAdapter(delegate, access, name, desc, signature, exceptions);
+ }
+ };
+
+ cr.accept(adapter, 0);
return result;
}