Parcourir la source

Improve bridge method test, bootstrapping ASM usage

Instead of using a pre-generated JAR, the source code generating the
class with reordered methods (bridge method first) is now compiled
directly before usage. This is possible, because in the previous commit
ASM was put on the Ajc classpath for tests.

Relates to #256.

Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
tags/V1_9_20_1
Alexander Kriegisch il y a 9 mois
Parent
révision
2af1b06b6a

+ 5
- 2
tests/bugs1921/gh_spring_27761/JpaRepositoryDump.java Voir le fichier

@@ -3,12 +3,15 @@ import org.objectweb.asm.Label;
import org.objectweb.asm.MethodVisitor;
import org.objectweb.asm.Opcodes;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

class JpaRepositoryDump implements Opcodes {
public class JpaRepositoryDump implements Opcodes {
public static void main(String[] args) throws IOException {
try (FileOutputStream outputStream = new FileOutputStream("JpaRepository.class")) {
// Write class file to test sandbox directory
String classFile = args[0] + File.separator + "JpaRepository.class";
try (FileOutputStream outputStream = new FileOutputStream(classFile)) {
outputStream.write(dump());
}
}

BIN
tests/bugs1921/gh_spring_27761/JpaRepository_bridge_first.jar Voir le fichier


+ 6
- 1
tests/src/test/resources/org/aspectj/systemtest/ajc1920/ajc1920.xml Voir le fichier

@@ -420,7 +420,12 @@

<!-- https://github.com/spring-projects/spring-framework/issues/27761 -->
<ajc-test dir="bugs1921/gh_spring_27761" vm="8" title="do not match bridge methods">
<compile files="RepositoryAspect.aj" inpath="JpaRepository_bridge_first.jar" options="-8"/>
<!-- (1) Use ASM to generate JpaRepository class with reordered methods -->
<compile files="JpaRepositoryDump.java" options="-8"/>
<run class="JpaRepositoryDump" options="$sandbox"/>
<file deletefile="JpaRepositoryDump.class"/>
<!-- (2) Use AJC to compile the remaining classes and run the test -->
<compile files="RepositoryAspect.aj" options="-8"/>
<run class="RepositoryAspect">
<stdout>
<line text="execution(List RepositoryImpl.saveAll(Iterable))"/>

Chargement…
Annuler
Enregistrer