import java.util.LinkedHashSet;
import java.util.Set;
import java.util.concurrent.Callable;
+import org.opendaylight.mdsal.binding.generator.util.BaseYangTypesProvider;
import org.opendaylight.mdsal.binding.spec.naming.BindingMapping;
-import org.opendaylight.mdsal.binding.yang.types.BaseYangTypes;
-import org.opendaylight.yangtools.concepts.Codec;
+import org.opendaylight.yangtools.concepts.IllegalArgumentCodec;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
import org.opendaylight.yangtools.yang.model.api.Module;
-import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.PathExpression;
import org.opendaylight.yangtools.yang.model.api.SchemaNode;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition;
if (subtype instanceof LeafrefTypeDefinition) {
addLeafrefValueCodec(unionCls, unionType, bindingCodecContext, values, subtype);
} else {
- final Method valueGetter =
- unionCls.getMethod("get" + BindingMapping.getClassName(subtype.getQName()));
+ final Method valueGetter = unionCls.getMethod(BindingMapping.GETTER_PREFIX
+ + BindingMapping.getClassName(subtype.getQName()));
final Class<?> valueType = valueGetter.getReturnType();
- final Codec<Object, Object> valueCodec = bindingCodecContext.getCodec(valueType, subtype);
+ final IllegalArgumentCodec<Object, Object> valueCodec =
+ bindingCodecContext.getCodec(valueType, subtype);
values.add(new UnionValueOptionContext(unionCls, valueType, valueGetter, valueCodec));
}
private static void addLeafrefValueCodec(final Class<?> unionCls, final UnionTypeDefinition unionType,
final BindingCodecContext bindingCodecContext, final Set<UnionValueOptionContext> values,
final TypeDefinition<?> subtype) throws NoSuchMethodException {
- final SchemaContext schemaContext = bindingCodecContext.getRuntimeContext().getSchemaContext();
+ final EffectiveModelContext schemaContext = bindingCodecContext.getRuntimeContext().getEffectiveModelContext();
final Module module = schemaContext.findModule(subtype.getQName().getModule()).get();
- final RevisionAwareXPath xpath = ((LeafrefTypeDefinition) subtype).getPathStatement();
+ final PathExpression xpath = ((LeafrefTypeDefinition) subtype).getPathStatement();
// find schema node in schema context by xpath of leafref
final SchemaNode dataNode;
if (xpath.isAbsolute()) {
final LeafSchemaNode typeNode = (LeafSchemaNode) dataNode;
// prepare name of type form return type of referenced leaf
- final String typeName = BindingMapping.getClassName(BaseYangTypes.BASE_YANG_TYPES_PROVIDER
+ final String typeName = BindingMapping.getClassName(BaseYangTypesProvider.INSTANCE
.javaTypeForSchemaDefinitionType(typeNode.getType(), typeNode).getName());
// get method via reflection from generated code according to
// get_TypeName_Value method
- final Method valueGetterParent = unionCls
- .getMethod(new StringBuilder("get").append(typeName).append(className).append("Value").toString());
+ final Method valueGetterParent = unionCls.getMethod(new StringBuilder().append(BindingMapping.GETTER_PREFIX)
+ .append(typeName).append(className).append("Value").toString());
final Class<?> returnType = valueGetterParent.getReturnType();
// prepare codec of union subtype according to return type of referenced
// leaf
- final Codec<Object, Object> valueCodec = bindingCodecContext.getCodec(returnType, subtype);
+ final IllegalArgumentCodec<Object, Object> valueCodec = bindingCodecContext.getCodec(returnType, subtype);
values.add(new UnionValueOptionContext(unionCls, returnType, valueGetterParent, valueCodec));
}