<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://eclipse.org/jst/server/generic/ServerTypeDefinition" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:jst="http://eclipse.org/jst/server/generic/ServerTypeDefinition">



	<complexType name="ServerRuntime">
		<annotation>
			<documentation>
				Generic Server Type Definition. It must have a list of
				properties.
			</documentation>
		</annotation>

		<sequence maxOccurs="1" minOccurs="1">
			<sequence maxOccurs="unbounded" minOccurs="0">
				<element name="property" type="jst:Property"/>
			</sequence>

			<sequence maxOccurs="unbounded" minOccurs="0">
				<element name="port" type="jst:Port"/>
			</sequence>

			<sequence maxOccurs="unbounded" minOccurs="1">
				<element name="module" type="jst:Module"/>
			</sequence>
			<element name="project" type="jst:Project"/>
			<element name="start" type="jst:LaunchConfiguration"/>
			<element name="stop" type="jst:LaunchConfiguration"/>

			<sequence maxOccurs="unbounded" minOccurs="0">
				<element name="publisher" type="jst:Publisher"/>
			</sequence>

			<sequence maxOccurs="unbounded" minOccurs="1">
				<element name="classpath" type="jst:Classpath"/>
			</sequence>
			<element name="jndiConnection" type="jst:jndiConnection"/>
		</sequence>

		<attribute name="name" type="string" use="required"/>
		<attribute name="version" type="string"/>
	</complexType>

	<complexType name="Property">
		<attribute name="id" type="string"/>
		<attribute name="label" type="string"/>
		<attribute name="type" type="string"/>
		<attribute name="context" type="string"/>
		<attribute name="default" type="string"/>
	</complexType>

	<complexType name="Module">
		<sequence>
			<element name="type" type="string"/>
			<element name="publishDir" type="string"/>
			<element name="publisherReference" type="string"/>
		</sequence>
	</complexType>

	<complexType name="LaunchConfiguration">
		<sequence>
			<sequence minOccurs="0" maxOccurs="unbounded">
				<element name="environmentVariable"
					type="jst:ArgumentPair">
				</element>
			</sequence>
			<sequence minOccurs="0" maxOccurs="unbounded">
				<element name="programArguments" type="string" />
			</sequence>
			<element name="workingDirectory" type="string" />
			<choice>
				<sequence>
					<element name="mainClass" type="string" />
					<sequence minOccurs="0" maxOccurs="unbounded">
						<element name="vmParameters" type="string" />
					</sequence>
					<element name="classpathReference" type="string" />
				</sequence>
				<sequence>
					<element name="debugPort" type="string" />
					<sequence maxOccurs="unbounded" minOccurs="1">
						<element name="external" type="jst:External"></element>
					</sequence>
				</sequence>
			</choice>
		</sequence>
	</complexType>

	<complexType name="Port">
		<sequence>
			<element name="no" type="string"/>
			<element name="name" type="string"/>
			<element name="protocol" type="string"/>
		</sequence>
	</complexType>

	<complexType name="Classpath">
		<sequence maxOccurs="unbounded" minOccurs="1">
			<element name="archive">
				<complexType>
					<attribute name="path" type="string"/>
				</complexType>
			</element>
		</sequence>
		<attribute name="id" type="string"/>
	</complexType>

	<complexType name="Publisher">
		<sequence maxOccurs="unbounded" minOccurs="1">
            <element name="publisherdata" type="jst:PublisherData">
      </element>
        </sequence>
		<attribute name="id" type="string"/>
	</complexType>

	<complexType name="Project">
		<sequence maxOccurs="1" minOccurs="1">
		<element name="classpathReference" type="string"/>
		</sequence>
	</complexType>

    <complexType name="PublisherData">
    <sequence maxOccurs="1" minOccurs="1">
      <element name="dataname" type="string"/>
      <element name="datavalue" type="string"/>
    </sequence>
  </complexType>
    <complexType name="jndiConnection">
    	<sequence>
    		<element name="providerUrl" type="string"/>
    		<sequence maxOccurs="unbounded" minOccurs="0">
    			<element name="jndiProperty" type="jst:ArgumentPair"/>
    		</sequence>
    		<element name="initialContextFactory" type="string"/>
    	</sequence>
    </complexType>

    <complexType name="ArgumentPair">
    	<all maxOccurs="1" minOccurs="1">
    		<element name="name" type="string"/>
    		<element name="value" type="string"/>
    	</all>
    </complexType>

    <complexType name="External">
    	<simpleContent>
    		<extension base="string">
    			<attribute name="os" type="string"></attribute>
    		</extension>
    	</simpleContent>
    </complexType>

</schema>
