KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > objectweb > celtix > bus > configuration > ConfigurationMetadataImplTest


1 package org.objectweb.celtix.bus.configuration;
2
3 import java.io.ByteArrayOutputStream JavaDoc;
4 import java.io.IOException JavaDoc;
5 import java.io.InputStream JavaDoc;
6 import java.io.PrintStream JavaDoc;
7 import java.math.BigInteger JavaDoc;
8 import java.util.Collection JavaDoc;
9 import java.util.List JavaDoc;
10
11 import javax.xml.XMLConstants JavaDoc;
12 import javax.xml.namespace.QName JavaDoc;
13
14 import junit.framework.TestCase;
15
16 import org.objectweb.celtix.configuration.ConfigurationException;
17 import org.objectweb.celtix.configuration.ConfigurationItemMetadata;
18 import org.objectweb.celtix.configuration.ConfigurationItemMetadata.LifecyclePolicy;
19 import org.objectweb.celtix.configuration.ConfigurationMetadata;
20 import org.objectweb.celtix.configuration.impl.ConfigurationMetadataBuilder;
21 import org.objectweb.celtix.configuration.types.StringListType;
22
23
24 public class ConfigurationMetadataImplTest extends TestCase {
25
26     private static final String JavaDoc TYPES_NAMESPACE_URI =
27         "http://celtix.objectweb.org/configuration/types";
28     
29
30     public void testStandardTypes() {
31              
32         ConfigurationMetadata model = buildMetadata("meta1.xml");
33         assertEquals("http://celtix.objectweb.org/configuration/test/meta1",
34                      model.getNamespaceURI());
35         Collection JavaDoc<ConfigurationItemMetadata> definitions = model.getDefinitions();
36         assertEquals(9, definitions.size());
37         ConfigurationItemMetadata definition = null;
38         
39         definition = model.getDefinition("booleanItem");
40         assertNotNull(definition);
41         assertEquals("booleanItem", definition.getName());
42         assertEquals(new QName JavaDoc(XMLConstants.W3C_XML_SCHEMA_NS_URI, "boolean"),
43                      definition.getType());
44         assertEquals(LifecyclePolicy.STATIC, definition.getLifecyclePolicy());
45         
46         definition = model.getDefinition("shortItem");
47         assertNotNull(definition);
48         assertEquals("shortItem", definition.getName());
49         assertEquals(new QName JavaDoc(XMLConstants.W3C_XML_SCHEMA_NS_URI, "short"),
50                      definition.getType());
51         
52         definition = model.getDefinition("intItem");
53         assertNotNull(definition);
54         assertEquals("intItem", definition.getName());
55         assertEquals(new QName JavaDoc(XMLConstants.W3C_XML_SCHEMA_NS_URI, "int"),
56                      definition.getType());
57         
58         definition = model.getDefinition("integerItem");
59         assertNotNull(definition);
60         assertEquals("integerItem", definition.getName());
61         assertEquals(new QName JavaDoc(XMLConstants.W3C_XML_SCHEMA_NS_URI, "integer"),
62                      definition.getType());
63         // assertNull(definition.getDescription());
64
assertEquals(LifecyclePolicy.PROCESS, definition.getLifecyclePolicy());
65         
66         definition = model.getDefinition("longItem");
67         assertNotNull(definition);
68         assertEquals("longItem", definition.getName());
69         assertEquals(new QName JavaDoc(XMLConstants.W3C_XML_SCHEMA_NS_URI, "long"),
70                      definition.getType());
71         // assertEquals(definition.getName() + " description", definition.getDescription());
72
assertEquals(LifecyclePolicy.BUS, definition.getLifecyclePolicy());
73         
74         definition = model.getDefinition("floatItem");
75         assertNotNull(definition);
76         assertEquals("floatItem", definition.getName());
77         assertEquals(new QName JavaDoc(XMLConstants.W3C_XML_SCHEMA_NS_URI, "float"),
78                      definition.getType());
79         
80         definition = model.getDefinition("doubleItem");
81         assertNotNull(definition);
82         assertEquals("doubleItem", definition.getName());
83         assertEquals(new QName JavaDoc(XMLConstants.W3C_XML_SCHEMA_NS_URI, "double"),
84                      definition.getType());
85         // assertEquals(definition.getName() + " description", definition.getDescription());
86
assertEquals(LifecyclePolicy.DYNAMIC, definition.getLifecyclePolicy());
87         
88         definition = model.getDefinition("stringItem");
89         assertNotNull(definition);
90         assertEquals("stringItem", definition.getName());
91         assertEquals(new QName JavaDoc(XMLConstants.W3C_XML_SCHEMA_NS_URI, "string"),
92                      definition.getType());
93         
94         definition = model.getDefinition("stringListItem");
95         assertNotNull(definition);
96         assertEquals("stringListItem", definition.getName());
97         assertEquals(new QName JavaDoc(TYPES_NAMESPACE_URI, "stringListType"),
98                      definition.getType());
99         assertEquals(LifecyclePolicy.STATIC, definition.getLifecyclePolicy());
100         assertNull(definition.getDefaultValue());
101     }
102
103     public void testIllegalQNameInType() {
104         try {
105             buildMetadata("meta2.xml");
106             fail("Expected ConfigurationException not thrown.");
107         } catch (ConfigurationException ex) {
108             assertEquals("ILLEGAL_QNAME_EXC", ex.getCode());
109         }
110     }
111
112     public void testIllegalPrefixInType() {
113         try {
114             buildMetadata("meta3.xml");
115             fail("Expected ConfigurationException not thrown.");
116         } catch (ConfigurationException ex) {
117             assertEquals("ILLEGAL_PREFIX_EXC", ex.getCode());
118         }
119     }
120     
121     public void testUnknownType() {
122         try {
123             buildMetadata("meta4.xml");
124             fail("Expected ConfigurationException not thrown.");
125         } catch (ConfigurationException ex) {
126             assertEquals("TYPE_NOT_DEFINED_IN_NAMESPACE_EXC", ex.getCode());
127         }
128         assertNotNull(buildMetadata("meta4.xml", false));
129     }
130
131     public void testUniqueName() {
132         PrintStream JavaDoc perr = System.err;
133         ByteArrayOutputStream JavaDoc bout = new ByteArrayOutputStream JavaDoc();
134         PrintStream JavaDoc newPerr = new PrintStream JavaDoc(bout);
135         System.setErr(newPerr);
136         try {
137             buildMetadata("meta5.xml");
138             fail("Expected ConfigurationException not thrown.");
139         } catch (ConfigurationException ex) {
140             assertEquals("METADATA_VALIDATION_ERROR_EXC", ex.getCode());
141         } finally {
142             System.setErr(perr);
143         }
144         assertNotNull(buildMetadata("meta5.xml", false));
145     }
146
147     public void testInvalidTypeInDefaultValue() {
148         try {
149             buildMetadata("meta6.xml");
150             fail("Expected ConfigurationException not thrown.");
151         } catch (ConfigurationException ex) {
152             assertEquals("INVALID_TYPE_FOR_DEFAULT_VALUE_EXC", ex.getCode());
153         }
154     }
155
156     public void testIllegalDefaultValue() {
157
158         try {
159             buildMetadata("meta7.xml");
160             fail("Expected ConfigurationException not thrown.");
161         } catch (ConfigurationException ex) {
162             // assertEquals("INVALID_DEFAULT_VALUE_EXC", ex.getCode());
163
assertEquals("DEFAULT_VALUE_UNMARSHAL_ERROR_EXC", ex.getCode());
164         }
165         assertNotNull(buildMetadata("meta7.xml", false));
166     }
167     
168     public void testDefaultValue() {
169         ConfigurationMetadata model = buildMetadata("meta8.xml");
170         Collection JavaDoc<ConfigurationItemMetadata> definitions = model.getDefinitions();
171         assertEquals(9, definitions.size());
172         
173         ConfigurationItemMetadata definition = null;
174         Object JavaDoc defaultValue = null;
175        
176         definition = model.getDefinition("booleanItem");
177         defaultValue = definition.getDefaultValue();
178         assertNotNull(defaultValue);
179         assertEquals("java.lang.Boolean", defaultValue.getClass().getName());
180         assertEquals(true, ((Boolean JavaDoc)defaultValue).booleanValue());
181         
182         definition = model.getDefinition("integerItem");
183         defaultValue = definition.getDefaultValue();
184         assertNotNull(defaultValue);
185         assertEquals("java.math.BigInteger", defaultValue.getClass().getName());
186         assertEquals(44959, ((BigInteger JavaDoc)defaultValue).intValue());
187         
188         definition = model.getDefinition("longItem");
189         defaultValue = definition.getDefaultValue();
190         assertNotNull(defaultValue);
191         assertEquals("java.lang.Long", defaultValue.getClass().getName());
192         assertEquals(-99, ((Long JavaDoc)defaultValue).longValue());
193         
194         definition = model.getDefinition("doubleItem");
195         defaultValue = definition.getDefaultValue();
196         assertNotNull(defaultValue);
197         assertEquals("java.lang.Double", defaultValue.getClass().getName());
198         assertTrue(Math.abs(1234.5678 - ((Double JavaDoc)defaultValue).doubleValue()) < 0.5E-5);
199         
200         definition = model.getDefinition("stringItem");
201         defaultValue = definition.getDefaultValue();
202         assertNotNull(defaultValue);
203         assertEquals("java.lang.String", defaultValue.getClass().getName());
204         assertEquals("\"Hello World!\"", (String JavaDoc)defaultValue);
205         
206         definition = model.getDefinition("stringListItem");
207         defaultValue = definition.getDefaultValue();
208         assertNotNull(defaultValue);
209
210         assertEquals("org.objectweb.celtix.configuration.types.StringListType",
211                      defaultValue.getClass().getName());
212         List JavaDoc<String JavaDoc> l = ((StringListType)defaultValue).getItem();
213         assertNotNull(l);
214         assertEquals(3, l.size());
215         assertEquals("a", l.get(0));
216         assertEquals("b", l.get(1));
217         assertEquals("c", l.get(2));
218     }
219    
220     private ConfigurationMetadata buildMetadata(String JavaDoc filename) {
221         return buildMetadata(filename, true);
222     }
223     
224     private ConfigurationMetadata buildMetadata(String JavaDoc filename, boolean doValidate) {
225         InputStream JavaDoc is = getClass().getResourceAsStream("resources/" + filename);
226         ConfigurationMetadataBuilder builder = new ConfigurationMetadataBuilder(true);
227         builder.setValidation(doValidate);
228         try {
229             return builder.build(is);
230         } catch (IOException JavaDoc ex) {
231             return null;
232         }
233     }
234     
235
236 }
237
Popular Tags