Example usage for com.fasterxml.jackson.dataformat.yaml YAMLParser close

List of usage examples for com.fasterxml.jackson.dataformat.yaml YAMLParser close

Introduction

In this page you can find the example usage for com.fasterxml.jackson.dataformat.yaml YAMLParser close.

Prototype

@Override
    public void close() throws IOException 

Source Link

Usage

From source file:pl.betoncraft.betonquest.editor.model.PackageSet.java

private static PackageSet parseStreams(String setName, HashMap<String, HashMap<String, InputStream>> streamMap)
        throws IOException {
    PackageSet set = new PackageSet(setName);
    for (Entry<String, HashMap<String, InputStream>> entry : streamMap.entrySet()) {
        String packName = entry.getKey();
        HashMap<String, LinkedHashMap<String, String>> values = new LinkedHashMap<>();
        for (Entry<String, InputStream> subEntry : entry.getValue().entrySet()) {
            String name = subEntry.getKey();
            InputStream stream = subEntry.getValue();
            YAMLParser parser = new YAMLFactory().createParser(stream);
            String currentPath = "";
            String fieldName = "";
            while (true) {
                JsonToken token = parser.nextToken();
                if (token == null)
                    break;
                switch (token) {
                case START_OBJECT:
                    currentPath = currentPath + fieldName + ".";
                    break;
                case FIELD_NAME:
                    fieldName = parser.getText();
                    break;
                case END_OBJECT:
                    currentPath = currentPath.substring(0,
                            currentPath.substring(0, currentPath.length() - 1).lastIndexOf(".") + 1);
                    break;
                case VALUE_STRING:
                case VALUE_NUMBER_INT:
                case VALUE_NUMBER_FLOAT:
                case VALUE_FALSE:
                case VALUE_TRUE:
                    String key = (currentPath + fieldName).substring(1,
                            currentPath.length() + fieldName.length());
                    LinkedHashMap<String, String> map = values.get(name);
                    if (map == null) {
                        map = new LinkedHashMap<>();
                        values.put(name, map);
                    }/*  w w  w  .j  a v  a 2  s .  c o m*/
                    map.put(key, parser.getText());
                default:
                    // do nothing
                }
            }
            parser.close();
            stream.close();
        }
        QuestPackage pack = new QuestPackage(set, packName, values);
        set.packages.add(pack);
    }
    return set;
}