| # ConfigFile as API |
| |
| The ConfigFile as API is a formal Treble interface describing schemas of |
| configuration files used across system and vendor partitions. |
| The Java APIs in the current.txt file are not Java APIs for apps. It's a proxy |
| for the schema of a xml file used between the system and vendor partition. |
| The xml files are only ever parsed by apps on the system partition. |
| |
| ## Add Schema |
| Add the schema (attribute, element or new complexType …) you want to add to the |
| xsd file. |
| |
| #### before |
| ```xml |
| <xs:element name="class"> |
| <xs:complexType> |
| <xs:sequence> |
| <xs:element name="student" type="xs:string"/> |
| </xs:sequence> |
| <xs:attribute name="name" type=”xs:string”/> |
| </xs:complexType> |
| </xs:element> |
| ``` |
| |
| #### after |
| ```xml |
| <xs:element name="class"> |
| <xs:complexType> |
| <xs:sequence> |
| <xs:element name="student" type="xs:string"/> |
| </xs:sequence> |
| <xs:attribute name="name" type=”xs:string”/> |
| <xs:attribute name="number" type="xs:int"/> |
| </xs:complexType> |
| </xs:element> |
| ``` |
| |
| Then run "make {xsd_config module_name} .docs-update-current-api" or "make |
| update-api" to update all the xsd_config modules. |
| |
| In the above example, two functions are added as below. |
| * method public int getNumber(); |
| * method public void setNumber(int); |
| |
| ## Remove Schema |
| To remove a tag, add an annotation tag with the name of "Deprecated" into the |
| tag to be deleted. Partners are not allowed to create new vendor images using |
| deprecated tags |
| |
| #### before |
| ```xml |
| <xs:element name="class"> |
| <xs:complexType> |
| <xs:sequence> |
| <xs:element name="student" type="xs:string"/> |
| </xs:sequence> |
| <xs:attribute name="name" type=”xs:string”/> |
| </xs:complexType> |
| </xs:element> |
| ``` |
| |
| #### after |
| ```xml |
| <xs:element name="class"> |
| <xs:complexType> |
| <xs:sequence> |
| <xs:element name="student" type="xs:string"> |
| <annotation name=”Deprecated”/> |
| </xs:element> |
| </xs:sequence> |
| <xs:attribute name="name" type=”xs:string”/> |
| </xs:complexType> |
| </xs:element> |
| ``` |
| |
| After adding “Deprecated” annotation, we need to update the api or schema just |
| like when adding a tag. In the above example, a @Deprecate annotation is added. |
| * method @Deprecated public java.util.List<java.lang.String> getStudent(); |
| After 2 years we can delete the tag. When deleting, delete the tag in the xsd |
| file and the api in last_current.txt, and update it. |
| |
| ## Release Schema |
| If there are any changes, we update last_current.txt and last_removed.txt before |
| release by copying current.txt and removed.txt to last_current.txt and |
| last_removed.txt. |
| |
| ## Supported/Unsupported Tags |
| Only the follow tags and attributes are allowed: |
| |
| #### Supported |
| ```xml |
| "xsd:schema" [ |
| ] |
| |
| "xsd:element" [ |
| "xsd:name" { |
| values: any valid java name |
| } |
| "xsd:type" { |
| values: built-in data type, simpleType or complexType |
| }, |
| "xsd:ref" { |
| values: another element |
| }, |
| "xsd:minOccurs" { |
| values: [ 0, maxOccurs ] |
| }, |
| "xsd:maxOccurs" { |
| values: [ 1, unbounded ] |
| }, |
| ] |
| |
| "xsd:attribute" [ |
| "xsd:name" { |
| values: any valid java name |
| } |
| "xsd:type" { |
| values: built-in data type, simpleType or complexType |
| }, |
| "xsd:ref" { |
| values: another element |
| }, |
| ] |
| |
| "xsd:complexType" [ |
| "xsd:name" { |
| values: any valid java name |
| } |
| ] |
| |
| "xsd:complexContent" [ |
| ] |
| |
| "xsd:simpleContent" [ |
| ] |
| |
| "xsd:restriction": [ |
| "xsd:base" { |
| values: built-in data type |
| } |
| ] |
| |
| "xsd:extension": [ |
| "xsd:base" { |
| values: built-in data type, simpleType or complexType |
| } |
| ] |
| |
| "xsd:simpleType": [ |
| "xsd:name" { |
| values: any valid java name |
| } |
| ] |
| |
| "xsd:list": [ |
| "xsd:itemType" { |
| values: built-in data type, or simpleType |
| } |
| ] |
| |
| "xsd:union": [ |
| "xsd:memberTypes" { |
| values: built-in data type, or simpleType |
| } |
| ] |
| |
| "xsd:sequence": [ |
| ] |
| |
| "xsd:choice": [ |
| ] |
| |
| "xsd:all": [ |
| ] |
| |
| "xsd:enumeration": [ |
| "xsd:value" { |
| values: built-in data type |
| } |
| ] |
| ``` |