## Contributing a quick fix and a quick assist for Java code

The org.eclipse.jdt.ui.quickFixProcessors and org.eclipse.jdt.ui.quickAssistProcessors extension points enables you to contribute your own Java code quick fixes and quick assists.

### Using the extension points

To create a new extension for the extension points you need to first provide the required extensions in the plugin.xml. For example, JDT defines the following processors

       <extension
             point="org.eclipse.jdt.ui.quickFixProcessors">
          <quickFixProcessor
                name="%defaultQuickFixProcessor"
                class="org.eclipse.jdt.internal.ui.text.correction.QuickFixProcessor"
                id="org.eclipse.jdt.ui.text.correction.QuickFixProcessor">
          </quickFixProcessor>
       </extension>

       <extension
             point="org.eclipse.jdt.ui.quickAssistProcessors">
          <quickAssistProcessor
                name="%defaultQuickAssistProcessor"
                class="org.eclipse.jdt.internal.ui.text.correction.QuickAssistProcessor"
                id="org.eclipse.jdt.ui.text.correction.QuickAssistProcessor">
          </quickAssistProcessor>
       </extension>

For a description of the individual attributes, please refer to the extension point documentation.

### Contributing a quick fix and a quick assist

To contribute a quick fix, you need to create the class that implements the IQuickFixProcessor interface. This is the same class that you specified in the extension declaration. Each Java problem has a unique id which is defined in IProblem interface. For a particular Java problem you may offer one or more correction proposals.

To contribute a quick assist, you need to create the class that implements the IQuickAssistProcessor interface. Again, this is the same class that you specified in the extension declaration.

### Supplying the right IJavaCompletionProposal

JDT provides the following default implementations for correction proposals that can be used to contribute quick fixes and quick assists.

- ChangeCorrectionProposal
- CUCorrectionProposal
- ASTRewriteCorrectionProposal

Typically you will use an ASTRewrite, in that case you should create an ASTRewriteCorrectionProposal. However, if as a result of a quick assist you want to start an action e.g. open a wizard, you should create a ChangeCorrectionProposal and override its apply(IDocument) method.