/*
* Copyright (c) 2009, CoreMedia AG, Hamburg. All rights reserved.
*/
package net.jangaroo.jooc.mvnplugin;
import net.jangaroo.utils.FileLocations;
import net.jangaroo.properties.api.PropcException;
import net.jangaroo.properties.PropertyClassGenerator;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectHelper;
import org.apache.maven.shared.model.fileset.FileSet;
import org.apache.maven.shared.model.fileset.util.FileSetManager;
import java.io.File;
import java.io.IOException;
import java.util.Arrays;
/**
* Mojo to compile properties files to ActionScript3 files
*
* @goal properties
* @phase generate-sources
* @requiresDependencyResolution
* @threadSafe
*/
@SuppressWarnings({"ResultOfMethodCallIgnored", "UnusedDeclaration", "UnusedPrivateField"})
public class PropertiesMojo extends AbstractMojo {
/**
* The maven project.
*
* @parameter expression="${project}"
* @required
* @readonly
*/
private MavenProject project;
/**
* Source directory to scan for files to compile.
*
* @parameter expression="${basedir}/src/main/joo"
*/
private File resourceDirectory;
/**
* Fileset for properties. default is:
* {@code
* <properties>
* <directory>${basedir}/src/main/joo</directory>
* <includes>
* <include>**\/*.properties</include>
* </includes>
* </properties>
* }
*
* @parameter
*/
private FileSet properties;
/**
* Output directory for all ActionScript3 files generated out of exml components
*
* @parameter expression="${project.build.directory}/generated-sources/joo"
*/
private File generatedSourcesDirectory;
/**
* @component
*/
private MavenProjectHelper projectHelper;
public void execute() throws MojoExecutionException, MojoFailureException {
if (!generatedSourcesDirectory.exists()) {
getLog().info("generating sources into: " + generatedSourcesDirectory.getPath());
getLog().debug("created " + generatedSourcesDirectory.mkdirs());
}
if (properties == null) {
properties = new FileSet();
properties.setDirectory(resourceDirectory.getAbsolutePath());
properties.addInclude("**/*.properties");
}
FileLocations config = new FileLocations();
config.setOutputDirectory(generatedSourcesDirectory);
for (String srcFileRelativePath : new FileSetManager().getIncludedFiles(properties)) {
config.addSourceFile(new File(resourceDirectory,srcFileRelativePath));
}
try {
config.setSourcePath(Arrays.asList(resourceDirectory));
} catch (IOException e) {
throw new MojoExecutionException("configuration failure", e);
}
PropertyClassGenerator generator = new PropertyClassGenerator(config);
try {
generator.generate();
} catch (PropcException e) {
throw new MojoExecutionException("Generation failure", e);
}
}
}