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