<?xml version="1.0"?>

<!--
  ~ Copyright 2006 The Apache Software Foundation.
  ~
  ~ 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
  ~
  ~      http://www.apache.org/licenses/LICENSE-2.0
  ~
  ~ 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.
  -->

<model xsd.namespace="http://mojo.codehaus.org/javascript-maven-plugin">
  <id>assembler</id>
  <name>Assembler</name>
  <description>
    <![CDATA[
    <p>
    JavaScript Maven Plugin relies on the provided assembler to describe how to
    assemble source scripts into the packaging directory.
    </p>
    <p>
    This descriptor specifies a set of target script to be created by merging
    some source scripts in the specified order.
    </p>
    ]]>
  </description>
  <defaults>
    <default>
      <key>package</key>
      <value>org.apache.myfaces.buildtools.maven2.plugin.javascript.jmt.assembler</value>
    </default>
  </defaults>
  <classes>
    <class rootElement="true" xml.tagName="assembler">
      <name>Assembler</name>
      <description>
      <![CDATA[
        An assembler defines a collection of files to be created in the
        packaging directory based on source scripts. Many script developer use
        fine grained scripts for development and merge them during release. The
        assembler describe the files to get merged and the ordering.
        ]]>
      </description>
      <version>1.0.0+</version>
      <fields>
        <field>
          <name>scripts</name>
          <version>1.0.0+</version>
          <association>
            <type>Script</type>
            <multiplicity>*</multiplicity>
          </association>
          <description>
            <![CDATA[
            Specifies a merge to occur on a set of source files.
            ]]>
          </description>
        </field>
      </fields>
    </class>

    <class xml.tagName="script">
      <description>
        <![CDATA[
        Merge multiple source scripts into a target script.
        ]]>
      </description>
      <name>Script</name>
      <version>1.0.0+</version>
      <fields>
        <field>
          <name>fileName</name>
          <version>1.0.0+</version>
          <type>String</type>
          <description>
          The script to be created by the merge.
          </description>
        </field>
        <field>
          <name>includes</name>
          <version>1.0.0+</version>
          <description>
            <![CDATA[
            This is a list of &lt;include/&gt; subelements, each containing a
            source script reference. Scripts matching these elements will be
            merged in the target script, in the order they are configured.
            ]]>
          </description>
          <association>
            <type>String</type>
            <multiplicity>*</multiplicity>
          </association>
        </field>
      </fields>
    </class>
  </classes>
</model>
