Package test.javax.management.modelmbean

Source Code of test.javax.management.modelmbean.ModelMBeanOperationInfoTest$Surgeon

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

package test.javax.management.modelmbean;

import java.lang.reflect.Method;
import javax.management.Descriptor;
import javax.management.MBeanOperationInfo;
import javax.management.MBeanParameterInfo;
import javax.management.RuntimeOperationsException;
import javax.management.modelmbean.DescriptorSupport;
import javax.management.modelmbean.ModelMBeanOperationInfo;

import test.MX4JTestCase;

/**
* Test case of ModelMBeanOperationInfo. It will try to verify an appropriate
* behaviour in particular with respect to the descriptor values
*
* @version $Revision: 1.5 $
* @see
*/

public class ModelMBeanOperationInfoTest extends MX4JTestCase
{
   public static class Surgeon
   {
      public boolean appendectomy()
      {
         return true;
      }

      public boolean tonsillectomy(int tonsils)
      {
         return true;
      }
   }

   public ModelMBeanOperationInfoTest(String s)
   {
      super(s);
   }

   public void setUp() throws Exception
   {
      super.setUp();
   }

   public void tearDown() throws Exception
   {
      super.tearDown();
   }

   public void testValidDescriptorFields() throws Exception
   {
      // Test that only name and descriptorType are mandatory
      Descriptor descriptor = new DescriptorSupport(new String[]{"name", "descriptortype", "role", "visibility"},
                                                    new String[]{"operation1", "operation", "operation", "1"});
      ModelMBeanOperationInfo operation
              = new ModelMBeanOperationInfo("operation1", "An operation", null, "java.lang.String", ModelMBeanOperationInfo.ACTION, descriptor);
      // in case the descriptor is not valid this should be overriden
      assertEquals(operation.getDescriptor().getFieldValue("visibility"), "1");
   }

   public void testAddDefaultDisplayName() throws Exception
   {
      Method op =
              ModelMBeanOperationInfoTest.Surgeon.class.getMethod("appendectomy",
                                                                  new Class[0]);
      String[] fields = {"name", "descriptorType", "role"};
      String[] values =
              {op.getName(), "operation", "operation"};
      DescriptorSupport ds = new DescriptorSupport(fields, values);
      ModelMBeanOperationInfo info =
              new ModelMBeanOperationInfo("Good Appendectomy", op, ds);
      Descriptor d = info.getDescriptor();
      String dispname = (String)d.getFieldValue("displayName");
      assertTrue("Unexpected displayName",
                 dispname.compareTo(op.getName()) == 0);
   }

   public void testRoleValidation() throws Exception
   {
      Method op =
              ModelMBeanOperationInfoTest.Surgeon.class.getMethod("appendectomy",
                                                                  new Class[0]);
      String[] fields = {"name", "descriptorType", "role", "displayName"};
      String[] values =
              {op.getName(), "operation", "operation", "appendectomy"};
      DescriptorSupport ds = new DescriptorSupport(fields, values);
      ModelMBeanOperationInfo info =
              new ModelMBeanOperationInfo("Good Appendectomy", op, ds);

      try
      {
         values =
         new String[]{
            op.getName(),
            "operation",
            "constructor",
            "appendectomy"};
         ds = new DescriptorSupport(fields, values);
         info = new ModelMBeanOperationInfo("Bad Appendectomy", op, ds);
         fail("Expecting RuntimeOperationsException");
      }
      catch (RuntimeOperationsException x)
      {
         assertTrue(true); // success
      }
   }

   public void testCaseInsensitiveDescriptorType()
   {
      DescriptorSupport ds = new DescriptorSupport(new String[]{
         "name=getWineList",
         "descriptorType=oPERATION",
         "displayName=Retrieve the list of available wines",
         "role=getter"
      });
      ModelMBeanOperationInfo attrinfo =
              new ModelMBeanOperationInfo("getWineList",
                                          "Retrieve the list of available wines",
                                          new MBeanParameterInfo[0],
                                          "String",
                                          MBeanOperationInfo.INFO,
                                          ds);
   }
}
TOP

Related Classes of test.javax.management.modelmbean.ModelMBeanOperationInfoTest$Surgeon

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.