1 /** 2 * Copyright (c) 2008, http://www.snakeyaml.org 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package examples.staticstate; 17 18 import junit.framework.TestCase; 19 20 import org.yaml.snakeyaml.TypeDescription; 21 import org.yaml.snakeyaml.Yaml; 22 import org.yaml.snakeyaml.constructor.Constructor; 23 import org.yaml.snakeyaml.nodes.Tag; 24 import org.yaml.snakeyaml.representer.Representer; 25 26 /** 27 * Example: using wrapper object for static fields 28 */ 29 public class StaticFieldsWrapperTest extends TestCase { 30 31 /** 32 * use wrapper with global tag 33 */ testWrapper()34 public void testWrapper() { 35 JavaBeanWithStaticState bean = new JavaBeanWithStaticState(); 36 bean.setName("Bahrack"); 37 bean.setAge(-47); 38 JavaBeanWithStaticState.setType("Type3"); 39 JavaBeanWithStaticState.color = "Violet"; 40 Yaml yaml = new Yaml(); 41 String output = yaml.dump(new Wrapper(bean)); 42 // System.out.println(output); 43 assertEquals( 44 "!!examples.staticstate.Wrapper {age: -47, color: Violet, name: Bahrack, type: Type3}\n", 45 output); 46 // parse back to instance 47 Wrapper wrapper = (Wrapper) yaml.load(output); 48 JavaBeanWithStaticState bean2 = wrapper.createBean(); 49 assertEquals(-47, bean2.getAge()); 50 assertEquals("Bahrack", bean2.getName()); 51 } 52 53 /** 54 * use wrapper with local tag 55 */ testLocalTag()56 public void testLocalTag() { 57 JavaBeanWithStaticState bean = new JavaBeanWithStaticState(); 58 bean.setName("Bahrack"); 59 bean.setAge(-47); 60 JavaBeanWithStaticState.setType("Type3"); 61 JavaBeanWithStaticState.color = "Violet"; 62 Representer repr = new Representer(); 63 repr.addClassTag(Wrapper.class, new Tag("!mybean")); 64 Yaml yaml = new Yaml(repr); 65 String output = yaml.dump(new Wrapper(bean)); 66 // System.out.println(output); 67 assertEquals("!mybean {age: -47, color: Violet, name: Bahrack, type: Type3}\n", output); 68 // parse back to instance 69 Constructor constr = new Constructor(); 70 TypeDescription description = new TypeDescription(Wrapper.class, new Tag("!mybean")); 71 constr.addTypeDescription(description); 72 yaml = new Yaml(constr); 73 Wrapper wrapper = (Wrapper) yaml.load(output); 74 JavaBeanWithStaticState bean2 = wrapper.createBean(); 75 assertEquals(-47, bean2.getAge()); 76 assertEquals("Bahrack", bean2.getName()); 77 } 78 79 /** 80 * use wrapper with no tag 81 */ testRootBean()82 public void testRootBean() { 83 JavaBeanWithStaticState bean = new JavaBeanWithStaticState(); 84 bean.setName("Bahrack"); 85 bean.setAge(-47); 86 JavaBeanWithStaticState.setType("Type3"); 87 JavaBeanWithStaticState.color = "Violet"; 88 Yaml yaml = new Yaml(); 89 String output = yaml.dumpAsMap(new Wrapper(bean)); 90 // System.out.println(output); 91 assertEquals("age: -47\ncolor: Violet\nname: Bahrack\ntype: Type3\n", output); 92 // parse back to instance 93 Yaml loader = new Yaml(); 94 Wrapper wrapper = loader.loadAs(output, Wrapper.class); 95 JavaBeanWithStaticState bean2 = wrapper.createBean(); 96 assertEquals(-47, bean2.getAge()); 97 assertEquals("Bahrack", bean2.getName()); 98 } 99 100 } 101