IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Spring Java Discussion :

[Spring AOP] Appeler une méthode protected


Sujet :

Spring Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 19
    Par défaut [Spring AOP] Appeler une méthode protected
    Bonjour,

    Je souhaite ajouter une fonctionnalité de sécurité à mes classes.
    Pour info je travaille avec GWT, les classes auxquelles je veux ajouter une sécurité héritent de RemoteServiceServlet, et ont donc accès à la méthode protected getThreadLocalRequest().

    Ce que je veux ajouter comme fonctionnalité ressemblerait à ça si je le mettais dans le code de chaque méthode :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    HttpServletRequest request = this.getThreadLocalRequest();
    HttpSession session = request.getSession(false);
    if (session == null) {
        throw new AccessDeniedException();
    }
    Ce code doit être exécuté avant le reste de ma méthode.

    Voici l'aspect que je souhaite ajouter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    @Aspect
    public class GwtSessionAspect {
     
    	@Before("monpackage.MaClasse")
    	public void doAccessCheck() throws AccessDeniedException {
    		HttpServletRequest request = null;
    		// J'ai besoin d'exécuter la ligne suivante
    		//request = this.getThreadLocalRequest();
    		HttpSession session = request.getSession(false);
    		if (session == null) {
    			throw new AccessDeniedException();
    		}
    	}
    }
    Y a-t-il un moyen pour appeler la méthode protégée getThreadLocalRequest() ?

    Je débute en AOP, je ne sais même pas si ce que je souhaite faire est possible

    Merci d'avance

  2. #2
    Membre émérite Avatar de NicoL__
    Homme Profil pro
    Architecte
    Inscrit en
    Janvier 2011
    Messages
    399
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte

    Informations forums :
    Inscription : Janvier 2011
    Messages : 399
    Par défaut
    Bonjour,
    Pour mettre en place l'AOP je suis toujours passé par des interfaces ce qui facilite la création des proxy donc les méthodes interceptées sont publics.
    Enfin si une solution est possible il faut se tourner du côté cglib, qui pourrait réaliser le proxy de cette classe.

  3. #3
    Membre Expert
    Homme Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 963
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 963
    Par défaut
    protected = visible par les classes du même package ou les classes filles,
    il faudrait donc déclarer l'Aspect dans le même package que RemoteServiceServlet

    dans l'Aspect, le "this" original est le "target" du "join point", en AspectJ (un public aspect… dans un .aj) on écrirait "thisJoinPoint.getTarget()", en Spring AOP, c'est le même principe sauf qu'il faut déclarer l'argument qui est optionnel pour les @Before/@After et obligatoire pour les @Around : voir la doc

    6.2.4.6.1. Access to the current JoinPoint

    Any advice method may declare as its first parameter, a parameter of type org.aspectj.lang.JoinPoint (please note that around advice is required to declare a first parameter of type ProceedingJoinPoint, which is a subclass of JoinPoint. The JoinPoint interface provides a number of useful methods such as getArgs() (returns the method arguments), getThis() (returns the proxy object), getTarget() (returns the target object), getSignature() (returns a description of the method that is being advised) and toString() (prints a useful description of the method being advised). Please do consult the Javadocs for full details.

Discussions similaires

  1. Appel de méthode protected dans une classe fille
    Par Le Mérovingien dans le forum C++
    Réponses: 11
    Dernier message: 05/06/2012, 16h04
  2. [POO]Appelé une méthode d'une classe mère
    Par LE NEINDRE dans le forum Langage
    Réponses: 2
    Dernier message: 14/12/2005, 14h44
  3. Réponses: 2
    Dernier message: 31/08/2005, 16h12
  4. Appeler une méthode dynamiquement
    Par doof dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 03/01/2005, 23h15
  5. Comment l'appel à une méthode virtuelle....
    Par Blobette dans le forum C++
    Réponses: 7
    Dernier message: 07/12/2004, 13h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo