Added support for discovering YangModuleInfo via ServiceLoader.
[yangtools.git] / code-generator / binding-java-api-generator / src / main / java / org / opendaylight / yangtools / sal / java / api / generator / BuilderGenerator.java
index 571c301b009ec2b6d2b315f3b5c383f194e705aa..ce5d9383adf64521c604c02b9a2cf88970e98bec 100644 (file)
@@ -1,47 +1,75 @@
-package org.opendaylight.yangtools.sal.java.api.generator;\r
-\r
-import org.opendaylight.yangtools.sal.binding.model.api.CodeGenerator;\r
-import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject;\r
-import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType;\r
-import org.opendaylight.yangtools.sal.binding.model.api.Type;\r
-import org.opendaylight.yangtools.yang.binding.Augmentable;\r
-import org.opendaylight.yangtools.yang.binding.Augmentation;\r
-import org.opendaylight.yangtools.yang.binding.DataObject;\r
-\r
-public final class BuilderGenerator implements CodeGenerator {\r
-\r
-    public static final String BUILDER = "Builder";\r
-\r
-    @Override\r
-    public boolean isAcceptable(Type type) {\r
-        if (type instanceof GeneratedType && !(type instanceof GeneratedTransferObject)) {\r
-            for (Type t : ((GeneratedType) type).getImplements()) {\r
-                // "rpc" and "grouping" elements do not implement Augmentable\r
-                if (t.getFullyQualifiedName().equals(Augmentable.class.getName())) {\r
-                    return true;\r
-                } else if (t.getFullyQualifiedName().equals(Augmentation.class.getName())) {\r
-                    return true;\r
-                }\r
-                \r
-                \r
-            }\r
-        }\r
-        return false;\r
-    }\r
-\r
-    @Override\r
-    public String generate(Type type) {\r
-        if (type instanceof GeneratedType && !(type instanceof GeneratedTransferObject)) {\r
-            final GeneratedType genType = (GeneratedType) type;\r
-            final BuilderTemplate template = new BuilderTemplate(genType);\r
-            return template.generate();\r
-        }\r
-        return "";\r
-    }\r
-\r
-    @Override\r
-    public String getUnitName(Type type) {\r
-        return type.getName() + BUILDER;\r
-    }\r
-\r
-}\r
+/*
+ * 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.java.api.generator;
+
+import org.opendaylight.yangtools.sal.binding.model.api.CodeGenerator;
+import org.opendaylight.yangtools.sal.binding.model.api.GeneratedTransferObject;
+import org.opendaylight.yangtools.sal.binding.model.api.GeneratedType;
+import org.opendaylight.yangtools.sal.binding.model.api.Type;
+import org.opendaylight.yangtools.yang.binding.Augmentable;
+import org.opendaylight.yangtools.yang.binding.Augmentation;
+
+/**
+ * 
+ * Transformator of the data from the virtual form to JAVA programming language.
+ * The result source code represent java class. For generation of the source
+ * code is used the template written in XTEND language.
+ * 
+ */
+public final class BuilderGenerator implements CodeGenerator {
+
+    /**
+     * Constant used as sufix for builder name.
+     */
+    public static final String BUILDER = "Builder";
+
+    /**
+     * Passes via list of implemented types in <code>type</code>.
+     * 
+     * @param type
+     *            JAVA <code>Type</code>
+     * @return boolean value which is true if any of implemented types is of the
+     *         type <code>Augmentable</code>.
+     */
+    @Override
+    public boolean isAcceptable(Type type) {
+        if (type instanceof GeneratedType && !(type instanceof GeneratedTransferObject)) {
+            for (Type t : ((GeneratedType) type).getImplements()) {
+                // "rpc" and "grouping" elements do not implement Augmentable
+                if (t.getFullyQualifiedName().equals(Augmentable.class.getName())) {
+                    return true;
+                } else if (t.getFullyQualifiedName().equals(Augmentation.class.getName())) {
+                    return true;
+                }
+
+            }
+        }
+        return false;
+    }
+
+    /**
+     * Generates JAVA source code for generated type <code>Type</code>. The code
+     * is generated according to the template source code template which is
+     * written in XTEND language.
+     */
+    @Override
+    public String generate(Type type) {
+        if (type instanceof GeneratedType && !(type instanceof GeneratedTransferObject)) {
+            final GeneratedType genType = (GeneratedType) type;
+            final BuilderTemplate template = new BuilderTemplate(genType);
+            return template.generate();
+        }
+        return "";
+    }
+
+    @Override
+    public String getUnitName(Type type) {
+        return type.getName() + BUILDER;
+    }
+
+}