Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/openj9
Path: blob/master/sourcetools/objectmodel/schema/feature-v2.xsd
5995 views
<?xml version="1.0" encoding="UTF-8"?>
<!--
   Copyright (c) 2007, 2017 IBM Corp. and others

   This program and the accompanying materials are made available under
   the terms of the Eclipse Public License 2.0 which accompanies this
   distribution and is available at https://www.eclipse.org/legal/epl-2.0/
   or the Apache License, Version 2.0 which accompanies this distribution and
   is available at https://www.apache.org/licenses/LICENSE-2.0.

   This Source Code may also be made available under the following
   Secondary Licenses when the conditions for such availability set
   forth in the Eclipse Public License, v. 2.0 are satisfied: GNU
   General Public License, version 2 with the GNU Classpath
   Exception [1] and GNU General Public License, version 2 with the
   OpenJDK Assembly Exception [2].

   [1] https://www.gnu.org/software/classpath/license.html
   [2] http://openjdk.java.net/legal/assembly-exception.html

   SPDX-License-Identifier: EPL-2.0 OR Apache-2.0 OR GPL-2.0 WITH Classpath-exception-2.0 OR LicenseRef-GPL-2.0 WITH Assembly-exception
-->
<xsd:schema 
	xmlns:xsd="http://www.w3.org/2001/XMLSchema"
	targetNamespace="http://www.ibm.com/j9/builder/feature"
	xmlns:tns="http://www.ibm.com/j9/builder/feature"
	elementFormDefault="qualified">

	<xsd:element name="feature" type="tns:featureType" >
		<xsd:annotation>
			<xsd:documentation>Defines a single feature. Used by build specs.</xsd:documentation>
		</xsd:annotation>
	</xsd:element>

	<xsd:complexType name="featureType">
		<xsd:annotation>
			<xsd:documentation>
				A feature is composed of a number of sources and flags. See flags.xsd for the meaning of all flags. 
			</xsd:documentation>
		</xsd:annotation>
		
		<xsd:sequence>
			<xsd:element name="name" type="xsd:string" >
				<xsd:annotation>
					<xsd:documentation>Name of the feature.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			
	    	<xsd:element name="description" type="xsd:string" maxOccurs="1" minOccurs="1">
				<xsd:annotation>
					<xsd:documentation>
						A free text field that describes the purpose of the feature, and specifically indicates 
						what will happen if the feature is activated. This field is intended to help end users
						configure the virtual machine, so please be as verbose as necessary when describing the
						impact of enabling the feature.
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			
			<!-- Compound types go here -->
			<xsd:element name="properties" type="tns:propertiesType" minOccurs="0" maxOccurs="1" >
				<xsd:annotation>
					<xsd:documentation>A list of properties that should have values in any build spec that inherits this feature.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			
			<xsd:element name="source" type="tns:sourceType" >
				<xsd:annotation>
					<xsd:documentation>A list of projects used by this feature.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>

			<xsd:element name="flags" type="tns:flagsType" >
				<xsd:annotation>
					<xsd:documentation>A list of flags used by this feature.</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			
		</xsd:sequence>
		
		<xsd:attribute name="id" type="xsd:ID" use="required" >
			<xsd:annotation>
				<xsd:documentation>Unique Build Spec Identifier</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:complexType>
	
	<xsd:complexType name="propertiesType">
		<xsd:annotation>
			<xsd:documentation>A list of properties that should have values in any build spec that inherits this feature.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence maxOccurs="unbounded" minOccurs="0">
			<xsd:annotation>
				<xsd:documentation>
					A collection of named key-value pairs. 
				</xsd:documentation>
			</xsd:annotation>
			<xsd:sequence maxOccurs="unbounded" minOccurs="0">
				<xsd:element name="requiredProperty" type="tns:propertyType" />
			</xsd:sequence>
		</xsd:sequence>
	</xsd:complexType>
	
	<xsd:complexType name="propertyType">
		<xsd:attribute name="name" type="xsd:ID" use="required"/>
	</xsd:complexType>

	<xsd:complexType name="sourceType">
		<xsd:annotation>
			<xsd:documentation>
				A list of the source projects that form the feature.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence maxOccurs="unbounded" minOccurs="0">
			<xsd:annotation>
				<xsd:documentation>
					A collection of named key-value pairs. 
				</xsd:documentation>
			</xsd:annotation>
			<xsd:sequence maxOccurs="unbounded" minOccurs="0">
				<xsd:element name="project" type="tns:projectType" />
			</xsd:sequence>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="projectType">
		<xsd:annotation>
			<xsd:documentation>
				This node indicates the name of an Eclipse project that will be included in the source
				for a given feature.  
			</xsd:documentation>
		</xsd:annotation>
		<xsd:attribute name="id" type="xsd:ID" use="required"/>
	</xsd:complexType>
	
		
	<xsd:complexType name="flagsType">
		<xsd:annotation>
			<xsd:documentation>A list of Flags.</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence maxOccurs="unbounded" minOccurs="0">
			<xsd:element name="flag" type="tns:flagType" />
		</xsd:sequence>
	</xsd:complexType>
		
	<xsd:complexType name="flagType">
		<xsd:annotation>
			<xsd:documentation>
				A Flag determines what to do to source code controlled by a feature. 
			</xsd:documentation>
		</xsd:annotation>
		<xsd:attribute name="id" type="xsd:ID" use="required"/>
		<xsd:attribute name="value" type="xsd:boolean" use="required"/>
	</xsd:complexType>

</xsd:schema>