Search in sources :

Example 26 with AMX

use of com.sun.appserv.management.base.AMX in project Payara by payara.

the class AMXTest method checkAttributeTypes.

/**
 *     Verify:
 *     <ul>
 *     <li>that all Attributes are of standard types and Serializable</li>
 *     </ul>
 */
public void checkAttributeTypes(final ObjectName objectName) throws Exception {
    final AMX proxy = getProxyFactory().getProxy(objectName, AMX.class);
    final MBeanInfo info = Util.getExtra(proxy).getMBeanInfo();
    final MBeanAttributeInfo[] attributes = info.getAttributes();
    boolean emittedName = false;
    for (int i = 0; i < attributes.length; ++i) {
        final MBeanAttributeInfo attrInfo = attributes[i];
        final String type = attrInfo.getType();
        if (!isSuitableReturnTypeForAPI(type)) {
            if (!emittedName) {
                emittedName = true;
            }
            if (!type.equals(CoverageInfo.class.getName())) {
                trace("WARNING: unsuitable Attribute type in API: " + type + " " + attrInfo.getName() + " in " + objectName);
            }
        }
    }
}
Also used : MBeanInfo(javax.management.MBeanInfo) AMX(com.sun.appserv.management.base.AMX) MBeanAttributeInfo(javax.management.MBeanAttributeInfo)

Example 27 with AMX

use of com.sun.appserv.management.base.AMX in project Payara by payara.

the class AMXTest method checkNameMatchesJ2EEName.

/**
 *     Verify that getName() is the same as the 'name' property in the ObjectName.
 */
public void checkNameMatchesJ2EEName(final ObjectName childObjectName) throws Exception {
    final AMX childProxy = getProxyFactory().getProxy(childObjectName, AMX.class);
    if (childProxy instanceof NamedConfigElement) {
        final String j2eeName = childProxy.getName();
        assertEquals(j2eeName, childProxy.getName());
    }
}
Also used : AMX(com.sun.appserv.management.base.AMX) NamedConfigElement(com.sun.appserv.management.config.NamedConfigElement)

Example 28 with AMX

use of com.sun.appserv.management.base.AMX in project Payara by payara.

the class AMXTest method testNoGoofyNames.

public void testNoGoofyNames() {
    final long start = now();
    final Set<AMX> all = getAllAMX();
    for (final AMX amx : all) {
        final ObjectName objectName = Util.getObjectName(amx);
        final MBeanInfo mbeanInfo = Util.getExtra(amx).getMBeanInfo();
        testNoGoofyNames(objectName, mbeanInfo.getAttributes());
        testNoGoofyNames(objectName, mbeanInfo.getOperations());
    }
    printElapsed("testNoGoofyNames", all.size(), start);
}
Also used : MBeanInfo(javax.management.MBeanInfo) AMX(com.sun.appserv.management.base.AMX) ObjectName(javax.management.ObjectName)

Example 29 with AMX

use of com.sun.appserv.management.base.AMX in project Payara by payara.

the class AMXTest method checkReturnTypes.

/**
 *     Verify:
 *     <ul>
 *     <li>that all return types are suitable for the API</li>
 *     </ul>
 */
public void checkReturnTypes(final ObjectName objectName) throws Exception {
    final AMX proxy = getProxyFactory().getProxy(objectName, AMX.class);
    final MBeanInfo info = Util.getExtra(proxy).getMBeanInfo();
    final MBeanOperationInfo[] operations = info.getOperations();
    boolean emittedName = false;
    for (int i = 0; i < operations.length; ++i) {
        final MBeanOperationInfo opInfo = operations[i];
        final String returnType = opInfo.getReturnType();
        if (!isSuitableReturnTypeForAPI(returnType)) {
            if (!emittedName) {
                emittedName = true;
                trace("\n" + objectName);
            }
            trace("WARNING: unsuitable return type in API: " + returnType + " " + opInfo.getName() + "(...)");
        }
    }
}
Also used : MBeanInfo(javax.management.MBeanInfo) MBeanOperationInfo(javax.management.MBeanOperationInfo) AMX(com.sun.appserv.management.base.AMX)

Example 30 with AMX

use of com.sun.appserv.management.base.AMX in project Payara by payara.

the class AMXTest method checkCreateRemoveGet.

/**
 *     Verify:
 *     <ul>
 *     <li>each create() or createAbc() method ends in "Config" if it returns an AMXConfig subclass</li>
 *     <li>each remove() or removeAbc() method ends in "Config"</li>
 *     </ul>
 */
public void checkCreateRemoveGet(final ObjectName objectName) throws Exception {
    final AMX proxy = getProxyFactory().getProxy(objectName, AMX.class);
    if (proxy instanceof Container) {
        final Method[] methods = getInterfaceClass(proxy).getMethods();
        final MBeanInfo mbeanInfo = Util.getExtra(proxy).getMBeanInfo();
        final MBeanOperationInfo[] operations = mbeanInfo.getOperations();
        for (int methodIdx = 0; methodIdx < methods.length; ++methodIdx) {
            final Method method = methods[methodIdx];
            final String methodName = method.getName();
            if (methodName.startsWith("create") && !methodName.endsWith("Config")) {
                if (AMXConfig.class.isAssignableFrom(method.getReturnType()) && (!(proxy instanceof SecurityMapConfig))) {
                    trace("WARNING: method " + methodName + " does not end in 'Config': " + objectName);
                }
            } else if (methodName.startsWith("remove") && !methodName.endsWith("Config") && proxy instanceof AMXConfig) {
                if (// method.getReturnType() == Void.class &&
                method.getParameterTypes().length == 1 && method.getParameterTypes()[0] == String.class && !method.getName().equals("removeProperty") && !method.getName().equals("removeSystemProperty") && (!(proxy instanceof SecurityMapConfig))) {
                    trace("WARNING: method " + methodName + " does not end in 'Config': " + methodName);
                }
            }
        }
    }
}
Also used : Container(com.sun.appserv.management.base.Container) MBeanInfo(javax.management.MBeanInfo) MBeanOperationInfo(javax.management.MBeanOperationInfo) SecurityMapConfig(com.sun.appserv.management.config.SecurityMapConfig) Method(java.lang.reflect.Method) AMX(com.sun.appserv.management.base.AMX) AMXConfig(com.sun.appserv.management.config.AMXConfig)

Aggregations

AMX (com.sun.appserv.management.base.AMX)37 ObjectName (javax.management.ObjectName)10 Container (com.sun.appserv.management.base.Container)6 MBeanInfo (javax.management.MBeanInfo)6 HashSet (java.util.HashSet)5 AMXConfig (com.sun.appserv.management.config.AMXConfig)4 Method (java.lang.reflect.Method)3 Iterator (java.util.Iterator)3 Set (java.util.Set)3 MBeanOperationInfo (javax.management.MBeanOperationInfo)3 MBeanServerConnection (javax.management.MBeanServerConnection)3 AMXDebugStuff (org.glassfish.admin.amx.util.AMXDebugStuff)3 QueryMgr (com.sun.appserv.management.base.QueryMgr)2 ProxyFactory (com.sun.appserv.management.client.ProxyFactory)2 DomainConfig (com.sun.appserv.management.config.DomainConfig)2 CoverageInfo (com.sun.appserv.management.ext.coverage.CoverageInfo)2 Map (java.util.Map)2 TreeSet (java.util.TreeSet)2 MBeanAttributeInfo (javax.management.MBeanAttributeInfo)2 DomainRoot (com.sun.appserv.management.DomainRoot)1