Bug 509: Fixed incorrect merging of Data Store Writes / Events
[controller.git] / opendaylight / config / yang-jmx-generator-plugin / src / main / java / org / opendaylight / controller / config / yangjmxgenerator / plugin / ftl / directives / JavadocDirective.java
1 /*
2  * Copyright (c) 2013 Cisco Systems, Inc. and others.  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.controller.config.yangjmxgenerator.plugin.ftl.directives;
9
10 import java.io.IOException;
11 import java.io.Writer;
12 import java.util.Map;
13
14 import org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.FtlTemplate;
15
16 import freemarker.core.Environment;
17 import freemarker.template.SimpleScalar;
18 import freemarker.template.TemplateDirectiveBody;
19 import freemarker.template.TemplateDirectiveModel;
20 import freemarker.template.TemplateException;
21 import freemarker.template.TemplateModel;
22
23 /**
24  * Add javadoc to freemarker template as String.
25  */
26 public class JavadocDirective implements TemplateDirectiveModel {
27
28     private static final String OBJECT = "object";
29
30     @Override
31     public void execute(Environment env, Map params, TemplateModel[] loopVars,
32             TemplateDirectiveBody body) throws TemplateException, IOException {
33         Object object = params.get(OBJECT);
34         String javadoc = "";
35
36         if (object != null) {
37             if (object instanceof SimpleScalar)
38                 javadoc = ((SimpleScalar) object).getAsString();
39             else if (object instanceof FtlTemplate) {
40                 javadoc = ((FtlTemplate) object).getJavadoc();
41             } else
42                 throw new IllegalArgumentException(
43                         "Object must be a String or instance of "
44                                 + FtlTemplate.class + "but was "
45                                 + object.getClass());
46         }
47
48         Writer out = env.getOut();
49         StringBuilder build = new StringBuilder();
50         writeJavadoc(build, javadoc, "");
51         out.write(build.toString().toCharArray());
52     }
53
54     static void writeJavadoc(StringBuilder build, String javadoc,
55             String linePrefix) {
56         build.append(linePrefix + "/**");
57         build.append(System.lineSeparator());
58         build.append(linePrefix + "* ");
59         build.append(javadoc == null ? "" : javadoc);
60         build.append(System.lineSeparator());
61         build.append(linePrefix + "*/");
62         build.append(System.lineSeparator());
63     }
64
65 }