X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fconfig%2Fyang-jmx-generator%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fconfig%2Fyangjmxgenerator%2Fattribute%2FJavaAttribute.java;h=e13c22a2ab77cf02267cac1e9a088a03ad36d090;hp=e01063ef92e86b217bc4c737eb89b0f7c17cf283;hb=103bf49aecb298d1022e7958d41e5fdcb484f315;hpb=1ff9939abc7a4072b07df6b79516fe344b1b42e3 diff --git a/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/attribute/JavaAttribute.java b/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/attribute/JavaAttribute.java index e01063ef92..e13c22a2ab 100644 --- a/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/attribute/JavaAttribute.java +++ b/opendaylight/config/yang-jmx-generator/src/main/java/org/opendaylight/controller/config/yangjmxgenerator/attribute/JavaAttribute.java @@ -8,21 +8,22 @@ package org.opendaylight.controller.config.yangjmxgenerator.attribute; import com.google.common.base.Preconditions; +import java.util.Arrays; +import java.util.List; +import javax.management.openmbean.ArrayType; +import javax.management.openmbean.CompositeType; +import javax.management.openmbean.OpenDataException; +import javax.management.openmbean.OpenType; +import javax.management.openmbean.SimpleType; +import org.opendaylight.controller.config.api.IdentityAttributeRef; import org.opendaylight.controller.config.yangjmxgenerator.TypeProviderWrapper; import org.opendaylight.yangtools.sal.binding.model.api.Type; import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; +import org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition; import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition; -import javax.management.openmbean.ArrayType; -import javax.management.openmbean.CompositeType; -import javax.management.openmbean.OpenDataException; -import javax.management.openmbean.OpenType; -import javax.management.openmbean.SimpleType; -import java.util.Arrays; -import java.util.List; - public class JavaAttribute extends AbstractAttribute implements TypedAttribute { public static final String DESCRIPTION_OF_VALUE_ATTRIBUTE_FOR_UNION = "valueOfArtificialUnionProperty"; @@ -36,6 +37,7 @@ public class JavaAttribute extends AbstractAttribute implements TypedAttribute { TypeProviderWrapper typeProviderWrapper) { super(leaf); this.type = typeProviderWrapper.getType(leaf); + this.typeDefinition = leaf.getType(); this.typeProviderWrapper = typeProviderWrapper; this.nullableDefault = leaf.getDefault(); @@ -93,24 +95,30 @@ public class JavaAttribute extends AbstractAttribute implements TypedAttribute { @Override public boolean equals(Object o) { - if (this == o) + if (this == o) { return true; - if (o == null || getClass() != o.getClass()) + } + if (o == null || getClass() != o.getClass()) { return false; - if (!super.equals(o)) + } + if (!super.equals(o)) { return false; + } JavaAttribute that = (JavaAttribute) o; if (nullableDefault != null ? !nullableDefault - .equals(that.nullableDefault) : that.nullableDefault != null) + .equals(that.nullableDefault) : that.nullableDefault != null) { return false; + } if (nullableDescription != null ? !nullableDescription .equals(that.nullableDescription) - : that.nullableDescription != null) + : that.nullableDescription != null) { return false; - if (type != null ? !type.equals(that.type) : that.type != null) + } + if (type != null ? !type.equals(that.type) : that.type != null) { return false; + } return true; } @@ -147,11 +155,17 @@ public class JavaAttribute extends AbstractAttribute implements TypedAttribute { return getCompositeTypeForUnion(baseTypeDefinition); } else if (isDerivedType(baseType, getType())) { return getCompositeType(baseType, baseTypeDefinition); + } else if (isIdentityRef()) { + return getCompositeTypeForIdentity(); } return getSimpleType(getType()); } + public boolean isIdentityRef() { + return typeDefinition instanceof IdentityrefTypeDefinition; + } + private OpenType getCompositeTypeForUnion(TypeDefinition baseTypeDefinition) { Preconditions.checkArgument(baseTypeDefinition instanceof UnionTypeDefinition, "Expected %s instance but was %s", UnionTypeDefinition.class, baseTypeDefinition); @@ -176,7 +190,9 @@ public class JavaAttribute extends AbstractAttribute implements TypedAttribute { OpenType innerCompositeType; if(isDerivedType(innerTypeBaseType, innerType)) { - innerCompositeType = getCompositeType(innerTypeBaseType, baseInnerTypeDefinition); + innerCompositeType = baseInnerTypeDefinition instanceof UnionTypeDefinition ? + getCompositeTypeForUnion(baseInnerTypeDefinition) : + getCompositeType(innerTypeBaseType, baseInnerTypeDefinition); } else { innerCompositeType = SimpleTypeResolver.getSimpleType(innerType); } @@ -216,7 +232,7 @@ public class JavaAttribute extends AbstractAttribute implements TypedAttribute { return simpleType; } - private OpenType getCompositeType(Type baseType, TypeDefinition baseTypeDefinition) { + private OpenType getCompositeType(Type baseType, TypeDefinition baseTypeDefinition) { SimpleType innerItemType = SimpleTypeResolver.getSimpleType(baseType); String innerItemName = typeProviderWrapper.getJMXParamForBaseType(baseTypeDefinition); @@ -233,6 +249,19 @@ public class JavaAttribute extends AbstractAttribute implements TypedAttribute { } } + public OpenType getCompositeTypeForIdentity() { + String[] itemNames = new String[]{IdentityAttributeRef.QNAME_ATTR_NAME}; + String description = getNullableDescription() == null ? getAttributeYangName() : getNullableDescription(); + OpenType[] itemTypes = new OpenType[]{SimpleType.STRING}; + + try { + return new CompositeType(getUpperCaseCammelCase(), description, itemNames, itemNames, itemTypes); + } catch (OpenDataException e) { + throw new RuntimeException("Unable to create " + CompositeType.class + " with inner element of type " + + itemTypes, e); + } + } + private OpenType getArrayType() { String innerTypeFullyQName = getInnerType(getType()); SimpleType innerSimpleType = SimpleTypeResolver.getSimpleType(innerTypeFullyQName); @@ -263,7 +292,7 @@ public class JavaAttribute extends AbstractAttribute implements TypedAttribute { } private boolean isDerivedType(Type baseType, Type currentType) { - return baseType.equals(currentType) == false; + return baseType.equals(currentType) == false; } private static String getInnerType(Type type) {