X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fnetconf%2Fconfig-netconf-connector%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fnetconf%2Fconfignetconfconnector%2Fmapping%2Fattributes%2Fresolving%2FArrayAttributeResolvingStrategy.java;h=9c17fa4892df1ef5ab4298ca1f5da8fb39dec27a;hb=7d4251f30d145d8b402e206a11fb4a2ff90ac351;hp=f0d7960085f21bd5e4a220797d648521c93f51d8;hpb=61bad4207cc91cd14d8d38a255ad6549c20ff54e;p=controller.git diff --git a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/resolving/ArrayAttributeResolvingStrategy.java b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/resolving/ArrayAttributeResolvingStrategy.java index f0d7960085..9c17fa4892 100644 --- a/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/resolving/ArrayAttributeResolvingStrategy.java +++ b/opendaylight/netconf/config-netconf-connector/src/main/java/org/opendaylight/controller/netconf/confignetconfconnector/mapping/attributes/resolving/ArrayAttributeResolvingStrategy.java @@ -9,23 +9,23 @@ package org.opendaylight.controller.netconf.confignetconfconnector.mapping.attributes.resolving; import com.google.common.base.Optional; -import org.opendaylight.controller.netconf.api.NetconfDocumentedException; -import org.opendaylight.controller.netconf.confignetconfconnector.util.Util; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - +import java.lang.reflect.Array; +import java.util.List; import javax.management.openmbean.ArrayType; import javax.management.openmbean.CompositeDataSupport; import javax.management.openmbean.CompositeType; +import javax.management.openmbean.OpenDataException; import javax.management.openmbean.OpenType; -import java.lang.reflect.Array; -import java.util.List; +import org.opendaylight.controller.netconf.api.NetconfDocumentedException; +import org.opendaylight.controller.netconf.confignetconfconnector.util.Util; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; final class ArrayAttributeResolvingStrategy extends AbstractAttributeResolvingStrategy> { private final AttributeResolvingStrategy> innerTypeResolvingStrategy; - private static final Logger logger = LoggerFactory.getLogger(ArrayAttributeResolvingStrategy.class); + private static final Logger LOG = LoggerFactory.getLogger(ArrayAttributeResolvingStrategy.class); public ArrayAttributeResolvingStrategy(AttributeResolvingStrategy> innerTypeResolved, ArrayType openType) { @@ -74,7 +74,18 @@ final class ArrayAttributeResolvingStrategy extends AbstractAttributeResolvingSt i++; } - logger.debug("Attribute {} : {} parsed to type {} as {}", attrName, value, getOpenType(), + // Rebuild open type. Underlying composite types might have changed + if (innerTypeResolvingStrategy.getOpenType() instanceof CompositeType) { + try { + final ArrayType openType = new ArrayType(getOpenType().getDimension(), innerTypeResolvingStrategy.getOpenType()); + setOpenType(openType); + } catch (OpenDataException e) { + throw new IllegalStateException("An error occurred during restoration of array type " + this + + " for attribute " + attrName + " from value " + value, e); + } + } + + LOG.debug("Attribute {} : {} parsed to type {} as {}", attrName, value, getOpenType(), toStringArray(parsedArray)); return Optional.of(parsedArray);