Processeur du Correctif rapide

org.eclipse.jdt.ui.quickFixProcessors

3.0 pour le point d'extension. 3.2 pour l'élément handledMarkerTypes.

Ce point d'extension permet d'ajouter un processeur de correctif rapide et de bénéficier ainsi de nouveaux correctifs rapides pour les problèmes Java.

A partir de la version 3.2, une extension peut définir les types de marqueur de problème qu'elle peut gérer. Elle ne traitera que les problèmes relevant de ces types. Si aucun type de marqueur géré n'est défini, le processeur n'obtiendra que des problèmes de type org.eclipse.jdt.core.problem, org.eclipse.jdt.core.buildpath_problem et org.eclipse.jdt.core.task (compatibles avec le comportement pour les versions antérieures à 3.2).

Ce point d'extension prend en charge la balise enablement. Les propriétés sur lesquelles effectuer les tests sont les suivantes :

  • compilationUnit : type ICompilationUnit ; unité de compilation sur laquelle l'assistant rapide est appliqué
  • projectNatures : type Collection ; toutes les natures du projet en cours
  • sourceLevel : type String ; compatibilité source du projet en cours
  • <!ELEMENT extension (quickFixProcessor*)>

    <!ATTLIST extension

    point CDATA #REQUIRED

    id    CDATA #IMPLIED

    name  CDATA #IMPLIED>


    <!ELEMENT quickFixProcessor (enablement , handledMarkerTypes*)>

    <!ATTLIST quickFixProcessor

    id                  CDATA #REQUIRED

    name                CDATA #IMPLIED

    class               CDATA #REQUIRED

    requiredSourceLevel CDATA #IMPLIED>


    <!ELEMENT handledMarkerTypes (markerType+)>

    Indique les types de marqueur des problèmes que ce processeur de correctif rapide peut gérer. Si aucun type de marqueur géré n'est indiqué, le processeur obtiendra les problèmes de type org.eclipse.jdt.core.problem, org.eclipse.jdt.core.buildpath_problem et org.eclipse.jdt.core.task.



    <!ELEMENT markerType EMPTY>

    <!ATTLIST markerType

    id CDATA #REQUIRED>


    <!ELEMENT enablement (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

    Elément racine générique. Il peut être utilisé dans un point d'extension afin de définir son point d'activation. Les enfants d'une expression d'activation sont combinés à l'aide de l'opérateur AND.



    <!ELEMENT not (not | and | or | instanceof | test | systemTest | equals | count | with | resolve | adapt | iterate)>

    Cet élément représente une opération NOT comme résultat de l'évaluation de son expression de sous-élément.



    <!ELEMENT and (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

    Cet élément représente une opération AND comme résultat de l'évaluation de ses expressions de sous-élément.



    <!ELEMENT or (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

    Cet élément représente une opération OR comme résultat de l'évaluation de ses expressions de sous-élément.



    <!ELEMENT instanceof EMPTY>

    <!ATTLIST instanceof

    value CDATA #REQUIRED>

    Cet élément permet d'effectuer une instance de vérification de l'objet concerné. L'expression renvoie EvaluationResult.TRUE si le type d'objet est un sous-type du type indiqué par la valeur d'attribut. Dans le cas contraire, elle renvoie EvaluationResult.FALSE.



    <!ELEMENT test EMPTY>

    <!ATTLIST test

    property CDATA #REQUIRED

    args     CDATA #IMPLIED

    value    CDATA #IMPLIED>

    Cet élément permet d'évaluer l'état de la propriété de l'objet concerné. L'ensemble de propriétés pouvant être testées peut être étendu à l'aide du point d'extension du testeur de propriété. L'expression de test renvoie EvaluationResult.NOT_LOADED si le testeur de propriété effectuant le test réel n'est pas encore chargé.



    <!ELEMENT systemTest EMPTY>

    <!ATTLIST systemTest

    property CDATA #REQUIRED

    value    CDATA #REQUIRED>

    Teste une propriété système en appelant la méthode System.getProperty et compare le résultat avec la valeur définie par le biais de l'attribut "value".



    <!ELEMENT equals EMPTY>

    <!ATTLIST equals

    value CDATA #REQUIRED>

    Cet élément permet d'effectuer une vérification d'égalité (equals) de l'objet concerné. L'expression renvoie EvaluationResult.TRUE si l'objet est égal à la valeur fournie par la valeur d'attribut. Dans le cas contraire, elle renvoie EvaluationResult.FALSE.



    <!ELEMENT count EMPTY>

    <!ATTLIST count

    value CDATA #REQUIRED>

    Cet élément permet de tester le nombre d'éléments d'une collection.



    <!ELEMENT with (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

    <!ATTLIST with

    variable CDATA #REQUIRED>

    Cet élément remplace l'objet à inspecter pour tous les éléments enfant en objet référencé par la variable donnée. Si la variable ne peut pas être résolue, l'expression génère une exception ExpressionException lors de l'évaluation. Les enfants d'une expression "with" sont combinés à l'aide de l'opérateur "and".



    <!ELEMENT resolve (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

    <!ATTLIST resolve

    variable CDATA #REQUIRED

    args     CDATA #IMPLIED>

    Cet élément remplace l'objet à inspecter pour tous les éléments enfant en objet référencé par la variable donnée. Si la variable ne peut pas être résolue, l'expression génère une exception ExpressionException lors de l'évaluation. Les enfants d'une expression "with" sont combinés à l'aide de l'opérateur "and".



    <!ELEMENT adapt (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

    <!ATTLIST adapt

    type CDATA #REQUIRED>

    Cet élément permet d'adapter l'objet actif en fonction du type d'attribut défini. L'expression renvoie l'indication "non chargé" (not loaded) si l'adaptateur ou le type référencé n'est pas encore chargé. Elle génère une exception ExpressionException au cours de l'évaluation si le nom du type n'existe pas. Les enfants d'une expression "adapt" sont combinés à l'aide de l'opérateur "and".



    <!ELEMENT iterate (not , and , or , instanceof , test , systemTest , equals , count , with , resolve , adapt , iterate)*>

    <!ATTLIST iterate

    operator (or|and) >

    Cet élément permet d'effectuer une itération sur une variable qui est de type java.util.Collection. Si l'objet concerné n'est pas de type java.util.Collection, une exception ExpressionException est générée lors de l'évaluation de l'expression.



    l'exemple suivant est un exemple d'ajout du processeur du correctif rapide :

     

    <extension point=

    "org.eclipse.jdt.ui.quickFixProcessors"

    >

    <quickFixProcessor id=

    "AdvancedQuickFixProcessor"

    name=

    "Advanced Quick Fix Processor"

    requiredSourceLevel=

    "1.5"

    class=

    "com.example.AdvancedQuickFixProcessor"

    >

    <handledMarkerTypes>

    <markerType id=

    "org.eclipse.myplugin.audits"

    />

    </handledMarkerTypes>

    <enablement>

    <with variable=

    "projectNatures"

    >

    <iterate operator=

    "or"

    >

    <equals value=

    "org.eclipse.jdt.core.javanature"

    />

    </iterate>

    </with>

    </enablement>

    </quickFixProcessor>

    </extension>

    La classe ajoutée doit implémenter org.eclipse.jdt.ui.text.java.IQuickFixProcessor