2010-11-06 10 views
4

@Path Tenir compte du code ci-dessusComment RESTeasy résout les conflits

@Path("a") 
@Produces("text/plain") 
public class A { 

    @GET 
    @Path("a") 
    public String getA() { 
     return "a"; 
    } 

    @GET 
    @Path("a") 
    public String getB() { 
     return "b"; 
    } 
} 

Demande http://host/a/a i get toujours "b".

Quelle est la stratégie pour sélectionner la méthode appropriée? Un moyen de s'informer sur les chemins multiples vers différentes ressources?

Répondre

3

En outre, à la lumière de modifié le commentaire

Je ne connais pas d'outil de reporting au sein RESTEasy qui offre une liste des modèles correspondants dupliqués à travers une gamme de classes de service annotés. Cependant, vous pouvez aborder ce problème en utilisant l'une des méthodes suivantes:

  1. grep et awk le code source pour @Path pour générer une liste triable de chemin expressions
  2. Utilisez un AnnotationReader implementation pour numériser sur votre classpath dans le cadre d'un test unitaire et demandez-lui de détecter les motifs regex dupliqués.

Modifié pour mieux cibler la question

RESTEasy utilise un regex based system for paths et sélectionne le modèle correspondant le plus. En cas de collision, le dernier correspondant est utilisé.

+1

Oui, je comprends bien, mais considérons un WS de 200 classes ou utilise des classes d'une bibliothèque binaire. Vous devez contrôler l'annotation @Path manuellement. Le compilateur n'obtiendra pas les doublons. Je suis curieux de savoir ce que dit la spécification, mais je ne peux pas trouver ce problème. – PeterMmm

+0

Réponse mise à jour à la lumière du commentaire –

+0

@PeterMmm Comment êtes-vous parvenu à votre solution? Si vous avez trouvé une réponse, il serait utile de l'afficher pour que d'autres en profitent. –

Questions connexes