On the Java side, the WeaverGenerator + LanguageSpecification projects handle the generation of the Joinpoint abstracts. These abstracts form the foundation of the joinpoint model but suffer from a serious issue due to the hierarchy they are placed in.
When we have a series of joinpoints, let's say:
A1 — C1
|
A2 — C2
|
A3 — C3
where Ax are the joinpoint abstract and Cx their concrete counterparts.
If C1 overrides a method, I create an object of type C3 and call that same method, the version of the method that gets executed is the base-class', not C1's version.
Furthermore, what is currently done is that in C3's constructor a new object of type C2 is created and in C2's constructor a new object of C1 is created. This goes all the way up the hierarchy so when a joinpoint type is instantiated that is N degrees removed from the base/primordial joinpoint type actually results in N objects being created. This constructor recursivity is also done by hand and depends on the developer's memory of the pattern. This is not acceptable and needs a fundamental change.
On the Java side, the
WeaverGenerator+LanguageSpecificationprojects handle the generation of the Joinpoint abstracts. These abstracts form the foundation of the joinpoint model but suffer from a serious issue due to the hierarchy they are placed in.When we have a series of joinpoints, let's say:
where
Axare the joinpoint abstract andCxtheir concrete counterparts.If
C1overrides a method, I create an object of type C3 and call that same method, the version of the method that gets executed is the base-class', notC1's version.Furthermore, what is currently done is that in
C3's constructor a new object of typeC2is created and inC2's constructor a new object ofC1is created. This goes all the way up the hierarchy so when a joinpoint type is instantiated that isNdegrees removed from the base/primordial joinpoint type actually results inNobjects being created. This constructor recursivity is also done by hand and depends on the developer's memory of the pattern. This is not acceptable and needs a fundamental change.