From b22eca4b1cb7ae325b67041c52133c4be3b54c21 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 21 Jul 2016 11:11:42 +0200 Subject: [PATCH] Use direct type checks With the removal of old parser and ExtendedType each type definition implements proper subtype, hence we do not have to traverse the type tree up to root. Change-Id: Ib7a6ffa5f221278547e27e37b19c14a1a3c26d8a Signed-off-by: Robert Varga --- .../DataNodeContainerSerializerSource.java | 16 +++++-------- .../data/codec/impl/BindingCodecContext.java | 24 +++++++------------ .../data/codec/impl/ValueTypeCodec.java | 9 +------ 3 files changed, 15 insertions(+), 34 deletions(-) diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/gen/impl/DataNodeContainerSerializerSource.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/gen/impl/DataNodeContainerSerializerSource.java index 21917eff70..bc220ff445 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/gen/impl/DataNodeContainerSerializerSource.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/gen/impl/DataNodeContainerSerializerSource.java @@ -109,20 +109,16 @@ abstract class DataNodeContainerSerializerSource extends DataObjectSerializerSou final TypeDefinition type ; if (node instanceof LeafSchemaNode) { type = ((LeafSchemaNode) node).getType(); - } else if(node instanceof LeafListSchemaNode) { + } else if (node instanceof LeafListSchemaNode) { type = ((LeafListSchemaNode) node).getType(); } else { type = null; } - String prefix = "get"; - if(type != null) { - TypeDefinition rootType = type; - while (rootType.getBaseType() != null) { - rootType = rootType.getBaseType(); - } - if(rootType instanceof BooleanTypeDefinition || rootType instanceof EmptyTypeDefinition) { - prefix = "is"; - } + final String prefix; + if (type instanceof BooleanTypeDefinition || type instanceof EmptyTypeDefinition) { + prefix = "is"; + } else { + prefix = "get"; } return prefix + BindingMapping.getGetterSuffix(node.getQName()); } diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/impl/BindingCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/impl/BindingCodecContext.java index 3aac56f4c2..dbf066d44d 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/impl/BindingCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/impl/BindingCodecContext.java @@ -236,11 +236,8 @@ final class BindingCodecContext implements CodecContextFactory, BindingCodecTree return getLeafNodesUsingReflection(parentClass, getterToLeafSchema); } - private static String getGetterName(final QName qName, TypeDefinition typeDef) { + private static String getGetterName(final QName qName, final TypeDefinition typeDef) { final String suffix = BindingMapping.getGetterSuffix(qName); - while (typeDef.getBaseType() != null) { - typeDef = typeDef.getBaseType(); - } if (typeDef instanceof BooleanTypeDefinition || typeDef instanceof EmptyTypeDefinition) { return "is" + suffix; } @@ -309,30 +306,25 @@ final class BindingCodecContext implements CodecContextFactory, BindingCodecTree return ValueTypeCodec.NOOP_CODEC; } - private Codec getCodecForBindingClass(final Class valueType, final TypeDefinition instantiatedType) { - @SuppressWarnings("rawtypes") - TypeDefinition rootType = instantiatedType; - while (rootType.getBaseType() != null) { - rootType = rootType.getBaseType(); - } - if (rootType instanceof IdentityrefTypeDefinition) { + private Codec getCodecForBindingClass(final Class valueType, final TypeDefinition typeDef) { + if (typeDef instanceof IdentityrefTypeDefinition) { return ValueTypeCodec.encapsulatedValueCodecFor(valueType, identityCodec); - } else if (rootType instanceof InstanceIdentifierTypeDefinition) { + } else if (typeDef instanceof InstanceIdentifierTypeDefinition) { return ValueTypeCodec.encapsulatedValueCodecFor(valueType, instanceIdentifierCodec); - } else if (rootType instanceof UnionTypeDefinition) { - final Callable loader = UnionTypeCodec.loader(valueType, (UnionTypeDefinition) rootType, this); + } else if (typeDef instanceof UnionTypeDefinition) { + final Callable loader = UnionTypeCodec.loader(valueType, (UnionTypeDefinition) typeDef, this); try { return loader.call(); } catch (final Exception e) { throw new IllegalStateException("Unable to load codec for " + valueType, e); } - } else if (rootType instanceof LeafrefTypeDefinition) { + } else if (typeDef instanceof LeafrefTypeDefinition) { final Entry typeWithSchema = context.getTypeWithSchema(valueType); final Object schema = typeWithSchema.getValue(); Preconditions.checkState(schema instanceof TypeDefinition); return getCodec(valueType, (TypeDefinition) schema); } - return ValueTypeCodec.getCodecFor(valueType, instantiatedType); + return ValueTypeCodec.getCodecFor(valueType, typeDef); } @Override diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/impl/ValueTypeCodec.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/impl/ValueTypeCodec.java index d69970b93f..c2b12413e3 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/impl/ValueTypeCodec.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/yangtools/binding/data/codec/impl/ValueTypeCodec.java @@ -93,14 +93,7 @@ abstract class ValueTypeCodec implements Codec { if (BindingReflections.isBindingClass(typeClz)) { return getCachedSchemaUnawareCodec(typeClz, getCodecLoader(typeClz, def)); } - TypeDefinition rootType = def; - while (rootType.getBaseType() != null) { - rootType = rootType.getBaseType(); - } - if (rootType instanceof EmptyTypeDefinition) { - return EMPTY_CODEC; - } - return NOOP_CODEC; + return def instanceof EmptyTypeDefinition ? EMPTY_CODEC : NOOP_CODEC; } private static SchemaUnawareCodec getCachedSchemaUnawareCodec(final Class typeClz, final Callable loader) { -- 2.36.6