/** * Copyright (c) 2009-2011, The HATS Consortium. All rights reserved. * This file is licensed under the terms of the Modified BSD License. */ package eu.hats_project.build.maven.plugin; import java.io.File; import java.util.ArrayList; import java.util.List; import org.apache.maven.plugin.MojoExecutionException; import org.apache.maven.plugin.logging.Log; import abs.backend.scala.ScalaBackend; public class ScalaGenerator extends MTVLParser { /** * * @param absfrontEnd The frontend jar * @param absSrcFolder * @param absArguments * @param targetFolder * @param verbose * @param sourceOnly * @param stdlib * @param loctype * @param productName * @param log * @param checkProductSelection * @param mTVL * @throws MojoExecutionException */ void generateScala(File absfrontEnd, File absSrcFolder, List<String> absArguments, File targetFolder, boolean checkProductSelection, boolean verbose, boolean stdlib, boolean loctype, String productName, Log log) throws MojoExecutionException { if (!targetFolder.exists()) { if (!targetFolder.mkdirs()) { throw new MojoExecutionException("Could not create target folder " + targetFolder); } } if (!absSrcFolder.exists()) { throw new MojoExecutionException("Source folder does not exist"); } List<String> args = new ArrayList<String>(); System.setProperty("java.class.path",absfrontEnd.getAbsolutePath()); args.add("-d"); args.add(targetFolder.getAbsolutePath()); absArguments = super.parseMTVL(absfrontEnd, absArguments, productName, verbose, checkProductSelection, log); if (productName != null) args.add("-product="+productName); if (! stdlib) { args.add("-nostdlib"); } if (loctype) { args.add("-loctypes"); } args.add("-sourceonly"); if (verbose) { args.add("-v"); } args.addAll(absArguments); String[] argArray = args.toArray(new String[args.size()]); new DebugArgOutput().debug("Generating Scala Code", argArray, log); try { new ScalaBackend().compile(argArray); } catch (Exception e) { throw new MojoExecutionException("Error during code generation", e); } } }