Class XsdGeneratorHelper

java.lang.Object
org.codehaus.mojo.jaxb2.schemageneration.XsdGeneratorHelper

public final class XsdGeneratorHelper extends Object
Utility class holding algorithms used when generating XSD schema.
Since:
1.4
  • Field Details

  • 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.MojoExecutionException
      Replaces 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

      public 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 to true. All attributes of the current node are processed before recursing to children (i.e. breadth first recursion).
      Parameters:
      node - The Node to process.
      recurseToChildren - if true, processes all children of the supplied node recursively.
      visitor - The NodeProcessor instance which should process the nodes.
    • parseXmlStream

      public static Document parseXmlStream(Reader xmlStream)
      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

      protected static String getHumanReadableXml(Node node)
      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

      private static String getDuplicationErrorMessage(String propertyName, String propertyValue, int firstIndex, int currentIndex)
    • validatePrefixSubstitutionIsPossible

      private static void validatePrefixSubstitutionIsPossible(String oldPrefix, String newPrefix, SimpleNamespaceResolver currentResolver) throws org.apache.maven.plugin.MojoExecutionException
      Validates that the transformation from oldPrefix to newPrefix is possible, in that newPrefix 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 uses newPrefix.
    • parseXmlToDocument

      private static Document parseXmlToDocument(File xmlFile)
      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

      private static void savePrettyPrintedDocument(Document toSave, File targetFile, String charsetName)
    • addRecursively

      private static void addRecursively(List<File> toPopulate, FileFilter fileFilter, File aDir)
    • getFactory

      private static TransformerFactory getFactory()