X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=code-generator%2Fbinding-generator-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fsal%2Fbinding%2Fgenerator%2Futil%2FBindingRuntimeContext.java;fp=code-generator%2Fbinding-generator-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fsal%2Fbinding%2Fgenerator%2Futil%2FBindingRuntimeContext.java;h=4a3d760172a379497a3e0d5408178285317abbe4;hb=084c385ef3eb20589df59fc18a309c35d263b977;hp=a69e30ea1f437067035f5ffc459a637ad3c1e958;hpb=1dfd8c8137ee39723a38a161781fca5fd77f6889;p=mdsal.git diff --git a/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/util/BindingRuntimeContext.java b/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/util/BindingRuntimeContext.java index a69e30ea1f..4a3d760172 100644 --- a/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/util/BindingRuntimeContext.java +++ b/code-generator/binding-generator-impl/src/main/java/org/opendaylight/yangtools/sal/binding/generator/util/BindingRuntimeContext.java @@ -1,3 +1,10 @@ +/* + * Copyright (c) 2014 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ package org.opendaylight.yangtools.sal.binding.generator.util; import com.google.common.base.Optional; @@ -8,7 +15,6 @@ import com.google.common.collect.HashBiMap; import com.google.common.collect.HashMultimap; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Multimap; - import java.util.AbstractMap; import java.util.AbstractMap.SimpleEntry; import java.util.Collection; @@ -17,7 +23,6 @@ import java.util.HashSet; import java.util.Map; import java.util.Map.Entry; import java.util.Set; - import org.opendaylight.yangtools.binding.generator.util.ReferencedTypeImpl; import org.opendaylight.yangtools.concepts.Immutable; import org.opendaylight.yangtools.sal.binding.generator.api.ClassLoadingStrategy; @@ -42,6 +47,7 @@ import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; import org.opendaylight.yangtools.yang.model.api.SchemaNode; +import org.opendaylight.yangtools.yang.model.api.TypeDefinition; import org.opendaylight.yangtools.yang.model.util.SchemaNodeUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -84,6 +90,8 @@ public class BindingRuntimeContext implements Immutable { for (ModuleContext ctx : modules.values()) { augmentationToSchema.putAll(ctx.getTypeToAugmentation()); typeToDefiningSchema.putAll(ctx.getTypeToSchema()); + + ctx.getTypedefs(); augmentableToAugmentations.putAll(ctx.getAugmentableToAugmentations()); choiceToCases.putAll(ctx.getChoiceToCases()); identities.putAll(ctx.getIdentities()); @@ -223,13 +231,28 @@ public class BindingRuntimeContext implements Immutable { return new ReferencedTypeImpl(type.getPackage().getName(), type.getSimpleName()); } + /** + * Returns schema ({@link DataSchemaNode}, {@link AugmentationSchema} or {@link TypeDefinition}) + * from which supplied class was generated. Returned schema may be augmented with + * additional information, which was not available at compile type + * (e.g. third party augmentations). + * + * @param type Binding Class for which schema should be retrieved. + * @return Instance of generated type (definition of Java API), along with + * {@link DataSchemaNode}, {@link AugmentationSchema} or {@link TypeDefinition} + * which was used to generate supplied class. + */ public Entry getTypeWithSchema(final Class type) { Object schema = typeToDefiningSchema.get(referencedType(type)); Type definedType = typeToDefiningSchema.inverse().get(schema); Preconditions.checkNotNull(schema); Preconditions.checkNotNull(definedType); + if(definedType instanceof GeneratedTypeBuilder) { + return new SimpleEntry<>(((GeneratedTypeBuilder) definedType).toInstance(), schema); + } + Preconditions.checkArgument(definedType instanceof GeneratedType,"Type {} is not GeneratedType",type); + return new SimpleEntry<>((GeneratedType) definedType,schema); - return new SimpleEntry<>(((GeneratedTypeBuilder) definedType).toInstance(), schema); } public ImmutableMap> getChoiceCaseChildren(final DataNodeContainer schema) {