KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > test > javax > management > ObjectNameTest


1 /*
2  * Copyright (C) The MX4J Contributors.
3  * All rights reserved.
4  *
5  * This software is distributed under the terms of the MX4J License version 1.0.
6  * See the terms of the MX4J License in the documentation provided with this software.
7  */

8
9 package test.javax.management;
10
11 import java.util.Hashtable JavaDoc;
12
13 import javax.management.MalformedObjectNameException JavaDoc;
14 import javax.management.ObjectName JavaDoc;
15
16 import test.MX4JTestCase;
17
18 /**
19  * @version $Revision: 1.15 $
20  */

21 public class ObjectNameTest extends MX4JTestCase
22 {
23    public ObjectNameTest(String JavaDoc s)
24    {
25       super(s);
26    }
27
28    public void testInvalidDomain() throws Exception JavaDoc
29    {
30       try
31       {
32          new ObjectName JavaDoc("missingColon");
33          fail("Wrong ObjectName");
34       }
35       catch (MalformedObjectNameException JavaDoc x)
36       {
37       }
38
39       try
40       {
41          new ObjectName JavaDoc("newLinePresent" + '\n' + ":k=v");
42          fail("Wrong ObjectName");
43       }
44       catch (MalformedObjectNameException JavaDoc x)
45       {
46       }
47    }
48
49    public void testValidNonPatternDomain() throws Exception JavaDoc
50    {
51       ObjectName JavaDoc name = new ObjectName JavaDoc(":k=v");
52       if (name.isDomainPattern()) fail("Not a domain pattern");
53
54       name = new ObjectName JavaDoc("domain:k=v");
55       if (name.isDomainPattern()) fail("Not a domain pattern");
56    }
57
58    public void testValidPatternDomain() throws Exception JavaDoc
59    {
60       ObjectName JavaDoc name = new ObjectName JavaDoc("*:k=v");
61       if (!name.isDomainPattern()) fail("Domain is a pattern");
62
63       name = new ObjectName JavaDoc("?:k=v");
64       if (!name.isDomainPattern()) fail("Domain is a pattern");
65
66       name = new ObjectName JavaDoc("*domain:k=v");
67       if (!name.isDomainPattern()) fail("Domain is a pattern");
68
69       name = new ObjectName JavaDoc("?domain:k=v");
70       if (!name.isDomainPattern()) fail("Domain is a pattern");
71
72       name = new ObjectName JavaDoc("dom*ain:k=v");
73       if (!name.isDomainPattern()) fail("Domain is a pattern");
74
75       name = new ObjectName JavaDoc("dom?ain:k=v");
76       if (!name.isDomainPattern()) fail("Domain is a pattern");
77
78       name = new ObjectName JavaDoc("domain*:k=v");
79       if (!name.isDomainPattern()) fail("Domain is a pattern");
80
81       name = new ObjectName JavaDoc("domain?:k=v");
82       if (!name.isDomainPattern()) fail("Domain is a pattern");
83    }
84
85    public void testInvalidProperties() throws Exception JavaDoc
86    {
87       try
88       {
89          new ObjectName JavaDoc("noProps:");
90          fail("Wrong ObjectName");
91       }
92       catch (MalformedObjectNameException JavaDoc x)
93       {
94       }
95
96       try
97       {
98          new ObjectName JavaDoc("noPropsWithBlank: ");
99          fail("Wrong ObjectName");
100       }
101       catch (MalformedObjectNameException JavaDoc x)
102       {
103       }
104
105       try
106       {
107          new ObjectName JavaDoc("noPropsWithGarbage: abc ");
108          fail("Wrong ObjectName");
109       }
110       catch (MalformedObjectNameException JavaDoc x)
111       {
112       }
113
114       try
115       {
116          new ObjectName JavaDoc("noKey:=value");
117          fail("Wrong ObjectName");
118       }
119       catch (MalformedObjectNameException JavaDoc x)
120       {
121       }
122
123       try
124       {
125          new ObjectName JavaDoc("domain:trailingSlash=Invalid,");
126          fail("Wrong ObjectName");
127       }
128       catch (MalformedObjectNameException JavaDoc x)
129       {
130       }
131
132       try
133       {
134          new ObjectName JavaDoc("keyWithInvalidChar:key,invalid=value");
135          fail("Wrong ObjectName");
136       }
137       catch (MalformedObjectNameException JavaDoc x)
138       {
139       }
140
141       try
142       {
143          new ObjectName JavaDoc("keyWithInvalidChar:key:invalid=value");
144          fail("Wrong ObjectName");
145       }
146       catch (MalformedObjectNameException JavaDoc x)
147       {
148       }
149
150       try
151       {
152          new ObjectName JavaDoc("keyWithInvalidChar:key*invalid=value");
153          fail("Wrong ObjectName");
154       }
155       catch (MalformedObjectNameException JavaDoc x)
156       {
157       }
158
159       try
160       {
161          new ObjectName JavaDoc("keyWithInvalidChar:key?invalid=value");
162          fail("Wrong ObjectName");
163       }
164       catch (MalformedObjectNameException JavaDoc x)
165       {
166       }
167
168       try
169       {
170          new ObjectName JavaDoc("keyWithInvalidChar:?=value");
171          fail("Wrong ObjectName");
172       }
173       catch (MalformedObjectNameException JavaDoc x)
174       {
175       }
176
177       try
178       {
179          new ObjectName JavaDoc("keyWithInvalidChar:*=value");
180          fail("Wrong ObjectName");
181       }
182       catch (MalformedObjectNameException JavaDoc x)
183       {
184       }
185
186       try
187       {
188          new ObjectName JavaDoc("keyWithInvalidChar:,=value");
189          fail("Wrong ObjectName");
190       }
191       catch (MalformedObjectNameException JavaDoc x)
192       {
193       }
194
195       try
196       {
197          new ObjectName JavaDoc("duplicateKey:key=value,key=value1");
198          fail("Wrong ObjectName");
199       }
200       catch (MalformedObjectNameException JavaDoc x)
201       {
202       }
203    }
204
205    public void testValidPatternProperties() throws Exception JavaDoc
206    {
207       ObjectName JavaDoc name = new ObjectName JavaDoc("domain:*");
208       if (!name.isPropertyPattern()) fail("Properties are pattern");
209
210       name = new ObjectName JavaDoc("domain:k=v,*");
211       if (!name.isPropertyPattern()) fail("Properties are pattern");
212
213       name = new ObjectName JavaDoc("domain:*,k=v");
214       if (!name.isPropertyPattern()) fail("Properties are pattern");
215
216       name = new ObjectName JavaDoc("domain:k=v,*,k1=v1");
217       if (!name.isPropertyPattern()) fail("Properties are pattern");
218    }
219
220    public void testValidNonPatternProperties() throws Exception JavaDoc
221    {
222       ObjectName JavaDoc name = new ObjectName JavaDoc("domain:k=v");
223       if (name.isPropertyPattern()) fail("Properties are not pattern");
224
225       name = new ObjectName JavaDoc("domain:k=v, k1=v1");
226       if (name.isPropertyPattern()) fail("Properties are not pattern");
227
228       name = new ObjectName JavaDoc("domain:k=\"\\*\"");
229       if (name.isPropertyPattern()) fail("Properties are not pattern");
230
231       name = new ObjectName JavaDoc("domain:k=\",\\*\"");
232       if (name.isPropertyPattern()) fail("Properties are not pattern");
233    }
234
235    public void testInvalidValue() throws Exception JavaDoc
236    {
237       try
238       {
239          new ObjectName JavaDoc("domain:key=newLinePresent" + '\n');
240          fail("Wrong ObjectName");
241       }
242       catch (MalformedObjectNameException JavaDoc x)
243       {
244       }
245
246       try
247       {
248          new ObjectName JavaDoc("domain:key=\"quotedNewLinePresent" + '\n' + "\"");
249          fail("Wrong ObjectName");
250       }
251       catch (MalformedObjectNameException JavaDoc x)
252       {
253       }
254
255       try
256       {
257          // Just one quote
258
new ObjectName JavaDoc("domain:key=\"");
259          fail("Wrong ObjectName");
260       }
261       catch (MalformedObjectNameException JavaDoc x)
262       {
263       }
264
265       try
266       {
267          // Just one quote with a space
268
new ObjectName JavaDoc("domain:key=\" ");
269          fail("Wrong ObjectName");
270       }
271       catch (MalformedObjectNameException JavaDoc x)
272       {
273       }
274
275       try
276       {
277          // Just one quote with a chars
278
new ObjectName JavaDoc("domain:key=\"unterminatedQuote");
279          fail("Wrong ObjectName");
280       }
281       catch (MalformedObjectNameException JavaDoc x)
282       {
283       }
284
285       try
286       {
287          // Just one quote with an escaped quote at the end
288
new ObjectName JavaDoc("domain:key=\"\\\"");
289          fail("Wrong ObjectName");
290       }
291       catch (MalformedObjectNameException JavaDoc x)
292       {
293       }
294
295       try
296       {
297          // Just one quote with a chars and an escaped quote at the end
298
new ObjectName JavaDoc("domain:key=\"unterminatedQuote\\\"");
299          fail("Wrong ObjectName");
300       }
301       catch (MalformedObjectNameException JavaDoc x)
302       {
303       }
304    }
305
306    public void testEmptyValue() throws Exception JavaDoc
307    {
308       try
309       {
310          new ObjectName JavaDoc("domain:key=");
311          fail("Expecting a MalformedObjectNameException");
312       }
313       catch (MalformedObjectNameException JavaDoc x)
314       {
315          // success;
316
}
317    }
318
319    public void testInvalidUnquotedValue() throws Exception JavaDoc
320    {
321       try
322       {
323          new ObjectName JavaDoc("invalidValueChar:k=,");
324          fail("Wrong ObjectName");
325       }
326       catch (MalformedObjectNameException JavaDoc x)
327       {
328       }
329
330       try
331       {
332          new ObjectName JavaDoc("invalidValueChar:k=v=");
333          fail("Wrong ObjectName");
334       }
335       catch (MalformedObjectNameException JavaDoc x)
336       {
337       }
338
339       try
340       {
341          new ObjectName JavaDoc("invalidValueChar:k=v:");
342          fail("Wrong ObjectName");
343       }
344       catch (MalformedObjectNameException JavaDoc x)
345       {
346       }
347
348       try
349       {
350          new ObjectName JavaDoc("invalidValueChar:k=v\"");
351          fail("Wrong ObjectName");
352       }
353       catch (MalformedObjectNameException JavaDoc x)
354       {
355       }
356
357       try
358       {
359          new ObjectName JavaDoc("invalidValueChar:k=v*");
360          fail("Wrong ObjectName");
361       }
362       catch (MalformedObjectNameException JavaDoc x)
363       {
364       }
365
366       try
367       {
368          new ObjectName JavaDoc("invalidValueChar:k=v?");
369          fail("Wrong ObjectName");
370       }
371       catch (MalformedObjectNameException JavaDoc x)
372       {
373       }
374    }
375
376    public void testInvalidQuotedValue() throws Exception JavaDoc
377    {
378       try
379       {
380          new ObjectName JavaDoc("invalidQuotedValueChar:k=\"v?\"");
381          fail("Wrong ObjectName");
382       }
383       catch (MalformedObjectNameException JavaDoc x)
384       {
385       }
386
387       try
388       {
389          new ObjectName JavaDoc("invalidQuotedValueChar:k=\"v*\"");
390          fail("Wrong ObjectName");
391       }
392       catch (MalformedObjectNameException JavaDoc x)
393       {
394       }
395
396       try
397       {
398          new ObjectName JavaDoc("invalidQuotedValueChar:evenNumberOfBackslashes=\"v" + '\\' + '\\' + "*\"");
399          fail("Wrong ObjectName");
400       }
401       catch (MalformedObjectNameException JavaDoc x)
402       {
403       }
404
405       try
406       {
407          new ObjectName JavaDoc("garbage:afterQuoted=\"value\"garbage");
408          fail("Wrong ObjectName");
409       }
410       catch (MalformedObjectNameException JavaDoc x)
411       {
412       }
413
414       try
415       {
416          new ObjectName JavaDoc("invalidEscapedChar:k=\"\\x\"");
417          fail("Wrong ObjectName");
418       }
419       catch (MalformedObjectNameException JavaDoc x)
420       {
421       }
422
423       try
424       {
425          new ObjectName JavaDoc("invalidEscapedChar:k=\"\\\"");
426          fail("Wrong ObjectName");
427       }
428       catch (MalformedObjectNameException JavaDoc x)
429       {
430       }
431
432       try
433       {
434          new ObjectName JavaDoc("invalidEscapedChar:k=\"\\\\\\\"");
435          fail("Wrong ObjectName");
436       }
437       catch (MalformedObjectNameException JavaDoc x)
438       {
439       }
440
441       try
442       {
443          new ObjectName JavaDoc("invalidEscapedChar:k=\"value\\\"");
444          fail("Wrong ObjectName");
445       }
446       catch (MalformedObjectNameException JavaDoc x)
447       {
448       }
449
450       try
451       {
452          new ObjectName JavaDoc("domain", "x", "\"unterminated");
453          fail("Wrong ObjectName");
454       }
455       catch (MalformedObjectNameException JavaDoc x)
456       {
457       }
458    }
459
460    public void testValidQuotedObjectName() throws Exception JavaDoc
461    {
462       ObjectName JavaDoc name = new ObjectName JavaDoc("domain:key=\"\"");
463       name = new ObjectName JavaDoc("domain:key=\"\\\\\"");
464       name = new ObjectName JavaDoc("domain:key=\":\"");
465       name = new ObjectName JavaDoc("domain:key=\",\"");
466       name = new ObjectName JavaDoc("domain:key=\"=\"");
467       name = new ObjectName JavaDoc("domain:key=\"\\\"\"");
468       name = new ObjectName JavaDoc("domain:key=\"\\*\"");
469       name = new ObjectName JavaDoc("domain:key=\"\\?\"");
470
471       name = new ObjectName JavaDoc("domain:key1=\"v1,v2\",key2=value2");
472       if (name.getKeyPropertyList().size() != 2) fail("Too many properties");
473
474       name = new ObjectName JavaDoc("domain:key1=\"k1=v1,k2=v2\", key2= value2");
475       if (name.getKeyPropertyList().size() != 2) fail("Too many properties");
476
477       name = new ObjectName JavaDoc("domain:key1=\"v1,\\*,v2\",*,key2=value2");
478       if (!name.isPropertyPattern()) fail("ObjectName is property pattern");
479       if (name.getKeyPropertyList().size() != 2) fail("Too many properties");
480    }
481
482    public void testValidObjectNameWithSpaces() throws Exception JavaDoc
483    {
484       String JavaDoc key = " key ";
485       String JavaDoc value = " value ";
486       ObjectName JavaDoc name = new ObjectName JavaDoc("domain:" + key + "=" + value);
487       String JavaDoc val = name.getKeyProperty(key.trim());
488       if (val != null) fail("Key is not present");
489       val = name.getKeyProperty(key);
490       if (!value.equals(val)) fail("Wrong value");
491    }
492
493    public void testValidObjectNames() throws Exception JavaDoc
494    {
495       ObjectName JavaDoc name = new ObjectName JavaDoc("domain:property1=value1,property2=value2");
496       if (name.getKeyPropertyList().size() != 2) fail("Wrong properties number");
497
498       name = new ObjectName JavaDoc("*:*");
499       if (!name.isPattern()) fail("ObjectName is a pattern");
500       if (!name.isDomainPattern()) fail("ObjectName is a pattern");
501       if (!name.isPropertyPattern()) fail("ObjectName is a pattern");
502       if (name.getKeyPropertyList().size() != 0) fail("Wrong properties number");
503       if (name.getKeyPropertyListString().length() != 0) fail("Wrong properties string");
504       if (name.getCanonicalKeyPropertyListString().length() != 0) fail("Wrong properties string");
505
506       name = new ObjectName JavaDoc("");
507       if (!name.isPattern()) fail("ObjectName is a pattern");
508       if (!name.isDomainPattern()) fail("ObjectName is a pattern");
509       if (!name.isPropertyPattern()) fail("ObjectName is a pattern");
510       if (name.getKeyPropertyList().size() != 0) fail("Wrong properties number");
511       if (name.getKeyPropertyListString().length() != 0) fail("Wrong properties string");
512       if (name.getCanonicalKeyPropertyListString().length() != 0) fail("Wrong properties string");
513
514       name = new ObjectName JavaDoc(":*");
515       if (!name.isPattern()) fail("ObjectName is a pattern");
516       if (name.isDomainPattern()) fail("ObjectName is not a pattern");
517       if (!name.isPropertyPattern()) fail("ObjectName is a pattern");
518       if (name.getKeyPropertyList().size() != 0) fail("Wrong properties number");
519       if (name.getKeyPropertyListString().length() != 0) fail("Wrong properties string");
520       if (name.getCanonicalKeyPropertyListString().length() != 0) fail("Wrong properties string");
521
522       name = new ObjectName JavaDoc(":*,property=value");
523       if (!name.isPattern()) fail("ObjectName is a pattern");
524       if (!name.isPropertyPattern()) fail("ObjectName is a pattern");
525       if (name.getKeyPropertyList().size() != 1) fail("Wrong properties number");
526       if (!"property=value".equals(name.getKeyPropertyListString())) fail("Wrong properties string");
527
528       name = new ObjectName JavaDoc(":property=value,*");
529       if (!name.isPattern()) fail("ObjectName is a pattern");
530       if (!name.isPropertyPattern()) fail("ObjectName is a pattern");
531       if (name.getKeyPropertyList().size() != 1) fail("Wrong properties number");
532       if (!"property=value".equals(name.getKeyPropertyListString())) fail("Wrong properties string");
533
534       name = new ObjectName JavaDoc(":property2=value2,*,property1=value1");
535       if (!name.isPattern()) fail("ObjectName is a pattern");
536       if (!name.isPropertyPattern()) fail("ObjectName is a pattern");
537       if (name.getKeyPropertyList().size() != 2) fail("Wrong properties number");
538       if (!"property2=value2,property1=value1".equals(name.getKeyPropertyListString())) fail("Wrong properties string");
539       if (!"property1=value1,property2=value2".equals(name.getCanonicalKeyPropertyListString())) fail("Wrong properties string");
540
541       name = new ObjectName JavaDoc("*uu*:*");
542       if (!name.isDomainPattern()) fail("ObjectName is a domain pattern");
543       name = new ObjectName JavaDoc("*domain:property=value,*");
544       if (!name.isDomainPattern()) fail("ObjectName is a domain pattern");
545       name = new ObjectName JavaDoc("??Domain:*");
546       if (!name.isDomainPattern()) fail("ObjectName is a domain pattern");
547       name = new ObjectName JavaDoc("JMImplementation:type=MBeanServerDelegate");
548       if (name.isPattern()) fail("ObjectName is not a pattern");
549
550       name = new ObjectName JavaDoc("domain", "key", "value");
551       if (name.isPattern()) fail("ObjectName is not a pattern");
552       if (name.isPropertyPattern()) fail("ObjectName is not a pattern");
553       if (name.getKeyPropertyList().size() != 1) fail("Wrong properties number");
554    }
555
556    public void testProperties() throws Exception JavaDoc
557    {
558       String JavaDoc properties = "b=1,a=2,d=0,c=3,aa=4";
559       String JavaDoc canonicals = "a=2,aa=4,b=1,c=3,d=0";
560       ObjectName JavaDoc name = new ObjectName JavaDoc(":" + properties);
561       assertEquals(properties, name.getKeyPropertyListString());
562       assertEquals(canonicals, name.getCanonicalKeyPropertyListString());
563
564       // One of the values is a quoted value with an asterisk
565
properties = "b=1,a=\"\\*2\",d=0,c=3,aa=4";
566       canonicals = "a=\"\\*2\",aa=4,b=1,c=3,d=0";
567       name = new ObjectName JavaDoc(":" + properties);
568       assertEquals(properties, name.getKeyPropertyListString());
569       assertEquals(canonicals, name.getCanonicalKeyPropertyListString());
570
571       // Adding the wildcard
572
name = new ObjectName JavaDoc(":b=1,a=\"\\*2\",d=0,*,c=3,aa=4");
573       assertEquals(properties, name.getKeyPropertyListString());
574       assertEquals(canonicals, name.getCanonicalKeyPropertyListString());
575    }
576
577    public void testCanonicalName() throws Exception JavaDoc
578    {
579       String JavaDoc origin = "domain:a=1,b=1,c=1,*";
580       ObjectName JavaDoc name = new ObjectName JavaDoc(origin);
581       String JavaDoc canonical = name.getCanonicalName();
582       assertEquals(canonical, origin);
583    }
584
585    public void testNullConstructorParameters() throws Exception JavaDoc
586    {
587       try
588       {
589          new ObjectName JavaDoc(null);
590          fail("Expecting a NullPointerException on null 'name'");
591       }
592       catch (NullPointerException JavaDoc x)
593       {
594       }
595
596       try
597       {
598          new ObjectName JavaDoc("domain", null);
599          fail("Expecting a NullPointerException on null 'table'");
600       }
601       catch (NullPointerException JavaDoc x)
602       {
603       }
604
605       try
606       {
607          new ObjectName JavaDoc(null, new Hashtable JavaDoc());
608          fail("Expecting a NullPointerException on null 'domain'");
609       }
610       catch (NullPointerException JavaDoc x)
611       {
612       }
613
614       try
615       {
616          new ObjectName JavaDoc(null, "key", "value");
617          fail("Expecting a NullPointerException on null 'domain'");
618       }
619       catch (NullPointerException JavaDoc x)
620       {
621       }
622
623       try
624       {
625          new ObjectName JavaDoc("domain", null, "value");
626          fail("Expecting a NullPointerException on null 'key'");
627       }
628       catch (NullPointerException JavaDoc x)
629       {
630       }
631
632       try
633       {
634          new ObjectName JavaDoc("domain", "key", null);
635          fail("Expecting a NullPointerException on null 'value'");
636       }
637       catch (NullPointerException JavaDoc x)
638       {
639       }
640    }
641
642    public void testApply() throws Exception JavaDoc
643    {
644       ObjectName JavaDoc notpatone = new ObjectName JavaDoc("names:id=notpatone");
645       ObjectName JavaDoc notpattwo = new ObjectName JavaDoc("names:id=notpattwo");
646       ObjectName JavaDoc patone = new ObjectName JavaDoc("names:*");
647       ObjectName JavaDoc pattwo = new ObjectName JavaDoc("names/patterns:id=pattwo,*");
648
649       assertTrue("Expecting true on notpatone.apply(notpatone)", notpatone.apply(notpatone));
650       assertTrue("Expecting true on patone.apply(notpatone)", patone.apply(notpatone));
651       assertFalse("Expecting false on notpattwo.apply(notpatone)", notpattwo.apply(notpatone));
652       assertFalse("Expecting false on notpat.apply(patone)", notpatone.apply(patone));
653       assertFalse("Expecting false on patone.apply(pattwo)", patone.apply(pattwo));
654       assertFalse("Expecting false on patone.apply(patone)", patone.apply(patone));
655    }
656
657    public void testEmptyHashtable() throws Exception JavaDoc
658    {
659       try
660       {
661          Hashtable JavaDoc ht = new Hashtable JavaDoc();
662          new ObjectName JavaDoc("afinedomain", ht);
663          fail("Expecting MalformedObjectNameException");
664       }
665       catch (MalformedObjectNameException JavaDoc x)
666       {
667       }
668    }
669
670    public void testNonStringProperties() throws Exception JavaDoc
671    {
672       try
673       {
674          Hashtable JavaDoc ht = new Hashtable JavaDoc();
675          ht.put("key", new Integer JavaDoc(42));
676          new ObjectName JavaDoc("afinedomain", ht);
677          fail("Expecting MalformedObjectNameException");
678       }
679       catch (MalformedObjectNameException JavaDoc x)
680       {
681       }
682    }
683 }
684
Popular Tags