You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2011/11/02 00:09:52 UTC
svn commit: r1196360 - in /tapestry/tapestry5/trunk: tapestry-core/
tapestry-ioc/ tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/
Author: hlship
Date: Tue Nov 1 23:09:51 2011
New Revision: 1196360
URL: http://svn.apache.org/viewvc?rev=1196360&view=rev
Log:
TAP5-1739: Convert test case for synthetic method in module class to use ASM, not Javassist
Modified:
tapestry/tapestry5/trunk/tapestry-core/build.gradle
tapestry/tapestry5/trunk/tapestry-ioc/build.gradle
tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/DefaultModuleDefImplTest.java
tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/SyntheticMethodModule.java
Modified: tapestry/tapestry5/trunk/tapestry-core/build.gradle
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/build.gradle?rev=1196360&r1=1196359&r2=1196360&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/build.gradle (original)
+++ tapestry/tapestry5/trunk/tapestry-core/build.gradle Tue Nov 1 23:09:51 2011
@@ -27,6 +27,8 @@ dependencies {
antlr3 "org.antlr:antlr:3.3"
testRuntime "org.hsqldb:hsqldb:1.8.0.10"
+
+ testCompile "javassist:javassist:3.12.1.GA"
}
// This may spin out as a plugin once we've got the details down pat
Modified: tapestry/tapestry5/trunk/tapestry-ioc/build.gradle
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/build.gradle?rev=1196360&r1=1196359&r2=1196360&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/build.gradle (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/build.gradle Tue Nov 1 23:09:51 2011
@@ -7,8 +7,6 @@ dependencies {
provided project(':tapestry-test')
- compile "javassist:javassist:3.12.1.GA"
-
compile "javax.inject:javax.inject:1"
compile "org.slf4j:slf4j-api:1.6.1"
Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/DefaultModuleDefImplTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/DefaultModuleDefImplTest.java?rev=1196360&r1=1196359&r2=1196360&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/DefaultModuleDefImplTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/DefaultModuleDefImplTest.java Tue Nov 1 23:09:51 2011
@@ -14,8 +14,11 @@
package org.apache.tapestry5.ioc.internal;
-import javassist.bytecode.AccessFlag;
+import org.apache.tapestry5.internal.plastic.ClassLoaderDelegate;
+import org.apache.tapestry5.internal.plastic.PlasticClassLoader;
+import org.apache.tapestry5.internal.plastic.PlasticInternalUtils;
import org.apache.tapestry5.internal.plastic.asm.ClassWriter;
+import org.apache.tapestry5.internal.plastic.asm.MethodVisitor;
import org.apache.tapestry5.ioc.*;
import org.apache.tapestry5.ioc.def.ContributionDef;
import org.apache.tapestry5.ioc.def.DecoratorDef;
@@ -32,10 +35,9 @@ import org.testng.annotations.BeforeClas
import org.testng.annotations.Test;
import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.List;
import java.util.Set;
+import static org.apache.tapestry5.internal.plastic.asm.Opcodes.*;
import static org.easymock.EasyMock.contains;
public class DefaultModuleDefImplTest extends IOCTestCase
@@ -649,29 +651,42 @@ public class DefaultModuleDefImplTest ex
private Class createSyntheticMethodModuleClass() throws NoSuchMethodException
{
- /*
- ClassFab fab = classFactory.newClass("EnhancedSyntheticMethodModule", SyntheticMethodModule.class);
- int modifiers = Modifier.PUBLIC | AccessFlag.SYNTHETIC;
+ ClassWriter cw = new ClassWriter(ClassWriter.COMPUTE_MAXS + ClassWriter.COMPUTE_FRAMES);
- // choose arbitrary signature
+ cw.visit(V1_5, ACC_PUBLIC, "EnhancedSyntheticMethodModule", null,
+ PlasticInternalUtils.toInternalName(SyntheticMethodModule.class.getName()), null);
- MethodSignature signature = new MethodSignature(List.class.getMethod("size"));
+ MethodVisitor mv = cw.visitMethod(ACC_PUBLIC | ACC_STATIC | ACC_SYNTHETIC, "synth", "()V", null, null);
+ mv.visitCode();
+ mv.visitInsn(RETURN);
+ mv.visitEnd();
- fab.addMethod(modifiers, signature, "return 0;");
+ cw.visitEnd();
- Class moduleClass = fab.createClass();
+ byte[] bytecode = cw.toByteArray();
- // make sure we really managed to create a synthetic method
+ ClassLoader loader = Thread.currentThread().getContextClassLoader();
- assertTrue(moduleClass.getMethod("size").isSynthetic());
+ PlasticClassLoader plasticLoader = new PlasticClassLoader(loader, new NoopDelegate());
- return moduleClass; */
-
- return null;
+ return plasticLoader.defineClassWithBytecode("EnhancedSyntheticMethodModule", bytecode);
}
// TODO: We're short on tests that ensure that marker annotation are additive (i.e., module
// marker annotation are
// merged into the set specific to the service).
+
+ private static class NoopDelegate implements ClassLoaderDelegate
+ {
+ public boolean shouldInterceptClassLoading(String className)
+ {
+ return false;
+ }
+
+ public Class<?> loadAndTransformClass(String className) throws ClassNotFoundException
+ {
+ return null;
+ }
+ }
}
Modified: tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/SyntheticMethodModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/SyntheticMethodModule.java?rev=1196360&r1=1196359&r2=1196360&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/SyntheticMethodModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/SyntheticMethodModule.java Tue Nov 1 23:09:51 2011
@@ -1,4 +1,4 @@
-// Copyright 2009, 2010 The Apache Software Foundation
+// Copyright 2009, 2010, 2011 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.
@@ -18,13 +18,13 @@ package org.apache.tapestry5.ioc.interna
public class SyntheticMethodModule
{
- public Object build()
+ public static Object build()
{
return new Object();
}
/** Methods with a leading '$' are ignored as well, mostly for Scala support. */
- public Object $ignored()
+ public static Object $ignored()
{
return null;
}