All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.jetdrone.vertx.yoke.jmx.MiddlewareMBean Maven / Gradle / Ivy

There is a newer version: 3.0.0
Show newest version
package com.jetdrone.vertx.yoke.jmx;

import com.jetdrone.vertx.yoke.core.MountedMiddleware;

import javax.management.*;

public final class MiddlewareMBean implements DynamicMBean {

    private final MountedMiddleware middleware;

    public MiddlewareMBean(MountedMiddleware middleware) {
        this.middleware = middleware;
    }

    @Override
    public synchronized Object getAttribute(String name) throws AttributeNotFoundException {
        switch (name) {
            case "mount":
                return middleware.mount;
            case "type":
                return middleware.middleware.getClass().getName();
            case "enabled":
                return middleware.enabled;
            default:
                throw new AttributeNotFoundException("No such property: " + name);
        }
    }

    @Override
    public synchronized void setAttribute(Attribute attribute) throws InvalidAttributeValueException, MBeanException, AttributeNotFoundException {
        try {
            switch (attribute.getName()) {
                case "enabled":
                    middleware.enabled = (Boolean) attribute.getValue();
                    break;
                default:
                    throw new AttributeNotFoundException("No such property: " + attribute.getName());
            }
        } catch (RuntimeException e) {
            throw new MBeanException(e);
        }
    }

    @Override
    public synchronized AttributeList getAttributes(String[] names) {
        AttributeList list = new AttributeList();
        for (String name : names) {
            try {
                switch (name) {
                    case "mount":
                        list.add(new Attribute("mount", getAttribute(name)));
                        break;
                    case "type":
                        list.add(new Attribute("type", getAttribute(name)));
                        break;
                    case "enabled":
                        list.add(new Attribute("enabled", getAttribute(name)));
                        break;
                }
            }catch (AttributeNotFoundException e) {
                // ignore
            }
        }
        return list;
    }

    @Override
    public synchronized AttributeList setAttributes(AttributeList list) {
        return new AttributeList();
    }

    @Override
    public Object invoke(String name, Object[] args, String[] sig) throws MBeanException, ReflectionException {
        throw new ReflectionException(new NoSuchMethodException(name));
    }

    @Override
    public synchronized MBeanInfo getMBeanInfo() {
        MBeanAttributeInfo[] attrs = {
                new MBeanAttributeInfo(
                        "mount",
                        "java.lang.String",
                        "Middleware Mount",
                        true,   // isReadable
                        false,   // isWritable
                        false), // isIs
                new MBeanAttributeInfo(
                        "type",
                        "java.lang.String",
                        "Middleware Type",
                        true,   // isReadable
                        false,   // isWritable
                        false), // isIs
                new MBeanAttributeInfo(
                        "enabled",
                        "java.lang.Boolean",
                        "Middleware Enabled",
                        true,   // isReadable
                        true,   // isWritable
                        true), // isIs
        };

        return new MBeanInfo(
                this.getClass().getName(),
                "Middleware Manager MBean",
                attrs,
                null,   // constructors
                null,   // operations
                null);  // notifications
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy