<?xml version='1.0' ?>

<model>
  <modelId>test</modelId>
  <component>
    <modelId>test</modelId>
    <className>testpkg.ComponentBase</className>
    <sourceClassName>testpkg.ComponentBase</sourceClassName>
    <type>base</type>
    <family>base</family>
    <rendererType>BaseRenderer</rendererType>
    <desc>A base component class</desc>
    <longDesc>
<![CDATA[
A base component class.
<p>
This is a base component. It has no name, so is not a concrete component.
]]>
    </longDesc>
    <property>
      <name>prop1</name>
      <className>java.lang.String</className>
      <desc>The prop1 property</desc>
      <longDesc>
<![CDATA[
The prop1 property.
<p>
Some dummy prop1 documentation.
]]>
      </longDesc>
      <generated>true</generated>
    </property>
  </component>
  <component>
    <modelId>test</modelId>
    <className>testpkg.ComponentInterface</className>
    <sourceClassName>testpkg.ComponentInterface</sourceClassName>
    <type>iface</type>
    <family>iface</family>
    <rendererType>BaseRenderer</rendererType>
    <desc>An interface that defines component properties</desc>
    <longDesc>
<![CDATA[
An interface that defines component properties.
<p>
This is an interface component.
]]>
    </longDesc>
    <property>
      <name>ifaceProp</name>
      <className>java.lang.String</className>
      <desc>The ifaceProp property</desc>
      <longDesc>
<![CDATA[
The ifaceProp property.
<p>
Some dummy ifaceProp documentation.
]]>
      </longDesc>
    </property>
  </component>
  <component>
    <modelId>test</modelId>
    <className>testpkg.SubclassComponent</className>
    <parentClassName>testpkg.ComponentBase</parentClassName>
    <sourceClassName>testpkg.ComponentGenSubclass</sourceClassName>
    <sourceClassParentClassName>testpkg.ComponentBase</sourceClassParentClassName>
    <interfaces>
      <interface name="testpkg.ComponentInterface"/>
    </interfaces>
    <name>fooFromSubclass</name>
    <type>foo</type>
    <family>foo</family>
    <rendererType>FooRenderer</rendererType>
    <generatedComponentClass>true</generatedComponentClass>
    <implementedInterfaces>
      <interface name="testpkg.ComponentInterface"/>
    </implementedInterfaces>
    <desc>A class for which a concrete component will be created using "subclass mode" code-generation</desc>
    <longDesc>A class for which a concrete component will be created using "subclass mode" code-generation.</longDesc>
    <property>
      <name>prop1</name>
      <className>java.lang.String</className>
      <desc>The prop1 property</desc>
      <longDesc>
<![CDATA[
The prop1 property.
<p>
Some dummy prop1 documentation.
]]>
      </longDesc>
      <inherited>true</inherited>
      <generated>true</generated>
    </property>
    <property>
      <name>ifaceProp</name>
      <className>java.lang.String</className>
      <desc>The ifaceProp property</desc>
      <longDesc>
<![CDATA[
The ifaceProp property.
<p>
Some dummy ifaceProp documentation.
]]>
      </longDesc>
      <inherited>true</inherited>
    </property>
  </component>
  <component>
    <modelId>test</modelId>
    <className>testpkg.TemplateComponent</className>
    <parentClassName>testpkg.ComponentBase</parentClassName>
    <sourceClassName>testpkg.ComponentGenTemplate</sourceClassName>
    <sourceClassParentClassName>testpkg.ComponentBase</sourceClassParentClassName>
    <interfaces>
      <interface name="testpkg.ComponentInterface"/>
    </interfaces>
    <name>fooFromTemplate</name>
    <type>foo</type>
    <family>foo</family>
    <rendererType>FooRenderer</rendererType>
    <generatedComponentClass>true</generatedComponentClass>
    <template>true</template>
    <desc>A class for which a concrete component will be created using "template mode" code-generation</desc>
    <longDesc>A class for which a concrete component will be created using "template mode" code-generation.</longDesc>
    <property>
      <name>prop2</name>
      <className>boolean</className>
      <desc>The prop2 property</desc>
      <longDesc>
<![CDATA[
The prop2 property.
<p>
Some dummy prop2 documentation.
]]>
      </longDesc>
    </property>
    <property>
      <name>prop1</name>
      <className>java.lang.String</className>
      <desc>The prop1 property</desc>
      <longDesc>
<![CDATA[
The prop1 property.
<p>
Some dummy prop1 documentation.
]]>
      </longDesc>
      <inherited>true</inherited>
      <generated>true</generated>
    </property>
    <property>
      <name>ifaceProp</name>
      <className>java.lang.String</className>
      <desc>The ifaceProp property</desc>
      <longDesc>
<![CDATA[
The ifaceProp property.
<p>
Some dummy ifaceProp documentation.
]]>
      </longDesc>
      <inherited>true</inherited>
    </property>
  </component>
  <component>
    <modelId>test</modelId>
    <className>testpkg.ComponentManual</className>
    <parentClassName>testpkg.ComponentBase</parentClassName>
    <sourceClassName>testpkg.ComponentManual</sourceClassName>
    <sourceClassParentClassName>testpkg.ComponentBase</sourceClassParentClassName>
    <interfaces>
      <interface name="testpkg.ComponentInterface"/>
    </interfaces>
    <name>foo</name>
    <type>foo</type>
    <family>foo</family>
    <rendererType>FooRenderer</rendererType>
    <implementedInterfaces>
      <interface name="testpkg.ComponentInterface"/>
    </implementedInterfaces>
    <desc>A concrete component class that has been written by hand (no code generation)</desc>
    <longDesc>A concrete component class that has been written by hand (no code generation).</longDesc>
    <property>
      <name>prop2</name>
      <className>boolean</className>
      <desc>The prop2 property</desc>
      <longDesc>
<![CDATA[
The prop2 property.
<p>
Some dummy prop2 documentation.
]]>
      </longDesc>
    </property>
    <property>
      <name>prop1</name>
      <className>java.lang.String</className>
      <desc>The prop1 property</desc>
      <longDesc>
<![CDATA[
The prop1 property.
<p>
Some dummy prop1 documentation.
]]>
      </longDesc>
      <inherited>true</inherited>
      <generated>true</generated>
    </property>
    <property>
      <name>ifaceProp</name>
      <className>java.lang.String</className>
      <desc>The ifaceProp property</desc>
      <longDesc>
<![CDATA[
The ifaceProp property.
<p>
Some dummy ifaceProp documentation.
]]>
      </longDesc>
      <inherited>true</inherited>
    </property>
  </component>
</model>
