Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [aspectj-users] Compile-time signature

The proper optimization here is to use the LDC byte code that takes a constant class, rather than the string variant and then class loading. The original AspectJ used the string form because LDC didn't take a class originally.  Over the years a few places have been updated but not everywhere ( thisEnclosingJoinPoint is one of them that hasn't been done I think). Let me have a look at what I can do. For a while we had to tolerate both modes because LDC class was quite new, but it has been there so long now I think we can assume you are on a JVM that will have it.

cheers,
Andy


On 10 January 2018 at 01:42, Fabian Bergmark <fabian.bergmark@xxxxxxxxx> wrote:
I'm using both AspectJ and Proguard in a project. On of my aspects
inserts MDC-information in logging messages, including source location
and method:

void around() : call(void org.slf4j.Logger.trace(..)) || call(void
org.slf4j.Logger.debug(..)) || call(void org.slf4j.Logger.info(..)) ||
call(void org.slf4j.Logger.warn(..)) || call(void
org.slf4j.Logger.error(..)) {
        try (MDC.MDCCloseable c3 =
MDC.putCloseable("logging_aspect::location",
thisJoinPoint.getSourceLocation().toString());
              MDC.MDCCloseable c4 =
MDC.putCloseable("logging_aspect::method",
thisEnclosingJoinPointStaticPart.getSignature().toString())) {
            proceed();
        }
    }

However, when enabling obfuscation in proguard, this results in log
messages like:

"mdc" : {
    "logging_aspect::method" : "void
java.lang.ClassNotFoundException.onCreateConnectionChannelResponse(ClassNotFoundException,
CreateConnectionChannelError, ConnectionStatus)",
    "logging_aspect::location" : "File.java:299"
}

I think there should be a way to access the Signature at the time of
compilation. This would also be faster (?) than looking up classes
during runtime.
_______________________________________________
aspectj-users mailing list
aspectj-users@xxxxxxxxxxx
To change your delivery options, retrieve your password, or unsubscribe from this list, visit
https://dev.eclipse.org/mailman/listinfo/aspectj-users


Back to the top