diff options
author | Alexander Kriegisch <Alexander@Kriegisch.name> | 2023-10-05 11:24:28 +0700 |
---|---|---|
committer | Alexander Kriegisch <Alexander@Kriegisch.name> | 2023-10-05 11:25:01 +0700 |
commit | 99f426e351b62310ce3c31348594b106a4bf624e (patch) | |
tree | ba16b304a9fa948a4fc544f31944686c9a530962 /tests/bugs1921 | |
parent | 39c5da6eb973ce31ad90c30c1b4156988d6b9bf8 (diff) | |
download | aspectj-99f426e351b62310ce3c31348594b106a4bf624e.tar.gz aspectj-99f426e351b62310ce3c31348594b106a4bf624e.zip |
Move some 1.9.20.1 bug tests to correct directory
Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
Diffstat (limited to 'tests/bugs1921')
-rw-r--r-- | tests/bugs1921/gh_257/NegatedTypeAspect.aj | 124 | ||||
-rw-r--r-- | tests/bugs1921/gh_spring_27761/JpaRepositoryDump.java | 62 | ||||
-rw-r--r-- | tests/bugs1921/gh_spring_27761/RepositoryAspect.aj | 35 |
3 files changed, 0 insertions, 221 deletions
diff --git a/tests/bugs1921/gh_257/NegatedTypeAspect.aj b/tests/bugs1921/gh_257/NegatedTypeAspect.aj deleted file mode 100644 index 8bb6a18b3..000000000 --- a/tests/bugs1921/gh_257/NegatedTypeAspect.aj +++ /dev/null @@ -1,124 +0,0 @@ -import java.util.Arrays; - -public aspect NegatedTypeAspect { - before(): execution(!void get*()) { - System.out.println("[GETTER] " + thisJoinPoint); - } - - before(): execution(!String get*()) { - System.out.println("[NON-STRING GETTER] " + thisJoinPoint); - } - - before(): execution(String[] get*()) { - System.out.println("[STRING-ARRAY GETTER] " + thisJoinPoint); - } - - before(): execution(!String[] get*()) { - System.out.println("[NON-STRING-ARRAY GETTER] " + thisJoinPoint); - } - - before(): execution(!String[][] get*()) { - System.out.println("[NON-STRING-ARRAY-ARRAY GETTER] " + thisJoinPoint); - } - - before(): execution(void set*(*)) { - System.out.println("[SETTER] " + thisJoinPoint); - } - - public static void main(String[] args) { - Person person = new Person(); - person.setId(11); - person.setFirstName("Marie"); - person.setLastName("Curie"); - System.out.println(person); - person.getId(); - person.getFirstName(); - person.getLastName(); - System.out.println(person.getFullName(false)); - person.setFullName("Albert Einstein"); - person.setId(22); - System.out.println(person); - System.out.println(person.getFullName(true)); - person.getVoid(); - System.out.println(Arrays.deepToString(person.getStringArray())); - System.out.println(Arrays.deepToString(person.getStringArrayArray())); - System.out.println(person.setSomething("something")); - } -} - -class Person { - private int id; - private String lastName; - private String firstName; - - // Bean getters/setters, matched by aspect - - // Non-string getter, matched by corresponding pointcut - public int getId() { - return id; - } - - public void setId(int id) { - this.id = id; - } - - public String getLastName() { - return lastName; - } - - public void setLastName(String lastName) { - this.lastName = lastName; - } - - public String getFirstName() { - return firstName; - } - - public void setFirstName(String firstName) { - this.firstName = firstName; - } - - // Non-string getter (String[] != String) - public String[] getStringArray() { - return new String[] {"Hello", "world"}; - } - - // Non-string, non-string-array getter (String[] != String, String[] != String[][]) - public String[][] getStringArrayArray() { - return new String[][] {{"Hello", "world"}, {"Hallo", "Welt"}}; - } - - // Non-bean getters/setters, not matched by aspect - - public String getFullName(boolean lastNameFirst) { - return lastNameFirst - ? lastName + ", " + firstName - : firstName + " " + lastName; - } - - public void setFullName(String fullName) { - boolean lastNameFirst = fullName.contains(","); - String[] nameParts = fullName.split("[, ]+"); - if (lastNameFirst) { - firstName = nameParts[1]; - lastName = nameParts[0]; - } else { - firstName = nameParts[0]; - lastName = nameParts[1]; - } - } - - public String setSomething(String something) { - return "AspectJ rules!"; - } - - // Non-string getter, matched by corresponding pointcut - public void getVoid() {} - - // Other methods, not matched by aspect - - @Override - public String toString() { - return "Person(" + "id=" + id + ", lastName='" + lastName + '\'' + ", firstName='" + firstName + '\'' + ')'; - } -} diff --git a/tests/bugs1921/gh_spring_27761/JpaRepositoryDump.java b/tests/bugs1921/gh_spring_27761/JpaRepositoryDump.java deleted file mode 100644 index b70330bff..000000000 --- a/tests/bugs1921/gh_spring_27761/JpaRepositoryDump.java +++ /dev/null @@ -1,62 +0,0 @@ -import org.objectweb.asm.ClassWriter; -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; - -public class JpaRepositoryDump implements Opcodes { - public static void main(String[] args) throws IOException { - // Write class file to test sandbox directory - String classFile = args[0] + File.separator + "JpaRepository.class"; - try (FileOutputStream outputStream = new FileOutputStream(classFile)) { - outputStream.write(dump()); - } - } - - public static byte[] dump() { - /* - Write out a class corresponding to this source code: - ------------------------------------------------------------ - interface JpaRepository<T> extends CrudRepository<T> { - @Override - <S extends T> List<S> saveAll(Iterable<S> entities); - } - ------------------------------------------------------------ - The only difference to the original class created by Javac or Ajc is that the bridge method is written to the class - file first, then the overriding method with the return type narrowed from Iterable to List. This has the effect of - org.aspectj.weaver.ResolvedType.getMethodsIncludingIntertypeDeclarations also finding the bridge method first, - which helps to reproduce https://github.com/spring-projects/spring-framework/issues/27761 in a regression test. - - The resulting class file can be found in .../gh_spring_27761/JpaRepository_bridge_first.jar and is used during test - "do not match bridge methods". - */ - - ClassWriter classWriter = new ClassWriter(0); - classWriter.visit(V1_8, ACC_ABSTRACT | ACC_INTERFACE, "JpaRepository", "<T:Ljava/lang/Object;>Ljava/lang/Object;LCrudRepository<TT;>;", "java/lang/Object", new String[]{"CrudRepository"}); - classWriter.visitSource("RepositoryAspect.aj", null); - - MethodVisitor methodVisitor; - methodVisitor = classWriter.visitMethod(ACC_PUBLIC | ACC_BRIDGE | ACC_SYNTHETIC, "saveAll", "(Ljava/lang/Iterable;)Ljava/lang/Iterable;", null, null); - methodVisitor.visitCode(); - Label label0 = new Label(); - methodVisitor.visitLabel(label0); - methodVisitor.visitLineNumber(1, label0); - methodVisitor.visitVarInsn(ALOAD, 0); - methodVisitor.visitVarInsn(ALOAD, 1); - methodVisitor.visitTypeInsn(CHECKCAST, "java/lang/Iterable"); - methodVisitor.visitMethodInsn(INVOKEINTERFACE, "JpaRepository", "saveAll", "(Ljava/lang/Iterable;)Ljava/util/List;", true); - methodVisitor.visitInsn(ARETURN); - methodVisitor.visitMaxs(2, 2); - methodVisitor.visitEnd(); - - methodVisitor = classWriter.visitMethod(ACC_PUBLIC | ACC_ABSTRACT, "saveAll", "(Ljava/lang/Iterable;)Ljava/util/List;", "<S:TT;>(Ljava/lang/Iterable<TS;>;)Ljava/util/List<TS;>;", null); - methodVisitor.visitEnd(); - - classWriter.visitEnd(); - - return classWriter.toByteArray(); - } -} diff --git a/tests/bugs1921/gh_spring_27761/RepositoryAspect.aj b/tests/bugs1921/gh_spring_27761/RepositoryAspect.aj deleted file mode 100644 index b938d754c..000000000 --- a/tests/bugs1921/gh_spring_27761/RepositoryAspect.aj +++ /dev/null @@ -1,35 +0,0 @@ -import java.util.ArrayList; -import java.util.Arrays; -import java.util.List; - -public aspect RepositoryAspect { - Object around(): execution(* JpaRepository.save*(..)) { - System.out.println(thisJoinPoint); - return proceed(); - } - - public static void main(String[] args) { - new RepositoryImpl<String>().saveAll(Arrays.asList("One", "Two", "Three")); - } -} - -interface CrudRepository<T> { - <S extends T> Iterable<S> saveAll(Iterable<S> entities); -} - -/* -interface JpaRepository<T> extends CrudRepository<T> { - @Override - <S extends T> List<S> saveAll(Iterable<S> entities); -} -*/ - -class RepositoryImpl<S> implements JpaRepository<String> { - @Override - public <S extends String> List<S> saveAll(Iterable<S> entities) { - List<S> entityList = new ArrayList<>(); - entities.iterator().forEachRemaining(entityList::add); - System.out.println("Saving " + entityList); - return entityList; - } -} |