Split up TypeProviderImpl
[mdsal.git] / binding / mdsal-binding-generator-impl / src / main / java / org / opendaylight / mdsal / binding / yang / types / CodegenTypeProvider.java
1 /*
2  * Copyright (c) 2018 Pantheon Technologies, s.r.o.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.mdsal.binding.yang.types;
9
10 import static org.opendaylight.mdsal.binding.model.util.BindingGeneratorUtil.encodeAngleBrackets;
11
12 import com.google.common.annotations.Beta;
13 import java.util.Optional;
14 import org.opendaylight.mdsal.binding.model.api.type.builder.EnumBuilder;
15 import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilderBase;
16 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
17 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
18 import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition;
19
20 /**
21  * {@link AbstractTypeProvider} which generates full metadata, suitable for codegen purposes. For runtime purposes,
22  * considering using {@link RuntimeTypeProvider}.
23  */
24 @Beta
25 // FIXME: make this class final after TypeProviderImpl is gone
26 public class CodegenTypeProvider extends AbstractTypeProvider {
27     /**
28      * Creates new instance of class <code>TypeProviderImpl</code>.
29      *
30      * @param schemaContext contains the schema data read from YANG files
31      * @throws IllegalArgumentException if <code>schemaContext</code> is null.
32      */
33     public CodegenTypeProvider(final SchemaContext schemaContext) {
34         super(schemaContext);
35     }
36
37     @Override
38     public void addEnumDescription(final EnumBuilder enumBuilder, final EnumTypeDefinition enumTypeDef) {
39         final Optional<String> optDesc = enumTypeDef.getDescription();
40         if (optDesc.isPresent()) {
41             enumBuilder.setDescription(encodeAngleBrackets(optDesc.get()));
42         }
43     }
44
45     @Override
46     void addCodegenInformation(final GeneratedTypeBuilderBase<?> genTOBuilder, final TypeDefinition<?> typeDef) {
47         final Optional<String> optDesc = typeDef.getDescription();
48         if (optDesc.isPresent()) {
49             genTOBuilder.setDescription(encodeAngleBrackets(optDesc.get()));
50         }
51         typeDef.getReference().ifPresent(genTOBuilder::setReference);
52     }
53 }