2 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
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
8 package org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.directives;
10 import java.io.IOException;
11 import java.io.Writer;
12 import java.util.Date;
15 import org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator;
16 import org.opendaylight.controller.config.yangjmxgenerator.plugin.ftl.model.Header;
18 import com.google.common.base.Preconditions;
20 import freemarker.core.Environment;
21 import freemarker.ext.beans.StringModel;
22 import freemarker.template.TemplateDirectiveBody;
23 import freemarker.template.TemplateDirectiveModel;
24 import freemarker.template.TemplateException;
25 import freemarker.template.TemplateModel;
28 * Add annotations to freemarker template.
30 public class HeaderDirective implements TemplateDirectiveModel {
32 private static final String GENERATOR_CLASS = JMXGenerator.class
34 private static final String OBJECT = "header";
37 public void execute(Environment env, Map params, TemplateModel[] loopVars,
38 TemplateDirectiveBody body) throws TemplateException, IOException {
40 // FIXME do not allow null header
41 // Preconditions.checkNotNull(object, "Null type declaration");
42 Object object = params.get(OBJECT);
45 object = ((StringModel) object).getWrappedObject();
46 Preconditions.checkArgument(object instanceof Header,
47 "Template header should be instance of " + Header.class
48 + " but was " + object.getClass());
50 header = (Header) object;
53 Writer out = env.getOut();
54 StringBuilder build = new StringBuilder();
56 build.append(System.lineSeparator());
58 build.append("Generated file");
59 build.append(System.lineSeparator());
60 build.append(System.lineSeparator());
62 build.append("Generated from: ");
63 build.append(header != null ? header.toString() : "");
64 build.append(System.lineSeparator());
66 build.append("Generated by: " + GENERATOR_CLASS);
67 build.append(System.lineSeparator());
69 build.append("Generated at: " + new Date());
70 build.append(System.lineSeparator());
72 build.append(System.lineSeparator());
74 build.append("Do not modify this file unless it is present under src/main directory ");
75 build.append(System.lineSeparator());
77 build.append(System.lineSeparator());
79 out.write(build.toString().toCharArray());