Re: Completeness and Correctness of AspectJ Weaving

Pascal Costanza <[email protected]> Thu, 22 Jan 2009 14:28:48 +0100
Newsgroups gmane.comp.programming.aspect.general
Message-ID <[email protected]>
--===============6368816714147080576==
Content-Type: multipart/alternative; boundary=Apple-Mail-3-920658119


--Apple-Mail-3-920658119
Content-Type: text/plain;
	charset=US-ASCII;
	format=flowed;
	delsp=yes
Content-Transfer-Encoding: 7bit


On 21 Jan 2009, at 20:21, DIMA MOHAMMED ALHADIDI wrote:

> Hi,
>
> Is AspectJ has a complete and correct weaving taking into  
> consideration aspect interference and interaction?
>
> What I mean by completeness that every aspect advice must be applied  
> at all the join points matched by the associated pointcut whereas  
> what I mean by correctness that every aspect advice must be applied  
> only at the join points that match the associated pointcut.

There is no such thing as an assurance that all aspects are triggered  
at a specific join point. If several pieces of advice apply at a join  
point, the first may, for example, throw an exception, which means  
that the other ones are not called. Or, the first may be a piece of  
around advice that doesn't proceed (or worse, proceeds only  
conditionally). Etc.


Pascal

-- 
Pascal Costanza, mailto:[email protected], http://p-cos.net
Vrije Universiteit Brussel
Programming Technology Lab
Artificial Intelligence Lab
Pleinlaan 2, B-1050 Brussel, Belgium




--Apple-Mail-3-920658119
Content-Type: text/html;
	charset=US-ASCII
Content-Transfer-Encoding: quoted-printable

<html><body style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; =
-webkit-line-break: after-white-space; "><br><div><div>On 21 Jan 2009, =
at 20:21, DIMA MOHAMMED ALHADIDI wrote:</div><br =
class=3D"Apple-interchange-newline"><blockquote type=3D"cite"><span =
class=3D"Apple-style-span" style=3D"border-collapse: separate; color: =
rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: =
normal; font-variant: normal; font-weight: normal; letter-spacing: =
normal; line-height: normal; orphans: 2; text-align: auto; text-indent: =
0px; text-transform: none; white-space: normal; widows: 2; word-spacing: =
0px; -webkit-border-horizontal-spacing: 0px; =
-webkit-border-vertical-spacing: 0px; =
-webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: =
auto; -webkit-text-stroke-width: 0; "><div ocsi=3D"x"><div><div =
dir=3D"ltr"><font face=3D"Tahoma" color=3D"#000000" =
size=3D"2">Hi,</font></div><div dir=3D"ltr"><font face=3D"tahoma" =
size=3D"2"></font>&nbsp;</div><div dir=3D"ltr"><font face=3D"tahoma" =
size=3D"2">Is&nbsp;AspectJ<a></a><span =
class=3D"Apple-converted-space">&nbsp;</span>has a complete and correct =
weaving taking into consideration aspect interference and =
interaction?</font></div><div dir=3D"ltr"><font face=3D"tahoma" =
size=3D"2"></font>&nbsp;</div><div dir=3D"ltr"><font face=3D"CMBX9"><font =
face=3D"CMBX9"></font></font><div style=3D"margin-top: 0px; =
margin-bottom: 0px; "><font face=3D"CMBX9"><font face=3D"CMBX9"><font =
face=3D"Tahoma" size=3D"2">What I mean by =
completeness&nbsp;that</font></font></font><font face=3D"Tahoma" =
size=3D"2"><span class=3D"Apple-converted-space">&nbsp;</span>every =
aspect&nbsp;advice must be applied<span =
class=3D"Apple-converted-space">&nbsp;</span></font><font size=3D"2"><font=
 face=3D"Tahoma">at all<span =
class=3D"Apple-converted-space">&nbsp;</span></font><font =
face=3D"Tahoma">the join points matched by the =
associated&nbsp;pointcut<a></a><span =
class=3D"Apple-converted-space">&nbsp;</span>whereas what I mean =
by&nbsp;</font></font><font face=3D"CMR9"><font face=3D"CMR9"><font =
face=3D"Tahoma" size=3D"2">correctness&nbsp;that<span =
class=3D"Apple-converted-space">&nbsp;</span></font><font =
face=3D"Tahoma"><font face=3D"CMR9"><font face=3D"CMR9"><font =
size=3D"2">every aspect&nbsp;advice must be applied<span =
class=3D"Apple-converted-space">&nbsp;</span></font></font></font><font =
face=3D"CMTI9"><font face=3D"CMTI9"><font size=3D"2">only at<span =
class=3D"Apple-converted-space">&nbsp;</span></font></font></font><font =
face=3D"CMR9"><font face=3D"CMR9"><font size=3D"2">the join points that =
match the associated =
pointcut<a></a>.</font></font></font></font></font></font></div></div></di=
v></div></span></blockquote><br></div><div>There is no such thing as an =
assurance that all aspects are triggered at a specific join point. If =
several pieces of advice apply at a join point, the first may, for =
example, throw an exception, which means that the other ones are not =
called. Or, the first may be a piece of around advice that doesn't =
proceed (or worse, proceeds only conditionally). =
Etc.</div><div><br></div><div><br></div><div>Pascal</div><div><br></div><d=
iv apple-content-edited=3D"true"> <span class=3D"Apple-style-span" =
style=3D"border-collapse: separate; color: rgb(0, 0, 0); font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant: normal; =
font-weight: normal; letter-spacing: normal; line-height: normal; =
orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; =
white-space: normal; widows: 2; word-spacing: 0px; =
-webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: =
0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: =
auto; -webkit-text-stroke-width: 0; "><div style=3D"word-wrap: =
break-word; -webkit-nbsp-mode: space; -webkit-line-break: =
after-white-space; "><span class=3D"Apple-style-span" =
style=3D"border-collapse: separate; color: rgb(0, 0, 0); font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant: normal; =
font-weight: normal; letter-spacing: normal; line-height: normal; =
orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; =
widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; =
-webkit-border-vertical-spacing: 0px; =
-webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: =
auto; -webkit-text-stroke-width: 0px; "><div style=3D"word-wrap: =
break-word; -webkit-nbsp-mode: space; -webkit-line-break: =
after-white-space; "><span class=3D"Apple-style-span" =
style=3D"border-collapse: separate; color: rgb(0, 0, 0); font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant: normal; =
font-weight: normal; letter-spacing: normal; line-height: normal; =
orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; =
widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; =
-webkit-border-vertical-spacing: 0px; =
-webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: =
auto; -webkit-text-stroke-width: 0px; "><div style=3D"word-wrap: =
break-word; -webkit-nbsp-mode: space; -webkit-line-break: =
after-white-space; "><span class=3D"Apple-style-span" =
style=3D"border-collapse: separate; color: rgb(0, 0, 0); font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant: normal; =
font-weight: normal; letter-spacing: normal; line-height: normal; =
orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; =
widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; =
-webkit-border-vertical-spacing: 0px; =
-webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: =
auto; -webkit-text-stroke-width: 0px; "><div style=3D"word-wrap: =
break-word; -webkit-nbsp-mode: space; -webkit-line-break: =
after-white-space; "><span class=3D"Apple-style-span" =
style=3D"border-collapse: separate; color: rgb(0, 0, 0); font-family: =
Helvetica; font-size: 12px; font-style: normal; font-variant: normal; =
font-weight: normal; letter-spacing: normal; line-height: normal; =
orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; =
widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; =
-webkit-border-vertical-spacing: 0px; =
-webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: =
auto; -webkit-text-stroke-width: 0px; "><div style=3D"word-wrap: =
break-word; -webkit-nbsp-mode: space; -webkit-line-break: =
after-white-space; "><span class=3D"Apple-style-span" =
style=3D"border-collapse: separate; -webkit-border-horizontal-spacing: =
0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); =
font-family: Helvetica; font-size: 12px; font-style: normal; =
font-variant: normal; font-weight: normal; letter-spacing: normal; =
line-height: normal; -webkit-text-decorations-in-effect: none; =
text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; =
orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; "><div =
style=3D"word-wrap: break-word; -webkit-nbsp-mode: space; =
-webkit-line-break: after-white-space; "><div>--&nbsp;</div><div>Pascal =
Costanza, mailto:[email protected], <a =
href=3D"http://p-cos.net">http://p-cos.net</a></div><div>Vrije =
Universiteit Brussel</div><div>Programming Technology =
Lab</div><div>Artificial Intelligence Lab</div><div>Pleinlaan 2, B-1050 =
Brussel, =
Belgium</div><div><br></div></div></span></div></span></div></span></div><=
/span></div></span></div></span><br class=3D"Apple-interchange-newline"> =
</div><br></body></html>=

--Apple-Mail-3-920658119--


--===============6368816714147080576==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
discuss mailing list    -    [email protected]

To unsubscribe and change options, go to:
http://aosd.net/mailman/listinfo/discuss_aosd.net

Check out the AOSD.net Wiki: http://aosd.net/wiki

--===============6368816714147080576==--