1 package org.opendaylight.yangtools.sal.java.api.generator;
\r
3 import org.opendaylight.yangtools.sal.binding.model.api.CodeGenerator;
\r
4 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject;
\r
5 import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType;
\r
6 import org.opendaylight.yangtools.sal.binding.model.api.Type;
\r
7 import org.opendaylight.yangtools.yang.binding.Augmentable;
\r
8 import org.opendaylight.yangtools.yang.binding.Augmentation;
\r
9 import org.opendaylight.yangtools.yang.binding.DataObject;
\r
13 * Transformator of the data from the virtual form to JAVA programming language.
\r
14 * The result source code represent java class. For generation of the source
\r
15 * code is used the template written in XTEND language.
\r
18 public final class BuilderGenerator implements CodeGenerator {
\r
21 * Constant used as sufix for builder name.
\r
23 public static final String BUILDER = "Builder";
\r
26 * Passes via list of implemented types in <code>type</code>.
\r
29 * JAVA <code>Type</code>
\r
30 * @return boolean value which is true if any of implemented types is of the
\r
31 * type <code>Augmentable</code>.
\r
34 public boolean isAcceptable(Type type) {
\r
35 if (type instanceof GeneratedType && !(type instanceof GeneratedTransferObject)) {
\r
36 for (Type t : ((GeneratedType) type).getImplements()) {
\r
37 // "rpc" and "grouping" elements do not implement Augmentable
\r
38 if (t.getFullyQualifiedName().equals(Augmentable.class.getName())) {
\r
40 } else if (t.getFullyQualifiedName().equals(Augmentation.class.getName())) {
\r
51 * Generates JAVA source code for generated type <code>Type</code>. The code
\r
52 * is generated according to the template source code template which is
\r
53 * written in XTEND language.
\r
56 public String generate(Type type) {
\r
57 if (type instanceof GeneratedType && !(type instanceof GeneratedTransferObject)) {
\r
58 final GeneratedType genType = (GeneratedType) type;
\r
59 final BuilderTemplate template = new BuilderTemplate(genType);
\r
60 return template.generate();
\r
66 public String getUnitName(Type type) {
\r
67 return type.getName() + BUILDER;
\r