[jboss-jira] [JBoss JIRA] (JBAOP-815) AOP generates invalid join point class
Kirill Paliy (JIRA)
issues at jboss.org
Sat Jan 9 05:03:00 EST 2016
Kirill Paliy created JBAOP-815:
----------------------------------
Summary: AOP generates invalid join point class
Key: JBAOP-815
URL: https://issues.jboss.org/browse/JBAOP-815
Project: JBoss AOP
Issue Type: Bug
Affects Versions: 2.1.1.GA
Environment: Jboss 5.1.0
Reporter: Kirill Paliy
Priority: Critical
Aspect method like this (non-void) causes error
@Nullable
@Bind(pointcut = "execution(* *->@com.myproject.utils.annotations.Activity(..))")
public Object exec(final MethodInvocation invocation) throws Throwable {
2016-01-06 21:19:09,564 ERROR [STDERR] (Thread-30) java.lang.ClassFormatError: StackMapTable format error: bad type array size in method com.myproject.patchers.ejb.JoinPoint_patch1937572184742986621_2.invokeNext()Ljava/lang/Object;
2016-01-06 21:19:09,564 ERROR [STDERR] (Thread-30) at java.lang.Class.getDeclaredConstructors0(Native Method)
2016-01-06 21:19:09,564 ERROR [STDERR] (Thread-30) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
2016-01-06 21:19:09,564 ERROR [STDERR] (Thread-30) at java.lang.Class.getDeclaredConstructors(Class.java:2020)
2016-01-06 21:19:09,564 ERROR [STDERR] (Thread-30) at org.jboss.aop.instrument.JoinPointGenerator$GeneratedClassInfo.<init>(JoinPointGenerator.java:1553)
2016-01-06 21:19:09,564 ERROR [STDERR] (Thread-30) at org.jboss.aop.instrument.JoinPointGenerator.generateJoinpointClass(JoinPointGenerator.java:381)
2016-01-06 21:19:09,564 ERROR [STDERR] (Thread-30) at org.jboss.aop.instrument.JoinPointGenerator.doGenerateJoinPointClass(JoinPointGenerator.java:284)
2016-01-06 21:19:09,564 ERROR [STDERR] (Thread-30) at org.jboss.aop.instrument.JoinPointGenerator.access$300(JoinPointGenerator.java:76)
2016-01-06 21:19:09,564 ERROR [STDERR] (Thread-30) at org.jboss.aop.instrument.JoinPointGenerator$GenerateJoinPointClassAction$2.generateJoinPointClass(JoinPointGenerator.java:1729)
2016-01-06 21:19:09,564 ERROR [STDERR] (Thread-30) at org.jboss.aop.instrument.JoinPointGenerator.generateJoinPointClass(JoinPointGenerator.java:249)
2016-01-06 21:19:09,564 ERROR [STDERR] (Thread-30) at org.jboss.aop.GeneratedClassAdvisor.generateJoinPointClass(GeneratedClassAdvisor.java:1044)
It happens because method body generated for invokeNext contains unreachable code (see break after return):
{
try{
switch(++super.currentInterceptor){
case 1: return ($w) around1.exec(this); break;
default: return ($w)this.dispatch();
}
} finally {
--super.currentInterceptor;
}
return null;
}
Fix is pretty simple, but as I understand project is frozen, so I'll just post it here:
JoinPointGenerator.java
1940,1941c1940,1942
<
< call.append(" break;");
---
> if (generator.isVoid()) {
> call.append(" break;");
> }
--
This message was sent by Atlassian JIRA
(v6.4.11#64026)
More information about the jboss-jira
mailing list