1 8 9 package test.javax.management.modelmbean; 10 11 import java.lang.reflect.Method ; 12 import javax.management.Descriptor ; 13 import javax.management.MBeanOperationInfo ; 14 import javax.management.MBeanParameterInfo ; 15 import javax.management.RuntimeOperationsException ; 16 import javax.management.modelmbean.DescriptorSupport ; 17 import javax.management.modelmbean.ModelMBeanOperationInfo ; 18 19 import test.MX4JTestCase; 20 21 28 29 public class ModelMBeanOperationInfoTest extends MX4JTestCase 30 { 31 public static class Surgeon 32 { 33 public boolean appendectomy() 34 { 35 return true; 36 } 37 38 public boolean tonsillectomy(int tonsils) 39 { 40 return true; 41 } 42 } 43 44 public ModelMBeanOperationInfoTest(String s) 45 { 46 super(s); 47 } 48 49 public void setUp() throws Exception 50 { 51 super.setUp(); 52 } 53 54 public void tearDown() throws Exception 55 { 56 super.tearDown(); 57 } 58 59 public void testValidDescriptorFields() throws Exception 60 { 61 Descriptor descriptor = new DescriptorSupport (new String []{"name", "descriptortype", "role", "visibility"}, 63 new String []{"operation1", "operation", "operation", "1"}); 64 ModelMBeanOperationInfo operation 65 = new ModelMBeanOperationInfo ("operation1", "An operation", null, "java.lang.String", ModelMBeanOperationInfo.ACTION, descriptor); 66 assertEquals(operation.getDescriptor().getFieldValue("visibility"), "1"); 68 } 69 70 public void testAddDefaultDisplayName() throws Exception 71 { 72 Method op = 73 ModelMBeanOperationInfoTest.Surgeon.class.getMethod("appendectomy", 74 new Class [0]); 75 String [] fields = {"name", "descriptorType", "role"}; 76 String [] values = 77 {op.getName(), "operation", "operation"}; 78 DescriptorSupport ds = new DescriptorSupport (fields, values); 79 ModelMBeanOperationInfo info = 80 new ModelMBeanOperationInfo ("Good Appendectomy", op, ds); 81 Descriptor d = info.getDescriptor(); 82 String dispname = (String )d.getFieldValue("displayName"); 83 assertTrue("Unexpected displayName", 84 dispname.compareTo(op.getName()) == 0); 85 } 86 87 public void testRoleValidation() throws Exception 88 { 89 Method op = 90 ModelMBeanOperationInfoTest.Surgeon.class.getMethod("appendectomy", 91 new Class [0]); 92 String [] fields = {"name", "descriptorType", "role", "displayName"}; 93 String [] values = 94 {op.getName(), "operation", "operation", "appendectomy"}; 95 DescriptorSupport ds = new DescriptorSupport (fields, values); 96 ModelMBeanOperationInfo info = 97 new ModelMBeanOperationInfo ("Good Appendectomy", op, ds); 98 99 try 100 { 101 values = 102 new String []{ 103 op.getName(), 104 "operation", 105 "constructor", 106 "appendectomy"}; 107 ds = new DescriptorSupport (fields, values); 108 info = new ModelMBeanOperationInfo ("Bad Appendectomy", op, ds); 109 fail("Expecting RuntimeOperationsException"); 110 } 111 catch (RuntimeOperationsException x) 112 { 113 assertTrue(true); } 115 } 116 117 public void testCaseInsensitiveDescriptorType() 118 { 119 DescriptorSupport ds = new DescriptorSupport (new String []{ 120 "name=getWineList", 121 "descriptorType=oPERATION", 122 "displayName=Retrieve the list of available wines", 123 "role=getter" 124 }); 125 ModelMBeanOperationInfo attrinfo = 126 new ModelMBeanOperationInfo ("getWineList", 127 "Retrieve the list of available wines", 128 new MBeanParameterInfo [0], 129 "String", 130 MBeanOperationInfo.INFO, 131 ds); 132 } 133 } 134 | Popular Tags |