<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="http://soft.vub.ac.be/ajtraining/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="http://soft.vub.ac.be/ajtraining/feed.php">
        <title>AspectJ 5 Training - caching</title>
        <description></description>
        <link>http://soft.vub.ac.be/ajtraining/</link>
        <image rdf:resource="http://soft.vub.ac.be/ajtraining/_media/wiki:dokuwiki-128.png" />
       <dc:date>2026-04-23T15:15:24+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://soft.vub.ac.be/ajtraining/caching:ex1?rev=1612529489&amp;do=diff"/>
                <rdf:li rdf:resource="http://soft.vub.ac.be/ajtraining/caching:ex2?rev=1612529489&amp;do=diff"/>
                <rdf:li rdf:resource="http://soft.vub.ac.be/ajtraining/caching:ex3?rev=1612529489&amp;do=diff"/>
                <rdf:li rdf:resource="http://soft.vub.ac.be/ajtraining/caching:ex4?rev=1612529489&amp;do=diff"/>
                <rdf:li rdf:resource="http://soft.vub.ac.be/ajtraining/caching:intro?rev=1612529489&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="http://soft.vub.ac.be/ajtraining/_media/wiki:dokuwiki-128.png">
        <title>AspectJ 5 Training</title>
        <link>http://soft.vub.ac.be/ajtraining/</link>
        <url>http://soft.vub.ac.be/ajtraining/_media/wiki:dokuwiki-128.png</url>
    </image>
    <item rdf:about="http://soft.vub.ac.be/ajtraining/caching:ex1?rev=1612529489&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-05T12:51:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>ex1</title>
        <link>http://soft.vub.ac.be/ajtraining/caching:ex1?rev=1612529489&amp;do=diff</link>
        <description>Intro
Ex1
Ex2
Ex3
Ex4

Caching: Constant Override

Task: Pass tests.BoundsConstant.

A first, very crude approximation of the bounding box, would be to return the entire drawing canvas. This is certainly very fast to calculate (it is a constant value), although it might mean excessive redrawing.</description>
    </item>
    <item rdf:about="http://soft.vub.ac.be/ajtraining/caching:ex2?rev=1612529489&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-05T12:51:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>ex2</title>
        <link>http://soft.vub.ac.be/ajtraining/caching:ex2?rev=1612529489&amp;do=diff</link>
        <description>Intro
Ex1
Ex2
Ex3
Ex4

Caching: Constant cache

Using inter-type declarations

Task: Pass tests.BoundsConstantCache.

Instead of making the (very) conservative approximation of getBounds() from the previous part, write an aspect instead that remembers the return value from the first time</description>
    </item>
    <item rdf:about="http://soft.vub.ac.be/ajtraining/caching:ex3?rev=1612529489&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-05T12:51:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>ex3</title>
        <link>http://soft.vub.ac.be/ajtraining/caching:ex3?rev=1612529489&amp;do=diff</link>
        <description>Intro
Ex1
Ex2
Ex3
Ex4

Caching: Invalidate (part I)

Task: Pass tests.Invalidation1.

While caching in this way does save computation, it will lead to incorrect bounding boxes if a Group is ever moved. Write another separate aspect that invalidates (i.e. clears) the cache whenever the</description>
    </item>
    <item rdf:about="http://soft.vub.ac.be/ajtraining/caching:ex4?rev=1612529489&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-05T12:51:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>ex4</title>
        <link>http://soft.vub.ac.be/ajtraining/caching:ex4?rev=1612529489&amp;do=diff</link>
        <description>Intro
Ex1
Ex2
Ex3
Ex4

Caching: Invalidate (part II)

Task: Pass tests.Invalidation2a and pass tests.Invalidation2b.

Of course, the previous aspect didn&#039;t really solve the problem. What if a Point that is part of a Group moves? Whenever either of the fields of a Point</description>
    </item>
    <item rdf:about="http://soft.vub.ac.be/ajtraining/caching:intro?rev=1612529489&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-05T12:51:29+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>intro</title>
        <link>http://soft.vub.ac.be/ajtraining/caching:intro?rev=1612529489&amp;do=diff</link>
        <description>Intro
Ex1
Ex2
Ex3
Ex4

Caching: Intro

Figure elements must implement a getBounds method to determine the area that must be redrawn when the figure element is updated.

Computation of this bounding box of Group objects needs to deal with all aggregate parts of the group, and this computation can be expensive. In this track, we will explore various ways of reducing this expense.</description>
    </item>
</rdf:RDF>
