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);

Reply via email to