##### Coverage Report - org.yaml.snakeyaml.TypeDescription

Classes in this File | Line Coverage | Branch Coverage | Complexity
TypeDescription |
100% | 26/26
N/A | N/A
| 1.0;1

1 |  |
     /**
2 |  |
      * Copyright (c) 2008-2011, 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 |  |
17 |  |
     package org.yaml.snakeyaml;
18 |  |
19 |  |
     import java.util.HashMap;
20 |  |
     import java.util.Map;
21 |  |
22 |  |
     import org.yaml.snakeyaml.nodes.Tag;
23 |  |
24 |  |
     /**
25 |  |
      * Provides additional runtime information necessary to create a custom Java
26 |  |
      * instance.
27 |  |
      */
28 |  |
     public final class TypeDescription {
29 |  |
         private final Class<? extends Object> type;
30 |  |
         private Tag tag;
31 |  |
         private Map<String, Class<? extends Object>> listProperties;
32 |  |
         private Map<String, Class<? extends Object>> keyProperties;
33 |  |
         private Map<String, Class<? extends Object>> valueProperties;
34 |  |
35 | 7974 |
         public TypeDescription(Class<? extends Object> clazz, Tag tag) {
36 | 7974 |
             this.type = clazz;
37 | 7974 |
             this.tag = tag;
38 | 7974 |
             listProperties = new HashMap<String, Class<? extends Object>>();
39 | 7974 |
             keyProperties = new HashMap<String, Class<? extends Object>>();
40 | 7974 |
             valueProperties = new HashMap<String, Class<? extends Object>>();
41 | 7974 |
         }
42 |  |
43 |  |
         public TypeDescription(Class<? extends Object> clazz, String tag) {
44 | 23 |
             this(clazz, new Tag(tag));
45 | 23 |
         }
46 |  |
47 |  |
         public TypeDescription(Class<? extends Object> clazz) {
48 | 7947 |
             this(clazz, (Tag) null);
49 | 7947 |
         }
50 |  |
51 |  |
         /**
52 |  |
          * Get tag which shall be used to load or dump the type (class).
53 |  |
          *
54 |  |
          * @return tag to be used. It may be a tag for Language-Independent Types
55 |  |
          *         (http://www.yaml.org/type/)
56 |  |
          */
57 |  |
         public Tag getTag() {
58 | 4011 |
             return tag;
59 |  |
         }
60 |  |
61 |  |
         /**
62 |  |
          * Set tag to be used to load or dump the type (class).
63 |  |
          *
64 |  |
          * @param tag
65 |  |
          *            local or global tag
66 |  |
          */
67 |  |
         public void setTag(Tag tag) {
68 | 2 |
             this.tag = tag;
69 | 2 |
         }
70 |  |
71 |  |
         public void setTag(String tag) {
72 | 1 |
             setTag(new Tag(tag));
73 | 1 |
         }
74 |  |
75 |  |
         /**
76 |  |
          * Get represented type (class)
77 |  |
          *
78 |  |
          * @return type (class) to be described.
79 |  |
          */
80 |  |
         public Class<? extends Object> getType() {
81 | 12036 |
             return type;
82 |  |
         }
83 |  |
84 |  |
         /**
85 |  |
          * Specify that the property is a type-safe <code>List</code>.
86 |  |
          *
87 |  |
          * @param property
88 |  |
          *            name of the JavaBean property
89 |  |
          * @param type
90 |  |
          *            class of List values
91 |  |
          */
92 |  |
         public void putListPropertyType(String property, Class<? extends Object> type) {
93 | 10 |
             listProperties.put(property, type);
94 | 10 |
         }
95 |  |
96 |  |
         /**
97 |  |
          * Get class of List values for provided JavaBean property.
98 |  |
          *
99 |  |
          * @param property
100 |  |
          *            property name
101 |  |
          * @return class of List values
102 |  |
          */
103 |  |
         public Class<? extends Object> getListPropertyType(String property) {
104 | 47 |
             return listProperties.get(property);
105 |  |
         }
106 |  |
107 |  |
         /**
108 |  |
          * Specify that the property is a type-safe <code>Map</code>.
109 |  |
          *
110 |  |
          * @param property
111 |  |
          *            property name of this JavaBean
112 |  |
          * @param key
113 |  |
          *            class of keys in Map
114 |  |
          * @param value
115 |  |
          *            class of values in Map
116 |  |
          */
117 |  |
         public void putMapPropertyType(String property, Class<? extends Object> key,
118 |  |
                 Class<? extends Object> value) {
119 | 9 |
             keyProperties.put(property, key);
120 | 9 |
             valueProperties.put(property, value);
121 | 9 |
         }
122 |  |
123 |  |
         /**
124 |  |
          * Get keys type info for this JavaBean
125 |  |
          *
126 |  |
          * @param property
127 |  |
          *            property name of this JavaBean
128 |  |
          * @return class of keys in the Map
129 |  |
          */
130 |  |
         public Class<? extends Object> getMapKeyType(String property) {
131 | 152 |
             return keyProperties.get(property);
132 |  |
         }
133 |  |
134 |  |
         /**
135 |  |
          * Get values type info for this JavaBean
136 |  |
          *
137 |  |
          * @param property
138 |  |
          *            property name of this JavaBean
139 |  |
          * @return class of values in the Map
140 |  |
          */
141 |  |
         public Class<? extends Object> getMapValueType(String property) {
142 | 27 |
             return valueProperties.get(property);
143 |  |
         }
144 |  |
145 |  |
         @Override
146 |  |
         public String toString() {
147 | 1 |
             return "TypeDescription for " + getType() + " (tag='" + getTag() + "')";
148 |  |
         }
149 |  |
     }