Format VDB

Les méthodes de l'API Framework for Frameworks requièrent que les éléments Strings représentant des noms de type ou des signatures de méthode soient au format VDB. Les noms de type VDB sont simplement des noms qualifiés complets de niveau source (par exemple, java.lang.String), ou, dans le cas de classes internes, sont représentés avec un symbole dollar ($) (par exemple javax.swing.text.DefaultEditorKit$DefaultKeyTypedAction). Pour .NET, les noms abrégés tels que int et string doivent être évités en cas d'utilisation de l'API Framework for Frameworks. Utilisez plutôt des noms qualifiés complets tels que System.Int32 et System.String.

Une signature de méthode VDB se compose de ces deux parties :

  1. Le nom de la méthode, incluant le nom qualifié complet de la classe englobante (par exemple, java.lang.String.substring).
  2. Un descripteur de méthode indiquant les types de paramètres et le type de retour. Les types de paramètres sont entre parenthèses et séparés par des points-virgules (;). La parenthèse fermante est suivie d'un signe deux-points (:), puis du type de retour.

Exemple de signature de méthode VDB :

java.lang.String.substring(int;int):java.lang.String

Exemple de signature de méthode VDB provenant d'une classe interne :

javax.swing.text.DefaultEditorKit$DefaultKeyTypedAction.
    actionPerformed(ActionEvent):void

Pour la plupart des méthodes API qui requièrent un élément String au format VDB, il existe souvent une méthode équivalente qui utilise plutôt un objet IClass ou IMethod. Par exemple, la méthode F4FActions.addTaintedCallback(String,int) nécessite que son premier paramètre soit une signature de méthode au format VDB alors que F4FActions.addTaintedCallback(IMethod,int) identifie la méthode avec un objet IMethod. Il peut s'avérer plus simple d'utiliser les méthodes API utilisant des objets IClass et IMethod pour deux raisons :

  1. L'utilisateur ne doit pas se soucier du formatage VDB pour ces méthodes, étant donné qu'il est géré en interne.
  2. Lorsque l'on obtient l'objet IClass ou IMethod (par exemple, via F4FApp.getClassMethods()), on est sûr que la méthode ou la classe correspondante existe réellement dans le code d'application.