View Javadoc

1   /**
2    * Copyright (c) 2008-2012, 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 org.yaml.snakeyaml.issues.issue48;
17  
18  import junit.framework.TestCase;
19  
20  import org.yaml.snakeyaml.Yaml;
21  import org.yaml.snakeyaml.introspector.Property;
22  import org.yaml.snakeyaml.nodes.NodeTuple;
23  import org.yaml.snakeyaml.nodes.Tag;
24  import org.yaml.snakeyaml.representer.Representer;
25  
26  public class SkipJavaBeanPropertyTest extends TestCase {
27      public void testWithNull() {
28          Bean bean = new Bean();
29          bean.setValue(3);
30          Yaml yaml = new Yaml();
31          String output = yaml.dumpAsMap(bean);
32          // System.out.println(output);
33          assertEquals("name: null\nvalue: 3\n", output);
34      }
35  
36      public void testWithoutNull() {
37          Bean bean = new Bean();
38          bean.setValue(5);
39          Yaml yaml = new Yaml(new MyRepresenter());
40          String output = yaml.dumpAsMap(bean);
41          // System.out.println(output);
42          assertEquals("value: 5\n", output);
43      }
44  
45      private class MyRepresenter extends Representer {
46          @Override
47          protected NodeTuple representJavaBeanProperty(Object bean, Property property, Object value,
48                  Tag customTag) {
49              if (value != null) {
50                  return super.representJavaBeanProperty(bean, property, value, customTag);
51              } else {
52                  return null;
53              }
54          }
55      }
56  }