<?xml version="1.0" encoding="UTF-8"?>
<?asciidoc-toc maxdepth="2"?>
<?asciidoc-numbered?>
<article xmlns="http://docbook.org/ns/docbook" xmlns:xl="http://www.w3.org/1999/xlink" version="5.0" xml:lang="en">
<info>
<title>JAXB Gradle Plugin</title>
<date>2023-04-17</date>
</info>
<caution>
<simpara>The default configuration was adapted for <emphasis role="strong">Jakarta XML Binding 3.0.1</emphasis>.</simpara>
<simpara>Starting with version 6, the plugin is working only with Gradle 8.0 or higher.</simpara>
</caution>
<section xml:id="asciidocsummary">
<title>Summary</title>
<simpara>This plugin generates Java code from schema files (see <link xl:href="https://jaxb.java.net/jaxb20-ea/docs/xjcTask.html">com.sun.tools.xjc.XJCTask</link>) or schema files from existing Java code (see <link xl:href="https://jaxb.java.net/jaxb20-ea/docs/schemagenTask.html">com.sun.tools.jxc.SchemaGenTask</link>).</simpara>
</section>
<section xml:id="asciidocusage">
<title>Usage</title>
<simpara>To apply the JAXB Gradle Plugin to your projects, add the following in your build script:</simpara>
<details open>
<summary>Groovy</summary>
<formalpara>
<title>build.gradle</title>
<para>
<programlisting language="groovy" linenumbering="unnumbered">plugins {
    id 'com.intershop.gradle.jaxb' version '6.0.0'
}

jaxb {
     // generate java code from schema
     javaGen {
        //generates a 'project' schema file from existing java code
        name {
            schema = file('schema.xsd')
            binding = file('binding.xjb')
        }
    }

    //generates schema from java code
    schemaGen {
        //generates java code for project from project schema
        name {
            javaFiles = fileTree(dir: 'src/main/java', include: 'com/corporate/annotated/**/binding/**/*.java')
            namespaceconfigs = [ 'http://www.corporate.com/xml/ns/corporate/feature/1.0' : 'feature.xsd' ]
        }
    }
}</programlisting>
</para>
</formalpara>
</details>
<details>
<summary>Kotlin</summary>
<formalpara>
<title>build.gradle.kts</title>
<para>
<programlisting language="kotlin" linenumbering="unnumbered">plugins {
    id("com.intershop.gradle.jaxb") version "6.0.0"
}

jaxb {
     // generate java code from schema
     javaGen {
        //generates a 'project' schema file from existing java code
        register("name") {
            schema = file("schema.xsd")
            binding = file("binding.xjb")
        }
    }

    //generates schema from java code
    schemaGen {
        //generates java code for project from project schema
        register("name") {
            javaFiles = fileTree("dir" to "src/main/java", "include" to "com/corporate/annotated/**/binding/**/*.java")
            namespaceconfigs = mapOf("http://www.corporate.com/xml/ns/corporate/feature/1.0" to "feature.xsd")
        }
    }
}</programlisting>
</para>
</formalpara>
</details>
<simpara>If the JavaBasePlugin is applied to the project, generated java sources will be added to the specified source set. Per default the main source set is used.</simpara>
<important>
<simpara>This plugin uses the following dependencies:<?asciidoc-br?>
   <emphasis role="strong">&nbsp;&nbsp;&nbsp;&nbsp;com.sun.xml.bind:jaxb-xjc:3.0.1</emphasis><?asciidoc-br?>
   <emphasis role="strong">&nbsp;&nbsp;&nbsp;&nbsp;com.sun.xml.bind:jaxb-jxc:3.0.1</emphasis><?asciidoc-br?>
   <emphasis role="strong">&nbsp;&nbsp;&nbsp;&nbsp;com.sun.xml.bind:jaxb-impl:3.0.1</emphasis><?asciidoc-br?>
   <emphasis role="strong">&nbsp;&nbsp;&nbsp;&nbsp;com.sun.xml.bind:jaxb-core:3.0.1</emphasis><?asciidoc-br?>
   <emphasis role="strong">&nbsp;&nbsp;&nbsp;&nbsp;org.glassfish.jaxb:jaxb-runtime:3.0.1</emphasis><?asciidoc-br?>
   <emphasis role="strong">&nbsp;&nbsp;&nbsp;&nbsp;jakarta.xml.bind:jakarta.xml.bind-api:3.0.1</emphasis><?asciidoc-br?>
   <emphasis role="strong">&nbsp;&nbsp;&nbsp;&nbsp;jakarta.activation:jakarta.activation-api:2.0.1</emphasis><?asciidoc-br?></simpara>
</important>
<simpara>It is possible to overwrite the project dependency configuration 'jaxb', if you want use an other version of JAXB.
It is also possible to add additional dependencies to the configured "jaxb" with the configuration "jaxbext".</simpara>
</section>
<section xml:id="asciidoctasks">
<title>Tasks</title>
<simpara>The JAXB Gradle plugin adds one task <literal>jaxb</literal> to the project. This task depends on all other plugin task. It is a task added for each configuration in schemaGen and javaGen.</simpara>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="95%, options="?>
<?dbfo table-width="95%, options="?>
<?dblatex table-width="95%, options="?>
<tgroup cols="3">
<colspec colname="col_1" colwidth="100.9375*"/>
<colspec colname="col_2" colwidth="121.125*"/>
<colspec colname="col_3" colwidth="181.6875*"/>
<tbody>
<row>
<entry align="left" valign="top"><simpara>Task name</simpara></entry>
<entry align="left" valign="top"><simpara>Type</simpara></entry>
<entry align="left" valign="top"><simpara>Description</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara>jaxb</simpara></entry>
<entry align="left" valign="top"><simpara>Task</simpara></entry>
<entry align="left" valign="top"><simpara>Overall <literal>jaxb</literal> code generation task of a project. This task depends on all <literal>jaxbJavaGen</literal> and <literal>jaxbSchemaGen</literal> tasks.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara>jaxbJavaGen&lt;configuration name&gt;</simpara></entry>
<entry align="left" valign="top"><simpara>com.intershop.build.jaxb.task.SchemaToJavaTask</simpara></entry>
<entry align="left" valign="top"><simpara>This task generates Java code for the specified schema and binding configuration.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara>jaxbSchemaGen&lt;configuration name&gt;</simpara></entry>
<entry align="left" valign="top"><simpara>com.intershop.build.jaxb.task.JavaToSchemaTask</simpara></entry>
<entry align="left" valign="top"><simpara>This task creates schema files for the specified java code.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
<section xml:id="asciidocproject-extension-jaxb">
<title>Project Extension 'jaxb'</title>
<simpara>This plugin adds an extension <emphasis role="strong"><literal>jaxb</literal></emphasis> to the project.</simpara>
<section xml:id="asciidocmethods">
<title>Methods</title>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="95%"?>
<?dbfo table-width="95%"?>
<?dblatex table-width="95%"?>
<tgroup cols="3">
<colspec colname="col_1" colwidth="80.75*"/>
<colspec colname="col_2" colwidth="60.5625*"/>
<colspec colname="col_3" colwidth="262.4375*"/>
<thead>
<row>
<entry align="left" valign="top">Method</entry>
<entry align="left" valign="top">Values</entry>
<entry align="left" valign="top">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">javaGen</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><link linkend="javaGen">SchemaToJava</link></simpara></entry>
<entry align="left" valign="top"><simpara>This contains all Java code generation configurations.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">schemaGen</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><link linkend="schemaGen">JavaToSchema</link></simpara></entry>
<entry align="left" valign="top"><simpara>This contains all schema code generation configurations.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<section xml:id="asciidocobject-javagen-schematojava">
<title><anchor xml:id="javaGen" xreflabel="[javaGen]"/>Object 'javaGen' (SchemaToJava)</title>
<section xml:id="asciidocproperties">
<title>Properties</title>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="90%, options="?>
<?dbfo table-width="90%, options="?>
<?dblatex table-width="90%, options="?>
<tgroup cols="4">
<colspec colname="col_1" colwidth="65.025*"/>
<colspec colname="col_2" colwidth="65.025*"/>
<colspec colname="col_3" colwidth="57.375*"/>
<colspec colname="col_4" colwidth="195.075*"/>
<thead>
<row>
<entry align="left" valign="top">Property</entry>
<entry align="left" valign="top">Type</entry>
<entry align="left" valign="top">Default value</entry>
<entry align="left" valign="top">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">outputDir</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>File</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>&lt;project.buildDir&gt;/generated/jaxb/java/&lt;config name&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Generated code will be written under this directory.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">args</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>List&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>[]</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Additional command line arguments passed to the XJC (-use-runtime, -schema, -dtd, -relaxng, -Xlocator, -Xsync-methods)</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">sourceSetName</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>String</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>'main'</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Generated source code will be added to the source set.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">encoding</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>String</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>'UTF-8'</literal></simpara></entry>
<entry align="left" valign="top"><simpara>specify character encoding for generated source files</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">strictValidation</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>boolean</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>false</literal></simpara></entry>
<entry align="left" valign="top"><simpara>perform strict validation of the input schema</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">extension</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>boolean</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>false</literal></simpara></entry>
<entry align="left" valign="top"><simpara>allow vendor extensions - do not strictly follow the<?asciidoc-br?>
compatibility rules and app E.2 from the JAXB Spec</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">header</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>boolean</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>false</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Generate a header in each generated file indicating that this file is generated by such and such version of JAXB RI when.<?asciidoc-br?>
If this value is false '-no-header' will be added to the command line parameter list.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">packageName</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>String</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>'generated'</literal></simpara></entry>
<entry align="left" valign="top"><simpara>If specified, generated code will be placed under this Java package.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">schema</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>File</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>null</literal></simpara></entry>
<entry align="left" valign="top"><simpara>A schema file to be compiled.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">binding</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>File</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>null</literal></simpara></entry>
<entry align="left" valign="top"><simpara>An external binding file that will be applied to the schema file.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">catalog</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>File</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>null</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Specify the catalog file to resolve external entity references. Support TR9401, XCatalog, and OASIS XML Catalog format. See the catalog-resolver sample for details.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">schemas</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>FileCollection</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>null</literal></simpara></entry>
<entry align="left" valign="top"><simpara>To compile more than one schema at the same time, use this configuration.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">bindings</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>FileCollection</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>null</literal></simpara></entry>
<entry align="left" valign="top"><simpara>To specify more than one external binding file at the same time, use this configuration.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">targetVersion</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>String</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>'2.2'</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Specifies the runtime environment in which the generated code is supposed to run. Expects also 2.0 or 2.1 values. This allows more up-to-date versions of XJC to be used for developing applications that run on earlier JAXB versions.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">language</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>String</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>'XMLSCHEMA'</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Specifies the schema language to compile. Supported values are "WSDL", "XMLSCHEMA", and "WSDL." Case insensitive.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">antTaskClassName</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>String</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>'com.sun.tools.xjc.XJCTask'</literal></simpara></entry>
<entry align="left" valign="top"><simpara>The JAXB tools (e.g. XJC) bundled with the JDK are relocated to a package not matching the JAXB-RI. There are a lot of XJC plugins around compiled against the JAXB-RI which cannot be used with the JAXB tools bundled with the JDK due to this. When configuring the plugin to use the JAXB-RI Ant task instead of the Ant task bundled with the JDK (e.g. com.sun.tools.xjc.XJC2Task), those plugins can be used.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
<section xml:id="asciidocmethod">
<title>Method</title>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="90%, options="?>
<?dbfo table-width="90%, options="?>
<?dblatex table-width="90%, options="?>
<tgroup cols="3">
<colspec colname="col_1" colwidth="65.025*"/>
<colspec colname="col_2" colwidth="65.025*"/>
<colspec colname="col_3" colwidth="252.45*"/>
<tbody>
<row>
<entry align="left" valign="top"><simpara>Method</simpara></entry>
<entry align="left" valign="top"><simpara>Parameter</simpara></entry>
<entry align="left" valign="top"><simpara>Description</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">arg</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>String</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Add an additional command line argument passed to the XJC</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">args</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>List&lt;String&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Add additional command line arguments passed to the XJC</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
</section>
<section xml:id="asciidocobject-schemagen-javatoschema">
<title><anchor xml:id="schemaGen" xreflabel="[schemaGen]"/>Object 'schemaGen' (JavaToSchema)</title>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="90%, options="?>
<?dbfo table-width="90%, options="?>
<?dblatex table-width="90%, options="?>
<tgroup cols="4">
<colspec colname="col_1" colwidth="65.025*"/>
<colspec colname="col_2" colwidth="65.025*"/>
<colspec colname="col_3" colwidth="57.375*"/>
<colspec colname="col_4" colwidth="195.075*"/>
<thead>
<row>
<entry align="left" valign="top">Property</entry>
<entry align="left" valign="top">Type</entry>
<entry align="left" valign="top">Default value</entry>
<entry align="left" valign="top">Description</entry>
</row>
</thead>
<tbody>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">outputDir</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>File</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>&lt;project.buildDir&gt;/generated/jaxb/schema/&lt;config name&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Base directory to place the generated schema files</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">InputDir</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>File</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>null</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Base directory of input files</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">excludes</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>List&lt;String&gt;</simpara></entry>
<entry align="left" valign="top"><simpara>[]</simpara></entry>
<entry align="left" valign="top"><simpara>List of exclude filters of this configuration.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">includes</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara>List&lt;String&gt;</simpara></entry>
<entry align="left" valign="top"><simpara>['<emphasis role="strong">/</emphasis>/*.java']</simpara></entry>
<entry align="left" valign="top"><simpara>List of includes filters of this configuration.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">namespaceconfigs</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>Map&lt;String,String&gt;</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>null</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Control the file name of the generated schema. The entry key is the namespace attribute and the value is the file name. When this element is present, the schema document generated for the specified namespace will be placed in the specified file name.</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">episode</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>String</literal></simpara></entry>
<entry align="left" valign="top"><simpara><literal>null</literal></simpara></entry>
<entry align="left" valign="top"><simpara>If specified, generate an episode file with the specified name.</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
<section xml:id="asciidocmethod-2">
<title>Method</title>
<informaltable frame="all" rowsep="1" colsep="1">
<?dbhtml table-width="90%, options="?>
<?dbfo table-width="90%, options="?>
<?dblatex table-width="90%, options="?>
<tgroup cols="3">
<colspec colname="col_1" colwidth="65.025*"/>
<colspec colname="col_2" colwidth="65.025*"/>
<colspec colname="col_3" colwidth="252.45*"/>
<tbody>
<row>
<entry align="left" valign="top"><simpara>Method</simpara></entry>
<entry align="left" valign="top"><simpara>Parameter</simpara></entry>
<entry align="left" valign="top"><simpara>Description</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">exclude</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>String</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Add exclude filter to excludes list</simpara></entry>
</row>
<row>
<entry align="left" valign="top"><simpara><emphasis role="strong">include</emphasis></simpara></entry>
<entry align="left" valign="top"><simpara><literal>String</literal></simpara></entry>
<entry align="left" valign="top"><simpara>Add include filter to excludes list</simpara></entry>
</row>
</tbody>
</tgroup>
</informaltable>
</section>
</section>
</section>
<section xml:id="asciidocexample-configurations">
<title>Example Configurations</title>
<section xml:id="asciidocsimple-configuration-for-java-code-generation">
<title>Simple configuration for java code generation</title>
<programlisting language="groovy" linenumbering="unnumbered">plugins {
    id 'java'
    id 'com.intershop.gradle.jaxb' version '6.0.0'
}

jaxb {
    javaGen {
        posConfig {
            packageName = ''
            schema = file('pos.xsd')
        }
    }
}</programlisting>
</section>
<section xml:id="asciidocconfiguration-with-binding-file-for-java-code-generation">
<title>Configuration with binding file for java code generation</title>
<programlisting language="groovy" linenumbering="unnumbered">plugins {
    id 'java'
    id 'com.intershop.gradle.jaxb' version '6.0.0'
}

jaxb {
    javaGen {
        posConfig {
            binding = file('binding.xjb')
            schema = file('pos.xsd')
        }
    }
}</programlisting>
</section>
<section xml:id="asciidocconfiguration-for-schema-generation">
<title>Configuration for schema generation</title>
<programlisting language="groovy" linenumbering="unnumbered">plugins {
    id 'java'
    id 'com.intershop.gradle.jaxb' version '6.0.0'
}

jaxb {
    schemaGen {
        orderstatusimport {
            javaFiles = fileTree(dir: 'javasource', include: 'com/corporate/annotated/**/binding/**/*.java')
            namespaceconfigs = ['http://com.corporate.com/xml/ns/corporate/feature/status/1.0' : 'feature_xml.xsd' ]
        }
    }
}</programlisting>
</section>
</section>
</section>
<section xml:id="asciidoclicense">
<title>License</title>
<simpara>Copyright 2014-2021 Intershop Communications.</simpara>
<simpara>Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at</simpara>
<simpara><link xl:href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</link></simpara>
<simpara>Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.</simpara>
</section>
</article>