Java tutorial
/* * Copyright (c) 2016-2017 Red Hat, Inc. * * Red Hat licenses this file to you under the Apache License, version * 2.0 (the "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. See the License for the specific language governing * permissions and limitations under the License. */ package io.fabric8.vertx.maven.plugin.utils; import com.google.common.base.Strings; import freemarker.cache.ClassTemplateLoader; import freemarker.template.Configuration; import freemarker.template.Template; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.logging.Log; import org.apache.maven.plugin.logging.SystemStreamLog; import org.apache.maven.project.MavenProject; import java.io.File; import java.io.FileWriter; import java.io.Writer; import java.util.HashMap; import java.util.Map; /** * @author kameshs */ public class SetupTemplateUtils { static final Configuration cfg; static final Log logger = new SystemStreamLog(); static { cfg = new Configuration(Configuration.VERSION_2_3_23); cfg.setTemplateLoader(new ClassTemplateLoader(SetupTemplateUtils.class, "/")); } public static void createPom(Map<String, String> context, File pomFile) throws MojoExecutionException { try { Template temp = cfg.getTemplate("templates/pom-template.ftl"); Writer out = new FileWriter(pomFile); temp.process(context, out); } catch (Exception e) { throw new MojoExecutionException("Unable to generate pom.xml", e); } } public static void createVerticle(MavenProject project, String verticle, Log log) throws MojoExecutionException { if (Strings.isNullOrEmpty(verticle)) { return; } log.info("Creating verticle " + verticle); File root = new File(project.getBasedir(), "src/main/java"); String packageName = null; String className; if (verticle.endsWith(".java")) { verticle = verticle.substring(0, verticle.length() - ".java".length()); } if (verticle.contains(".")) { int idx = verticle.lastIndexOf('.'); packageName = verticle.substring(0, idx); className = verticle.substring(idx + 1); } else { className = verticle; } if (packageName != null) { File packageDir = new File(root, packageName.replace('.', '/')); if (!packageDir.exists()) { packageDir.mkdirs(); log.info("Creating directory " + packageDir.getAbsolutePath()); } root = packageDir; } File classFile = new File(root, className + ".java"); Map<String, String> context = new HashMap<>(); context.put("className", className); if (packageName != null) { context.put("packageName", packageName); } try { Template temp = cfg.getTemplate("templates/verticle-template.ftl"); Writer out = new FileWriter(classFile); temp.process(context, out); } catch (Exception e) { throw new MojoExecutionException("Unable to generate verticle", e); } } }