1 22 package org.jboss.test.system.metadata.test; 23 24 import java.io.IOException ; 25 import java.net.URL ; 26 import java.util.Arrays ; 27 import java.util.HashSet ; 28 import java.util.List ; 29 30 import javax.management.ObjectName ; 31 32 import junit.framework.AssertionFailedError; 33 34 import org.jboss.dependency.spi.ControllerState; 35 import org.jboss.mx.util.ObjectNameFactory; 36 import org.jboss.system.metadata.ServiceAttributeMetaData; 37 import org.jboss.system.metadata.ServiceConstructorMetaData; 38 import org.jboss.system.metadata.ServiceDependencyListValueMetaData; 39 import org.jboss.system.metadata.ServiceDependencyMetaData; 40 import org.jboss.system.metadata.ServiceDependencyValueMetaData; 41 import org.jboss.system.metadata.ServiceElementValueMetaData; 42 import org.jboss.system.metadata.ServiceInjectionValueMetaData; 43 import org.jboss.system.metadata.ServiceJBXBValueMetaData; 44 import org.jboss.system.metadata.ServiceJavaBeanValueMetaData; 45 import org.jboss.system.metadata.ServiceMetaData; 46 import org.jboss.system.metadata.ServiceTextValueMetaData; 47 import org.jboss.system.metadata.ServiceValueMetaData; 48 import org.jboss.test.AbstractSystemTest; 49 import org.jboss.test.AbstractTestDelegate; 50 import org.w3c.dom.Element ; 51 import org.w3c.dom.Node ; 52 import org.w3c.dom.NodeList ; 53 54 60 public class AbstractMetaDataTest extends AbstractSystemTest 61 { 62 protected static ObjectName testBasicMBeanName = ObjectNameFactory.create("jboss.test:type=BasicMBeanName"); 63 protected static String testBasicMBeanCode = "BasicMBeanCode"; 64 protected static String testBasicMBeanInterface = "BasicMBeanInterface"; 65 protected static ObjectName TEST1 = ObjectNameFactory.create("test:test=1"); 66 protected static ObjectName TEST2 = ObjectNameFactory.create("test:test=2"); 67 protected static ObjectName [] NO_OBJECT_NAMES = new ObjectName [0]; 68 69 74 public AbstractMetaDataTest(String name) 75 { 76 super(name); 77 } 78 79 86 public static AbstractTestDelegate getDelegate(Class clazz) throws Exception 87 { 88 MetaDataTestDelegate delegate = new MetaDataTestDelegate(clazz); 89 delegate.enableSecurity = true; 90 return delegate; 91 } 92 93 100 protected List <ServiceMetaData> unmarshal(String name) throws Exception 101 { 102 URL url = findXML(name); 103 return getMetaDataDelegate().unmarshal(url); 104 } 105 106 112 protected ServiceMetaData unmarshalSingleMBean() throws Exception 113 { 114 String name = getName(); 115 name = name.substring(4) + ".xml"; 116 return unmarshalSingleMBean(name); 117 } 118 119 126 protected ServiceMetaData unmarshalSingleMBean(String name) throws Exception 127 { 128 URL url = findXML(name); 129 List <ServiceMetaData> services = getMetaDataDelegate().unmarshal(url); 130 assertFalse(url + " should contain an mbean ", services.isEmpty()); 131 ServiceMetaData service = services.get(services.size()-1); 132 assertNotNull(service); 133 return service; 134 } 135 136 protected void assertFailUnmarshal(Class <? extends Throwable > expected) throws Exception 137 { 138 String name = getName(); 139 name = name.substring(4) + ".xml"; 140 assertFailUnmarshal(name, expected); 141 } 142 143 protected void assertFailUnmarshal(String name, Class <? extends Throwable > expected) throws Exception 144 { 145 try 146 { 147 unmarshal(name); 148 fail("Should fail to unmarshal " + name); 149 } 150 catch (AssertionFailedError e) 151 { 152 throw e; 153 } 154 catch (Throwable error) 155 { 156 AbstractSystemTest.checkThrowableDeep(expected, error); 157 } 158 } 159 160 166 protected URL findXML(String name) throws Exception 167 { 168 URL url = getResource(name); 169 if (url == null) 170 throw new IOException (name + " not found"); 171 return url; 172 } 173 174 protected MetaDataTestDelegate getMetaDataDelegate() 175 { 176 return (MetaDataTestDelegate) getDelegate(); 177 } 178 179 protected void assertDefaultConstructor(ServiceMetaData metaData) throws Exception 180 { 181 ServiceConstructorMetaData constructor = metaData.getConstructor(); 182 assertNotNull(constructor); 183 String [] signature = constructor.getSignature(); 184 assertNotNull(signature); 185 assertEquals(0, signature.length); 186 String [] params = constructor.getParams(); 187 assertNotNull(params); 188 assertEquals(0, params.length); 189 } 190 191 protected void assertConstructor(String [] expectedSignature, String [] expectedParams, ServiceMetaData metaData) throws Exception 192 { 193 ServiceConstructorMetaData constructor = metaData.getConstructor(); 194 assertNotNull(constructor); 195 String [] signature = constructor.getSignature(); 196 assertNotNull(signature); 197 assertEquals(expectedSignature, signature); 198 String [] params = constructor.getParams(); 199 assertNotNull(params); 200 assertEquals(expectedParams, params); 201 } 202 203 protected void assertNoAttributes(ServiceMetaData metaData) throws Exception 204 { 205 List <ServiceAttributeMetaData> attributes = metaData.getAttributes(); 206 assertNotNull(attributes); 207 assertEquals(0, attributes.size()); 208 } 209 210 protected void assertAttributeName(ServiceAttributeMetaData attribute, String name) throws Exception 211 { 212 assertNotNull(attribute); 213 String result = attribute.getName(); 214 assertNotNull(result); 215 assertEquals("Expected attribute with name " + name + " got " + result, name, result); 216 } 217 218 protected void assertAttribute(ServiceMetaData metaData, String name) throws Exception 219 { 220 assertNotNull(metaData); 221 List <ServiceAttributeMetaData> attributes = metaData.getAttributes(); 222 assertNotNull(attributes); 223 assertEquals(1, attributes.size()); 224 ServiceAttributeMetaData attribute = attributes.get(0); 225 assertAttributeName(attribute, name); 226 } 227 228 protected void assertAttributes(ServiceMetaData metaData, String [] names) throws Exception 229 { 230 assertNotNull(names); 231 assertNotNull(metaData); 232 List <ServiceAttributeMetaData> attributes = metaData.getAttributes(); 233 assertNotNull(attributes); 234 assertEquals(names.length, attributes.size()); 235 ServiceAttributeMetaData attribute = attributes.get(0); 236 for (String name : names) 237 assertAttributeName(attribute, name); 238 } 239 240 protected void assertAttribute(ServiceAttributeMetaData attribute, boolean trim, boolean replace, String name) throws Exception 241 { 242 assertNotNull(attribute); 243 String result = attribute.getName(); 244 assertNotNull(result); 245 assertEquals(name, result); 246 assertEquals(trim, attribute.isTrim()); 247 assertEquals(replace, attribute.isReplace()); 248 } 249 250 protected void assertTextAttribute(ServiceAttributeMetaData attribute) throws Exception 251 { 252 assertTextAttribute(attribute, true, true, "Attribute", "value"); 253 } 254 255 protected void assertTextAttribute(ServiceAttributeMetaData attribute, String value) throws Exception 256 { 257 assertTextAttribute(attribute, true, true, "Attribute", value); 258 } 259 260 protected void assertTextAttribute(ServiceAttributeMetaData attribute, String name, String value) throws Exception 261 { 262 assertTextAttribute(attribute, true, true, name, value); 263 } 264 265 protected void assertTextAttribute(ServiceAttributeMetaData attribute, boolean trim, boolean replace) throws Exception 266 { 267 assertTextAttribute(attribute, trim, replace, "Attribute", "value"); 268 } 269 270 protected void assertTextAttribute(ServiceAttributeMetaData attribute, boolean trim, boolean replace, String name, String value) throws Exception 271 { 272 assertAttribute(attribute, trim, replace, name); 273 ServiceValueMetaData actual = attribute.getValue(); 274 assertNotNull(actual); 275 assertTextValue(actual, value); 276 } 277 278 protected void assertDependsAttribute(ServiceAttributeMetaData attribute) throws Exception 279 { 280 assertDependsAttribute(attribute, false, false, "Attribute", TEST1); 281 } 282 283 protected void assertDependsAttribute(ServiceAttributeMetaData attribute, String name, ObjectName value) throws Exception 284 { 285 assertDependsAttribute(attribute, false, false, name, value); 286 } 287 288 protected void assertDependsAttribute(ServiceAttributeMetaData attribute, boolean trim, boolean replace, String name, ObjectName value) throws Exception 289 { 290 assertAttribute(attribute, trim, replace, name); 291 ServiceValueMetaData actual = attribute.getValue(); 292 assertNotNull(actual); 293 assertDependencyValue(actual, value); 294 } 295 296 protected void assertDependsListAttribute(ServiceAttributeMetaData attribute) throws Exception 297 { 298 assertDependsListAttribute(attribute, false, false, "Attribute", TEST1); 299 } 300 301 protected void assertDependsListAttribute(ServiceAttributeMetaData attribute, String name, ObjectName value) throws Exception 302 { 303 assertDependsListAttribute(attribute, false, false, name, value); 304 } 305 306 protected void assertDependsListAttribute(ServiceAttributeMetaData attribute, boolean trim, boolean replace, String name, ObjectName value) throws Exception 307 { 308 assertDependsListAttribute(attribute, trim, replace, name, new ObjectName [] { value }); 309 } 310 311 protected void assertDependsListAttribute(ServiceAttributeMetaData attribute, boolean trim, boolean replace, String name, ObjectName [] value) throws Exception 312 { 313 assertAttribute(attribute, trim, replace, name); 314 ServiceValueMetaData actual = attribute.getValue(); 315 assertNotNull(actual); 316 assertDependencyListValue(actual, value); 317 } 318 319 protected void assertDependsListAttributeEmpty(ServiceAttributeMetaData attribute) throws Exception 320 { 321 assertDependsListAttribute(attribute, false, false, "Attribute", NO_OBJECT_NAMES); 322 } 323 324 protected void assertTextValue(ServiceValueMetaData actual, String expected) throws Exception 325 { 326 assertNotNull(expected); 327 assertNotNull(actual); 328 329 ServiceTextValueMetaData value = assertInstanceOf(ServiceTextValueMetaData.class, actual); 330 331 assertEquals(expected, value.getText()); 332 } 333 334 protected void assertDependencyValue(ServiceValueMetaData actual, ObjectName expected) throws Exception 335 { 336 assertDependencyValue(actual, expected, null); 337 } 338 339 protected void assertDependencyValue(ServiceValueMetaData actual, ObjectName expected, String proxyType) throws Exception 340 { 341 assertNotNull(expected); 342 assertNotNull(actual); 343 344 ServiceDependencyValueMetaData value = assertInstanceOf(ServiceDependencyValueMetaData.class, actual); 345 346 assertEquals(expected, value.getObjectName()); 347 assertEquals(proxyType, value.getProxyType()); 348 } 349 350 protected void assertDependencyListValueEmpty(ServiceValueMetaData actual) throws Exception 351 { 352 assertDependencyListValue(actual, NO_OBJECT_NAMES ); 353 } 354 355 protected void assertDependencyListValue(ServiceValueMetaData actual, ObjectName expected) throws Exception 356 { 357 assertDependencyListValue(actual, new ObjectName [] { expected } ); 358 } 359 360 protected void assertDependencyListValue(ServiceValueMetaData actual, ObjectName [] expected) throws Exception 361 { 362 assertNotNull(expected); 363 assertNotNull(actual); 364 365 ServiceDependencyListValueMetaData value = assertInstanceOf(ServiceDependencyListValueMetaData.class, actual); 366 367 List <ObjectName > list = value.getObjectNames(); 368 assertNotNull(list); 369 ObjectName [] test = list.toArray(new ObjectName [list.size()]); 370 371 assertTrue("Expected " + Arrays.asList(expected) + " got " + Arrays.asList(test), Arrays.equals(expected, test)); 372 } 373 374 protected void assertElementValue(ServiceValueMetaData actual, String expected) throws Exception 375 { 376 assertNotNull(expected); 377 assertNotNull(actual); 378 379 ServiceElementValueMetaData value = assertInstanceOf(ServiceElementValueMetaData.class, actual); 380 381 Element element = value.getElement(); 382 assertNotNull(element); 383 384 String name = element.getTagName(); 385 assertNotNull(name); 386 387 assertEquals(expected, name); 388 } 389 390 protected void assertJavaBeanValue(ServiceValueMetaData actual, String expected) throws Exception 391 { 392 assertNotNull(actual); 393 394 ServiceJavaBeanValueMetaData value = assertInstanceOf(ServiceJavaBeanValueMetaData.class, actual); 395 396 Element element = value.getElement(); 397 assertChildOfAttribute(element, expected); 398 } 399 400 protected void assertJBXBValue(ServiceValueMetaData actual, String expected) throws Exception 401 { 402 assertNotNull(actual); 403 404 ServiceJBXBValueMetaData value = assertInstanceOf(ServiceJBXBValueMetaData.class, actual); 405 406 Element element = value.getElement(); 407 assertChildOfAttribute(element, expected); 408 } 409 410 protected void assertInjectValue(ServiceValueMetaData actual, Object dependency, String property) throws Exception 411 { 412 assertInjectValue(actual, dependency, property, ControllerState.INSTALLED); 413 } 414 415 protected void assertInjectValue(ServiceValueMetaData actual, Object dependency, String property, ControllerState requiredState) throws Exception 416 { 417 assertNotNull(actual); 418 419 ServiceInjectionValueMetaData value = assertInstanceOf(ServiceInjectionValueMetaData.class, actual); 420 421 assertEquals(dependency, value.getDependency()); 422 assertEquals(property, value.getProperty()); 423 assertEquals(requiredState, value.getDependentState()); 424 } 425 426 protected void assertChildOfAttribute(Element element, String expected) throws Exception 427 { 428 assertNotNull(element); 429 430 String name = element.getTagName(); 431 assertEquals("attribute", name); 432 433 NodeList children = element.getChildNodes(); 434 assertEquals(1, children.getLength()); 435 Node node = children.item(0); 436 element = assertInstanceOf(Element .class, node); 437 name = element.getTagName(); 438 assertEquals(expected, name); 439 } 440 441 protected void assertNoDependencies(ServiceMetaData metaData) throws Exception 442 { 443 List <ServiceDependencyMetaData> dependencies = metaData.getDependencies(); 444 assertNotNull(dependencies); 445 assertEquals(0, dependencies.size()); 446 } 447 448 protected void assertDependencies(ServiceMetaData metaData, ObjectName [] expected) throws Exception 449 { 450 List <ServiceDependencyMetaData> dependencies = metaData.getDependencies(); 451 assertNotNull(dependencies); 452 assertEquals(expected.length, dependencies.size()); 453 HashSet <ObjectName > expectedSet = new HashSet <ObjectName >(); 454 for (ObjectName expect : expected) 455 expectedSet.add(expect); 456 HashSet <ObjectName > actual = new HashSet <ObjectName >(); 457 for (ServiceDependencyMetaData depends : dependencies) 458 actual.add(depends.getIDependOnObjectName()); 459 assertEquals(expectedSet, actual); 460 } 461 462 protected void assertNoXMBean(ServiceMetaData metaData) throws Exception 463 { 464 assertNull(metaData.getXMBeanDD()); 465 assertEquals(ServiceMetaData.XMBEAN_CODE, metaData.getXMBeanCode()); 466 assertNull(metaData.getXMBeanDescriptor()); 467 } 468 } 469 | Popular Tags |