X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fconfig%2Fconfig-manager%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fmanager%2Fimpl%2Fdynamicmbean%2FAbstractDynamicWrapper.java;h=23a4424a0b028f313147f1e7109a43202464eb04;hp=0346bdd19c48ff131bde9a99bfcc59bbe05321f5;hb=refs%2Fchanges%2F73%2F46573%2F5;hpb=660c3e22ca97bc613ea6f6288503620bba6fb233 diff --git a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/dynamicmbean/AbstractDynamicWrapper.java b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/dynamicmbean/AbstractDynamicWrapper.java index 0346bdd19c..23a4424a0b 100644 --- a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/dynamicmbean/AbstractDynamicWrapper.java +++ b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/dynamicmbean/AbstractDynamicWrapper.java @@ -7,8 +7,6 @@ */ package org.opendaylight.controller.config.manager.impl.dynamicmbean; -import static java.lang.String.format; - import java.lang.reflect.Array; import java.lang.reflect.Method; import java.util.ArrayList; @@ -59,14 +57,12 @@ abstract class AbstractDynamicWrapper implements DynamicMBeanModuleWrapper { private static final class ModuleNotificationListener implements NotificationListener { private final ObjectName objectNameInternal; private final MBeanServer internalServer; - private final ObjectName thisWrapperObjectName; private final MBeanServer configMBeanServer; private ModuleNotificationListener(final ObjectName objectNameInternal, final MBeanServer internalServer, - final ObjectName thisWrapperObjectName, final MBeanServer configMBeanServer) { + final MBeanServer configMBeanServer) { this.objectNameInternal = objectNameInternal; this.internalServer = internalServer; - this.thisWrapperObjectName = thisWrapperObjectName; this.configMBeanServer = configMBeanServer; } @@ -74,25 +70,23 @@ abstract class AbstractDynamicWrapper implements DynamicMBeanModuleWrapper { public void handleNotification(final Notification n, final Object handback) { if (n instanceof MBeanServerNotification && n.getType() - .equals(MBeanServerNotification.UNREGISTRATION_NOTIFICATION)) { - if (((MBeanServerNotification) n).getMBeanName().equals( - thisWrapperObjectName)) { - try { - internalServer.unregisterMBean(objectNameInternal); - configMBeanServer.removeNotificationListener( - MBeanServerDelegate.DELEGATE_NAME, this); - } catch (MBeanRegistrationException - | ListenerNotFoundException - | InstanceNotFoundException e) { - throw new IllegalStateException(e); - } + .equals(MBeanServerNotification.UNREGISTRATION_NOTIFICATION) + && ((MBeanServerNotification) n).getMBeanName().equals( + objectNameInternal)) { + try { + internalServer.unregisterMBean(objectNameInternal); + configMBeanServer.removeNotificationListener( + MBeanServerDelegate.DELEGATE_NAME, this); + } catch (MBeanRegistrationException + | ListenerNotFoundException + | InstanceNotFoundException e) { + throw new IllegalStateException(e); } } } } private static final Logger LOG = LoggerFactory.getLogger(AbstractDynamicWrapper.class); - protected final boolean writable; protected final Module module; private final MBeanInfo mbeanInfo; @@ -106,20 +100,17 @@ abstract class AbstractDynamicWrapper implements DynamicMBeanModuleWrapper { final ObjectName thisWrapperObjectName, final MBeanOperationInfo[] dOperations, final MBeanServer internalServer, final MBeanServer configMBeanServer) { - this.writable = writable; this.module = module; this.moduleIdentifier = moduleIdentifier; this.internalServer = internalServer; this.objectNameInternal = thisWrapperObjectName; // register the actual instance into an mbean server. - registerActualModule(module, thisWrapperObjectName, objectNameInternal, - internalServer, configMBeanServer); + registerActualModule(objectNameInternal, configMBeanServer); Set> jmxInterfaces = InterfacesHelper.getMXInterfaces(module .getClass()); - this.attributeHolderMap = buildMBeanInfo(module, writable, - moduleIdentifier, jmxInterfaces, internalServer, - objectNameInternal); - this.mbeanInfo = generateMBeanInfo(module.getClass().getName(), module, + this.attributeHolderMap = buildMBeanInfo(writable, + moduleIdentifier, jmxInterfaces, objectNameInternal); + this.mbeanInfo = generateMBeanInfo(module, attributeHolderMap, dOperations, jmxInterfaces); } @@ -128,12 +119,8 @@ abstract class AbstractDynamicWrapper implements DynamicMBeanModuleWrapper { * platform mbean server. Wait until this wrapper gets unregistered, in that * case unregister the module and remove listener. */ - private final NotificationListener registerActualModule(final Module module, - final ObjectName thisWrapperObjectName, - final ObjectName objectNameInternal, - final MBeanServer internalServer, + private final NotificationListener registerActualModule(final ObjectName objectNameInternal, final MBeanServer configMBeanServer) { - try { internalServer.registerMBean(module, objectNameInternal); } catch (InstanceAlreadyExistsException | MBeanRegistrationException @@ -142,7 +129,7 @@ abstract class AbstractDynamicWrapper implements DynamicMBeanModuleWrapper { "Error occured during mbean registration with name " + objectNameInternal, e); } - NotificationListener listener = new ModuleNotificationListener(objectNameInternal, internalServer, thisWrapperObjectName, configMBeanServer); + NotificationListener listener = new ModuleNotificationListener(objectNameInternal, internalServer, configMBeanServer); try { configMBeanServer.addNotificationListener( MBeanServerDelegate.DELEGATE_NAME, listener, null, null); @@ -152,7 +139,7 @@ abstract class AbstractDynamicWrapper implements DynamicMBeanModuleWrapper { return listener; } - private static MBeanInfo generateMBeanInfo(final String className, final Module module, + private static MBeanInfo generateMBeanInfo(final Module module, final Map attributeHolderMap, final MBeanOperationInfo[] dOperations, final Set> jmxInterfaces) { @@ -163,7 +150,7 @@ abstract class AbstractDynamicWrapper implements DynamicMBeanModuleWrapper { for (AttributeHolder attributeHolder : attributeHolderMap.values()) { attributes.add(attributeHolder.toMBeanAttributeInfo()); } - return new MBeanInfo(className, dDescription, + return new MBeanInfo(module.getClass().getName(), dDescription, attributes.toArray(new MBeanAttributeInfo[0]), dConstructors, dOperations, new MBeanNotificationInfo[0]); } @@ -180,9 +167,8 @@ abstract class AbstractDynamicWrapper implements DynamicMBeanModuleWrapper { // inspect all exported interfaces ending with MXBean, extract getters & // setters into attribute holder - private static Map buildMBeanInfo(final Module module, - final boolean writable, final ModuleIdentifier moduleIdentifier, - final Set> jmxInterfaces, final MBeanServer internalServer, + private Map buildMBeanInfo(final boolean writable, final ModuleIdentifier moduleIdentifier, + final Set> jmxInterfaces, final ObjectName internalObjectName) { // internal variables for describing MBean elements @@ -205,7 +191,7 @@ abstract class AbstractDynamicWrapper implements DynamicMBeanModuleWrapper { for (MBeanAttributeInfo a : internalInfo.getAttributes()) { attributeMap.put(a.getName(), a); } - Map attributeHolderMap = new HashMap<>(); + Map attributeHolderMapLocal = new HashMap<>(); for (Method method : methods) { if (method.getParameterTypes().length == 1 @@ -229,10 +215,10 @@ abstract class AbstractDynamicWrapper implements DynamicMBeanModuleWrapper { AttributeHolder attributeHolder = new AttributeHolder( attribName, module, attributeMap.get(attribName) .getType(), writable, ifc, description); - attributeHolderMap.put(attribName, attributeHolder); + attributeHolderMapLocal.put(attribName, attributeHolder); } } - return attributeHolderMap; + return attributeHolderMapLocal; } // DynamicMBean methods @@ -276,14 +262,14 @@ abstract class AbstractDynamicWrapper implements DynamicMBeanModuleWrapper { } private Object fixDependencyListAttribute(final Object attribute) { - if (attribute.getClass().isArray() == false) { + if (!attribute.getClass().isArray()) { throw new IllegalArgumentException("Unexpected attribute type, should be an array, but was " + attribute.getClass()); } for (int i = 0; i < Array.getLength(attribute); i++) { Object on = Array.get(attribute, i); - if (on instanceof ObjectName == false) { + if (!(on instanceof ObjectName)) { throw new IllegalArgumentException("Unexpected attribute type, should be an ObjectName, but was " + on.getClass()); } on = fixObjectName((ObjectName) on); @@ -295,7 +281,7 @@ abstract class AbstractDynamicWrapper implements DynamicMBeanModuleWrapper { } private boolean isDependencyListAttr(final String attributeName, final Object attribute) { - if (attributeHolderMap.containsKey(attributeName) == false) { + if (!attributeHolderMap.containsKey(attributeName)) { return false; } @@ -356,7 +342,7 @@ abstract class AbstractDynamicWrapper implements DynamicMBeanModuleWrapper { } else { LOG.debug("Operation not found {} ", actionName); throw new UnsupportedOperationException( - format("Operation not found on %s. Method invoke is only supported for getInstance and getAttribute(s) " + String.format("Operation not found on %s. Method invoke is only supported for getInstance and getAttribute(s) " + "method, got actionName %s, params %s, signature %s ", moduleIdentifier, actionName, params, signature)); }