# Apache Tamaya — Extension: Builder

## Tamaya YAML (Extension Module)

### Overview

The Tamaya YAML module provides support for reading configuration using the YAML format (yaml.org). YAML hereby use intendation for expressing hierarchy, which makes yaml configuration files very easily readable and compact.

### Compatibility

The YAML module is based on Java 7, so it will not run on Java 7 and beyond.

### Installation

To benefit from configuration builder support you only must add the corresponding dependency to your module:

    <dependency>
      <groupId>org.apache.tamaya.ext</groupId>
      <artifactId>tamaya-yaml</artifactId>
      <version>{tamayaVersion}</version>
    </dependency>

### Reading configuration in YAML

For reading YAML based onfiguration most easily a YAMLFormat can be provided:

    ConfigurationData dataRead = ConfigurationFormats.readConfig(
        getClassLoader().getResource("myFileConfig.yaml"), new YAMLFormat()));

### Examples

The YAML module adds instances of ConfigurationFormat so YAML configuration can be read and mapped to the according property values. E.g. the following file is a simple and correct YAML configuration:

    invoice: 34843
    date   : 2001-01-23
    bill-to: &id001
        given  : Chris
        family : Dumars
        address:
            lines: |
                458 Walkman Dr.
                Suite #292
            city    : Royal Oak
            state   : MI
            postal  : 48046
    ship-to: *id001
    product:
        - sku         : BL394D
          quantity    : 4
          description : Basketball
          price       : 450.00
        - sku         : BL4438H
          quantity    : 1
          description : Super Hoop
          price       : 2392.00
    tax  : 251.42
    total: 4443.52
    comments:
        Late afternoon is best.
        Backup contact is Nancy
        Billsmer @ 338-4338.

Hereby the above file, by default is mapped as follows into Map<String,String> typed properties:

    invoice -> 34843
    date -> Tue Jan 23 01:00:00 CET 2001
    bill-to.family -> Dumars
    bill-to.given -> Chris
    bill-to.address.state -> MI
    bill-to.address.postal -> 48046
    bill-to.address.city -> Royal Oak
    bill-to.address.lines -> 458 Walkman Dr.
    Suite #292

    ship-to.given -> Chris
    ship-to.address.state -> MI
    ship-to.family -> Dumars
    ship-to.address.postal -> 48046
    ship-to.address.city -> Royal Oak
    ship-to.address.lines -> 458 Walkman Dr.
    Suite #292

    product -> {sku=BL394D, quantity=4, description=Basketball, price=450.0},{sku=BL4438H, quantity=1, description=Super Hoop, price=2392.0}
    _product.collection-type -> List

    tax -> 251.42
    total -> 4443.52
    comments -> Late afternoon is best. Backup contact is Nancy Billsmer @ 338-4338.