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

API standards et tierces Java Discussion :

Intercepter l'appel d'une méthode inexistante ?


Sujet :

API standards et tierces Java

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Intercepter l'appel d'une méthode inexistante ?
    Bonjour,

    Mon souci est le suivant :

    J'ai besoin d'intercepter des appels à des méthodes qui n'existe pas pour les traiter de façon générique sans être obligé de les déclarer dans cette classe.

    Je veux par exemple utiliser une Map à la place des attributs d'un bean.

    J'ai essayé java.lang.reflect.Proxy sans succès ( Exception sur la méthode inexistante. )

    Merci beaucoup.

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Je tente un élément de réponse, peut-être que je serais à côté de la plaque si tu utilises des libs dont je n'ai aucune idée ^^'
    Il me semble que tu ne peux pas appeler des méthodes inexistantes, car même si tu utilises un getMethod pour obtenir un lien vers cette méthode, la Class concernée vérifiera l'existence de la Method en question avant de t'en donner la référence, et te balance l'exception en question si elle n'existe pas.

    Donc a priori, la seule manière d'intercepter cet appel c'est de catcher l'exception, mais ce n'est visiblement pas ce que tu veux faire... Si tu souhaitais récupérer la tentative d'appel dans la classe censée posséder cette fonction, je ne pense pas que tu pourras y parvenir : même si Java est orienté objet, ce n'est pas chaque objet qui vérifie sa propre structure (et donc qui serait à même de surveiller des appels à des fonctions inexistantes).

    Bref, mieux vaut que tu changes la manière d'aborder ton problème, à mon humble avis. Plus d'explications sur ce que tu souhaites faire seraient bienvenue alors

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Merci Telestmonnom.

    Mon idée était de mettre à disposition des développeurs d'une application JSF une façon plus légère de déclarer et d'utiliser les beans.

    La première solution était d'avoir une classe GenericBean qui a un attribut de type HashMap qui stocke toutes les propriétés sans être obligé de les déclarer de façon à ce que :
    un appel à un set <=> un appel de put sur le map
    un appel à un get <=> un appel de get sur le map

    En lisant ta réponse je me rends compte que ce n'est pas possible et je me tourne donc vers la deuxième solution :

    Déclarer les beans avec leur propriétés dans un fichier XML puis générer et compiler le bean à la volé et là j'aurais besoin de vos suggestions.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Ne connaissant ni JSF ni même ce qu'est précisément un bean, je me permettrai de mettre en avant une question qui me vient à l'esprit : comment sera-t-il possible de compiler des classes utilisant tes beans compilés à la volée ? Je ne crois pas qu'il soit possible de compiler une classe java sans lui fournir le .class de ses dépendances, d'où mon inquiétude. Enfin je m'écarte de ta question

    pour la compilation à la volée, une (très) rapide recherche sur google fait ressortir une page de JavaSE6 : un futur package contenant entre autres des interfaces pour appeler un compilateur java depuis un programme java.
    En attendant cette release, à moins que tu ne souhaites faire ton propre compilateur (ce serait un peu épais ), tu pourrais te pencher vers la classe java.lang.ProcessBuilder offrant la possibilité de lancer des commandes (javac en l'occurence). Bien sur, tu aurais préalablement converti ton .xml en .java avec une petite classe parsant le XML, ce qui ne me parait pas difficile à réaliser.

    Je me permettrai de jouer de mon ignorance à nouveau pour poser une autre question : est-il vraiment intéressant de déclarer une classe via un XML, si l'objectif initial est d'en alléger la déclaration ? Je trouve personnellement le xml comme puissant mais lourd à écrire sans éditeur adapté, tout comme le java, dans le fond
    Cependant, l'utilisation de xml est probablement justifiée pour le développement d'applications web, plus qu'une utilisation directe de java

Discussions similaires

  1. Réponses: 6
    Dernier message: 27/06/2010, 23h51
  2. Appel d'une méthode inexistante
    Par sopsag dans le forum Général Python
    Réponses: 3
    Dernier message: 25/02/2009, 13h23
  3. Intercepter l'appel d'une méthode (.net 2.0)
    Par ghalaax dans le forum C#
    Réponses: 4
    Dernier message: 06/01/2009, 13h50
  4. Réponses: 6
    Dernier message: 27/05/2005, 15h43
  5. Comment connaitre l'appelant d'une méthode
    Par Alec6 dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 12/07/2004, 14h51

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