JBoss Community

Re: The reuse&&JBoss AOP

created by loupi loupi in JBoss AOP - View the full discussion

Hello,
Thank you for your reply,  The example that I want to realise is the following(Realization of the observer design pattern with JBossAOP):

Flower (Subject ):

package Bee;

public class Flower {

 

      private boolean isOpen;

 

      public boolean isOpen(){returnthis.isOpen;}

     

      public Flower(){

            this.isOpen=false;

                  }

     

      public void open(){

            this.isOpen=true;         

      }

     

      public void close(){

            this.isOpen=false;

      }

}

 

The Bee class observe  the opening and closing of Flower (attribute(isOpen))

 

PS: for easier reuse of the Bee class, we put the Update method (observer role)in another class and we make an introduction

 

Bee (Observer ):

package Bee;

public class Bee {

 

private String name;

     

public Bee(String name){

      this.name = name;

}

     

public void dinner(){

      System.out.println("Bee "+ name

                   + "'s breakfast time!");

      }

     

      public void rest(){

            System.out.println("Bee" + name

                    + "'s bed time!");           

      }             

}

 

The interface for all observers is the following:

 

package Bee ;

public interfaceFlowerObserver {   

      public void update();

 

}

 

 

And Mixin class is as follows:

 

package Bee;

 

public class BeeObserver implements FlowerObserver{

        

        Bee bee;

        

         public BeeObserver(Bee bee){this.bee=bee;}

         public void update(){

              if (isOpen) //the attribute value of Flower

               bee.dinner();

                    

              else  bee.rest();

                    

}}

Finally the Main class:

package Bee;

 

public class Main {

public static voidmain(String[] args) {

       

      Flower f = new Flower();    

      Beeb1 = new Bee("B1");

      Beeb2 = new Bee("B2");

     

        f.open();

        f.close();

        f.open();

        System.out.println("c'estbon");

    }

}

 

theXML file:


<?xmlversion="1.0" encoding="UTF-8"?>

<aop>

  

   <introductionclass="Bee.Bee">

        <mixin>

           <interfaces>Bee.FlowerObserver</interfaces>

           <class>Bee.BeeObserver</class>

            <construction>new Bee.BeeObserver(this)</construction>

        </mixin>

    </introduction> 

 

   <aspect class="Bee.BeeObserver"/>

   <bind pointcut="set(private boolean Bee.Flower->isOpen)">

   <after aspect="Bee.BeeObserver" name="update"/>

   </bind>

 

</aop>

This code contains several errors!! but I would have the following result:

 

B1 Bee's breakfast time!
B2 Bee's breakfast time!
B1 Bee's bed time!
B2 Bee's bed time!
B1 Bee's breakfast time!
B2 Bee's breakfast time!

 

Tahnk's in advance :)

Reply to this message by going to Community

Start a new discussion in JBoss AOP at Community