From 6e50339ba2515b33e6a2da099c51aae4da51ea12 Mon Sep 17 00:00:00 2001 From: derrop Date: Thu, 27 May 2021 22:03:54 +0200 Subject: [PATCH] Remove class name in front of fields in the same class --- .../internal/method/DefaultMethodInjectionUtils.java | 7 +++++-- .../flintmc/transform/hook/internal/HookService.java | 11 ++++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/framework/inject/src/internal/java/net/flintmc/framework/inject/internal/method/DefaultMethodInjectionUtils.java b/framework/inject/src/internal/java/net/flintmc/framework/inject/internal/method/DefaultMethodInjectionUtils.java index e0a954faf..d78309050 100644 --- a/framework/inject/src/internal/java/net/flintmc/framework/inject/internal/method/DefaultMethodInjectionUtils.java +++ b/framework/inject/src/internal/java/net/flintmc/framework/inject/internal/method/DefaultMethodInjectionUtils.java @@ -98,10 +98,13 @@ public CtMethod generateInjector( target.addField(injectorField); String getterName = "getMethodInjector_" + injectorName; + String fieldAccessor = + (moved ? injectorField.getDeclaringClass().getName() + "." : "") + injectorName; + String generate = String.format( "if (%s == null) { %1$s = %s.generate(%s.getDefault().getMethod(\"%s\", \"%s\"), %s.class); }", - injectorField.getDeclaringClass().getName() + "." + injectorName, + fieldAccessor, injectedFactory.getName(), ClassPool.class.getName(), targetClass, @@ -111,7 +114,7 @@ public CtMethod generateInjector( CtMethod.make( String.format( "public static %s %s() { %s return %s; }", - ifc.getName(), getterName, generate, injectorName), + ifc.getName(), getterName, generate, fieldAccessor), target); try { diff --git a/transform/hook/src/internal/java/net/flintmc/transform/hook/internal/HookService.java b/transform/hook/src/internal/java/net/flintmc/transform/hook/internal/HookService.java index f147c4e5a..72c84594c 100644 --- a/transform/hook/src/internal/java/net/flintmc/transform/hook/internal/HookService.java +++ b/transform/hook/src/internal/java/net/flintmc/transform/hook/internal/HookService.java @@ -143,12 +143,17 @@ private void insert( .get() .generateInjector(target.getDeclaringClass(), hookMethod, HookInjector.class); + String getterDeclaringName = getter.getDeclaringClass().equals(target.getDeclaringClass()) + ? "" + : getter.getDeclaringClass().getName(); + String getterSrc = + (getterDeclaringName.isEmpty() ? "" : getterDeclaringName + ".") + getter.getName(); + // getMethodInjector().notifyHook(instance, args, executionTime) String notify = String.format( - "%s.%s().notifyHook(%s, $args, net.flintmc.transform.hook.Hook.ExecutionTime.%s);", - getter.getDeclaringClass().getName(), - getter.getName(), + "%s().notifyHook(%s, $args, net.flintmc.transform.hook.Hook.ExecutionTime.%s);", + getterSrc, Modifier.isStatic(target.getModifiers()) ? "null" : "$0", executionTime); String varName = "hookNotifyResult";