Class Plugin
- Direct Known Subclasses:
PluginImpl
,PluginImpl
,PluginImpl
,PluginImpl
,SourceLocationAddOn
,SynchronizedMethodAddOn
This add-on will be called after the default bean generation has finished.
- Since:
- JAXB RI 2.0 EA
- Author:
- Kohsuke Kawaguchi ([email protected])
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionReturns the list of namespace URIs that are supported by this plug-in as schema annotations.abstract String
Gets the option name to turn on this add-on.abstract String
getUsage()
Gets the description of this add-on.boolean
isCustomizationTagName
(String nsUri, String localName) Checks if the given tag name is a valid tag name for the customization element in this plug-in.void
onActivated
(Options opts) Notifies a plugin that it's activated.int
parseArgument
(Options opt, String[] args, int i) Parses an optionargs[i]
and augment theopt
object appropriately, then return the number of tokens consumed.void
postProcessModel
(Model model, ErrorHandler errorHandler) Performs the post-processing of theModel
.abstract boolean
run
(Outline outline, Options opt, ErrorHandler errorHandler) Run the add-on.
-
Constructor Details
-
Plugin
protected Plugin()Default constructor.
-
-
Method Details
-
getOptionName
Gets the option name to turn on this add-on.For example, if "abc" is returned, "-abc" will turn on this plugin. A plugin needs to be turned on explicitly, or else no other methods of will be invoked.
Starting 2.1, when an option matches the name returned from this method, XJC will then invoke
parseArgument(Options, String[], int)
, allowing plugins to handle arguments to this option. -
getUsage
Gets the description of this add-on. Used to generate a usage screen.- Returns:
- localized description message. should be terminated by \n.
-
parseArgument
public int parseArgument(Options opt, String[] args, int i) throws BadCommandLineException, IOException Parses an optionargs[i]
and augment theopt
object appropriately, then return the number of tokens consumed.The callee doesn't need to recognize the option that the getOptionName method returns.
Once a plugin is activated, this method is called for options that XJC didn't recognize. This allows a plugin to define additional options to customize its behavior.
Since options can appear in no particular order, XJC allows sub-options of a plugin to show up before the option that activates a plugin (one that's returned by
getOptionName()
. But nevertheless a needs to be activated to participate in further processing.- Returns:
- 0 if the argument is not understood. Otherwise return the number of tokens that are consumed, including the option itself. (so if you have an option like "-foo 3", return 2.)
- Throws:
BadCommandLineException
- If the option was recognized but there's an error. This halts the argument parsing process and causes XJC to abort, reporting an error.IOException
-
getCustomizationURIs
Returns the list of namespace URIs that are supported by this plug-in as schema annotations.If a plug-in returns a non-empty list, the JAXB RI will recognize these namespace URIs as vendor extensions (much like "http://java.sun.com/xml/ns/jaxb/xjc"). This allows users to write those annotations inside a schema, or in external binding files, and later plug-ins can access those annotations as DOM nodes.
See http://java.sun.com/webservices/docs/1.5/jaxb/vendorCustomizations.html for the syntax that users need to use to enable extension URIs.
- Returns:
- can be empty, be never be null.
-
isCustomizationTagName
Checks if the given tag name is a valid tag name for the customization element in this plug-in.This method is invoked by XJC to determine if the user-specified customization element is really a customization or not. This information is used to pick the proper error message.
A plug-in is still encouraged to do the validation of the customization element in the
run(com.sun.tools.xjc.outline.Outline, com.sun.tools.xjc.Options, org.xml.sax.ErrorHandler)
method before using anyCPluginCustomization
, to make sure that it has proper child elements and attributes.- Parameters:
nsUri
- the namespace URI of the element. Never null.localName
- the local name of the element. Never null.
-
onActivated
Notifies a plugin that it's activated.This method is called when a plugin is activated through the command line option (as specified by
getOptionName()
.This is a good opportunity to use
Options.setFieldRendererFactory(FieldRendererFactory, Plugin)
if a plugin so desires.Noop by default.
- Throws:
BadCommandLineException
- Since:
- JAXB 2.0 EA4
-
postProcessModel
Performs the post-processing of theModel
.This method is invoked after XJC has internally finished the model construction. This is a chance for a plugin to affect the way code generation is performed.
Compared to the
run(Outline, Options, ErrorHandler)
method, this method allows a plugin to work at the higher level conceptually closer to the abstract JAXB model, as opposed to Java syntax level.Note that this method is invoked only when a is activated.
- Parameters:
model
- The object that represents the classes/properties to be generated.errorHandler
- Errors should be reported to this handler.- Since:
- JAXB 2.0.2
-
run
public abstract boolean run(Outline outline, Options opt, ErrorHandler errorHandler) throws SAXException Run the add-on.This method is invoked after XJC has internally finished the code generation. Plugins can tweak some of the generated code (or add more code) by using
Outline
andOptions
.Note that this method is invoked only when a is activated.
- Parameters:
outline
- This object allows access to various generated code.errorHandler
- Errors should be reported to this handler.- Returns:
- If the add-on executes successfully, return true. If it detects some errors but those are reported and recovered gracefully, return false.
- Throws:
SAXException
- After an error is reported toErrorHandler
, the same exception can be thrown to indicate a fatal irrecoverable error.ErrorHandler
itself may throw it, if it chooses not to recover from the error.
-