/*
* JBoss, the OpenSource J2EE webOS
*
* Distributable under LGPL license.
* See terms of license at gnu.org.
*/
package test.compliance.metadata;
import junit.framework.TestCase;
import junit.framework.AssertionFailedError;
import java.lang.reflect.Method;
import javax.management.MBeanAttributeInfo;
import javax.management.IntrospectionException;
import test.compliance.metadata.support.Trivial;
/**
* Tests MBeanAttributeInfo.
*
* @author Juha Lindfors.
* @version $Revision: 1.1 $
*/
public class MBeanAttributeInfoTEST extends TestCase
{
public MBeanAttributeInfoTEST(String s)
{
super(s);
}
/**
* Tests MBeanAttributeInfo(String name, String descr, Method getter, Method setter) constructor.
*/
public void testConstructorWithAccessorMethods()
{
try
{
Class c = Trivial.class;
Method getter = c.getMethod("getSomething", new Class[0]);
Method setter = c.getMethod("setSomething", new Class[] { String.class });
MBeanAttributeInfo info = new MBeanAttributeInfo("Something", "a description", getter, setter);
assertTrue(info.getDescription().equals("a description"));
assertTrue(info.getName().equals("Something"));
assertTrue(info.getType().equals("java.lang.String"));
assertTrue(info.isReadable() == true);
assertTrue(info.isWritable() == true);
assertTrue(info.isIs() == false);
}
catch (AssertionFailedError e)
{
throw e;
}
catch (Throwable t)
{
t.printStackTrace();
fail("Unexpected error: " + t.toString());
}
}
/**
* Tests MBeanAttributeInfo(String name, String descr, Method getter, Method setter) with misplaced accessor methods.
*/
public void testConstructorWithMisplacedAccessorMethods()
{
try
{
Class c = Trivial.class;
Method getter = c.getMethod("getSomething", new Class[0]);
Method setter = c.getMethod("setSomething", new Class[] { String.class });
MBeanAttributeInfo info = new MBeanAttributeInfo("Something", "a description", setter, getter);
// shouldn't reach here
fail("Introspection exception should have been thrown.");
}
catch (IntrospectionException e)
{
// this is expected
}
catch (AssertionFailedError e)
{
throw e;
}
catch (Throwable t)
{
t.printStackTrace();
fail("Unexpected error: " + t.toString());
}
}
/**
* Tests MBeanAttributeInfo(String name, String descr, Method getter, Method setter) with invalid getter method.
*/
public void testConstructorWithInvalidGetterMethod()
{
try
{
Class c = Trivial.class;
Method getter = c.getMethod("getSomethingInvalid", new Class[] { Object.class });
Method setter = c.getMethod("setSomethingInvalid", new Class[] { String.class });
MBeanAttributeInfo info = new MBeanAttributeInfo("Something", "a description", getter, setter);
// shouldn't reach here
fail("Introspection exception should have been thrown.");
}
catch (IntrospectionException e)
{
// this is expected
}
catch (AssertionFailedError e)
{
throw e;
}
catch (Throwable t)
{
t.printStackTrace();
fail("Unexpected error: " + t.toString());
}
}
/**
* Tests MBeanAttributeInfo(String name, String descr, Method getter, Method setter) with invalid getter method (void return type).
*/
public void testConstructorWithInvalidGetterMethod2()
{
try
{
Class c = Trivial.class;
Method getter = c.getMethod("getSomethingInvalid2", new Class[] { } );
Method setter = c.getMethod("setSomethingInvalid2", new Class[] { String.class });
MBeanAttributeInfo info = new MBeanAttributeInfo("Something", "a description", getter, setter);
// shouldn't reach here
fail("Introspection exception should have been thrown.");
}
catch (IntrospectionException e)
{
// this is expected
}
catch (AssertionFailedError e)
{
throw e;
}
catch (Throwable t)
{
t.printStackTrace();
fail("Unexpected error: " + t.toString());
}
}
}