Class XsdGeneratorHelper
java.lang.Object
org.codehaus.mojo.jaxb2.schemageneration.XsdGeneratorHelper
Utility class holding algorithms used when generating XSD schema.
- Since:
- 1.4
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static TransformerFactory
private static final String
private static final FileFilter
-
Constructor Summary
ConstructorsModifierConstructorDescriptionprivate
Hide the constructor for utility classes. -
Method Summary
Modifier and TypeMethodDescriptionprivate static void
addRecursively
(List<File> toPopulate, FileFilter fileFilter, File aDir) private static String
getDuplicationErrorMessage
(String propertyName, String propertyValue, int firstIndex, int currentIndex) private static TransformerFactory
static Map
<String, SimpleNamespaceResolver> getFileNameToResolverMap
(File outputDirectory) Acquires a map relating generated schema filename to its SimpleNamespaceResolver.protected static String
getHumanReadableXml
(Node node) Converts the provided DOM Node to a pretty-printed XML-formatted string.static int
insertJavaDocAsAnnotations
(org.apache.maven.plugin.logging.Log log, String encoding, File outputDir, SearchableDocumentation docs, JavaDocRenderer renderer) Inserts XML documentation annotations into all generated XSD files found within the supplied outputDir.static Document
parseXmlStream
(Reader xmlStream) Parses the provided InputStream to create a dom Document.private static Document
parseXmlToDocument
(File xmlFile) Creates a Document from parsing the XML within the provided xmlFile.static void
process
(Node node, boolean recurseToChildren, NodeProcessor visitor) Drives the supplied visitor to process the provided Node and all its children, should the recurseToChildren flag be set totrue
.static void
renameGeneratedSchemaFiles
(Map<String, SimpleNamespaceResolver> resolverMap, List<TransformSchema> configuredTransformSchemas, org.apache.maven.plugin.logging.Log mavenLog, File schemaDirectory, String charsetName) Updates all schemaLocation attributes within the generated schema files to match the 'file' properties within the Schemas read from the plugin configuration.static void
replaceNamespacePrefixes
(Map<String, SimpleNamespaceResolver> resolverMap, List<TransformSchema> configuredTransformSchemas, org.apache.maven.plugin.logging.Log mavenLog, File schemaDirectory, String encoding) Replaces all namespaces within generated schema files, as instructed by the configured Schema instances.private static void
savePrettyPrintedDocument
(Document toSave, File targetFile, String charsetName) private static void
validatePrefixSubstitutionIsPossible
(String oldPrefix, String newPrefix, SimpleNamespaceResolver currentResolver) Validates that the transformation fromoldPrefix
tonewPrefix
is possible, in thatnewPrefix
is not already used by a schema file.static void
validateSchemasInPluginConfiguration
(List<TransformSchema> configuredTransformSchemas) Validates that the list of Schemas provided within the configuration all contain unique values.
-
Field Details
-
MISCONFIG
- See Also:
-
FACTORY
-
RECURSIVE_XSD_FILTER
-
-
Constructor Details
-
XsdGeneratorHelper
private XsdGeneratorHelper()Hide the constructor for utility classes.
-
-
Method Details
-
getFileNameToResolverMap
public static Map<String,SimpleNamespaceResolver> getFileNameToResolverMap(File outputDirectory) throws org.apache.maven.plugin.MojoExecutionException Acquires a map relating generated schema filename to its SimpleNamespaceResolver.- Parameters:
outputDirectory
- The output directory of the generated schema files.- Returns:
- a map relating generated schema filename to an initialized SimpleNamespaceResolver.
- Throws:
org.apache.maven.plugin.MojoExecutionException
- if two generated schema files used the same namespace URI.
-
validateSchemasInPluginConfiguration
public static void validateSchemasInPluginConfiguration(List<TransformSchema> configuredTransformSchemas) throws org.apache.maven.plugin.MojoExecutionException Validates that the list of Schemas provided within the configuration all contain unique values. Should a MojoExecutionException be thrown, it contains informative text about the exact nature of the configuration problem - we should simplify for all plugin users.- Parameters:
configuredTransformSchemas
- The List of configuration schemas provided to this mojo.- Throws:
org.apache.maven.plugin.MojoExecutionException
- if any two configuredSchemas instances contain duplicate values for any of the properties uri, prefix or file. Also throws a MojoExecutionException if the uri of any Schema is null or empty, or if none of the 'file' and 'prefix' properties are given within any of the configuredSchema instances.
-
insertJavaDocAsAnnotations
public static int insertJavaDocAsAnnotations(org.apache.maven.plugin.logging.Log log, String encoding, File outputDir, SearchableDocumentation docs, JavaDocRenderer renderer) Inserts XML documentation annotations into all generated XSD files found within the supplied outputDir.- Parameters:
log
- A Maven Log.outputDir
- The outputDir, where generated XSD files are found.docs
- The SearchableDocumentation for the source files within the compilation unit.renderer
- The JavaDocRenderer used to convert JavaDoc annotations into XML documentation annotations.- Returns:
- The number of processed XSDs.
-
replaceNamespacePrefixes
public static void replaceNamespacePrefixes(Map<String, SimpleNamespaceResolver> resolverMap, List<TransformSchema> configuredTransformSchemas, org.apache.maven.plugin.logging.Log mavenLog, File schemaDirectory, String encoding) throws org.apache.maven.plugin.MojoExecutionExceptionReplaces all namespaces within generated schema files, as instructed by the configured Schema instances.- Parameters:
resolverMap
- The map relating generated schema file name to SimpleNamespaceResolver instances.configuredTransformSchemas
- The Schema instances read from the configuration of this plugin.mavenLog
- The active Log.schemaDirectory
- The directory where all generated schema files reside.encoding
- The encoding to use when writing the file.- Throws:
org.apache.maven.plugin.MojoExecutionException
- If the namespace replacement could not be done.
-
renameGeneratedSchemaFiles
public static void renameGeneratedSchemaFiles(Map<String, SimpleNamespaceResolver> resolverMap, List<TransformSchema> configuredTransformSchemas, org.apache.maven.plugin.logging.Log mavenLog, File schemaDirectory, String charsetName) Updates all schemaLocation attributes within the generated schema files to match the 'file' properties within the Schemas read from the plugin configuration. After that, the files are physically renamed.- Parameters:
resolverMap
- The map relating generated schema file name to SimpleNamespaceResolver instances.configuredTransformSchemas
- The Schema instances read from the configuration of this plugin.mavenLog
- The active Log.schemaDirectory
- The directory where all generated schema files reside.charsetName
- The encoding / charset name.
-
process
Drives the supplied visitor to process the provided Node and all its children, should the recurseToChildren flag be set totrue
. All attributes of the current node are processed before recursing to children (i.e. breadth first recursion).- Parameters:
node
- The Node to process.recurseToChildren
- iftrue
, processes all children of the supplied node recursively.visitor
- The NodeProcessor instance which should process the nodes.
-
parseXmlStream
Parses the provided InputStream to create a dom Document.- Parameters:
xmlStream
- An InputStream connected to an XML document.- Returns:
- A DOM Document created from the contents of the provided stream.
-
getHumanReadableXml
Converts the provided DOM Node to a pretty-printed XML-formatted string.- Parameters:
node
- The Node whose children should be converted to a String.- Returns:
- a pretty-printed XML-formatted string.
-
getDuplicationErrorMessage
-
validatePrefixSubstitutionIsPossible
private static void validatePrefixSubstitutionIsPossible(String oldPrefix, String newPrefix, SimpleNamespaceResolver currentResolver) throws org.apache.maven.plugin.MojoExecutionException Validates that the transformation fromoldPrefix
tonewPrefix
is possible, in thatnewPrefix
is not already used by a schema file. This would corrupt the schema by assigning elements from one namespace to another.- Parameters:
oldPrefix
- The old/current namespace prefix.newPrefix
- The new/future namespace prefix.currentResolver
- The currently active SimpleNamespaceResolver.- Throws:
org.apache.maven.plugin.MojoExecutionException
- if any schema file currently usesnewPrefix
.
-
parseXmlToDocument
Creates a Document from parsing the XML within the provided xmlFile.- Parameters:
xmlFile
- The XML file to be parsed.- Returns:
- The Document corresponding to the xmlFile.
-
savePrettyPrintedDocument
-
addRecursively
-
getFactory
-