[AspectJ] Extension par un nouveau constructeur
Bonjour à toutes et à tous,
Je travail actuellement sur un projet qui demande d'exploiter la programmation orientée aspect dans des retranchement que je ne maîtrise pas... D'où ma demande bouée de sauvetage.
Je vous pose le cadre: j'ai une classe Personne (hô originalité) qui possède 2 attributs : String nom et String prenom.
Et j'ai un constructeur prenant 2 string en paramètre.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
public class Personne {
private String nom;
private String prenom;
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public String getPrenom() {
return prenom;
}
public void setPrenom(String prenom) {
this.prenom = prenom;
}
/**
* Constructeur plublic, sans objet banquaire.
* @param nom le nom de la personne.
* @param prenom le prénom de la personne.
*/
public Personne(String nom, String prenom){
this.setNom(nom);
this.setPrenom(prenom);
}
} |
Jusque là, tout va bien.
J'ai créer un aspect Client, qui étant le comportement de Personne pour avoir un attribut supplémentaire. J'ai donc utiliser les déclaration inner-type.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
public privileged aspect Client {
// Déclarations Inter-type
private Point Personne.point;
// Les getter et setter dessus
public Point Personne.getPoint() {
return point;
}
public void Personne.setPoint(Point point) {
this.point= point;
}
// ...
} |
J'aimerais maintenant "ajouter" un constructeur à Personne pour prendre en compte le Point.
J'ai fait le pointcut suivant :
Code:
1 2 3 4 5 6
|
/**
* Pointcut récupérant le constructueur Personne(String,String)
* @param exp
*/
pointcut personneCreation(Personne pers) : this(pers) && execution(Personne.new(String,String)); |
Dans le but d’étendre le constructeur de Personne.
Mais ce que je ne sais pas faire, c'est récupérer dans l'advise le paramètre Point qui serait en entrée de l'appel et l'affecter à this.
Quelqu'un pourrait-il m'aider?
Merci beaucoup.