X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fconfig%2Fconfig-manager%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fmanager%2Fimpl%2Fdynamicmbean%2FDynamicWritableWrapper.java;h=2ab04e53e304fa8909543ded413b408941566fcc;hb=d2aed692dab458282c37d42b13a16cff743d598e;hp=a1cd6b01339dd7fc82864c3219bc5f32fc7de0ba;hpb=33ea0032f0837333a9181dd7556faa3266155080;p=controller.git diff --git a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/dynamicmbean/DynamicWritableWrapper.java b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/dynamicmbean/DynamicWritableWrapper.java index a1cd6b0133..2ab04e53e3 100644 --- a/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/dynamicmbean/DynamicWritableWrapper.java +++ b/opendaylight/config/config-manager/src/main/java/org/opendaylight/controller/config/manager/impl/dynamicmbean/DynamicWritableWrapper.java @@ -7,7 +7,13 @@ */ package org.opendaylight.controller.config.manager.impl.dynamicmbean; -import java.lang.reflect.Method; +import org.opendaylight.controller.config.api.ModuleIdentifier; +import org.opendaylight.controller.config.api.ValidationException; +import org.opendaylight.controller.config.api.jmx.ObjectNameUtil; +import org.opendaylight.controller.config.manager.impl.TransactionIdentifier; +import org.opendaylight.controller.config.spi.Module; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import javax.annotation.concurrent.ThreadSafe; import javax.management.Attribute; @@ -20,14 +26,7 @@ import javax.management.MBeanOperationInfo; import javax.management.MBeanServer; import javax.management.ObjectName; import javax.management.ReflectionException; - -import org.opendaylight.controller.config.api.ModuleIdentifier; -import org.opendaylight.controller.config.api.ValidationException; -import org.opendaylight.controller.config.api.jmx.ObjectNameUtil; -import org.opendaylight.controller.config.manager.impl.TransactionIdentifier; -import org.opendaylight.controller.config.spi.Module; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; +import java.lang.reflect.Method; /** * Wraps {@link org.opendaylight.controller.config.spi.Module} instance in a @@ -92,16 +91,11 @@ public class DynamicWritableWrapper extends AbstractDynamicWrapper { try { if (attribute.getValue() instanceof ObjectName) { - AttributeHolder attributeHolder = attributeHolderMap - .get(attribute.getName()); - if (attributeHolder.getRequireInterfaceOrNull() != null) { - attribute = new Attribute(attribute.getName(), - fixObjectName((ObjectName) attribute.getValue())); - } else { - attribute = new Attribute(attribute.getName(), - attribute.getValue()); - } + attribute = fixDependencyAttribute(attribute); + } else if(attribute.getValue() instanceof ObjectName[]) { + attribute = fixDependencyListAttribute(attribute); } + internalServer.setAttribute(objectNameInternal, attribute); } catch (InstanceNotFoundException e) { throw new MBeanException(e); @@ -109,6 +103,39 @@ public class DynamicWritableWrapper extends AbstractDynamicWrapper { } + private Attribute fixDependencyListAttribute(Attribute attribute) { + AttributeHolder attributeHolder = attributeHolderMap + .get(attribute.getName()); + if (attributeHolder.getRequireInterfaceOrNull() != null) { + attribute = new Attribute(attribute.getName(), + fixObjectNames((ObjectName[]) attribute.getValue())); + } + return attribute; + } + + private Attribute fixDependencyAttribute(Attribute attribute) { + AttributeHolder attributeHolder = attributeHolderMap + .get(attribute.getName()); + if (attributeHolder.getRequireInterfaceOrNull() != null) { + attribute = new Attribute(attribute.getName(), + fixObjectName((ObjectName) attribute.getValue())); + } else { + attribute = new Attribute(attribute.getName(), + attribute.getValue()); + } + return attribute; + } + + private ObjectName[] fixObjectNames(ObjectName[] dependencies) { + int i = 0; + + for (ObjectName dependencyOn : dependencies) { + dependencies[i++] = fixObjectName(dependencyOn); + } + + return dependencies; + } + @Override public AttributeList setAttributes(AttributeList attributes) { AttributeList result = new AttributeList();