KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > codehaus > dna > impl > ConfigurationUtilTestCase


1 /*
2  * Copyright (C) The DNA Group. All rights reserved.
3  *
4  * This software is published under the terms of the DNA
5  * Software License version 1.1, a copy of which has been included
6  * with this distribution in the LICENSE.txt file.
7  */

8 package org.codehaus.dna.impl;
9
10 import java.io.StringReader JavaDoc;
11 import java.lang.reflect.Proxy JavaDoc;
12 import javax.xml.parsers.DocumentBuilder JavaDoc;
13 import javax.xml.parsers.DocumentBuilderFactory JavaDoc;
14 import javax.xml.parsers.ParserConfigurationException JavaDoc;
15 import javax.xml.transform.sax.SAXResult JavaDoc;
16 import junit.framework.TestCase;
17
18 import org.codehaus.dna.Configuration;
19 import org.codehaus.dna.impl.ConfigurationUtil;
20 import org.codehaus.dna.impl.DefaultConfiguration;
21 import org.w3c.dom.Comment JavaDoc;
22 import org.w3c.dom.Document JavaDoc;
23 import org.w3c.dom.Element JavaDoc;
24 import org.w3c.dom.NamedNodeMap JavaDoc;
25 import org.w3c.dom.Node JavaDoc;
26 import org.w3c.dom.NodeList JavaDoc;
27 import org.w3c.dom.Text JavaDoc;
28 import org.xml.sax.ContentHandler JavaDoc;
29 import org.xml.sax.InputSource JavaDoc;
30
31 public class ConfigurationUtilTestCase
32     extends TestCase
33 {
34     private static final String JavaDoc DOC_FACTORY = "javax.xml.parsers.DocumentBuilderFactory";
35
36     public void testToElementWithBasicConfiguration()
37         throws Exception JavaDoc
38     {
39         final String JavaDoc name = "meep";
40         final DefaultConfiguration configuration = new DefaultConfiguration( name, "", "" );
41         final Element JavaDoc element = ConfigurationUtil.toElement( configuration );
42         assertEquals( "element.getNodeName()", name, element.getNodeName() );
43
44         final NodeList JavaDoc nodeList = element.getChildNodes();
45         assertEquals( "nodeList.getLength()", 0, nodeList.getLength() );
46
47         final NamedNodeMap JavaDoc attributes = element.getAttributes();
48         assertEquals( "attributes.getLength()", 0, attributes.getLength() );
49     }
50
51     public void testToElementWithConfigurationWithValue()
52         throws Exception JavaDoc
53     {
54         final String JavaDoc name = "meep";
55         final String JavaDoc value = "blah";
56         final DefaultConfiguration configuration = new DefaultConfiguration( name, "", "" );
57         configuration.setValue( value );
58         final Element JavaDoc element = ConfigurationUtil.toElement( configuration );
59         assertEquals( "element.getNodeName()", name, element.getNodeName() );
60
61         final NodeList JavaDoc nodeList = element.getChildNodes();
62         assertEquals( "nodeList.getLength()", 1, nodeList.getLength() );
63         final Node JavaDoc node = nodeList.item( 0 );
64         assertEquals( "element[0].value", value, node.getNodeValue() );
65
66         final NamedNodeMap JavaDoc attributes = element.getAttributes();
67         assertEquals( "attributes.getLength()", 0, attributes.getLength() );
68     }
69
70     public void testToElementWithConfigurationWithAttributes()
71         throws Exception JavaDoc
72     {
73         final String JavaDoc name = "meep";
74         final String JavaDoc key = "key";
75         final String JavaDoc value = "value";
76
77         final DefaultConfiguration configuration = new DefaultConfiguration( name, "", "" );
78         configuration.setAttribute( key, value );
79
80         final Element JavaDoc element = ConfigurationUtil.toElement( configuration );
81         assertEquals( "element.getNodeName()", name, element.getNodeName() );
82
83         final NodeList JavaDoc nodeList = element.getChildNodes();
84         assertEquals( "nodeList.getLength()", 0, nodeList.getLength() );
85
86         final NamedNodeMap JavaDoc attributes = element.getAttributes();
87         assertEquals( "attributes.getLength()", 1, attributes.getLength() );
88         final Node JavaDoc node = attributes.item( 0 );
89         assertEquals( "attribute[0].name", key, node.getNodeName() );
90         assertEquals( "attribute[0].value", value, node.getNodeValue() );
91     }
92
93     public void testToElementWithConfigurationWithChildren()
94         throws Exception JavaDoc
95     {
96         final String JavaDoc name = "meep";
97         final String JavaDoc childName = "moop";
98
99         final DefaultConfiguration configuration = new DefaultConfiguration( name, "", "" );
100         final DefaultConfiguration child = new DefaultConfiguration( childName, "", "" );
101         configuration.addChild( child );
102
103         final Element JavaDoc element = ConfigurationUtil.toElement( configuration );
104         assertEquals( "element.getNodeName()", name, element.getNodeName() );
105
106         final NodeList JavaDoc nodeList = element.getChildNodes();
107         assertEquals( "nodeList.getLength()", 1, nodeList.getLength() );
108         final Node JavaDoc node = nodeList.item( 0 );
109         assertEquals( "element[0].name", childName, node.getNodeName() );
110
111         final NamedNodeMap JavaDoc attributes = element.getAttributes();
112         assertEquals( "attributes.getLength()", 0, attributes.getLength() );
113
114     }
115
116     public void testToElementWithSevereError()
117         throws Exception JavaDoc
118     {
119         final String JavaDoc name = "meep";
120         final DefaultConfiguration configuration = new DefaultConfiguration( name, "", "" );
121
122         final String JavaDoc property = System.getProperty( DOC_FACTORY );
123         try
124         {
125             System.setProperty( "javax.xml.parsers.DocumentBuilderFactory",
126                                 "I dont exist!!!" );
127             ConfigurationUtil.toElement( configuration );
128         }
129         catch( final IllegalStateException JavaDoc ise )
130         {
131             return;
132         }
133         finally
134         {
135             if( null != property )
136             {
137                 System.setProperty( DOC_FACTORY, property );
138             }
139             else
140             {
141                 System.getProperties().remove( DOC_FACTORY );
142             }
143         }
144         fail( "Expected to fail to create element as " +
145               "invlaid document factory property" );
146     }
147
148     public void testToConfigurationFromBasicElement()
149         throws Exception JavaDoc
150     {
151         final Document JavaDoc document = createDocument();
152         final String JavaDoc name = "meep";
153         final Element JavaDoc element = document.createElement( name );
154         final Configuration configuration = ConfigurationUtil.toConfiguration( element );
155
156         assertEquals( "configuration.getName()", name, configuration.getName() );
157         assertEquals( "configuration.getPath()",
158                       ConfigurationUtil.ROOT_PATH,
159                       configuration.getPath() );
160         assertEquals( "configuration.getLocation()",
161                       "dom-gen",
162                       configuration.getLocation() );
163     }
164
165     public void testToConfigurationFromElementWithValue()
166         throws Exception JavaDoc
167     {
168         final Document JavaDoc document = createDocument();
169         final String JavaDoc name = "meep";
170         final String JavaDoc value = "text";
171         final Element JavaDoc element = document.createElement( name );
172         final Text JavaDoc text = document.createTextNode( value );
173         element.appendChild( text );
174         final Configuration configuration = ConfigurationUtil.toConfiguration( element );
175
176         assertEquals( "configuration.getName()", name, configuration.getName() );
177         assertEquals( "configuration.getPath()",
178                       ConfigurationUtil.ROOT_PATH,
179                       configuration.getPath() );
180         assertEquals( "configuration.getLocation()",
181                       "dom-gen",
182                       configuration.getLocation() );
183         assertEquals( "configuration.getValue()",
184                       value,
185                       configuration.getValue() );
186     }
187
188     public void testToConfigurationFromElementWithMultipleValueFragments()
189         throws Exception JavaDoc
190     {
191         final Document JavaDoc document = createDocument();
192         final String JavaDoc name = "meep";
193         final String JavaDoc value = "text";
194         final Element JavaDoc element = document.createElement( name );
195         final Text JavaDoc text = document.createTextNode( value );
196         element.appendChild( text );
197         final Text JavaDoc text2 = document.createTextNode( value );
198         element.appendChild( text2 );
199         final Configuration configuration = ConfigurationUtil.toConfiguration( element );
200
201         assertEquals( "configuration.getName()", name, configuration.getName() );
202         assertEquals( "configuration.getPath()",
203                       ConfigurationUtil.ROOT_PATH,
204                       configuration.getPath() );
205         assertEquals( "configuration.getLocation()",
206                       "dom-gen",
207                       configuration.getLocation() );
208         assertEquals( "configuration.getValue()",
209                       value + value,
210                       configuration.getValue() );
211     }
212
213     public void testToConfigurationFromElementWithInternalComment()
214         throws Exception JavaDoc
215     {
216         final Document JavaDoc document = createDocument();
217         final String JavaDoc name = "meep";
218         final Element JavaDoc element = document.createElement( name );
219         final Comment JavaDoc comment = document.createComment( "comment" );
220         element.appendChild( comment );
221         final Configuration configuration = ConfigurationUtil.toConfiguration( element );
222
223         assertEquals( "configuration.getName()", name, configuration.getName() );
224         assertEquals( "configuration.getPath()",
225                       ConfigurationUtil.ROOT_PATH,
226                       configuration.getPath() );
227         assertEquals( "configuration.getLocation()",
228                       "dom-gen",
229                       configuration.getLocation() );
230         assertEquals( "configuration.getValue()",
231                       null,
232                       configuration.getValue( null ) );
233     }
234
235     public void testToConfigurationFromElementWithAttributes()
236         throws Exception JavaDoc
237     {
238         final Document JavaDoc document = createDocument();
239         final String JavaDoc name = "meep";
240         final String JavaDoc key = "key";
241         final String JavaDoc value = "value";
242         final Element JavaDoc element = document.createElement( name );
243         element.setAttribute( key, value );
244         final Configuration configuration = ConfigurationUtil.toConfiguration( element );
245
246         assertEquals( "configuration.getName()", name, configuration.getName() );
247         assertEquals( "configuration.getPath()",
248                       ConfigurationUtil.ROOT_PATH,
249                       configuration.getPath() );
250         assertEquals( "configuration.getLocation()",
251                       "dom-gen",
252                       configuration.getLocation() );
253         assertEquals( "configuration.getAttributeNames().length",
254                       1,
255                       configuration.getAttributeNames().length );
256         assertEquals( "configuration.getAttribute( key )",
257                       value,
258                       configuration.getAttribute( key ) );
259     }
260
261     public void testToConfigurationFromElementWithChildren()
262         throws Exception JavaDoc
263     {
264         final Document JavaDoc document = createDocument();
265         final String JavaDoc name = "meep";
266         final String JavaDoc childName = "lilmeep";
267         final Element JavaDoc element = document.createElement( name );
268         final Element JavaDoc childElement = document.createElement( childName );
269         element.appendChild( childElement );
270
271         final Configuration configuration = ConfigurationUtil.toConfiguration( element );
272
273         assertEquals( "configuration.getName()", name, configuration.getName() );
274         assertEquals( "configuration.getPath()",
275                       ConfigurationUtil.ROOT_PATH,
276                       configuration.getPath() );
277         assertEquals( "configuration.getLocation()",
278                       "dom-gen",
279                       configuration.getLocation() );
280         assertEquals( "configuration.getAttributeNames().length",
281                       0,
282                       configuration.getAttributeNames().length );
283         assertEquals( "configuration.getChildren().length",
284                       1,
285                       configuration.getChildren().length );
286         final Configuration child = configuration.getChildren()[ 0 ];
287         assertEquals( "child.name", childName, child.getName() );
288         assertEquals( "child.getPath()", "meep", child.getPath() );
289     }
290
291     public void testSerializeToResult()
292         throws Exception JavaDoc
293     {
294         final String JavaDoc name = "meep";
295         final DefaultConfiguration configuration = new DefaultConfiguration( name, "", "" );
296
297         final MockInvocationRecorder recorder = new MockInvocationRecorder();
298         recorder.addInvocation( SAXMethods.START_DOCUMENT,
299                                 new Object JavaDoc[ 0 ],
300                                 null );
301         recorder.addInvocation( SAXMethods.START_ELEMENT,
302                                 new Object JavaDoc[]{"", name, name,
303                                              MockSAXConfigurationSerializer.ATTRIBUTES},
304                                 null );
305         recorder.addInvocation( SAXMethods.END_ELEMENT,
306                                 new Object JavaDoc[]{"", name, name},
307                                 null );
308         recorder.addInvocation( SAXMethods.END_DOCUMENT,
309                                 new Object JavaDoc[ 0 ],
310                                 null );
311
312         final ContentHandler JavaDoc handler = (ContentHandler JavaDoc)
313             Proxy.newProxyInstance( getClass().getClassLoader(),
314                                     new Class JavaDoc[]{ContentHandler JavaDoc.class},
315                                     recorder );
316
317         final SAXResult JavaDoc result = new SAXResult JavaDoc( handler );
318
319         ConfigurationUtil.serializeToResult( result, configuration );
320     }
321
322     public void testBuildFromXML()
323         throws Exception JavaDoc
324     {
325         final String JavaDoc data = "<element/>";
326         final InputSource JavaDoc input = new InputSource JavaDoc();
327         input.setCharacterStream( new StringReader JavaDoc( data ) );
328         final Configuration configuration = ConfigurationUtil.buildFromXML( input );
329         assertEquals( "configuration.name", "element", configuration.getName() );
330         assertEquals( "configuration.path", "", configuration.getPath() );
331         assertEquals( "configuration.location", "", configuration.getLocation() );
332     }
333
334     private Document JavaDoc createDocument() throws ParserConfigurationException JavaDoc
335     {
336         final DocumentBuilderFactory JavaDoc factory = DocumentBuilderFactory.newInstance();
337         final DocumentBuilder JavaDoc builder = factory.newDocumentBuilder();
338         return builder.newDocument();
339     }
340
341     public void testGeneratePathNameFromRootForRoot()
342         throws Exception JavaDoc
343     {
344         final String JavaDoc path =
345             ConfigurationUtil.generatePathName( "", "" );
346         assertEquals( "", path );
347     }
348
349     public void testGeneratePathNameFromRoot()
350         throws Exception JavaDoc
351     {
352         final String JavaDoc path =
353             ConfigurationUtil.generatePathName( "", "element" );
354
355         assertEquals( "element", path );
356     }
357
358     public void testGeneratePathNameFromNonRoot()
359         throws Exception JavaDoc
360     {
361         final String JavaDoc path =
362             ConfigurationUtil.generatePathName( "element", "child" );
363
364         assertEquals( "element/child", path );
365     }
366
367     public void testEqualsOnEmptyConfigurations()
368         throws Exception JavaDoc
369     {
370         final String JavaDoc name = "x";
371         final DefaultConfiguration configuration1 = new DefaultConfiguration( name, "", "" );
372         final DefaultConfiguration configuration2 = new DefaultConfiguration( name, "", "" );
373
374         final boolean equal =
375             ConfigurationUtil.equals( configuration1, configuration2 );
376         assertEquals( "config1 == config2", true, equal );
377     }
378
379     public void testEqualsWithDifferentNames()
380         throws Exception JavaDoc
381     {
382         final DefaultConfiguration configuration1 = new DefaultConfiguration( "x", "", "" );
383         final DefaultConfiguration configuration2 = new DefaultConfiguration( "y", "", "" );
384
385         final boolean equal =
386             ConfigurationUtil.equals( configuration1, configuration2 );
387         assertEquals( "config1 == config2", false, equal );
388     }
389
390     public void testEqualsWithAttributes()
391         throws Exception JavaDoc
392     {
393         final DefaultConfiguration configuration1 = new DefaultConfiguration( "x", "", "" );
394         configuration1.setAttribute( "key", "value" );
395         final DefaultConfiguration configuration2 = new DefaultConfiguration( "x", "", "" );
396         configuration2.setAttribute( "key", "value" );
397
398         final boolean equal =
399             ConfigurationUtil.equals( configuration1, configuration2 );
400         assertEquals( "config1 == config2", true, equal );
401     }
402
403     public void testEqualsWithDifferentNumberOfAttributes()
404         throws Exception JavaDoc
405     {
406         final DefaultConfiguration configuration1 = new DefaultConfiguration( "x", "", "" );
407         configuration1.setAttribute( "key", "value" );
408         configuration1.setAttribute( "key2", "value" );
409         final DefaultConfiguration configuration2 = new DefaultConfiguration( "x", "", "" );
410         configuration2.setAttribute( "key", "value" );
411
412         final boolean equal =
413             ConfigurationUtil.equals( configuration1, configuration2 );
414         assertEquals( "config1 == config2", false, equal );
415     }
416
417     public void testEqualsWithDifferentAttributeNames()
418         throws Exception JavaDoc
419     {
420         final DefaultConfiguration configuration1 = new DefaultConfiguration( "x", "", "" );
421         configuration1.setAttribute( "key1", "value" );
422         final DefaultConfiguration configuration2 = new DefaultConfiguration( "x", "", "" );
423         configuration2.setAttribute( "key2", "value" );
424
425         final boolean equal =
426             ConfigurationUtil.equals( configuration1, configuration2 );
427         assertEquals( "config1 == config2", false, equal );
428     }
429
430     public void testEqualsWithDifferentAttributeValues()
431         throws Exception JavaDoc
432     {
433         final DefaultConfiguration configuration1 = new DefaultConfiguration( "x", "", "" );
434         configuration1.setAttribute( "key", "value1" );
435         final DefaultConfiguration configuration2 = new DefaultConfiguration( "x", "", "" );
436         configuration2.setAttribute( "key", "value2" );
437
438         final boolean equal =
439             ConfigurationUtil.equals( configuration1, configuration2 );
440         assertEquals( "config1 == config2", false, equal );
441     }
442
443     public void testEqualsWithChild()
444         throws Exception JavaDoc
445     {
446         final DefaultConfiguration configuration1 = new DefaultConfiguration( "x", "", "" );
447         final DefaultConfiguration child1 = new DefaultConfiguration( "x", "", "" );
448         configuration1.addChild( child1 );
449         final DefaultConfiguration configuration2 = new DefaultConfiguration( "x", "", "" );
450         final DefaultConfiguration child2 = new DefaultConfiguration( "x", "", "" );
451         configuration2.addChild( child2 );
452
453         final boolean equal =
454             ConfigurationUtil.equals( configuration1, configuration2 );
455         assertEquals( "config1 == config2", true, equal );
456     }
457
458     public void testEqualsWithDifferentChildCount()
459         throws Exception JavaDoc
460     {
461         final DefaultConfiguration configuration1 = new DefaultConfiguration( "x", "", "" );
462         final DefaultConfiguration child1 = new DefaultConfiguration( "x", "", "" );
463         configuration1.addChild( child1 );
464         final DefaultConfiguration configuration2 = new DefaultConfiguration( "x", "", "" );
465
466         final boolean equal =
467             ConfigurationUtil.equals( configuration1, configuration2 );
468         assertEquals( "config1 == config2", false, equal );
469     }
470
471     public void testEqualsWithDifferentChildren()
472         throws Exception JavaDoc
473     {
474         final DefaultConfiguration configuration1 = new DefaultConfiguration( "x", "", "" );
475         final DefaultConfiguration child1 = new DefaultConfiguration( "x", "", "" );
476         configuration1.addChild( child1 );
477         final DefaultConfiguration configuration2 = new DefaultConfiguration( "x", "", "" );
478         final DefaultConfiguration child2 = new DefaultConfiguration( "y", "", "" );
479         configuration2.addChild( child2 );
480
481         final boolean equal =
482             ConfigurationUtil.equals( configuration1, configuration2 );
483         assertEquals( "config1 == config2", false, equal );
484     }
485
486     public void testEqualsWithContent()
487         throws Exception JavaDoc
488     {
489         final DefaultConfiguration configuration1 = new DefaultConfiguration( "x", "", "" );
490         configuration1.setValue( "content" );
491         final DefaultConfiguration configuration2 = new DefaultConfiguration( "x", "", "" );
492         configuration2.setValue( "content" );
493
494         final boolean equal =
495             ConfigurationUtil.equals( configuration1, configuration2 );
496         assertEquals( "config1 == config2", true, equal );
497     }
498
499     public void testEqualsWithDifferentContent()
500         throws Exception JavaDoc
501     {
502         final DefaultConfiguration configuration1 = new DefaultConfiguration( "x", "", "" );
503         configuration1.setValue( "content1" );
504         final DefaultConfiguration configuration2 = new DefaultConfiguration( "x", "", "" );
505         configuration2.setValue( "content2" );
506
507         final boolean equal =
508             ConfigurationUtil.equals( configuration1, configuration2 );
509         assertEquals( "config1 == config2", false, equal );
510     }
511
512     public void testEqualsWithContentOnOne()
513         throws Exception JavaDoc
514     {
515         final DefaultConfiguration configuration1 = new DefaultConfiguration( "x", "", "" );
516         final DefaultConfiguration configuration2 = new DefaultConfiguration( "x", "", "" );
517         configuration2.setValue( "content2" );
518
519         final boolean equal =
520             ConfigurationUtil.equals( configuration1, configuration2 );
521         assertEquals( "config1 == config2", false, equal );
522     }
523 }
524
Popular Tags