This is an automated email from the ASF dual-hosted git repository. veithen pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/ws-axiom.git
The following commit(s) were added to refs/heads/master by this push: new 1d52311f9 Fix failure when building without cleaning 1d52311f9 is described below commit 1d52311f989518454dee6f1f2e2f456d0a553177 Author: Andreas Veithen <andreas.veit...@gmail.com> AuthorDate: Mon Apr 25 22:27:26 2022 +0000 Fix failure when building without cleaning --- .../GetDataHandlerBridgeMethodInjector.java | 23 +++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/buildutils/buildutils-maven-plugin/src/main/java/org/apache/axiom/buildutils/classes/GetDataHandlerBridgeMethodInjector.java b/buildutils/buildutils-maven-plugin/src/main/java/org/apache/axiom/buildutils/classes/GetDataHandlerBridgeMethodInjector.java index d09187086..7a196dcea 100644 --- a/buildutils/buildutils-maven-plugin/src/main/java/org/apache/axiom/buildutils/classes/GetDataHandlerBridgeMethodInjector.java +++ b/buildutils/buildutils-maven-plugin/src/main/java/org/apache/axiom/buildutils/classes/GetDataHandlerBridgeMethodInjector.java @@ -41,15 +41,20 @@ final class GetDataHandlerBridgeMethodInjector extends ClassVisitor { @Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { - if (name.equals("getDataHandler") && desc.equals("()Ljavax/activation/DataHandler;")) { - MethodVisitor mv = super.visitMethod((access | Opcodes.ACC_BRIDGE | Opcodes.ACC_SYNTHETIC) & ~Opcodes.ACC_FINAL, name, "()Ljava/lang/Object;", null, exceptions); - if ((access & Opcodes.ACC_ABSTRACT) == 0) { - mv.visitCode(); - mv.visitVarInsn(Opcodes.ALOAD, 0); - mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, className, name, desc, false); - mv.visitInsn(Opcodes.ARETURN); - mv.visitMaxs(1, 1); - mv.visitEnd(); + if (name.equals("getDataHandler")) { + if (desc.equals("()Ljavax/activation/DataHandler;")) { + MethodVisitor mv = super.visitMethod((access | Opcodes.ACC_BRIDGE | Opcodes.ACC_SYNTHETIC) & ~Opcodes.ACC_FINAL, name, "()Ljava/lang/Object;", null, exceptions); + if ((access & Opcodes.ACC_ABSTRACT) == 0) { + mv.visitCode(); + mv.visitVarInsn(Opcodes.ALOAD, 0); + mv.visitMethodInsn(Opcodes.INVOKEVIRTUAL, className, name, desc, false); + mv.visitInsn(Opcodes.ARETURN); + mv.visitMaxs(1, 1); + mv.visitEnd(); + } + } else if ((access & Opcodes.ACC_BRIDGE) != 0 && desc.equals("()Ljava/lang/Object;")) { + // Skip any existing bridge method so that the transformation is idempotent. That's important when rebuilding without cleaning. + return null; } } return super.visitMethod(access, name, desc, signature, exceptions);