1b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov/** 211a89b445f3bde56bf07e6a0d04f0b0256dcb215Andrey Somov * Copyright (c) 2008, http://www.snakeyaml.org 3b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * 4b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * Licensed under the Apache License, Version 2.0 (the "License"); 5b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * you may not use this file except in compliance with the License. 6b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * You may obtain a copy of the License at 7b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * 8b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * http://www.apache.org/licenses/LICENSE-2.0 9b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * 10b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * Unless required by applicable law or agreed to in writing, software 11b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * distributed under the License is distributed on an "AS IS" BASIS, 12b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * See the License for the specific language governing permissions and 14b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * limitations under the License. 15b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov */ 16b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovpackage examples.collections; 17b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 18b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport java.util.ArrayList; 19b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport java.util.List; 20b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 21b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport junit.framework.TestCase; 22b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 23b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport org.yaml.snakeyaml.Util; 24b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovimport org.yaml.snakeyaml.Yaml; 25b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 26b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov/** 27b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * Test public field ListBean->List<Developer> developers <br/> 28b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov * Developer class must be properly recognised 29b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov */ 30b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somovpublic class ListFileldBeanTest extends TestCase { 31b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void testDumpList() { 32b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov ListFieldBean bean = new ListFieldBean(); 33b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov List<String> list = new ArrayList<String>(); 34b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov list.add("aaa"); 35b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov list.add("bbb"); 36b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov bean.setChildren(list); 37b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov List<Developer> developers = new ArrayList<Developer>(); 38b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov developers.add(new Developer("Fred", "creator")); 39b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov developers.add(new Developer("John", "committer")); 40b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov bean.developers = developers; 41b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov bean.setName("Bean123"); 42b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Yaml yaml = new Yaml(); 43b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String output = yaml.dumpAsMap(bean); 44b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // System.out.println(output); 45b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String etalon = Util.getLocalResource("examples/list-bean-1.yaml"); 46b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(etalon, output); 47b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 48b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 49b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void testLoadList() { 50b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov String output = Util.getLocalResource("examples/list-bean-1.yaml"); 51b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov // System.out.println(output); 52b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Yaml beanLoader = new Yaml(); 53b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov ListFieldBean parsed = beanLoader.loadAs(output, ListFieldBean.class); 54b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertNotNull(parsed); 55b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov List<String> list2 = parsed.getChildren(); 56b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(2, list2.size()); 57b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("aaa", list2.get(0)); 58b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("bbb", list2.get(1)); 59b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov List<Developer> developers = parsed.developers; 60b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals(2, developers.size()); 61b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("Developer must be recognised.", Developer.class, developers.get(0).getClass()); 62b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov Developer fred = developers.get(0); 63b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("Fred", fred.getName()); 64b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov assertEquals("creator", fred.getRole()); 65b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 66b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 67b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public static class ListFieldBean { 68b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov private List<String> children; 69b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov private String name; 70b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public List<Developer> developers; 71b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 72b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public ListFieldBean() { 73b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov name = "Bean456"; 74b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 75b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 76b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public List<String> getChildren() { 77b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov return children; 78b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 79b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 80b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void setChildren(List<String> children) { 81b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov this.children = children; 82b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 83b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 84b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public String getName() { 85b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov return name; 86b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 87b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 88b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void setName(String name) { 89b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov this.name = name; 90b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 91b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 92b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 93b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public static class Developer { 94b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov private String name; 95b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov private String role; 96b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 97b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public Developer() { 98b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 99b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 100b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public Developer(String name, String role) { 101b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov this.name = name; 102b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov this.role = role; 103b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 104b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 105b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public String getName() { 106b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov return name; 107b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 108b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 109b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void setName(String name) { 110b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov this.name = name; 111b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 112b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 113b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public String getRole() { 114b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov return role; 115b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 116b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov 117b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov public void setRole(String role) { 118b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov this.role = role; 119b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 120b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov } 121b5f4ec3dfb1a49968ebcc1243da10af9a2dc54a2Andrey Somov} 122