-
Type:
Bug
-
Resolution: Fixed
-
Priority:
Minor
-
Affects Version/s: 2.4.30
-
Component/s: S2Container
-
None
継承元と継承先のクラスが同名のフィールドを持っている場合、継承先のクラスに対してPropertyInterTypeを適用すると、同じ名前のgetter/setterを複数回作成しようとして例外になります。
再現例は以下です。
public class Test {
public static class Aaa
public static class Bbb extends Aaa { public String someProperty; }
public static void main(String[] args) {
AspectWeaver weaver = new AspectWeaver(Bbb.class, Collections
.emptyMap());
weaver.setInterTypes(new InterType[]
);
weaver.generateClass();
}
}
Exception in thread "main" org.seasar.framework.exception.CannotCompileRuntimeException: [ESSR0017]例外が発生しました。理由はjavassist.bytecode.DuplicateMemberException: duplicate method: getSomeProperty in com.openknow.viewer.server.Test$Bbb$$EnhancedByS2AOP$$cdedfd
at org.seasar.framework.aop.intertype.AbstractInterType.addMethod(AbstractInterType.java:547)
at org.seasar.framework.aop.intertype.AbstractInterType.addMethod(AbstractInterType.java:381)
at org.seasar.framework.aop.intertype.PropertyInterType.createGetter(PropertyInterType.java:214)
at org.seasar.framework.aop.intertype.PropertyInterType.introduce(PropertyInterType.java:175)
at org.seasar.framework.aop.intertype.AbstractInterType.introduce(AbstractInterType.java:62)
at org.seasar.framework.aop.javassist.EnhancedClassGenerator.applyInterType(EnhancedClassGenerator.java:102)
at org.seasar.framework.aop.javassist.AspectWeaver.setInterTypes(AspectWeaver.java:158)
at com.openknow.viewer.server.Test.main(Test.java:29)
Caused by: javassist.bytecode.DuplicateMemberException: duplicate method: getSomeProperty in com.openknow.viewer.server.Test$Bbb$$EnhancedByS2AOP$$cdedfd
at javassist.bytecode.ClassFile.testExistingMethod(ClassFile.java:552)
at javassist.bytecode.ClassFile.addMethod(ClassFile.java:532)
at javassist.CtClassType.addMethod(CtClassType.java:1170)
at org.seasar.framework.aop.intertype.AbstractInterType.addMethod(AbstractInterType.java:545)
... 7 more
SNAPSHOT をデプロイしました.
http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2-framework/2.4.31-SNAPSHOT/s2-framework-2.4.31-20081017.142438-3.jar
http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2-extension/2.4.31-SNAPSHOT/s2-extension-2.4.31-20081017.142438-3.jar
http://maven.seasar.org/maven2-snapshot/org/seasar/container/s2-tiger/2.4.31-SNAPSHOT/s2-tiger-2.4.31-20081017.142740-3.jar