Dear OOPSLA 2002 attendee;

We have you listed as being registered for tutorial T40,
Aspect-oriented programming with AspectJ.  We are excited about giving
this tutorial, and hope you will enjoy the presentation, exercises and
discussion we have prepared.

As with our past tutorials of this form, in the afternoon we would
like to break the attendees into groups of two or three and work
through a number of AspectJ exercises together.

We will be bringing media and making ourselves available during breaks
for help with setup, but in order to jump straight in and give you the
most we can from this tutorial, it would really help us if many of you
had an AspectJ environment installed early.

This message contains basic instructions on where to get some needed
tools.  These instructions will not take much time. 

If you are planning to bring a laptop to the tutorial, would you
please take the time to do the steps outlined in this message?  

If you're not planning to, you might want to install an AspectJ
environment on your desktop anyway and try the instructions below, so
you will be comfortable when we meet on Wednesday.

[If you already have a working AspectJ environment and are familliar
with it, we still recommend that you upgrade to 1.0.6 and follow the
steps below]

Thank you, and please don't hesitate to contact us (at
support@aspectj.org) if you have any questions.  See you on
Wednesday...

-Erik Hilsdale, 
 Jim Hugunin, 
 and the whole AspectJ Team


Getting Ready for T40, Aspect-oriented programming with AspectJ
--------------------------------------

Overview:

  0. Install AspectJ
  1. Download JUnit and put it on your classpath
  2. Test your setup
  
------------------------------
0. AspectJ

Download the AspectJ 1.0.6 from

  http://aspectj.org/dl

You should definitly download and intstall the tools package and the
docs package.  If you plan to use JBuilder, Forte/NetBeans, Emacs, or
Eclipse for your development, you should download the appropriate
plugin.


------------------------------
1. JUnit

We use the JUnit framework for testing our exercises.  Download JUnit
from 

   http://www.junit.org

and place junit.jar on your CLASSPATH.  


------------------------------
2. Test your setup

a. Create a file "Hello.java" with this class:

    class Hello {
        public static void main(String[] args) {
            System.err.println(getHelloString());
        }
        public static String getHelloString() { 
            return "Hello, WORLD"; 
        }
    }

b. Compile the class with ajc and run it...

    > ajc Hello.java
    > java Hello
    Hello, WORLD

c. Create a file "TestHello.java" with this class:
    
    public class TestHello extends junit.framework.TestCase {
        public TestHello(String name) {
            super(name);
        }
        public static void main(String[] args) {
            junit.textui.TestRunner.run(TestHello.class);
        }
        public void testHello() {
             assertEquals("Hello, OOPSLA", Hello.getHelloString());
        }
    }

d. Compile the class with ajc and run it...

    > ajc TestHello.java
    > java TestHello
    .F
    Time: 0.01
    There was 1 failure:
    1) testHello(TestHello)junit.framework.ComparisonFailure: 
    expected:<...OOPSLA> but was:<...WORLD>
            at TestHello.testHello(TestHello.java:9)
            at TestHello.main(TestHello.java:6)

    FAILURES!!!
    Tests run: 1,  Failures: 1,  Errors: 0

e. Oops... the test case seems to want a different string than the
   tested class.  Fix that, compile whichever file you changed with
   ajc, run the tester again, and you're done.  Thanks!

    > java TestHello
    .
    Time: 0

    OK (1 test)
